@vkontakte/videoplayer-core 2.0.180-beta.0 → 2.0.180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es2015.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.180-beta.0
3
- * Wed, 14 Oct 2026 09:54:17 GMT
2
+ * @vkontakte/videoplayer-core v2.0.180
3
+ * Wed, 14 Oct 2026 10:15:43 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-180/doc/
5
5
  */
6
- import{objectEntries as ce}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as le}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ue}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as de,assertNonNullable as fe,isNonNullable as pe,ValueSubject as me,Subject as he,Subscription as ge,merge as _e,observableFrom as ve,fromEvent as ye,map as be,tap as xe,filterChanged as Se,isNullable as Ce,ErrorCategory as we}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Oe,combine as ke,debounce as Ae,ErrorCategory as je,filter as Me,filterChanged as Ne,isNonNullable as Pe,isNullable as Fe,map as Ie,Subscription as Le,ValueSubject as Re}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ze,assertNonNullable as Be,ErrorCategory as Ve,getHighestQuality as He,isNonNullable as Ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as We}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ge}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as tt,TimerModule as nt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as it}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as at,ValueSubject as ot}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as st}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ct,isNullable as lt}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as N}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as dt,isBrowserWindow as ft}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ht,isBrowserWindow as gt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as bt,isBrowserWindow as xt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ft,isBrowserWindow as It}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Wt,ErrorCategory as Gt,filter as Kt,Subject as qt,Subscription as Jt,tap as Yt,ValueSubject as Xt,fromEvent as Zt,getWindow as Qt}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as nn,Subject as rn,map as an,Subscription as on,combine as sn,filterChanged as cn,assertNonNullable as ln}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as dn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as mn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hn,Subject as gn,merge as _n}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as bn,debounce as xn,ErrorCategory as Sn,fromEvent as Cn,map as wn,merge as Tn,observableFrom as En,Subject as Dn,Subscription as On,timeout as kn}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Fn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as In,fromEvent as Ln,getWindow as Rn,Subscription as zn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Bn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as tr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as nr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as rr,isNonNullable as ir,isNullable as ar,fromEvent as or,merge as sr,observableFrom as cr,filterChanged as lr,map as ur,Subject as dr,Subscription as fr,ValueSubject as pr,ErrorCategory as mr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hr,isNullable as gr,Subscription as _r}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as F,map as jr,merge as Mr,filterChanged as Nr,isNonNullable as Pr,Subject as Fr,filter as Ir,mapTo as Lr,combine as Rr,once as zr,shareReplay as I,throttle as Br,ErrorCategory as Vr,ErrorOrigin as Hr,ValueSubject as Ur,Subscription as Wr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Xr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as Qr,getWindow as $r,isInvariantQuality as ei,ValueSubject as ti}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{now as ai}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as si,isInvariantQuality as ci,isLowerOrEqual as li,isNonNullable as ui,now as di}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as mi,isNonNullable as hi,isNullable as gi}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Mi,isNonNullable as Ni,isNullable as Pi}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ii}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as zi}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Zi,isInvariantQuality as Qi,isNonNullable as $i}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ta,isLowerOrEqual as na,isNonNullable as ra,videoSizeToQuality as ia}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as oa,isNullable as sa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as ca,isLower as la,isNonNullable as ua,isNullable as da,videoHeightToQuality as fa}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as va,isNonNullable as ya,isNullable as ba,now as xa}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ca}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Da,isLowerOrEqual as Oa,isNonNullable as ka,isNullable as Aa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ma}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Pa,now as Fa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Va,assertNonNullable as Ha,combine as Ua,debounce as Wa,ErrorCategory as Ga,filter as Ka,filterChanged as qa,isNonNullable as Ja,map as Ya,merge as Xa,observableFrom as Za,once as Qa,Subscription as $a,ValueSubject as eo,videoQualityToHeight as to,videoSizeToQuality as no}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ro}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as oo,isNullable as so,assertNonNullable as co}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as lo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as uo,assertNonNullable as fo,now as po}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Co}from"@vkontakte/videoplayer-shared/es2015";import{Subject as To}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Eo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Oo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ko}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Ro}from"@vkontakte/videoplayer-shared/es2015";import{debounce as zo,filter as Bo,fromEvent as Vo,interval as Ho,isHigher as Uo,isInvariantQuality as Wo,isLower as Go,merge as Ko,Subject as qo,Subscription as Jo}from"@vkontakte/videoplayer-shared/es2015";import{map as Zo,Observable as Qo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as $o}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ns}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as rs}from"@vkontakte/videoplayer-shared/es2015";import{filter as Es,filterChanged as Ds,isNonNullable as Os}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ks,assertNonNullable as As,debounce as js,ErrorCategory as Ms,filter as Ns,filterChanged as Ps,fromEvent as Fs,isNonNullable as Is,isNullable as Ls,map as Rs,mapTo as zs,merge as Bs,observableFrom as Vs,once as Hs,Subscription as Us,throttle as Ws}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Gs}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ks}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ec,now as tc,once as nc,Subscription as rc,ValueSubject as ic,isNonNullable as ac,safeStorage as oc,filterChanged as sc}from"@vkontakte/videoplayer-shared/es2015";import{combine as gc,map as _c,observeElementSize as vc,Subscription as yc,ValueSubject as bc,noop as xc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Cc,map as wc,once as Tc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Dc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Oc,isNonNullable as kc,isNullable as Ac,now as jc,once as Mc,Subscription as Nc,ValueSubject as Pc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Ic,isNonNullable as Lc,isNullable as Rc,Subscription as zc,ValueSubject as Bc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Vc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Zc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Qc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as $c}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as el}from"@vkontakte/videoplayer-shared/es2015";import{abortable as nl,assertNonNullable as rl,ErrorCategory as il,ErrorOrigin as al,filter as ol,filterChanged as sl,flattenObject as cl,fromEvent as ll,getTraceSubscriptionMethod as ul,getWindow as dl,interval as fl,isNonNullable as z,isNullable as pl,map as ml,merge as hl,nowInt as gl,Subject as _l,Subscription as vl,SubscriptionRemovable as yl,ValueSubject as B}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as bl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as xl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as wl,assertNever as Tl,ErrorCategory as El,flattenObject as Dl,fromEvent as Ol,getWindow as kl,isNonNullable as Al,merge as jl,now as Ml,Subject as Nl,Subscription as Pl,suppressAbort as Fl,ValueSubject as Il,videoQualityToHeight as Ll,VideoQuality as Rl,isAbortError as zl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Vl,ErrorOrigin as Hl}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Yl,isNullable as Xl,getWindow as Zl}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as mu,isNonNullable as hu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Tu}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as Ou}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ku}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as Au}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as ju}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Mu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Nu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Pu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Iu,isNullable as Lu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ru}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ku}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as qu}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Ju,assertNonNullable as Yu,ErrorCategory as Xu,ErrorOrigin as Zu,flattenObject as V,fromEvent as Qu,getExponentialDelay as $u,getWindow as ed,isAbortError as td,isHigher as nd,isNonNullable as H,isNullable as U,once as rd,Subject as id,Subscription as ad,ValueSubject as od}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as sd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as dd}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Hd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Ud,isNonNullable as Wd,isNullable as Gd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Kd}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as rf}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as af}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as _f,getWindow as vf,isNonNullable as yf,isNullable as bf,now as xf,isAbortError as Sf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as wf,getWindow as Tf,isAbortError as Ef,isNullable as Df,now as Of}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Af}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as jf,ErrorCategory as Mf,isNullable as Nf,ValueSubject as Pf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Lf,fromEvent as Rf,isNullable as zf,Subject as Bf,Subscription as Vf,ValueSubject as Hf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Uf,ErrorCategory as Wf,Subject as Gf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Qf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as $f,isHigher as ep,isLower as tp,isLowerOrEqual as np,VideoQuality as rp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as gp,combine as _p,ErrorCategory as vp,filter as yp,filterChanged as bp,fromEvent as xp,isNonNullable as Sp,map as Cp,merge as wp}from"@vkontakte/videoplayer-shared/es2015";import{combine as Dp,merge as Op,filter as kp,filterChanged as Ap,isNullable as jp,map as Mp,ValueSubject as Np,isNonNullable as Pp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Hp,ValueSubject as Up}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Yp,combine as Xp,ErrorCategory as Zp,filter as Qp,filterChanged as $p,fromEvent as em,interval as tm,isNonNullable as nm,isNullable as rm,map as im,now as am,throttle as om}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as cm,ValueSubject as lm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as pm,assertNonNullable as mm,combine as hm,debounce as gm,ErrorCategory as _m,filter as vm,filterChanged as ym,fromEvent as bm,isNonNullable as xm,isNullable as Sm,map as Cm,merge as wm,observableFrom as Tm,once as Em,Subscription as Dm,throttle as Om}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as km}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Am}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Mm,assertNonNullable as Nm,combine as Pm,ErrorCategory as Fm,ErrorOrigin as Im,filter as Lm,filterChanged as Rm,flattenObject as zm,fromEvent as Bm,getTraceSubscriptionMethod as Vm,interval as Hm,isNonNullable as Um,isNullable as Wm,map as Gm,merge as Km,now as qm,Subject as Jm,Subscription as Ym,SubscriptionRemovable as Xm,tap as Zm,throttle as Qm,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as $m}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as eh}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as th}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as nh}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as rh}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as ih}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as ah}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as oh,ErrorCategory as sh,Subject as ch}from"@vkontakte/videoplayer-shared/es2015";import{abortable as mh,assertNonNullable as hh,ErrorCategory as gh,ErrorOrigin as _h,flattenObject as vh,fromEvent as yh,getExponentialDelay as bh,getWindow as xh,isHigher as Sh,isNonNullable as Ch,isNullable as G,now as wh,once as Th,Subject as Eh,Subscription as Dh,ValueSubject as Oh,isAbortError as kh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as jh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Mh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Nh,assertNever as Ph,fromEvent as Fh,merge as Ih,now as Lh,Subject as Rh,ValueSubject as zh,flattenObject as Bh,ErrorCategory as Vh,SubscriptionRemovable as Hh,getWindow as Uh,isNonNullable as Wh,suppressAbort as Gh,videoQualityToHeight as Kh,VideoQuality as qh}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Jh,ErrorOrigin as Yh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as rg,ValueSubject as ig}from"@vkontakte/videoplayer-shared/es2015";import{combine as dg,merge as fg,filter as pg,filterChanged as mg,isNullable as hg,map as gg,ValueSubject as _g,isNonNullable as vg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as bg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as xg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as wg,combine as Tg,debounce as Eg,ErrorCategory as Dg,filter as Og,filterChanged as kg,isNonNullable as Ag,isNullable as jg,map as Mg,merge as Ng,observableFrom as Pg,Subscription as Fg,ValueSubject as Ig,VideoQuality as Lg}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as Rg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as zg}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Bg,getExponentialDelay as Vg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Xg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Zg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Qg,Subscription as $g,throttle as e_,ValueSubject as t_,Subject as n_,ErrorCategory as r_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as o_,debounce as s_,ErrorCategory as c_,fromEvent as l_,isInvariantQuality as u_,isNonNullable as d_,isNullable as f_,map as p_,merge as m_,observableFrom as h_,Subscription as g_,ValueSubject as __,VideoQuality as v_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as b_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as x_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as S_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as C_,assertNonNullable as w_,debounce as T_,ErrorCategory as E_,isHigherOrEqual as D_,isLowerOrEqual as O_,isNonNullable as k_,merge as A_,observableFrom as j_,Subscription as M_,map as N_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as F_,debounce as I_,merge as L_,observableFrom as R_,Subscription as z_,map as B_,ValueSubject as V_,ErrorCategory as H_,VideoQuality as U_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as W_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Q_,assertNonNullable as $_,ErrorCategory as ev,ErrorOrigin as tv,filter as nv,isNonNullable as rv,isNullable as iv,map as av,merge as ov,once as sv,Subject as K,Subscription as cv,ValueSubject as q,flattenObject as lv,devNull as uv,getWindow as dv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as fv,map as pv,Subscription as mv,Subject as hv,now as gv,combine as _v}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as yv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as bv,Subscription as xv,combine as Sv,filter as Cv,once as wv}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Tv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ov}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as kv,Subject as Av,Subscription as jv,merge as Mv,isNonNullable as Nv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Pv,flattenObject as Fv,isNullable as Iv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as zv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Vv,ErrorOrigin as Hv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Wv,flattenObject as Gv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as qv,flattenObject as Jv,fromEvent as Yv,getWindow as Xv,isNonNullable as Zv,merge as Qv,now as $v,Subject as ey,Subscription as ty,ErrorOrigin as ny}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as ay}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as sy,isNonNullable as cy,getWindow as ly}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as py,isNonNullable as my,Subscription as hy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as yy,once as by,combine as xy,Subscription as Sy,ValueSubject as Cy,map as wy,filter as Ty,isNonNullable as Ey,now as J,safeStorage as Dy,getWindow as Oy}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as zy,VideoQuality as By}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Uy,combine as Wy,devNull as Gy,ErrorCategory as Ky,filter as Y,filterChanged as X,flattenObject as qy,fromEvent as Jy,getPlayerId as Yy,getTimersDiagnostics as Xy,getTraceSubscriptionMethod as Zy,getWindow as Qy,InternalsExposure as $y,isHigher as eb,isInvariantQuality as tb,isNonNullable as nb,isNullable as rb,Logger as ib,map as Z,mapTo as ab,merge as ob,now as sb,once as Q,retainTimers as cb,Subject as $,Subscription as lb,tap as ub,throttle as db,TracerFactory as fb,ValueSubject as pb,combineLatest as mb}from"@vkontakte/videoplayer-shared/es2015";import{merge as hb,map as gb,filter as _b,isNonNullable as vb}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as bb}from"@vkontakte/videoplayer-shared/es2015";import{filter as Sb,once as Cb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Tb}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Eb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Db}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ob,getWindow as kb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Lb,Observable as Rb,Subject as zb,ValueSubject as Bb,VideoQuality as Vb}from"@vkontakte/videoplayer-shared/es2015";var _oxcModku6ih4=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],ee=[`data`],w=[`container`];var T=l,E=d,D=m,te=_,O=v,k=`2.0.180-beta.0`,A;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(A||={});var ne;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(ne||={});var re;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(re||={});var ie;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ie||={});var ae;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(ae||={});var oe;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(oe||={});var se;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(se||={});var Te=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class Ee{constructor(e){this.connection$=new me(void 0),this.castState$=new me(`NOT_AVAILABLE`),this.errorEvent$=new he,this.contentId=void 0,this.realCastState$=new me(`NOT_AVAILABLE`),this.subscription=new ge,this.log=void 0,this.params=void 0,this.isDestroyed=!1,this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastInitializer`);let t=`chrome`in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let n=pe(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Te(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:we.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){pe(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Ce(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Ce(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(ye(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return de(e.sessionState)}})).add(_e(ye(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(xe(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),be(e=>e.castState)),ve([n.getCastState()])).pipe(Se(),be(De),xe(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=pe(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();fe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(Ce(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?pe(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:we.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var De=e=>{switch(e){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return`NOT_AVAILABLE`;case cast.framework.CastState.NOT_CONNECTED:return`AVAILABLE`;case cast.framework.CastState.CONNECTING:return`CONNECTING`;case cast.framework.CastState.CONNECTED:return`CONNECTED`;default:return de(e)}};var Ke=`_offset_p`,qe=e=>{if(We(e,Ke))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},Je=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(Ke,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:Ge(n)}return e},Ye=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:Ge(t)}},Xe=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Be(e);let r=He(Object.keys(e));Be(r);let i=e[r];Be(i),a=i,o=`video/mp4`,s=Ze();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Be(e),a=e.url,o=`application/x-mpegurl`,s=Ze();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];Be(e),a=e.url,o=`application/dash+xml`,s=Ze();break}case`DASH_LIVE_CMAF`:{let e=t[n];Be(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Be(e),a=Je(e.url),o=`application/x-mpegurl`,s=Qe();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:Ve.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return ze(n)}let c=$e(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=et();let{title:l,subtitle:u}=r;return Ue(l)&&(c.metadata.title=l),Ue(u)&&(c.metadata.subtitle=u),c};function Ze(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function $e(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Ze()}}function et(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var j=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var M=tt(nt.CORE);class rt{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){M.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=M.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){M.clearInterval(this.interval)}destroy(){M.clearInterval(this.interval)}}class ut{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return st([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=ct().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),lt(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var pt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class mt{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||N(this.os.name.toLowerCase(),`ios`)||N([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||N(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||N(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return N(this.os.name.toLowerCase(),`windows`)}get isLinux(){return N(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=dt();if(!ft(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=pt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return E(function*(){let t=dt();if(ft(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=T(T({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return E(function*(){let t=dt();if(!ft(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return N(t,`windows`)?`Windows`:N(t,`mac os`)||N(t,`macintosh`)?`macOS`:N(t,`iphone`)||N(t,`ios`)?`iOS`:N(t,`ipados`)?`iPadOS`:N(t,`android`)?`Android`:N(t,`harmonyos`)?`HarmonyOS`:N(t,`linux`)?`Linux`:N(t,`cros`)?`Chrome OS`:N(t,`freebsd`)?`FreeBSD`:N(t,`openbsd`)?`OpenBSD`:N(t,`solaris`)||N(t,`sunos`)?`Solaris`:N(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return N(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):N(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):N(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):N(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=dt();if(!ft(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var _t=[`rec2020`,`p3`,`srgb`],vt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class yt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in ht()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=ht();if(!gt(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return _t.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var St=()=>window.ManagedMediaSource||window.MediaSource,Ct=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},wt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Et=bt().document?.createElement(`video`),Dt=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,Ot=`video/mp4; codecs="hev1.1.6.L93.B0"`,kt=`video/webm; codecs="vp09.00.10.08"`,At=`video/webm; codecs="av01.0.00M.08"`,jt=`audio/mp4; codecs="mp4a.40.2"`,Mt=`audio/webm; codecs="opus"`,Nt;(function(){var e=E(function*(){let e=bt();if(!xt(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(T(T({},t),{},{video:T(T({},t.video),{},{contentType:At})})),e.navigator.mediaCapabilities.decodingInfo(T(T({},t),{},{video:T(T({},t.video),{},{contentType:kt})}))]);Nt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Et),console.error(e)});class Pt{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Nt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=bt();if(!xt(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:Ct(),mse:wt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=St())==null||(s=o.isTypeSupported)==null)&&s.call(o,Dt)),v=!!(!((c=St())==null||(l=c.isTypeSupported)==null)&&l.call(c,Ot)),y=!!(!((u=St())==null||(d=u.isTypeSupported)==null)&&d.call(u,jt));this._codecs={h264:t,h265:v,vp9:!!(!((f=St())==null||(p=f.isTypeSupported)==null)&&p.call(f,kt)),av1:!!(!((m=St())==null||(h=m.isTypeSupported)==null)&&h.call(m,At)),aac:y,opus:!!(!((g=St())==null||(_=g.isTypeSupported)==null)&&_.call(g,Mt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Lt=`audio/mpeg`;class Rt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=Ft();if(!It(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Lt)},this._codecs={mp3:!!(!((r=St())==null||(i=r.isTypeSupported)==null)&&i.call(r,Lt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class zt{constructor(){this.isInited$=new ot(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new yt,this._deviceChecker=new mt(this._displayChecker),this._browserChecker=new ut,this._videoChecker=new Pt(this._deviceChecker,this._browserChecker),this._audioChecker=new Rt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return E(function*(){at()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var P=new zt,Bt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=P.video,{isMobile:o}=P.device,s=P.device.isMac&&P.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return it(e)}})},Vt=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:return!1;case`DASH_LIVE`:case`DASH_LIVE_CMAF`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:case`DASH_LIVE_WEBM`:case`WEB_RTC_LIVE`:return!0;default:return it(e)}},Ht=(e,t=!1)=>Bt(Object.keys(e).filter(e=>!Vt(e)),t).length>0;class Ut{constructor(e){this.subscription=new Le,this.log=void 0,this.params=void 0,this.sessionId$=new Re(null),this.mediaSessionId$=new Re(null),this.contentId$=new Re(null),this.progressTicker=void 0,this.isMobile=pt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Fe(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Pe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Pe(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new rt(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:je.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Me(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Me(Pe),Ne(),Ae(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Ne(),Ie(Boolean));this.subscription.add(ke({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Me(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=ke({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Me(({mediaLoaded:e})=>e),Ae(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Me(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(ke({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(Ae(30)),mediaLoaded:t}).pipe(Me(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Xe(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();Oe(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();Oe(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();Oe(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:j(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:j(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),j(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):j(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Fe(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var $t=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),en=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class tn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Xt(null),this.log=void 0,this.sessionId$=new Xt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Jt,this.subscriptionEvents=new Jt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Xt(!1),this.presentationConnection$=new Xt(null),this.message$=new Xt(null),this.friendlyName$=new Xt(null),this.errorEvent$=new qt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Zt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),Qt().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return E(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Wt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Zt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Yt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),Kt(e=>!!e)).subscribe(e=>{let t=Zt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Zt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Zt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:T(T({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return Qt()[e]=Qt()[e]||en()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Jt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class un{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new on,this.log=void 0,this.contentId=void 0,this.connection$=new nn(void 0),this.castState$=new nn(`NOT_AVAILABLE`),this.errorEvent$=new rn,this.chromecastConnector=void 0;let t=un.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new tn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){ln(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=sn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(cn())});this.subscription.add(e.pipe(an(({connection:e,friendlyName:t})=>!!(e&&t)),cn()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?$t(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return E(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var vn=(e,t)=>e===t;class yn{constructor(e,t=vn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new gn,this.transitionEnded$=new gn,this.transitionUpdated$=new gn,this.forceChanged$=new gn,this.stateChangeStarted$=_n(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=_n(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||hn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var An=5,jn=5,Mn=500,Nn=7e3;class Pn{constructor(e){this.subscription=new On,this.loadMediaTimeoutSubscription=new On,this.videoState=new yn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`playing`:switch(e){case`playing`:break;case`paused`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`ready`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`paused`:switch(e){case`playing`:this.videoState.startTransitionTo(`paused`),this.params.connection.remotePlayerController.playOrPause();break;case`paused`:break;case`ready`:this.videoState.startTransitionTo(`paused`),this.videoState.setState(`paused`);break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;default:bn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:`[destroy]`}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new On;this.subscription.add(e),this.subscription.add(Tn(this.videoState.stateChangeStarted$.pipe(wn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(wn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new Dn;e.add(t.pipe(xn(Mn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>An)&&t.next(r),n=r})),e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<jn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),j(this.params.desiredState.playbackState,`stopped`);break;case chrome.cast.media.PlayerState.PAUSED:this.handleRemotePause();break;case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:bn(n)}}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(Tn(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,En([`init`])).pipe(xn(0)),this.syncPlayback)}restoreSession(e){this.log({message:`restoreSession`});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Xe(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&j(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(kn(Nn).subscribe(()=>t(`timeout(${Nn})`)))});mn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Sn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Vn=e=>{try{e.pause(),e.playbackRate=0,Bn(e),e.remove()}catch(e){console.error(e)}},Hn=`__spvc`;class Un{constructor(){this.attribute=`data-pool-reused`}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}var Wn=Rn(),Gn=Wn.WeakMap?new Wn.WeakMap:new Un,Kn=Wn.WeakMap?new Wn.WeakMap:new Map,qn=(e,t=20)=>{let n=0;return Ln(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Jn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),Rn().document.body.appendChild(e)}function Yn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Xn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r,reuseOwnVideoElementOnBackgroundTabOnly:i})=>{let a,o=e.querySelector(`video`),s=!!o,c=Rn().document.querySelector(`body > video[data-role=screen]`)||void 0;r&&!i?Wn[Hn]=c:(c?.remove(),delete Wn[Hn]),o?(a=o,In(a)):c&&c===Wn[Hn]?(a=c,Yn(a,e)):(a=Rn().document.createElement(`video`),e.appendChild(a),r&&!i&&(Wn[Hn]=a)),Gn.set(a,s);let l=new zn;return l.add(qn(a,t)),Kn.set(a,l),a.setAttribute(`crossorigin`,`anonymous`),a.setAttribute(`playsinline`,`playsinline`),n&&a.setAttribute(`x-yandex-pip`,`false`),a.controls=!1,a.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),a},Zn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),Qn=(e,t)=>{if(e instanceof HTMLAudioElement){$n(e,t);return}if(e instanceof HTMLVideoElement){er(e,t);return}};function $n(e,{clearAudioElementOnDispose:t}){if(t){In(e);return}Vn(e)}function er(e,{reuseOwnVideoElement:t,reuseOwnVideoElementOnBackgroundTabOnly:n}){Kn.get(e)?.unsubscribe(),Kn.delete(e);let r=Gn.get(e);Gn.delete(e),In(e),t&&!n&&!r&&Jn(e)}var vr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=gr(i),l=new _r;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},yr=(e,t,n)=>vr(t,()=>e.loop,t=>{hr(t)&&(e.loop=t)},{onError:n}),br=(e,t,n,r,i)=>vr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||hr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),xr=(e,t,n,r)=>vr(t,()=>e.playbackRate,t=>{hr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Sr=vr,Cr=e=>[`__`,e.language,e.label].join(`|`),wr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Tr{constructor(e){this.available$=new dr,this.current$=new pr(void 0),this.error$=new dr,this.video=void 0,this.cueSettings=void 0,this.subscription=new fr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:mr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Sr(t.internalTextTracks,()=>tr(this.internalTracks),e=>{ir(e)&&this.setInternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Sr(t.externalTextTracks,()=>tr(this.externalTracks),e=>{ir(e)&&this.setExternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Sr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Sr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){rr(this.video);let{textTracks:e}=this.video;this.subscription.add(or(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(sr(or(e,`addtrack`),or(e,`removetrack`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),lr((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(sr(or(e,`change`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),ur(e=>e&&this.htmlTextTrackToITextTrack(e).id),lr()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(or(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(or(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ir(t.align)&&(e.align=t.align),ir(t.position)&&(e.position=t.position),ir(t.size)&&(e.size=t.size),ir(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){rr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Tr.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:Cr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??nr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind===`metadata`||e.groupId||e.id===``&&e.label===``&&e.language===``)}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){rr(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(ar(e)||!wr(t,e))&&(t.mode=`disabled`)}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName(`track`))){let t=e.getAttribute(`id`);t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){rr(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):t.setAttribute(`src`,e.url),t.setAttribute(`id`,e.id),e.label&&t.setAttribute(`label`,e.label),e.language&&t.setAttribute(`srclang`,e.language),e.type===`external`?this.externalTracks.set(e.id,e):e.type===`internal`&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){rr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.getAttribute(`id`)===e.id);t&&this.video.removeChild(t),e.type===`external`?this.externalTracks.delete(e.id):e.type===`internal`&&this.internalTracks.delete(e.id)}}var Er=Tr;class Dr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}var Or=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},kr=e=>{let t=Or(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},Ar=e=>{let t=Or(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Gr=3,Kr=(e,t,n=Gr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},qr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Yr=e=>{let t=t=>F(e,t).pipe(Lr(void 0),I(1)),n=new Wr,r=()=>n.unsubscribe(),i=Mr(F(e,`progress`),F(e,`timeupdate`)),a=i.pipe(jr(()=>Kr(e.buffered,e.currentTime)),I(1)),o=i.pipe(jr(()=>Jr(e.buffered)),I(1)),s=i.pipe(jr(()=>e.buffered.length),I(1)),c=P.browser.isSafari?Rr({play:t(`play`).pipe(zr()),playing:t(`playing`)}).pipe(Lr(void 0),I(1)):t(`playing`),l=F(e,`volumechange`).pipe(jr(()=>({muted:e.muted,volume:e.volume})),I(1)),u=F(e,`ratechange`).pipe(jr(()=>e.playbackRate),I(1)),d=F(e,`error`).pipe(Ir(()=>!!(e.error||e.played.length)),jr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Vr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Hr.MediaError,data:t?{code:t.code}:void 0}}),I(1)),f=F(e,`timeupdate`).pipe(jr(()=>e.currentTime),I(1)),p=Mr(F(e,`loadedmetadata`),F(e,`timeupdate`),F(e,`pause`),F(e,`seeked`),F(e,`ended`)).pipe(jr(()=>qr(e.played)),Nr(),I(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Fr,g=.3,_;n.add(Mr(...m.map(t=>F(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Pr(_)&&Pr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Ir(()=>!e.error&&_!==e.duration),I(1)),y=F(e,`enterpictureinpicture`).pipe(I(1)),b=F(e,`leavepictureinpicture`).pipe(I(1)),x=new Ur(Ar(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Ur(kr(e)),C=F(e,`fullscreenchange`).pipe(I(1));n.add(C.pipe(jr(()=>kr(e))).subscribe(S));let ee=F(e,`timeupdate`).pipe(jr(t=>e.duration-e.currentTime<.1),Nr(),I(1)),w=Mr(ee.pipe(Ir(t=>!e.loop&&t)),F(e,`ended`)).pipe(Br(1e3),Lr(void 0),I(1)),T=Mr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>F(e,t)),ee.pipe(jr(e=>({type:e?`ended`:`unknown`})))).pipe(jr(t=>P.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Nr(),I(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:w,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:F(e,`durationchange`).pipe(jr(()=>e.duration),I(1)),playedTime$:p,isBuffering$:T,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Zr=e=>{switch(e){case`mobile`:return Xr.Q_144P;case`lowest`:return Xr.Q_240P;case`low`:return Xr.Q_360P;case`sd`:case`medium`:return Xr.Q_480P;case`hd`:case`high`:return Xr.Q_720P;case`fullhd`:case`full`:return Xr.Q_1080P;case`quadhd`:case`quad`:return Xr.Q_1440P;case`ultrahd`:case`ultra`:return Xr.Q_2160P}};var ii=e=>`audioTracksAsc`in e;class oi{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=ai()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var _i=(e,t)=>(e??0)/(t>0?t:1),vi=e=>`quality`in e,yi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),bi=e=>(t,n)=>e*(mi(t.quality,n.quality)?-1:1),xi=e=>(t,n)=>vi(t)&&vi(n)?bi(e)(t,n):yi(e)(t,n),Si=(e,t)=>xi(1)(e,t)<0,Ci=(e,t)=>Math.log(t)/Math.log(e),wi=(e,t,n)=>(t-n)*2**(-10*e)+n,Ti=(e,t,n,r)=>{if(gi(e))return n[0];let i=n.filter(t=>hi(t.bitrate)&&hi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=fi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??fi(n,-1);return a&&pi(i,a)?a:i.length?fi(i,-1):fi(n,0)},Ei=(e,t)=>{if(gi(t)||gi(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Di=(e,t)=>hi(e)&&hi(t)&&t>0&&e>0&&e<=t*2,Oi=e=>{let{name:t}=e;return`
6
+ import{objectEntries as ce}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as le}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ue}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as de,assertNonNullable as fe,isNonNullable as pe,ValueSubject as me,Subject as he,Subscription as ge,merge as _e,observableFrom as ve,fromEvent as ye,map as be,tap as xe,filterChanged as Se,isNullable as Ce,ErrorCategory as we}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Oe,combine as ke,debounce as Ae,ErrorCategory as je,filter as Me,filterChanged as Ne,isNonNullable as Pe,isNullable as Fe,map as Ie,Subscription as Le,ValueSubject as Re}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ze,assertNonNullable as Be,ErrorCategory as Ve,getHighestQuality as He,isNonNullable as Ue}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as We}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Ge}from"@vkontakte/videoplayer-shared/es2015";import{createTimers as tt,TimerModule as nt}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as it}from"@vkontakte/videoplayer-shared/es2015";import{isBrowserWindow as at,ValueSubject as ot}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as st}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ct,isNullable as lt}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as N}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as dt,isBrowserWindow as ft}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ht,isBrowserWindow as gt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as bt,isBrowserWindow as xt}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ft,isBrowserWindow as It}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Wt,ErrorCategory as Gt,filter as Kt,Subject as qt,Subscription as Jt,tap as Yt,ValueSubject as Xt,fromEvent as Zt,getWindow as Qt}from"@vkontakte/videoplayer-shared/es2015";import{ValueSubject as nn,Subject as rn,map as an,Subscription as on,combine as sn,filterChanged as cn,assertNonNullable as ln}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as dn}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as fn}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as pn}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as mn}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hn,Subject as gn,merge as _n}from"@vkontakte/videoplayer-shared/es2015";import"@vkontakte/videoplayer-shared/es2015";import{assertNever as bn,debounce as xn,ErrorCategory as Sn,fromEvent as Cn,map as wn,merge as Tn,observableFrom as En,Subject as Dn,Subscription as On,timeout as kn}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Fn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as In,fromEvent as Ln,getWindow as Rn,Subscription as zn}from"@vkontakte/videoplayer-shared/es2015";import{clearVideoElement as Bn}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as tr}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as nr}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as rr,isNonNullable as ir,isNullable as ar,fromEvent as or,merge as sr,observableFrom as cr,filterChanged as lr,map as ur,Subject as dr,Subscription as fr,ValueSubject as pr,ErrorCategory as mr}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as hr,isNullable as gr,Subscription as _r}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as F,map as jr,merge as Mr,filterChanged as Nr,isNonNullable as Pr,Subject as Fr,filter as Ir,mapTo as Lr,combine as Rr,once as zr,shareReplay as I,throttle as Br,ErrorCategory as Vr,ErrorOrigin as Hr,ValueSubject as Ur,Subscription as Wr}from"@vkontakte/videoplayer-shared/es2015";import{VideoQuality as Xr}from"@vkontakte/videoplayer-shared/es2015";import{assertNotEmptyArray as Qr,getWindow as $r,isInvariantQuality as ei,ValueSubject as ti}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ni}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as ri}from"@vkontakte/videoplayer-shared/es2015";import{now as ai}from"@vkontakte/videoplayer-shared/es2015";import{flattenObject as si,isInvariantQuality as ci,isLowerOrEqual as li,isNonNullable as ui,now as di}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as fi}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as pi}from"@vkontakte/videoplayer-shared/es2015";import{isLowerOrEqual as mi,isNonNullable as hi,isNullable as gi}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Mi,isNonNullable as Ni,isNullable as Pi}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Fi}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Ii}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as zi}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as Zi,isInvariantQuality as Qi,isNonNullable as $i}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as ta,isLowerOrEqual as na,isNonNullable as ra,videoSizeToQuality as ia}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as oa,isNullable as sa}from"@vkontakte/videoplayer-shared/es2015";import{isHigher as ca,isLower as la,isNonNullable as ua,isNullable as da,videoHeightToQuality as fa}from"@vkontakte/videoplayer-shared/es2015";import{isHigherOrEqual as va,isNonNullable as ya,isNullable as ba,now as xa}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ca}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as wa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Da,isLowerOrEqual as Oa,isNonNullable as ka,isNullable as Aa}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Ma}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Pa,now as Fa}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Va,assertNonNullable as Ha,combine as Ua,debounce as Wa,ErrorCategory as Ga,filter as Ka,filterChanged as qa,isNonNullable as Ja,map as Ya,merge as Xa,observableFrom as Za,once as Qa,Subscription as $a,ValueSubject as eo,videoQualityToHeight as to,videoSizeToQuality as no}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ro}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as oo,isNullable as so,assertNonNullable as co}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as lo}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as uo,assertNonNullable as fo,now as po}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Co}from"@vkontakte/videoplayer-shared/es2015";import{Subject as To}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Eo}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Oo}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as ko}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Ro}from"@vkontakte/videoplayer-shared/es2015";import{debounce as zo,filter as Bo,fromEvent as Vo,interval as Ho,isHigher as Uo,isInvariantQuality as Wo,isLower as Go,merge as Ko,Subject as qo,Subscription as Jo}from"@vkontakte/videoplayer-shared/es2015";import{map as Zo,Observable as Qo}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as $o}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as ns}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as rs}from"@vkontakte/videoplayer-shared/es2015";import{filter as Es,filterChanged as Ds,isNonNullable as Os}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as ks,assertNonNullable as As,debounce as js,ErrorCategory as Ms,filter as Ns,filterChanged as Ps,fromEvent as Fs,isNonNullable as Is,isNullable as Ls,map as Rs,mapTo as zs,merge as Bs,observableFrom as Vs,once as Hs,Subscription as Us,throttle as Ws}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Gs}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Ks}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as ec,now as tc,once as nc,Subscription as rc,ValueSubject as ic,isNonNullable as ac,safeStorage as oc,filterChanged as sc}from"@vkontakte/videoplayer-shared/es2015";import{combine as gc,map as _c,observeElementSize as vc,Subscription as yc,ValueSubject as bc,noop as xc}from"@vkontakte/videoplayer-shared/es2015";import{filter as Cc,map as wc,once as Tc}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Dc}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as Oc,isNonNullable as kc,isNullable as Ac,now as jc,once as Mc,Subscription as Nc,ValueSubject as Pc}from"@vkontakte/videoplayer-shared/es2015";import{isInvariantQuality as Ic,isNonNullable as Lc,isNullable as Rc,Subscription as zc,ValueSubject as Bc}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Vc}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Zc}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Qc}from"@vkontakte/videoplayer-shared/es2015";import{stringTrimStart as $c}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as el}from"@vkontakte/videoplayer-shared/es2015";import{abortable as nl,assertNonNullable as rl,ErrorCategory as il,ErrorOrigin as al,filter as ol,filterChanged as sl,flattenObject as cl,fromEvent as ll,getTraceSubscriptionMethod as ul,getWindow as dl,interval as fl,isNonNullable as z,isNullable as pl,map as ml,merge as hl,nowInt as gl,Subject as _l,Subscription as vl,SubscriptionRemovable as yl,ValueSubject as B}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as bl}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as xl}from"@vkontakte/videoplayer-shared/es2015";import{abortable as wl,assertNever as Tl,ErrorCategory as El,flattenObject as Dl,fromEvent as Ol,getWindow as kl,isNonNullable as Al,merge as jl,now as Ml,Subject as Nl,Subscription as Pl,suppressAbort as Fl,ValueSubject as Il,videoQualityToHeight as Ll,VideoQuality as Rl,isAbortError as zl}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Vl,ErrorOrigin as Hl}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Yl,isNullable as Xl,getWindow as Zl}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as mu,isNonNullable as hu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Tu}from"@vkontakte/videoplayer-shared/es2015";import{stringReplaceAll as Ou}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as ku}from"@vkontakte/videoplayer-shared/es2015";import{stringPadStart as Au}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as ju}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Mu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Nu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Pu}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Iu,isNullable as Lu}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ru}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Gu}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as Ku}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as qu}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Ju,assertNonNullable as Yu,ErrorCategory as Xu,ErrorOrigin as Zu,flattenObject as V,fromEvent as Qu,getExponentialDelay as $u,getWindow as ed,isAbortError as td,isHigher as nd,isNonNullable as H,isNullable as U,once as rd,Subject as id,Subscription as ad,ValueSubject as od}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as sd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as dd}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Hd}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Ud,isNonNullable as Wd,isNullable as Gd}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Kd}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as rf}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as af}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as _f,getWindow as vf,isNonNullable as yf,isNullable as bf,now as xf,isAbortError as Sf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as wf,getWindow as Tf,isAbortError as Ef,isNullable as Df,now as Of}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Af}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as jf,ErrorCategory as Mf,isNullable as Nf,ValueSubject as Pf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Lf,fromEvent as Rf,isNullable as zf,Subject as Bf,Subscription as Vf,ValueSubject as Hf}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Uf,ErrorCategory as Wf,Subject as Gf}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as Qf}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as $f,isHigher as ep,isLower as tp,isLowerOrEqual as np,VideoQuality as rp}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as gp,combine as _p,ErrorCategory as vp,filter as yp,filterChanged as bp,fromEvent as xp,isNonNullable as Sp,map as Cp,merge as wp}from"@vkontakte/videoplayer-shared/es2015";import{combine as Dp,merge as Op,filter as kp,filterChanged as Ap,isNullable as jp,map as Mp,ValueSubject as Np,isNonNullable as Pp}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as Hp,ValueSubject as Up}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Yp,combine as Xp,ErrorCategory as Zp,filter as Qp,filterChanged as $p,fromEvent as em,interval as tm,isNonNullable as nm,isNullable as rm,map as im,now as am,throttle as om}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as cm,ValueSubject as lm}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as pm,assertNonNullable as mm,combine as hm,debounce as gm,ErrorCategory as _m,filter as vm,filterChanged as ym,fromEvent as bm,isNonNullable as xm,isNullable as Sm,map as Cm,merge as wm,observableFrom as Tm,once as Em,Subscription as Dm,throttle as Om}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as km}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as Am}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Mm,assertNonNullable as Nm,combine as Pm,ErrorCategory as Fm,ErrorOrigin as Im,filter as Lm,filterChanged as Rm,flattenObject as zm,fromEvent as Bm,getTraceSubscriptionMethod as Vm,interval as Hm,isNonNullable as Um,isNullable as Wm,map as Gm,merge as Km,now as qm,Subject as Jm,Subscription as Ym,SubscriptionRemovable as Xm,tap as Zm,throttle as Qm,ValueSubject as W}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as $m}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as eh}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as th}from"@vkontakte/videoplayer-shared/es2015";import{arrayFlatMap as nh}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as rh}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as ih}from"@vkontakte/videoplayer-shared/es2015";import{promiseFinally as ah}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as oh,ErrorCategory as sh,Subject as ch}from"@vkontakte/videoplayer-shared/es2015";import{abortable as mh,assertNonNullable as hh,ErrorCategory as gh,ErrorOrigin as _h,flattenObject as vh,fromEvent as yh,getExponentialDelay as bh,getWindow as xh,isHigher as Sh,isNonNullable as Ch,isNullable as G,now as wh,once as Th,Subject as Eh,Subscription as Dh,ValueSubject as Oh,isAbortError as kh}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as jh}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Mh}from"@vkontakte/videoplayer-shared/es2015";import{abortable as Nh,assertNever as Ph,fromEvent as Fh,merge as Ih,now as Lh,Subject as Rh,ValueSubject as zh,flattenObject as Bh,ErrorCategory as Vh,SubscriptionRemovable as Hh,getWindow as Uh,isNonNullable as Wh,suppressAbort as Gh,videoQualityToHeight as Kh,VideoQuality as qh}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Jh,ErrorOrigin as Yh}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as rg,ValueSubject as ig}from"@vkontakte/videoplayer-shared/es2015";import{combine as dg,merge as fg,filter as pg,filterChanged as mg,isNullable as hg,map as gg,ValueSubject as _g,isNonNullable as vg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as bg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as xg}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as wg,combine as Tg,debounce as Eg,ErrorCategory as Dg,filter as Og,filterChanged as kg,isNonNullable as Ag,isNullable as jg,map as Mg,merge as Ng,observableFrom as Pg,Subscription as Fg,ValueSubject as Ig,VideoQuality as Lg}from"@vkontakte/videoplayer-shared/es2015";import{objectFromEntries as Rg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as zg}from"@vkontakte/videoplayer-shared/es2015";import{videoSizeToQuality as Bg,getExponentialDelay as Vg}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as Xg}from"@vkontakte/videoplayer-shared/es2015";import{fetchPolyfilled as Zg}from"@vkontakte/videoplayer-shared/es2015";import{isNonNullable as Qg,Subscription as $g,throttle as e_,ValueSubject as t_,Subject as n_,ErrorCategory as r_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as o_,debounce as s_,ErrorCategory as c_,fromEvent as l_,isInvariantQuality as u_,isNonNullable as d_,isNullable as f_,map as p_,merge as m_,observableFrom as h_,Subscription as g_,ValueSubject as __,VideoQuality as v_}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as b_}from"@vkontakte/videoplayer-shared/es2015";import{objectValues as x_}from"@vkontakte/videoplayer-shared/es2015";import{arrayAt as S_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as C_,assertNonNullable as w_,debounce as T_,ErrorCategory as E_,isHigherOrEqual as D_,isLowerOrEqual as O_,isNonNullable as k_,merge as A_,observableFrom as j_,Subscription as M_,map as N_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as F_,debounce as I_,merge as L_,observableFrom as R_,Subscription as z_,map as B_,ValueSubject as V_,ErrorCategory as H_,VideoQuality as U_}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as W_}from"@vkontakte/videoplayer-shared/es2015";import{assertNever as Q_,assertNonNullable as $_,ErrorCategory as ev,ErrorOrigin as tv,filter as nv,isNonNullable as rv,isNullable as iv,map as av,merge as ov,once as sv,Subject as K,Subscription as cv,ValueSubject as q,flattenObject as lv,devNull as uv,getWindow as dv}from"@vkontakte/videoplayer-shared/es2015";import{Observable as fv,map as pv,Subscription as mv,Subject as hv,now as gv,combine as _v}from"@vkontakte/videoplayer-shared/es2015";import{AbortControllerPolyfilled as yv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as bv,Subscription as xv,combine as Sv,filter as Cv,once as wv}from"@vkontakte/videoplayer-shared/es2015";import{getWindow as Tv}from"@vkontakte/videoplayer-shared/es2015";import{arrayIncludes as Ov}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as kv,Subject as Av,Subscription as jv,merge as Mv,isNonNullable as Nv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Pv,flattenObject as Fv,isNullable as Iv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as zv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorCategory as Vv,ErrorOrigin as Hv}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as Wv,flattenObject as Gv}from"@vkontakte/videoplayer-shared/es2015";import{filterChanged as qv,flattenObject as Jv,fromEvent as Yv,getWindow as Xv,isNonNullable as Zv,merge as Qv,now as $v,Subject as ey,Subscription as ty,ErrorOrigin as ny}from"@vkontakte/videoplayer-shared/es2015";import{ErrorOrigin as ay}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as sy,isNonNullable as cy,getWindow as ly}from"@vkontakte/videoplayer-shared/es2015";import{isNullable as py,isNonNullable as my,Subscription as hy}from"@vkontakte/videoplayer-shared/es2015";import{fromEvent as yy,once as by,combine as xy,Subscription as Sy,ValueSubject as Cy,map as wy,filter as Ty,isNonNullable as Ey,now as J,safeStorage as Dy,getWindow as Oy}from"@vkontakte/videoplayer-shared/es2015";import{fillWithDefault as zy,VideoQuality as By}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as Uy,combine as Wy,devNull as Gy,ErrorCategory as Ky,filter as Y,filterChanged as X,flattenObject as qy,fromEvent as Jy,getPlayerId as Yy,getTimersDiagnostics as Xy,getTraceSubscriptionMethod as Zy,getWindow as Qy,InternalsExposure as $y,isHigher as eb,isInvariantQuality as tb,isNonNullable as nb,isNullable as rb,Logger as ib,map as Z,mapTo as ab,merge as ob,now as sb,once as Q,retainTimers as cb,Subject as $,Subscription as lb,tap as ub,throttle as db,TracerFactory as fb,ValueSubject as pb,combineLatest as mb}from"@vkontakte/videoplayer-shared/es2015";import{merge as hb,map as gb,filter as _b,isNonNullable as vb}from"@vkontakte/videoplayer-shared/es2015";import{assertNonNullable as bb}from"@vkontakte/videoplayer-shared/es2015";import{filter as Sb,once as Cb}from"@vkontakte/videoplayer-shared/es2015";import{requestIdleCallbackPolyfilled as Tb}from"@vkontakte/videoplayer-shared/es2015";import{objectEntries as Eb}from"@vkontakte/videoplayer-shared/es2015";import{cancelIdleCallbackPolyfilled as Db}from"@vkontakte/videoplayer-shared/es2015";import{devNull as Ob,getWindow as kb}from"@vkontakte/videoplayer-shared/es2015";import{Subscription as Lb,Observable as Rb,Subject as zb,ValueSubject as Bb,VideoQuality as Vb}from"@vkontakte/videoplayer-shared/es2015";var _oxcMod8io6zu=function(){function e(t){"@babel/helpers - typeof";return e=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},e(t)}var t=e;function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol._oxc_toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@_oxc_toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}var t=e,r=n;function i(e){var n=r(e,`string`);return t(n)==`symbol`?n:n+``}var a=i;function o(e,t,n){return(t=a(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=o;function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?c(Object(n),!0).forEach(function(t){s(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function u(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function d(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){u(a,r,i,o,s,`next`,e)}function s(e){u(a,r,i,o,s,`throw`,e)}o(void 0)})}}function f(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.includes(r))continue;n[r]=e[r]}return n}var p=f;function m(e,t){if(e==null)return{};var n,r,i=p(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.includes(n)||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function h(e,t){this.v=e,this.k=t}var g=h;function _(e){return new g(e,0)}var g=h;function v(e){return function(){return new y(e.apply(this,arguments))}}function y(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof g;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}y.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},y.prototype.next=function(e){return this._invoke(`next`,e)},y.prototype.throw=function(e){return this._invoke(`throw`,e)},y.prototype.return=function(e){return this._invoke(`return`,e)};const b=[`name`],x=[`url`],S=[`url`],C=[`downloadingItems`],ee=[`data`],w=[`container`];var T=l,E=d,D=m,te=_,O=v,k=`2.0.180`,A;(e=>{e.STOPPED=`stopped`,e.READY=`ready`,e.PLAYING=`playing`,e.PAUSED=`paused`})(A||={});var ne;(e=>{e.MPEG=`MPEG`,e.DASH=`DASH`,e.DASH_SEP=`DASH_SEP`,e.DASH_SEP_VK=`DASH_SEP`,e.DASH_WEBM=`DASH_WEBM`,e.DASH_WEBM_AV1=`DASH_WEBM_AV1`,e.DASH_STREAMS=`DASH_STREAMS`,e.DASH_WEBM_VK=`DASH_WEBM`,e.DASH_ONDEMAND=`DASH_ONDEMAND`,e.DASH_ONDEMAND_VK=`DASH_ONDEMAND`,e.DASH_LIVE=`DASH_LIVE`,e.DASH_LIVE_CMAF=`DASH_LIVE_CMAF`,e.DASH_LIVE_WEBM=`DASH_LIVE_WEBM`,e.HLS=`HLS`,e.HLS_ONDEMAND=`HLS_ONDEMAND`,e.HLS_JS=`HLS`,e.HLS_FMP4=`HLS_FMP4`,e.HLS_LIVE=`HLS_LIVE`,e.HLS_LIVE_CMAF=`HLS_LIVE_CMAF`,e.WEB_RTC_LIVE=`WEB_RTC_LIVE`})(ne||={});var re;(e=>{e.AV1=`av1`,e.VP9=`vp9`,e.AVC1=`avc1`,e.HEV1=`hev1`})(re||={});var ie;(e=>{e.NOT_AVAILABLE=`NOT_AVAILABLE`,e.AVAILABLE=`AVAILABLE`,e.CONNECTING=`CONNECTING`,e.CONNECTED=`CONNECTED`})(ie||={});var ae;(e=>{e.HTTP1=`http1`,e.HTTP2=`http2`,e.QUIC=`quic`})(ae||={});var oe;(e=>{e.NONE=`none`,e.INLINE=`inline`,e.FULLSCREEN=`fullscreen`,e.SECOND_SCREEN=`second_screen`,e.PIP=`pip`,e.INVISIBLE=`invisible`})(oe||={});var se;(e=>{e.TRAFFIC_SAVING=`traffic_saving`,e.HIGH_QUALITY=`high_quality`,e.UNKNOWN=`unknown`})(se||={});var Te=e=>new Promise((t,n)=>{let r=document.createElement(`script`);r.setAttribute(`src`,e),r.onload=()=>t(),r.onerror=e=>n(e),document.body.appendChild(r)});class Ee{constructor(e){this.connection$=new me(void 0),this.castState$=new me(`NOT_AVAILABLE`),this.errorEvent$=new he,this.contentId=void 0,this.realCastState$=new me(`NOT_AVAILABLE`),this.subscription=new ge,this.log=void 0,this.params=void 0,this.isDestroyed=!1,this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastInitializer`);let t=`chrome`in window;if(this.log({message:`[constructor] receiverApplicationId: ${this.params.receiverApplicationId}, isDisabled: ${this.params.isDisabled}, isSupported: ${t}`}),e.isDisabled||!t)return;let n=pe(window.chrome?.cast),r=!!window.__onGCastApiAvailable;n?this.initializeCastApi():(window.__onGCastApiAvailable=e=>{delete window.__onGCastApiAvailable,e&&!this.isDestroyed&&this.initializeCastApi()},r||Te(`https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1`).catch(()=>this.errorEvent$.next({id:`ChromecastLoading`,category:we.NETWORK,message:`Script loading failed!`})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){var e;(e=cast.framework.CastContext.getInstance())==null||(e=e.getCurrentSession())==null||e.endSession(!0)}stopMedia(){return new Promise((e,t)=>{var n;(n=cast.framework.CastContext.getInstance())==null||(n=n.getCurrentSession())==null||(n=n.getMediaSession())==null||n.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){pe(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Ce(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Ce(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.isDestroyed=!0,this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),n=cast.framework.CastContext.getInstance();this.subscription.add(ye(n,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(e=>{switch(e.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:var t;this.contentId=(t=n.getCurrentSession())==null||(t=t.getMediaSession())==null||(t=t.media)==null?void 0:t.contentId;break;case cast.framework.SessionState.NO_SESSION:case cast.framework.SessionState.SESSION_ENDING:case cast.framework.SessionState.SESSION_ENDED:case cast.framework.SessionState.SESSION_START_FAILED:this.contentId=void 0;break;default:return de(e.sessionState)}})).add(_e(ye(n,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(xe(e=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(e)}`})}),be(e=>e.castState)),ve([n.getCastState()])).pipe(Se(),be(De),xe(e=>{this.log({message:`realCastState$: ${e}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let i=r===`CONNECTED`,a=pe(this.connection$.getValue());if(i&&!a){var o;let r=n.getCurrentSession();fe(r);let i=r.getCastDevice(),a=(o=r.getMediaSession())==null||(o=o.media)==null?void 0:o.contentId;(Ce(a)||a===this.contentId)&&(this.log({message:`connection created`}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:r,castDevice:i}))}else!i&&a&&(this.log({message:`connection destroyed`}),this.connection$.next(void 0));this.castState$.next(r===`CONNECTED`?pe(this.connection$.getValue())?`CONNECTED`:`AVAILABLE`:r)}))}initializeCastApi(){let e,t,n;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,n=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:n}),this.initListeners()}catch(e){this.errorEvent$.next({id:`ChromecastInitializer`,category:we.EXTERNAL_API,message:`[initializeCastApi] failed`,thrown:e})}}}var De=e=>{switch(e){case cast.framework.CastState.NO_DEVICES_AVAILABLE:return`NOT_AVAILABLE`;case cast.framework.CastState.NOT_CONNECTED:return`AVAILABLE`;case cast.framework.CastState.CONNECTING:return`CONNECTING`;case cast.framework.CastState.CONNECTED:return`CONNECTED`;default:return de(e)}};var Ke=`_offset_p`,qe=e=>{if(We(e,Ke))return!0;try{return new URL(e).searchParams.has(`offset_p`)}catch{return!1}},Je=(e,t=0,n=0)=>{switch(n){case 0:return e.replace(Ke,t===0?``:`_`+t.toFixed(0));case 1:{if(t===0)return e;let n=new URL(e);return n.searchParams.append(`playback_shift`,t.toFixed(0)),n.toString()}case 2:{let n=new URL(e);return!n.searchParams.get(`offset_p`)&&t===0?e:(n.searchParams.set(`offset_p`,t.toFixed(0)),n.toString())}default:Ge(n)}return e},Ye=(e,t)=>{switch(t){case 0:return NaN;case 1:{let t=new URL(e);return Number(t.searchParams.get(`playback_shift`))}case 2:{let t=new URL(e);return Number(t.searchParams.get(`offset_p`)??0)}default:Ge(t)}},Xe=e=>{let{source:t,format:n,meta:r,output:i}=e,a,o,s;switch(n){case`MPEG`:{let e=t[n];Be(e);let r=He(Object.keys(e));Be(r);let i=e[r];Be(i),a=i,o=`video/mp4`,s=Ze();break}case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:{let e=t[n];Be(e),a=e.url,o=`application/x-mpegurl`,s=Ze();break}case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:{let e=t[n];Be(e),a=e.url,o=`application/dash+xml`,s=Ze();break}case`DASH_LIVE_CMAF`:{let e=t[n];Be(e),a=e.url,o=`application/dash+xml`,s=Qe();break}case`HLS_LIVE`:case`HLS_LIVE_CMAF`:{let e=t[n];Be(e),a=Je(e.url),o=`application/x-mpegurl`,s=Qe();break}case`DASH_LIVE`:case`WEB_RTC_LIVE`:{let e=`Unsupported format for Chromecast`,t=Error(e);throw i.error$.next({id:`ChromecastProvider.createMediaInfo()`,category:Ve.VIDEO_PIPELINE,message:e,thrown:t}),t}case`DASH`:case`DASH_LIVE_WEBM`:throw Error(`${n} is no longer supported`);default:return ze(n)}let c=$e(r.videoId??a,o);c.contentUrl=a,c.streamType=s,c.metadata=et();let{title:l,subtitle:u}=r;return Ue(l)&&(c.metadata.title=l),Ue(u)&&(c.metadata.subtitle=u),c};function Ze(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.BUFFERED)??`BUFFERED`}function Qe(){var e;return((e=chrome.cast)==null||(e=e.media)==null||(e=e.StreamType)==null?void 0:e.LIVE)??`LIVE`}function $e(e,t){var n;return!((n=chrome.cast)==null||(n=n.media)==null)&&n.MediaInfo?new chrome.cast.media.MediaInfo(e,t):{contentId:e,contentType:t,metadata:{title:``,subtitle:``},streamType:Ze()}}function et(){var e;return!((e=chrome.cast)==null||(e=e.media)==null)&&e.GenericMediaMetadata?new chrome.cast.media.GenericMediaMetadata:{images:[],metadataType:0,releaseDate:``,subtitle:``,title:``,releaseYear:1970,type:0}}var j=(e,t,n=!1)=>{let r=e.getTransition();(n||!r||r.to===t)&&e.setState(t)};var M=tt(nt.CORE);class rt{constructor(e){this.params=void 0,this.interval=0,this.startVideoPosition=void 0,this.startTs=void 0,this.params=e}start(e=0){M.clearInterval(this.interval),this.startVideoPosition=e,this.startTs=Date.now(),this.interval=M.setInterval(()=>{let e=(Date.now()-this.startTs)/1e3,t=this.startVideoPosition+e;this.params.output.position$.next(t)},1e3)}pause(){M.clearInterval(this.interval)}destroy(){M.clearInterval(this.interval)}}class ut{constructor(){this._current=void 0,this._current_version=void 0,this._chromeVersion=void 0,this._firefoxVersion=void 0,this._safariVersion=void 0,this._operaVersion=void 0,this._edgeVersion=void 0,this._yandexVersion=void 0,this._isMiuiBrowser=!1}get current(){return this._current}get isChrome(){return this.current===`Chrome`}get isChromiumBased(){return st([`Chrome`,`Chromium`,`Opera`,`Yandex`,`Edge`,`SamsungBrowser`],this.current)}get isFirefox(){return this.current===`Firefox`}get isSafari(){return this.current===`Safari`}get isOpera(){return this.current===`Opera`}get isEdge(){return this.current===`Edge`}get isYandex(){return this.current===`Yandex`}get isSamsungBrowser(){return this.current===`SamsungBrowser`}get currentVersion(){return this._current_version}get chromeVersion(){return this._chromeVersion}get firefoxVersion(){return this._firefoxVersion}get safariVersion(){return this._safariVersion}get operaVersion(){return this._operaVersion}get edgeVersion(){return this._edgeVersion}get yandexVersion(){return this._yandexVersion}get isMiuiBrowser(){return this._isMiuiBrowser}detect(){let{userAgent:e}=navigator;try{let t=/yabrowser/i.test(e)?`Yandex`:void 0,n=/samsungbrowser/i.test(e)?`SamsungBrowser`:void 0,r=/chrome|crios/i.test(e)?`Chrome`:void 0,i=/chromium/i.test(e)?`Chromium`:void 0,a=/firefox|fxios/i.test(e)?`Firefox`:void 0,o=/smart-tv;.*tizen/i.test(e)?`Chrome`:void 0,s=/webkit|safari|khtml/i.test(e)?`Safari`:void 0,c=/opr\//i.test(e)?`Opera`:void 0,l=/edg/i.test(e)?`Edge`:void 0;this._isMiuiBrowser=/(XiaoMi)|(MiuiBrowser)/i.test(e),this._current=t||n||a||c||l||r||i||o||s||`Rest`}catch(e){console.error(e)}this.isChrome&&this.detectChromeVersion(),this.isFirefox&&this.detectFirefoxVersion(),this.isSafari&&this.detectSafariVersion(),this.isOpera&&this.detectOperaVersion(),this.isEdge&&this.detectEdgeVersion(),this.isYandex&&this.detectYandexVersion()}detectVersion(e){try{let{userAgent:t}=ct().navigator,n=t.match(e);if(!n)return;let r=n[1],i=parseInt(r,10);if(!isNaN(i))return this._current_version=i,i}catch(e){console.error(e)}}detectChromeVersion(){this._chromeVersion=this.detectVersion(/Chrome\/(\d+\.\d+)/),lt(this._chromeVersion)&&(this._chromeVersion=this.detectVersion(/(\d+\.\d+\.\d+\.\d+)\/\d+\.\d+ TV/))}detectFirefoxVersion(){this._firefoxVersion=this.detectVersion(/Firefox\/(\d+\.\d+)/)}detectSafariVersion(){this._safariVersion=this.detectVersion(/Version\/(\d+)/)}detectOperaVersion(){this._operaVersion=this.detectVersion(/OPR\/(\d+\.\d+)/)}detectEdgeVersion(){this._edgeVersion=this.detectVersion(/Edg\/(\d+\.\d+)/)}detectYandexVersion(){this._yandexVersion=this.detectVersion(/YaBrowser\/(\d+\.\d+\.\d+)/)}}var pt=()=>{var e;return/Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(navigator.appVersion??navigator.userAgent)||((e=navigator)==null||(e=e.userAgentData)==null?void 0:e.mobile)};class mt{constructor(e){this._displayChecker=void 0,this._isMobile=void 0,this._current=void 0,this._iosVersion=void 0,this._highEntropyValues={},this._os={name:`Unknown`,version:`Unknown`,full:`Unknown`},this._details={vendor:`Unknown`,model:`Unknown`},this._hardware={},this._gpuDetection=void 0,this._displayChecker=e}get current(){return this._current}get os(){return this._os}get details(){return this._details}get hardware(){return this._hardware}get highEntropyValues(){return this._highEntropyValues}get isIOS(){return this._highEntropyValues.platform===`iOS`||N(this.os.name.toLowerCase(),`ios`)||N([`iPhone`,`iPad`,`iPod`],this.current)}get isIPadOS(){let e=this.current===`Mac`&&this._displayChecker.isTouch;return this.current===`iPad`||e}get isMac(){return this._highEntropyValues.platform===`macOS`||N(this.os.name.toLowerCase(),`mac`)||this.current===`Mac`}get isApple(){return this.isIOS||this.isMac}get isIphoneOrOldIpad(){if(!this.isApple||!this._displayChecker.isTouch)return!1;let e=this.current===`iPad`||this._displayChecker.width>700,t=this._iosVersion;return!e||e&&!!t&&t<16}get isAndroid(){return this._highEntropyValues.platform===`Android`||N(this.os.name.toLowerCase(),`android`)||this.current===`Android`}get isWindows(){return N(this.os.name.toLowerCase(),`windows`)}get isLinux(){return N(this.os.name.toLowerCase(),`linux`)&&!this.isAndroid}get isMobile(){return this._highEntropyValues.mobile||this._isMobile}get iOSVersion(){return this._iosVersion}detect(){let e=dt();if(!ft(e))return;let{userAgent:t}=e.navigator;try{this._isMobile=pt()}catch(e){console.error(`DeviceChecker: calling isMobile error - `,e)}this.detectDevice(t),this.detectOS(t),this.detectDeviceDetails(t),this.detectHardware(e),this.detectHighEntropyValues(),this.isIOS&&this.detectIOSVersion()}detectHardware(e){let t=e.navigator;try{this._hardware={cpuCores:t.hardwareConcurrency,memoryGb:t.deviceMemory}}catch(e){console.error(`DeviceChecker: detectHardware error - `,e)}}detectGpu(){return this._gpuDetection??=this.requestGpuInfo(),this._gpuDetection}requestGpuInfo(){var e=this;return E(function*(){let t=dt();if(ft(t))try{var n,r;let i=yield t.navigator.gpu?.requestAdapter();e._hardware=T(T({},e._hardware),{},{gpuVendor:(i==null||(n=i.info)==null?void 0:n.vendor)||void 0,gpuArchitecture:(i==null||(r=i.info)==null?void 0:r.architecture)||void 0})}catch(e){console.error(`DeviceChecker: detectGpu error - `,e)}})()}detectHighEntropyValues(){var e=this;return E(function*(){let t=dt();if(!ft(t))return;let{userAgentData:n}=t.navigator;if(n?.getHighEntropyValues){let t=yield n.getHighEntropyValues([`architecture`,`bitness`,`brands`,`mobile`,`platform`,`formFactor`,`model`,`platformVersion`,`wow64`]);e._highEntropyValues=t,t.platform&&(e._os.name=e.normalizeOSName(t.platform),t.platformVersion&&(e._os.version=e.normalizeOSVersion(t.platformVersion),e._os.full=`${e._os.name} ${e._os.version}`)),t.model&&(e._details.model=t.model)}})()}detectDevice(e){try{let t=/android/i.test(e)?`Android`:void 0,n=/iphone/i.test(e)?`iPhone`:void 0,r=/ipad/i.test(e)?`iPad`:void 0,i=/ipod/i.test(e)?`iPod`:void 0,a=/mac/i.test(e)?`Mac`:void 0,o=/webOS|BlackBerry|IEMobile|Opera Mini/i.test(e)?`RestMobile`:void 0;this._current=t||n||r||i||o||a||`Desktop`}catch(e){console.error(`DeviceChecker: device detection error - `,e)}}detectOS(e){try{for(let[t,n]of[[/(windows nt) (6\.[23]); arm/i,[`Windows RT`]],[/(windows nt) (6\.3); arm/i,[`Windows RT 8.1`]],[/(windows (?:phone|mobile|iot))(?: os)?[/ ]?([\d.]+)/i,[`Windows Mobile`,2]],[/(windows)[/ ](xp|vista|7|8(\.1)?|10|11|2000|me)/i,[1,1]],[/windows nt ?([\d.]+)/i,[`Windows`,1]],[/(windows)[/ ](95|98|me|2000|xp|vista|7|8|8\.1|10|11)/i,[1,2]],[/(iphone os|cpu iphone os) ([\d_.]+)/i,[`iOS`,2]],[/(ipad os|cpu os) ([\d_.]+)/i,[`iPadOS`,2]],[/(ipod os|cpu ipod os) ([\d_.]+)/i,[`iOS`,2]],[/(?:ios|os) ([\d_.]+) like mac os x/i,[`iOS`,1]],[/cfnetwork\/.+darwin/i,[`iOS`]],[/(mac os x) ?([\d_.]+)/i,[`macOS`,2]],[/(macintosh|mac os)/i,[`macOS`]],[/(android) ([\d.]+)/i,[1,2]],[/(harmonyos)[/ ]?([\d.]*)/i,[`HarmonyOS`,2]],[/\b(ubuntu|debian|fedora|centos|arch|linux)(?:[-/ ]([\w.]+))?/i,[1,2]],[/(cros)\D*([\d.]+)/i,[`Chrome OS`,2]],[/(freebsd|openbsd|netbsd|dragonfly)[/ ]?([\w.]*)/i,[1,2]],[/(sunos|solaris)?([\d.]*)/i,[`Solaris`,2]],[/(aix)?([\d.]*)/i,[`AIX`,2]]]){let r=e.match(t);if(r){let t=n.length>0,i=n.length>1,a=`Unknown`,o=`Unknown`;if(t){let e=n[0];typeof e==`number`?e<r.length&&r[e]!==void 0&&(a=r[e]):a=e}if(i){let e=n[1];typeof e==`number`?e<r.length&&r[e]!==void 0&&(o=r[e]):e!==void 0&&(o=e)}else r[2]===void 0?r[1]!==void 0&&t&&typeof n[0]==`string`&&(o=r[1]):o=r[2];a=this.normalizeOSName(a),o=this.normalizeOSVersion(o,a),a===`iOS`&&/ipad/i.test(e)?a=`iPadOS`:a===`iPadOS`&&/ip(hone|od)/i.test(e)&&(a=`iOS`),this._os={name:a,version:o||`Unknown`,full:o&&o!==`Unknown`?`${a} ${o}`:a};break}}}catch(e){console.error(`DeviceChecker: OS detection error - `,e)}}normalizeOSName(e){if(!e)return`Unknown`;let t=e.toLowerCase();return N(t,`windows`)?`Windows`:N(t,`mac os`)||N(t,`macintosh`)?`macOS`:N(t,`iphone`)||N(t,`ios`)?`iOS`:N(t,`ipados`)?`iPadOS`:N(t,`android`)?`Android`:N(t,`harmonyos`)?`HarmonyOS`:N(t,`linux`)?`Linux`:N(t,`cros`)?`Chrome OS`:N(t,`freebsd`)?`FreeBSD`:N(t,`openbsd`)?`OpenBSD`:N(t,`solaris`)||N(t,`sunos`)?`Solaris`:N(t,`aix`)?`AIX`:e}normalizeOSVersion(e,t){if(!e)return`Unknown`;if(e!==`Unknown`&&(e=e.replace(/_/g,`.`),t===`Windows`)){let t=parseFloat(e);if(!isNaN(t)){if(t>=11)return`11`;if(t>=10)return`10`;if(t===6.3)return`8.1`;if(t===6.2)return`8`;if(t===6.1)return`7`;if(t===6)return`Vista`;if(t===5.1||t===5.2)return`XP`;if(t===5)return`2000`;if(t===4)return`NT 4.0`}}return e}detectDeviceDetails(e){try{for(let[t,n]of[[/(iphone)/i,[`Apple`,`iPhone`]],[/(ipad)/i,[`Apple`,`iPad`]],[/(ipod)/i,[`Apple`,`iPod`]],[/(macintosh)/i,[`Apple`,`Macintosh`]],[/(windows[\w\-_ ]*phone)/i,[`Microsoft`,0]],[/(windows nt|win64|win32|wow64)/i,[`Microsoft`,`PC`]],[/\b(sch-i[89]0\d|shw-m380s|sm-[ptxs]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i,[`Samsung`,1]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?\d+a?|galaxy nexus)/i,[`Samsung`,1]],[/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,[`Samsung`,1]],[/sec-(sgh\w+)/i,[`Samsung`,1]],[/smart-tv.+(samsung)/i,[`Samsung`,`Smart TV`]],[/(samsung).*tizen/i,[`Samsung`,`Smart TV`]],[/(pixel (?:c|tablet|[0-9a-z ]+))/i,[`Google`,1]],[/(pixelbook(?: go)?)/i,[`Google`,1]],[/nexus [0-9]/i,[`Google`,0]],[/(redmi[-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(mi[\w\-_ ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(poco[\w ]+)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(hm[-_ ]?note?[\w ]*)(?: bui|\))/i,[`Xiaomi`,1]],[/\b(?:xiao)?mi[\w\-_ ]+pad/i,[`Xiaomi`,0]],[/(?:huawei|honor) ?([-\w ]+)[;)]/i,[`Huawei`,1]],[/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][\dc][adnt]?)\b(?!.+d\/s)/i,[`Huawei`,1]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?)/i,[`Huawei`,1]],[/(?:one)?(?:plus)? ?([a\d0]\d\d\d?)(?: b|\))/i,[`OnePlus`,1]],[/droid.+; (cph2[3-6]\d[13579]|((?:gm|hd)19|(?:ac|be|in|kb)20|(?:d[en]|eb|le|mt)21|ne22)[0-2]\d)(?: bui|\))/i,[`OnePlus`,1]],[/(oneplus)[-_ ]?([-\w]*)/i,[`OnePlus`,2]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i,[`Realme`,1]],[/(realme)[-_ ]?([-\w]*)/i,[`Realme`,2]],[/; (\w+) bui.+ oppo/i,[`OPPO`,1]],[/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i,[`OPPO`,1]],[/\b(opd2(\d{3}a?))(?: bui|\))/i,[`OPPO`,1]],[/(oppo)[-_ ]?([-\w]*)/i,[`OPPO`,2]],[/; vivo (\w+)(?: bui|\))/i,[`Vivo`,1]],[/\b(v[12]\d{3}\w?[at])(?: bui|;)/i,[`Vivo`,1]],[/(vivo)[-_ ]?([-\w]*)/i,[`Vivo`,2]],[/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,[`Motorola`,1]],[/((?:moto(?! 360)[-\w() ]+|xt\d{3,4}[cgkosw+]?[-\d]*|nexus 6)(?= bui|\)))/i,[`Motorola`,1]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b/i,[`Motorola`,0]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i,[`Motorola`,0]],[/droid.+; ([a-z]?\d[0-2]{2}[a-z]{2}|[c-g]\d{4}|so[-gl]\w+|xq-[a-z]{2}\d\d)(?= bui|\))/i,[`Sony`,1]],[/sony tablet [ps]/i,[`Sony`,`Xperia Tablet`]],[/\b(?:sony)?sgp\w+(?: bui|\))/i,[`Sony`,0]],[/(sony)[-_ ]?([-\w]*)/i,[`Sony`,2]],[/\blg[-e;/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,[`LG`,1]],[/\blg-?([\d\w]+) bui/i,[`LG`,1]],[/(lm(?:-?f100[nv]?|-[\w.]+)(?= bui|\))|nexus [45])/i,[`LG`,1]],[/((?=lg)?[vl]k-?\d{3}) bui/i,[`LG`,0]],[/(lg)[-_ ]?([-\w]*)/i,[`LG`,2]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,[`Nokia`,1]],[/nokia[-_ ]?(([-\w. ]*?))(?: bui|\)|;|\/)/i,[`Nokia`,1]],[/(nokia) (t[12][01])/i,[`Nokia`,2]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i,[`ASUS`,1]],[/(?:asus[-_ ])?(zenfone[\w\-_ ]*)/i,[`ASUS`,1]],[/(rog[\w\-_ ]*)/i,[`ASUS`,1]],[/(asus)[-_ ]?([-\w]*)/i,[`ASUS`,2]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,[`Lenovo`,1]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])(?: bui|;|\)|\/)/i,[`Lenovo`,1]],[/(thinkpad[\w\-_ ]*)/i,[`Lenovo`,0]],[/(kf[a-z]{2}[a-z]*)(?: bui|\))/i,[`Amazon`,1]],[/(alexa)webm/i,[`Amazon`,`Echo`]],[/(fire[\w\-_ ]*)/i,[`Amazon`,0]],[/(amazon)[-_ ]?([-\w]*)/i,[`Amazon`,2]],[/(?:blackberry|\(bb10;) (\w+)/i,[`BlackBerry`,1]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,[`BlackBerry`,1]],[/(playbook);[-\w),; ]+(rim)/i,[`BlackBerry`,1]],[/(microsoft); (lumia[\w ]+)/i,[`Microsoft`,2]],[/(surface duo)/i,[`Microsoft`,`Surface Duo`]],[/(surface[\w\-_ ]*)/i,[`Microsoft`,0]],[/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,[`ZTE`,2]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,[`HTC`,2]],[/(alcatel|tcl)[-_ ]?([-\w]*)/i,[1,2]],[/(meizu)[-_ ]?([-\w]*)/i,[`Meizu`,2]],[/(tecno)[-_ ]?([-\w]*)/i,[`Tecno`,2]],[/(infinix)[-_ ]?([-\w]*)/i,[`Infinix`,2]],[/(micromax)[-_ ]?([-\w]*)/i,[`Micromax`,2]],[/(lava)[-_ ]?([-\w]*)/i,[`Lava`,2]],[/(panasonic)[-_ ]?([-\w]*)/i,[`Panasonic`,2]],[/(sharp)\/?([-\w]*)/i,[`Sharp`,2]],[/(benq)[-_ ]?([-\w]*)/i,[`BenQ`,2]],[/(palm)[-_ ]?([-\w]*)/i,[`Palm`,2]],[/(vertu)[-_ ]?([-\w]*)/i,[`Vertu`,2]],[/(gionee)[-_ ]?([-\w]*)/i,[`Gionee`,2]],[/(doogee)[-_ ]?([-\w]*)/i,[`Doogee`,2]],[/(ulefone)[-_ ]?([-\w]*)/i,[`Ulefone`,2]],[/(blackview)[-_ ]?([-\w]*)/i,[`Blackview`,2]],[/(cubot)[-_ ]?([-\w]*)/i,[`Cubot`,2]],[/(umidigi)[-_ ]?([-\w]*)/i,[`UMIDIGI`,2]],[/(oukitel)[-_ ]?([-\w]*)/i,[`Oukitel`,2]],[/(fairphone)[-_ ]?([-\w]*)/i,[`Fairphone`,2]],[/(cat)[-_ ]?([-\w]*)/i,[`Cat`,2]],[/(energy)[-_ ]?([-\w]*)/i,[`Energizer`,2]],[/(land rover)[-_ ]?([-\w]*)/i,[`Land Rover`,2]],[/(shield[\w\-_ ]*)/i,[`Nvidia`,0]],[/(crkey)/i,[`Google`,`Chromecast`]],[/(roku)[\dx]*/i,[`Roku`,0]],[/(apple)[-_ ]?tv/i,[`Apple`,`TV`]],[/(amazon)[-_ ]?tv/i,[`Amazon`,`Fire TV`]],[/(google)[-_ ]?tv/i,[`Google`,`TV`]],[/(smart[\w\-_ ]*tv)/i,[0,`Smart TV`]],[/(playstation[\w\-_ ]*)/i,[`Sony`,0]],[/(nintendo[\w\-_ ]*)/i,[`Nintendo`,0]],[/(xbox[\w\-_ ]*)/i,[`Microsoft`,0]],[/(googlebot)/i,[`Google`,`Bot`]],[/(bingbot)/i,[`Microsoft`,`Bing Bot`]],[/(yandexbot)/i,[`Yandex`,`Bot`]],[/(slackbot)/i,[`Slack`,`Bot`]],[/(twitterbot)/i,[`Twitter`,`Bot`]],[/(facebookbot)/i,[`Facebook`,`Bot`]],[/(linkedinbot)/i,[`LinkedIn`,`Bot`]],[/(tesla)[-_ ]?([-\w]*)/i,[`Tesla`,2]],[/(raspberry[\w\-_ ]*)/i,[`Raspberry Pi`,0]]]){let r=e.match(t);if(r){let e=n[0],t=n[1],i=typeof e==`number`?r[e]===void 0?`Unknown`:this.normalizeVendorName(r[e]):this.normalizeVendorName(e),a=`Unknown`;typeof t==`number`?a=r[t]===void 0?`Unknown`:r[t]:t===void 0?r[1]===void 0?r[0]!==void 0&&(a=r[0]):a=r[1]:a=t,a=this.normalizeModelName(a,i),this.details.vendor=i,this.details.model=a;break}}}catch(e){console.error(`DeviceChecker: device details detection error - `,e)}}normalizeVendorName(e){return e?{apple:`Apple`,samsung:`Samsung`,google:`Google`,xiaomi:`Xiaomi`,huawei:`Huawei`,oneplus:`OnePlus`,oppo:`OPPO`,vivo:`Vivo`,realme:`Realme`,motorola:`Motorola`,sony:`Sony`,lg:`LG`,nokia:`Nokia`,asus:`ASUS`,lenovo:`Lenovo`,amazon:`Amazon`,blackberry:`BlackBerry`,microsoft:`Microsoft`,zte:`ZTE`,htc:`HTC`,alcatel:`Alcatel`,tcl:`TCL`,meizu:`Meizu`,tecno:`Tecno`,infinix:`Infinix`,micromax:`Micromax`,lava:`Lava`,panasonic:`Panasonic`,sharp:`Sharp`,benq:`BenQ`,palm:`Palm`,honor:`Honor`,nvidia:`NVIDIA`,roku:`Roku`}[e.toLowerCase()]||e.charAt(0).toUpperCase()+e.slice(1).toLowerCase():`Unknown`}normalizeModelName(e,t){if(!e||e===`Unknown`)return e;if(e===`0`)return`Unknown`;let n=e.replace(/^build\//i,``).replace(/\s+bui$/i,``).replace(/\)$/,``).replace(/[;,)]/g,``).replace(/\s*\(.*?\)\s*/g,``).trim(),r=t.toLowerCase();return N(r,`samsung`)?n=n.replace(/^(sm-|gt-|sgh-|sch-)/i,``):N(r,`xiaomi`)?n=n.replace(/^(mi[\s\-_]*|redmi[\s\-_]*)/i,``):N(r,`oneplus`)?n=n.replace(/^oneplus[\s\-_]*/i,``):N(r,`google`)&&(n=n.replace(/^(pixel[\s\-_]*|nexus[\s\-_]*)/i,``)),n=n.replace(/_/g,` `).replace(/-/g,` `).replace(/\s+/g,` `).trim(),n?(n.length>0&&/^[a-z]/.test(n)&&(n=n.charAt(0).toUpperCase()+n.slice(1)),n):`Unknown`}detectIOSVersion(){try{let e=dt();if(!ft(e))return;if(this._highEntropyValues.platformVersion){let e=this._highEntropyValues.platformVersion.split(`.`).slice(0,2).join(`.`);this._iosVersion=parseFloat(e);return}if(this._os.version!==`Unknown`){let e=this._os.version.split(`.`),t=e.length>=2?`${e[0]}.${e[1]}`:e[0];this._iosVersion=parseFloat(t);return}let t=e.navigator.userAgent.match(/OS (\d+(_\d+)?)/i);t?.[1]&&(this._iosVersion=parseFloat(t[1].replace(/_/g,`.`)))}catch(e){console.error(`DeviceChecker: iOS version detection error - `,e)}}}var _t=[`rec2020`,`p3`,`srgb`],vt=[`standalone`,`minimal-ui`,`fullscreen`,`window-controls-overlay`,`picture-in-picture`];class yt{constructor(){this._maxTouchPoints=void 0,this._height=void 0,this._width=void 0,this._isHdr=void 0,this._pixelRatio=void 0,this._screenHeight=void 0,this._screenWidth=void 0,this._colorDepth=void 0,this._colorGamut=void 0,this._displayMode=`browser`,this._isStandalone=!1}get isTouch(){return typeof this._maxTouchPoints==`number`?this._maxTouchPoints>1:`ontouchstart`in ht()}get maxTouchPoints(){return this._maxTouchPoints}get height(){return this._height}get width(){return this._width}get screenHeight(){return this._screenHeight}get screenWidth(){return this._screenWidth}get pixelRatio(){return this._pixelRatio}get isHDR(){return this._isHdr}get colorDepth(){return this._colorDepth}get colorGamut(){return this._colorGamut}get displayMode(){return this._displayMode}get isStandalone(){return this._isStandalone}detect(){let e=ht();if(!gt(e))return;let{navigator:t,screen:n}=e,{maxTouchPoints:r}=t;try{this._maxTouchPoints=r??0,this._isHdr=!!e.matchMedia(`(dynamic-range: high)`)?.matches,this._colorDepth=n.colorDepth,this._colorGamut=this.detectColorGamut(e)}catch(e){console.error(e)}try{this._pixelRatio=e.devicePixelRatio||1,this._height=n.height,this._width=n.width,this._height=n.height,this._screenHeight=this._height*this._pixelRatio,this._screenWidth=this._width*this._pixelRatio}catch(e){console.error(e)}try{this._displayMode=this.detectDisplayMode(e);let n=t.standalone===!0;this._isStandalone=n||this._displayMode!==`browser`}catch(e){console.error(e)}}detectColorGamut(e){return _t.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(color-gamut: ${t})`))==null?void 0:n.matches})}detectDisplayMode(e){return vt.find(t=>{var n;return(n=e.matchMedia)==null||(n=n.call(e,`(display-mode: ${t})`))==null?void 0:n.matches})??`browser`}}var St=()=>window.ManagedMediaSource||window.MediaSource,Ct=()=>{var e;return!!(window.ManagedMediaSource&&!((e=window.ManagedSourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},wt=()=>{var e;return!!(window.MediaSource&&!((e=window.SourceBuffer)==null||(e=e.prototype)==null)&&e.appendBuffer)},Tt=()=>window.ManagedMediaSource?new ManagedMediaSource:new MediaSource,Et=bt().document?.createElement(`video`),Dt=`video/mp4; codecs="avc1.42000a,mp4a.40.2"`,Ot=`video/mp4; codecs="hev1.1.6.L93.B0"`,kt=`video/webm; codecs="vp09.00.10.08"`,At=`video/webm; codecs="av01.0.00M.08"`,jt=`audio/mp4; codecs="mp4a.40.2"`,Mt=`audio/webm; codecs="opus"`,Nt;(function(){var e=E(function*(){let e=bt();if(!xt(e)||!(`mediaCapabilities`in e.navigator))return;let t={type:`media-source`,video:{contentType:`video/webm`,width:1280,height:720,bitrate:1e6,framerate:30}},[n,r]=yield Promise.all([e.navigator.mediaCapabilities.decodingInfo(T(T({},t),{},{video:T(T({},t.video),{},{contentType:At})})),e.navigator.mediaCapabilities.decodingInfo(T(T({},t),{},{video:T(T({},t.video),{},{contentType:kt})}))]);Nt={DASH_WEBM_AV1:n,DASH_WEBM:r}});return function(){return e.apply(this,arguments)}})()().catch(e=>{console.log(Et),console.error(e)});class Pt{constructor(e,t){this._video=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._protocols=void 0,this._containers=void 0,this._codecs=void 0,this._nativeHlsSupported=void 0,this._deviceChecker=e,this._browserChecker=t}get protocols(){return this._protocols}get containers(){return this._containers}get codecs(){return this._codecs}get webmDecodingInfo(){return Nt}get supportedCodecs(){return Object.keys(this._codecs).filter(e=>this._codecs[e])}get nativeHlsSupported(){return this._nativeHlsSupported}detect(){let e=bt();if(!xt(e))return;let t=e.document;this._video=t.createElement(`video`);try{var n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;this._protocols={mms:Ct(),mse:wt(),hls:!!((n=this._video).canPlayType?.call(n,`application/x-mpegurl`)||(r=this._video).canPlayType?.call(r,`vnd.apple.mpegURL`)),webrtc:!!e.RTCPeerConnection,ws:!!e.WebSocket},this._containers={mp4:!!(i=this._video).canPlayType?.call(i,`video/mp4`),webm:!!(a=this._video).canPlayType?.call(a,`video/webm`),cmaf:!0};let t=!!(!((o=St())==null||(s=o.isTypeSupported)==null)&&s.call(o,Dt)),v=!!(!((c=St())==null||(l=c.isTypeSupported)==null)&&l.call(c,Ot)),y=!!(!((u=St())==null||(d=u.isTypeSupported)==null)&&d.call(u,jt));this._codecs={h264:t,h265:v,vp9:!!(!((f=St())==null||(p=f.isTypeSupported)==null)&&p.call(f,kt)),av1:!!(!((m=St())==null||(h=m.isTypeSupported)==null)&&h.call(m,At)),aac:y,opus:!!(!((g=St())==null||(_=g.isTypeSupported)==null)&&_.call(g,Mt)),mpeg:(t||v)&&y},this._nativeHlsSupported=this._protocols.hls&&this._containers.mp4}catch(e){console.error(e)}try{this.destroyVideoElement()}catch(e){console.error(`Error destroying video element:`,e)}}destroyVideoElement(){if(!this._video)return;if(this._video.pause(),this._video.currentTime=0,this._video.removeAttribute(`src`),this._video.src=``,this._video.load(),this._video.remove){this._video.remove(),this._video=null;return}this._video.parentNode&&this._video.parentNode.removeChild(this._video);let e=this._video.cloneNode(!1);this._video.parentNode?.replaceChild(e,this._video),this._video=null}}var Lt=`audio/mpeg`;class Rt{constructor(){this._audio=void 0,this._containers=void 0,this._codecs=void 0}supportMp3(){return this._codecs.mp3&&this._containers.mpeg}detect(){let e=Ft();if(!It(e))return;let t=e.document;this._audio=t.createElement(`audio`);try{var n,r,i;this._containers={mpeg:!!(n=this._audio).canPlayType?.call(n,Lt)},this._codecs={mp3:!!(!((r=St())==null||(i=r.isTypeSupported)==null)&&i.call(r,Lt))}}catch(e){console.error(e)}try{this.destroyAudioElement()}catch(e){console.error(`Error destroying audio element:`,e)}}destroyAudioElement(){if(!this._audio)return;if(this._audio.pause(),this._audio.currentTime=0,this._audio.removeAttribute(`src`),this._audio.src=``,this._audio.load(),this._audio.remove){this._audio.remove(),this._audio=null;return}this._audio.parentNode&&this._audio.parentNode.removeChild(this._audio);let e=this._audio.cloneNode(!1);this._audio.parentNode?.replaceChild(e,this._audio),this._audio=null}}class zt{constructor(){this.isInited$=new ot(!1),this._displayChecker=void 0,this._deviceChecker=void 0,this._browserChecker=void 0,this._videoChecker=void 0,this._audioChecker=void 0,this._displayChecker=new yt,this._deviceChecker=new mt(this._displayChecker),this._browserChecker=new ut,this._videoChecker=new Pt(this._deviceChecker,this._browserChecker),this._audioChecker=new Rt,this.detect()}get display(){return this._displayChecker}get device(){return this._deviceChecker}get browser(){return this._browserChecker}get video(){return this._videoChecker}get audio(){return this._audioChecker}detect(){var e=this;return E(function*(){at()&&(e._displayChecker.detect(),e._deviceChecker.detect(),e._browserChecker.detect(),e._videoChecker.detect(),e._audioChecker.detect(),e.isInited$.next(!0))})()}}var P=new zt,Bt=(e,t=!1)=>{let{containers:n,protocols:r,codecs:i,nativeHlsSupported:a}=P.video,{isMobile:o}=P.device,s=P.device.isMac&&P.browser.isSafari,c=t&&!o&&!s,l=(i.h264||i.h265)&&i.aac,u=r.mse||r.mms;return e.filter(e=>{switch(e){case`DASH_SEP`:return u&&n.mp4&&l;case`DASH_WEBM`:return u&&n.webm&&i.vp9&&i.opus;case`DASH_WEBM_AV1`:return u&&n.webm&&i.av1&&i.opus;case`DASH_STREAMS`:return u&&(n.mp4&&l||n.webm&&(i.vp9||i.av1)&&(i.opus||i.aac));case`DASH_LIVE`:return u&&n.mp4&&l;case`DASH_LIVE_CMAF`:return u&&n.mp4&&l&&n.cmaf;case`DASH_ONDEMAND`:return u&&n.mp4&&l;case`HLS`:case`HLS_ONDEMAND`:case`HLS_FMP4`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:return a&&!c;case`MPEG`:return n.mp4;case`DASH`:case`DASH_LIVE_WEBM`:return!1;case`WEB_RTC_LIVE`:return r.webrtc&&r.ws&&i.h264&&(n.mp4||n.webm);default:return it(e)}})},Vt=e=>{switch(e){case`MPEG`:case`DASH`:case`DASH_SEP`:case`DASH_ONDEMAND`:case`DASH_WEBM`:case`DASH_WEBM_AV1`:case`DASH_STREAMS`:case`HLS`:case`HLS_FMP4`:case`HLS_ONDEMAND`:return!1;case`DASH_LIVE`:case`DASH_LIVE_CMAF`:case`HLS_LIVE`:case`HLS_LIVE_CMAF`:case`DASH_LIVE_WEBM`:case`WEB_RTC_LIVE`:return!0;default:return it(e)}},Ht=(e,t=!1)=>Bt(Object.keys(e).filter(e=>!Vt(e)),t).length>0;class Ut{constructor(e){this.subscription=new Le,this.log=void 0,this.params=void 0,this.sessionId$=new Re(null),this.mediaSessionId$=new Re(null),this.contentId$=new Re(null),this.progressTicker=void 0,this.isMobile=pt(),this.mobileVolumeState={muted:!1,volume:0},this.media=null,this.lastRequestedVolume=null,this.syncMediaState=e=>{if(Fe(e))return;this.media=e,this.mediaSessionId$.next(e.mediaSessionId??null);let t=e.media?.contentId;t&&this.contentId$.next(t),this.syncPlaybackState(e);let n=e.media?.duration;Pe(n)&&this.params.output.duration$.next(Math.max(0,n));let r=e.currentTime;if(Pe(r)){this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.params.output.position$.next(r);let t=this.params.output.isLive$.getValue();e.playerState===`PLAYING`&&!t?this.progressTicker.start(r):this.progressTicker.pause()}},this.params=e,this.progressTicker=new rt(e),this.log=this.params.dependencies.logger.createComponentLog(`ChromecastPresentationApiProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.subscribe()}subscribe(){let e=e=>{this.params.output.error$.next({category:je.WTF,id:`ChromecastPresentationApiProvider`,message:e?.message??`Unknown error`,thrown:e})};this.subscription.add(this.params.chromecastConnector.message$.pipe(Me(e=>!!e)).subscribe(e=>{this.handleMessage(e)},e)),this.subscription.add(this.sessionId$.pipe(Me(Pe),Ne(),Ae(0)).subscribe(()=>{this.loadMedia()},e));let t=this.contentId$.pipe(Ne(),Ie(Boolean));this.subscription.add(ke({seekState:this.params.desiredState.seekState.stateChangeEnded$,mediaLoaded:t}).pipe(Me(({mediaLoaded:e})=>e)).subscribe(()=>{let e=this.params.desiredState.seekState.getState();e.state===`requested`&&this.seek(e.position/1e3)},e));let n=ke({playbackState:this.params.desiredState.playbackState.stateChangeStarted$,mediaLoaded:t});this.subscription.add(n.pipe(Me(({mediaLoaded:e})=>e),Ae(0)).subscribe(()=>{this.syncPlayback()},e)),this.subscription.add(n.pipe(Me(({mediaLoaded:e,playbackState:{from:t,to:n}})=>!e&&t===`stopped`&&n===`playing`)).subscribe(()=>{this.loadMedia()},e)),this.subscription.add(ke({volumeState:this.params.desiredState.volume.stateChangeStarted$.pipe(Ae(30)),mediaLoaded:t}).pipe(Me(({mediaLoaded:e})=>e)).subscribe(({volumeState:e})=>{let{muted:t,volume:n}=e.to;this.setVolume(n,t)},e))}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:{var t;this.sessionId$.next(e.message.sessionId);let n=(t=e.message)==null||(t=t.media)==null?void 0:t[0];this.syncMediaState(n);let r=e.message?.receiver.volume;this.syncVolumeState(r)}break;case`v2_message`:switch(e.message?.type){case`MEDIA_STATUS`:{var n;let t=(n=e.message)==null||(n=n.status)==null?void 0:n[0];this.syncMediaState(t);break}}break}}loadMedia(){let e=Xe(this.params),t=this.media?.currentTime,n=this.params.desiredState.seekState.getState(),r=t??(n.state===`none`?0:n.position/1e3),i=this.params.desiredState.playbackState.getState()===`playing`;this.params.chromecastConnector.sendV2Message({type:`LOAD`,requestId:0,media:e,autoplay:i,currentTime:r,customData:null,activeTrackIds:null}),this.params.output.willSeekEvent$.next()}stop(){this.params.chromecastConnector.stopMedia()}play(){let e=this.mediaSessionId$.getValue();Oe(e,`play on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PLAY`,mediaSessionId:e,customData:null})}pause(){let e=this.mediaSessionId$.getValue();Oe(e,`pause on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`PAUSE`,mediaSessionId:e,customData:null})}seek(e){let t=this.mediaSessionId$.getValue();Oe(t,`seek on null mediaSessionId`),this.params.chromecastConnector.sendV2Message({type:`SEEK`,currentTime:e,mediaSessionId:t}),this.params.output.willSeekEvent$.next()}setVolume(e,t){let n=e,r=`[setVolume] volume: ${e}, muted: ${t}`;this.isMobile&&(n=this.mobileVolumeState.volume,r+=`, mobile next volume: ${n}`),this.log({message:r}),this.lastRequestedVolume={volume:n,muted:t},this.params.chromecastConnector.sendV2Message({type:`SET_VOLUME`,requestId:0,volume:{level:t?0:n,muted:t?!0:null}})}syncPlaybackState({playerState:e,idleReason:t}){let n=this.params.output.isBuffering$.getValue(),r=e===`BUFFERING`;switch(n!==r&&this.params.output.isBuffering$.next(r),e){case`PAUSED`:j(this.params.desiredState.playbackState,`paused`);break;case`PLAYING`:j(this.params.desiredState.playbackState,`playing`);break;case`IDLE`:t===`FINISHED`?(this.params.output.endedEvent$.next(),j(this.params.desiredState.playbackState,`stopped`),this.contentId$.next(null)):j(this.params.desiredState.playbackState,`ready`);break;case`BUFFERING`:break}}syncPlayback(){let e=this.params.desiredState.playbackState.getState();switch(this.log({message:`[syncPlayback] ${e}`}),e){case`ready`:break;case`playing`:this.play();break;case`paused`:this.pause();break;case`stopped`:this.stop();break}}syncVolumeState(e){if(Fe(e))return;let{level:t,muted:n}=e,r={muted:n??!1,volume:t??0};this.lastRequestedVolume&&=(n&&(r.volume=this.lastRequestedVolume.volume),this.lastRequestedVolume.muted&&!t&&!n&&(r.volume=this.lastRequestedVolume.volume,r.muted=!0),null);let i=`[syncVolumeState] volume: ${r.volume}, muted: ${r.muted}`;this.isMobile&&(this.mobileVolumeState.volume=r.volume,this.mobileVolumeState.muted=r.muted,r.volume=this.params.output.volume$.getValue().volume,i+=`, volume passed to state machine: ${r.volume}`),this.log({message:i}),this.params.output.volume$.next(r)}destroy(){this.progressTicker.destroy(),this.subscription.unsubscribe()}}var $t=e=>({castDevice:{friendlyName:e},remotePlayer:{},remotePlayerController:{},session:{}}),en=()=>String(Date.now())+String(Math.floor(Math.random()*1e5));class tn{constructor(e){this.params=void 0,this.clientId=void 0,this.capabilities=[`WEB`],this.presentationRequest$=new Xt(null),this.log=void 0,this.sessionId$=new Xt(null),this.broadcastChannel=new BroadcastChannel(`vk_player_chromecast_events`),this.subscription=new Jt,this.subscriptionEvents=new Jt,this.isDestroyed=!1,this.sequenceNumber=0,this.presentationAvailable$=new Xt(!1),this.presentationConnection$=new Xt(null),this.message$=new Xt(null),this.friendlyName$=new Xt(null),this.errorEvent$=new qt,this.clientId=this.getClientId(),this.params=e,this.log=e.logger.createComponentLog(`ChromecastPresentationApiConnector`),this.log({message:`constructor`}),this.safeReinitPresentation(),this.subscribe()}destroy(){this.log({message:`destroy`}),this.subscription.unsubscribe(),this.subscriptionEvents.unsubscribe(),this.broadcastChannel.close(),this.isDestroyed=!0}disconnect(e=!0){this.log({message:`disconnect`}),e&&this.stopMedia(),this.presentationRequest$.next(null);let t=this.presentationConnection$.getValue();t&&t.close(),this.presentationConnection$.next(null),this.friendlyName$.next(null),this.resetSequenceNumber(),this.resetSubscriptionEvents()}stopMedia(){this.log({message:`stopMedia`}),this.sendV2Message({type:`STOP`})}reinitPresentation(e=!0){let t=this.createCastUrl(),n=new PresentationRequest(t);this.presentationRequest$.next(n),this.log({message:`PresentationRequest created`}),n.getAvailability().then(e=>{let t=()=>{this.log({message:`PresentationRequest presentation availability: ${e.value}`}),this.presentationAvailable$.next(e.value)};this.subscriptionEvents.add(Zt(e,`change`).subscribe(()=>{t()})),t()}).catch(()=>{this.presentationAvailable$.next(!0)}),Qt().navigator.presentation.defaultRequest=n,e&&n.reconnect(`auto-join`).then(e=>{this.log({message:`PresentationRequest reconnect success`}),this.handleConnection(e)}).catch(()=>{this.log({message:`PresentationRequest reconnect failed`})})}safeReinitPresentation(e){try{this.reinitPresentation(e)}catch(e){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:e?.message??`reinitPresentation error`,thrown:e})}}connect(){var e=this;return E(function*(){e.log({message:`connect`});try{e.presentationRequest$.getValue()||(e.log({message:`reinitPresentation`}),e.reinitPresentation(!1));let t=e.presentationRequest$.getValue();Wt(t,`connect with null presentationRequest`);let n=yield t.start();e.handleConnection(n)}catch(t){switch(t?.name){case`AbortError`:case`NotAllowedError`:break;default:e.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:t?.message??`connect error`,thrown:t});break}}})()}subscribe(){this.subscription.add(Zt(this.broadcastChannel,`message`).subscribe(e=>{this.log({message:`broadcast connection data: ${e.data}`}),e.data===`connection`&&this.disconnect(!1)})),this.subscription.add(this.presentationAvailable$.subscribe(e=>{this.log({message:`presentationAvailable$: ${e}`})})),this.subscription.add(this.presentationConnection$.pipe(Yt(e=>{this.log({message:`presentationConnection$: ${!!e}`})}),Kt(e=>!!e)).subscribe(e=>{let t=Zt(e,`message`).subscribe(e=>{let t=JSON.parse(e.data);t.clientId===this.clientId&&(this.log({message:`[onmessage] ${e.data}`}),this.handleMessage(t),this.message$.next(t))}),n=Zt(e,`connect`).subscribe(()=>{this.send(`client_connect`)}),r=Zt(e,`close`).subscribe(e=>{switch(e.reason){case`error`:this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`Session error`,thrown:e});break;case`closed`:break}});this.subscriptionEvents.add(t),this.subscriptionEvents.add(n),this.subscriptionEvents.add(r)}))}send(e){switch(e){case`client_connect`:{let e={type:`client_connect`,message:this.clientId,sequenceNumber:-1,timeoutMillis:0,clientId:this.clientId};this.safeSend(JSON.stringify(e));break}}}sendV2Message(e){let t=this.sessionId$.getValue();if(t){let n={type:`v2_message`,sequenceNumber:this.getSequenceNumber(),timeoutMillis:0,clientId:this.clientId,message:T(T({},e),{},{sessionId:t})};this.safeSend(JSON.stringify(n))}}safeSend(e){try{this.log({message:`[send] ${e}`});let t=this.presentationConnection$.getValue();t?.state===`connected`&&t?.send(e)}catch(t){this.errorEvent$.next({category:Gt.WTF,id:`ChromecastPresentationApiConnector`,message:`PresentationConnection send error`,data:{message:e},thrown:t})}}handleMessage(e){switch(e.type){case`new_session`:case`update_session`:this.sessionId$.next(e.message.sessionId),this.friendlyName$.next(e.message.receiver.friendlyName||`Chromecast Device`);break;case`receiver_action`:e.message?.action===`stop`&&this.disconnect();break}}createCastUrl(){return`cast:${this.params.appId}?clientId=${this.clientId}&autoJoinPolicy=tab_and_origin_scoped&defaultActionPolicy=create_session&launchTimeout=60000&supportedAppTypes=${this.capabilities}&appParams=%7B%22launchCheckerParams%22%3A%7B%7D%7D`}getSequenceNumber(){let e=this.sequenceNumber;return this.sequenceNumber=(this.sequenceNumber+1)%(2**53-1),e}resetSequenceNumber(){this.sequenceNumber=0}getClientId(){let e=`__vk_player_chromecast_id`;return Qt()[e]=Qt()[e]||en()}resetSubscriptionEvents(){this.subscriptionEvents.unsubscribe(),this.subscriptionEvents=new Jt}handleConnection(e){this.log({message:`connection available`}),this.isDestroyed?(this.log({message:`connected on already destroyed component`}),e.close()):(this.broadcastChannel.postMessage(`connection`),this.presentationConnection$.next(e))}}class un{static isSupported(){return`chrome`in window&&`presentation`in navigator&&`BroadcastChannel`in window}constructor(e){this.subscription=new on,this.log=void 0,this.contentId=void 0,this.connection$=new nn(void 0),this.castState$=new nn(`NOT_AVAILABLE`),this.errorEvent$=new rn,this.chromecastConnector=void 0;let t=un.isSupported();this.log=e.dependencies.logger.createComponentLog(`ChromecastPresentationApiInitializer`),this.log({message:`[constructor] receiverApplicationId: ${e.receiverApplicationId}, isDisabled: ${e.isDisabled}, isSupported: ${t}`}),!(!t||e.isDisabled||!e.receiverApplicationId)&&(this.chromecastConnector=new tn({appId:e.receiverApplicationId,logger:e.dependencies.logger}),this.subscribe())}subscribe(){ln(this.chromecastConnector,`subscribe with null chromecastConnector`),this.subscription.add(this.chromecastConnector.errorEvent$.subscribe(this.errorEvent$));let e=sn({connection:this.chromecastConnector.presentationConnection$,available:this.chromecastConnector.presentationAvailable$,friendlyName:this.chromecastConnector.friendlyName$.pipe(cn())});this.subscription.add(e.pipe(an(({connection:e,friendlyName:t})=>!!(e&&t)),cn()).subscribe(e=>{let t=this.chromecastConnector?.friendlyName$.getValue()??``;this.connection$.next(e?$t(t):void 0)})).add(e.subscribe(({available:e,connection:t})=>{e?t?this.castState$.next(`CONNECTED`):this.castState$.next(`AVAILABLE`):this.castState$.next(`NOT_AVAILABLE`)}))}connect(){this.log({message:`connect`}),this.chromecastConnector?.connect()}disconnect(){this.log({message:`disconnect`}),this.chromecastConnector?.disconnect()}stopMedia(){var e=this;return E(function*(){e.log({message:`stopMedia`}),e.chromecastConnector?.stopMedia()})()}toggleConnection(){let e=!!this.chromecastConnector?.presentationConnection$.getValue();this.log({message:`toggleConnection: isConnected - ${e}`}),e?this.disconnect():this.connect()}setVolume(e){}setMuted(e){}destroy(){this.log({message:`destroy`}),this.chromecastConnector?.destroy(),this.subscription.unsubscribe()}}var vn=(e,t)=>e===t;class yn{constructor(e,t=vn){this.comparator=void 0,this.state=void 0,this.prevState=void 0,this.transition=void 0,this.transitionStarted$=new gn,this.transitionEnded$=new gn,this.transitionUpdated$=new gn,this.forceChanged$=new gn,this.stateChangeStarted$=_n(this.transitionStarted$,this.transitionUpdated$),this.stateChangeEnded$=_n(this.transitionEnded$,this.forceChanged$),this.comparator=t,this.state=e,this.prevState=void 0}setState(e){let t=this.transition,n=this.state;this.transition=void 0,this.prevState=n,this.state=e,t?this.comparator(t.to,e)?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:n,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,n=this.state;this.comparator(n,e)||hn(t)&&this.comparator(t.to,e)||(this.prevState=n,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:n,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}}var An=5,jn=5,Mn=500,Nn=7e3;class Pn{constructor(e){this.subscription=new On,this.loadMediaTimeoutSubscription=new On,this.videoState=new yn(`stopped`),this.params=void 0,this.log=void 0,this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),n=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),i=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${n}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(i)};`}),n===`stopped`){e!==`stopped`&&(this.videoState.startTransitionTo(`stopped`),this.stop());return}if(!t){if(r?.to!==`paused`&&i.state===`requested`&&e!==`stopped`){this.seek(i.position/1e3);return}switch(n){case`ready`:switch(e){case`playing`:case`paused`:case`ready`:break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`playing`:switch(e){case`playing`:break;case`paused`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`ready`:this.videoState.startTransitionTo(`playing`),this.params.connection.remotePlayerController.playOrPause();break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;case`paused`:switch(e){case`playing`:this.videoState.startTransitionTo(`paused`),this.params.connection.remotePlayerController.playOrPause();break;case`paused`:break;case`ready`:this.videoState.startTransitionTo(`paused`),this.videoState.setState(`paused`);break;case`stopped`:this.videoState.startTransitionTo(`ready`),this.prepare();break;default:bn(e)}break;default:bn(n)}}},this.params=e,this.log=this.params.dependencies.logger.createComponentLog(`ChromecastProvider`),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(Vt(e.format)),this.params.output.isAudioAvailable$.next(!0),this.handleRemoteVolumeChange({volume:this.params.connection.remotePlayer.volumeLevel,muted:this.params.connection.remotePlayer.isMuted});let t=this.params.connection.session.getMediaSession();t&&this.restoreSession(t),this.subscribe()}destroy(){this.log({message:`[destroy]`}),this.subscription.unsubscribe()}subscribe(){this.subscription.add(this.loadMediaTimeoutSubscription);let e=new On;this.subscription.add(e),this.subscription.add(Tn(this.videoState.stateChangeStarted$.pipe(wn(e=>`stateChangeStarted$ ${JSON.stringify(e)}`)),this.videoState.stateChangeEnded$.pipe(wn(e=>`stateChangeEnded$ ${JSON.stringify(e)}`))).subscribe(e=>this.log({message:`[videoState] ${e}`})));let t=(e,t)=>this.subscription.add(e.subscribe(t));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let t=new Dn;e.add(t.pipe(xn(Mn)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let n=NaN;e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(e=>{this.logRemoteEvent(e);let r=e.value;this.params.output.position$.next(r),(this.params.desiredState.seekState.getState().state===`applying`||Math.abs(r-n)>An)&&t.next(r),n=r})),e.add(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(e=>{this.logRemoteEvent(e),this.params.output.duration$.next(e.value)}))}t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),t=>{this.logRemoteEvent(t),t.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),e=>{this.logRemoteEvent(e),e.value?this.handleRemotePause():this.handleRemotePlay()}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),e=>{this.logRemoteEvent(e);let{remotePlayer:t}=this.params.connection,n=e.value,r=this.params.output.isBuffering$.getValue(),i=n===chrome.cast.media.PlayerState.BUFFERING;switch(r!==i&&this.params.output.isBuffering$.next(i),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&t.duration-t.currentTime<jn&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),j(this.params.desiredState.playbackState,`stopped`);break;case chrome.cast.media.PlayerState.PAUSED:this.handleRemotePause();break;case chrome.cast.media.PlayerState.PLAYING:this.handleRemotePlay();break;case chrome.cast.media.PlayerState.BUFFERING:break;default:bn(n)}}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({volume:e.value})}),t(Cn(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),e=>{this.logRemoteEvent(e),this.handleRemoteVolumeChange({muted:e.value})}),t(Tn(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,En([`init`])).pipe(xn(0)),this.syncPlayback)}restoreSession(e){this.log({message:`restoreSession`});let{remotePlayer:t}=this.params.connection;if(e.playerState!==chrome.cast.media.PlayerState.IDLE){t.isPaused?(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`)):(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`));let e=this.params.output.isLive$.getValue();this.params.output.duration$.next(e?0:t.duration),this.params.output.position$.next(e?0:t.currentTime),this.params.desiredState.seekState.setState({state:`none`})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=Xe(this.params),n=this.createLoadRequest(t);this.loadMedia(n)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`paused`||e===`playing`)&&(this.videoState.setState(`paused`),j(this.params.desiredState.playbackState,`paused`))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to===`playing`||e===`paused`)&&(this.videoState.setState(`playing`),j(this.params.desiredState.playbackState,`playing`))}handleRemoteReady(){this.videoState.getTransition()?.to===`ready`&&this.videoState.setState(`ready`),this.params.desiredState.playbackState.getTransition()?.to===`ready`&&j(this.params.desiredState.playbackState,`ready`)}handleRemoteStop(){this.videoState.getState()!==`stopped`&&this.videoState.setState(`stopped`)}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),n={volume:e.volume??t.volume,muted:e.muted??t.muted};(n.volume!==t.volume||n.muted!==n.muted)&&this.params.output.volume$.next(n)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:n}=this.params.connection;t.currentTime=e,n.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let n=this.params.desiredState.seekState.getState();return n.state===`applying`||n.state===`requested`?t.currentTime=this.params.output.isLive$.getValue()?0:n.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),n=new Promise((e,t)=>{this.loadMediaTimeoutSubscription.add(kn(Nn).subscribe(()=>t(`timeout(${Nn})`)))});mn(Promise.race([t,n]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state===`applying`&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},e=>{let t=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${e}`;this.log({message:t}),this.params.output.error$.next({id:`ChromecastProvider.loadMedia`,category:Sn.VIDEO_PIPELINE,message:t,thrown:e})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}}var Vn=e=>{try{e.pause(),e.playbackRate=0,Bn(e),e.remove()}catch(e){console.error(e)}},Hn=`__spvc`;class Un{constructor(){this.attribute=`data-pool-reused`}get(e){return e.hasAttribute(this.attribute)}set(e,t){e.toggleAttribute(this.attribute,t)}delete(e){e.removeAttribute(this.attribute)}}var Wn=Rn(),Gn=Wn.WeakMap?new Wn.WeakMap:new Un,Kn=Wn.WeakMap?new Wn.WeakMap:new Map,qn=(e,t=20)=>{let n=0;return Ln(e,`ratechange`).subscribe(r=>{n++,n>=t&&(e.currentTime=e.currentTime,n=0)})};function Jn(e){e.style.position=`fixed`,e.style.left=`100%`,e.setAttribute(`data-role`,`screen`),Rn().document.body.appendChild(e)}function Yn(e,t){e.style.position=``,e.style.left=``,t.appendChild(e)}var Xn=(e,{audioVideoSyncRate:t,disableYandexPiP:n,reuseOwnVideoElement:r,reuseOwnVideoElementOnBackgroundTabOnly:i})=>{let a,o=e.querySelector(`video`),s=!!o,c=Rn().document.querySelector(`body > video[data-role=screen]`)||void 0;r&&!i?Wn[Hn]=c:(c?.remove(),delete Wn[Hn]),o?(a=o,In(a)):c&&c===Wn[Hn]?(a=c,Yn(a,e)):(a=Rn().document.createElement(`video`),e.appendChild(a),r&&!i&&(Wn[Hn]=a)),Gn.set(a,s);let l=new zn;return l.add(qn(a,t)),Kn.set(a,l),a.setAttribute(`crossorigin`,`anonymous`),a.setAttribute(`playsinline`,`playsinline`),n&&a.setAttribute(`x-yandex-pip`,`false`),a.controls=!1,a.setAttribute(`poster`,`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=`),a},Zn=e=>(e.setAttribute(`crossorigin`,`anonymous`),e.controls=!1,e),Qn=(e,t)=>{if(e instanceof HTMLAudioElement){$n(e,t);return}if(e instanceof HTMLVideoElement){er(e,t);return}};function $n(e,{clearAudioElementOnDispose:t}){if(t){In(e);return}Vn(e)}function er(e,{reuseOwnVideoElement:t,reuseOwnVideoElementOnBackgroundTabOnly:n}){Kn.get(e)?.unsubscribe(),Kn.delete(e);let r=Gn.get(e);Gn.delete(e),In(e),t&&!n&&!r&&Jn(e)}var vr=(e,t,n,{equal:r=(e,t)=>e===t,changed$:i,onError:a}={})=>{let o=e.getState(),s=t(),c=gr(i),l=new _r;return i&&l.add(i.subscribe(t=>{r(t,e.getState())&&e.setState(t)},a)),r(s,o)||(n(o),c&&e.setState(o)),l.add(e.stateChangeStarted$.subscribe(t=>{n(t.to),c&&e.setState(t.to)},a)),l},yr=(e,t,n)=>vr(t,()=>e.loop,t=>{hr(t)&&(e.loop=t)},{onError:n}),br=(e,t,n,r,i)=>vr(t,()=>({muted:e.muted,volume:e.volume}),t=>{i?.skipVideoElVolumeSync$.getValue()||hr(t)&&(e.muted=t.muted,e.volume=t.volume)},{equal:(e,t)=>e===t||e?.muted===t?.muted&&e?.volume===t?.volume,changed$:n,onError:r}),xr=(e,t,n,r)=>vr(t,()=>e.playbackRate,t=>{hr(t)&&(e.playbackRate=t)},{changed$:n,onError:r}),Sr=vr,Cr=e=>[`__`,e.language,e.label].join(`|`),wr=(e,t)=>{if(e.id===t)return!0;let[n,r,i]=t.split(`|`);return e.language===r&&e.label===i};class Tr{constructor(e){this.available$=new dr,this.current$=new pr(void 0),this.error$=new dr,this.video=void 0,this.cueSettings=void 0,this.subscription=new fr,this.externalTracks=new Map,this.internalTracks=new Map,this.baseURL=void 0,this.baseURL=e}connect(e,t,n){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=e=>{this.error$.next({id:`TextTracksManager`,category:mr.WTF,message:`Generic HtmlVideoTextTrackManager error`,thrown:e})};this.subscription.add(this.available$.subscribe(n.availableTextTracks$)),this.subscription.add(this.current$.subscribe(n.currentTextTrack$)),this.subscription.add(this.error$.subscribe(n.error$)),this.subscription.add(Sr(t.internalTextTracks,()=>tr(this.internalTracks),e=>{ir(e)&&this.setInternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`internal`))),onError:r})),this.subscription.add(Sr(t.externalTextTracks,()=>tr(this.externalTracks),e=>{ir(e)&&this.setExternal(e)},{equal:(e,t)=>ir(e)&&ir(t)&&e.length===t.length&&e.every(({id:e},n)=>e===t[n].id),changed$:this.available$.pipe(ur(e=>e.filter(({type:e})=>e===`external`))),onError:r})),this.subscription.add(Sr(t.currentTextTrack,()=>{if(this.video)return;let e=this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`);return e&&this.htmlTextTrackToITextTrack(e).id},e=>this.select(e),{changed$:this.current$,onError:r})),this.subscription.add(Sr(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let e of this.htmlTextTracksAsArray())this.applyCueSettings(e.cues),this.applyCueSettings(e.activeCues)}))}subscribe(){rr(this.video);let{textTracks:e}=this.video;this.subscription.add(or(e,`addtrack`).subscribe(()=>{let e=this.current$.getValue();e&&this.select(e)})),this.subscription.add(sr(or(e,`addtrack`),or(e,`removetrack`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().map(e=>this.htmlTextTrackToITextTrack(e))),lr((e,t)=>e.length===t.length&&e.every(({id:e},n)=>e===t[n].id))).subscribe(this.available$)),this.subscription.add(sr(or(e,`change`),cr([`init`])).pipe(ur(()=>this.htmlTextTracksAsArray().find(({mode:e})=>e===`showing`)),ur(e=>e&&this.htmlTextTrackToITextTrack(e).id),lr()).subscribe(this.current$));let t=e=>this.applyCueSettings(e.target?.activeCues??null);this.subscription.add(or(e,`addtrack`).subscribe(e=>{e.track?.addEventListener(`cuechange`,t);let n=e=>{let t=e.target?.cues??null;t&&t.length&&(this.applyCueSettings(e.target?.cues??null),e.target?.removeEventListener(`cuechange`,n))};e.track?.addEventListener(`cuechange`,n)})),this.subscription.add(or(e,`removetrack`).subscribe(e=>{e.track?.removeEventListener(`cuechange`,t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let n of Array.from(e)){let e=n;ir(t.align)&&(e.align=t.align),ir(t.position)&&(e.position=t.position),ir(t.size)&&(e.size=t.size),ir(t.line)&&(e.line=t.line)}}htmlTextTracksAsArray(e=!1){rr(this.video);let t=[...this.video.textTracks];return e?t:t.filter(Tr.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:n}=e,r=e.id?e.id:Cr(e),i=this.externalTracks.has(r),a=(i?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??nr(r,`auto`);return i?{id:r,type:`external`,isAuto:a,language:t,label:n,url:this.externalTracks.get(r)?.url}:{id:r,type:`internal`,isAuto:a,language:t,label:n,url:this.internalTracks.get(r)?.url}}static isHealthyTrack(e){return!(e.kind===`metadata`||e.groupId||e.id===``&&e.label===``&&e.language===``)}setExternal(e){this.internalTracks.size>0&&Array.from(this.internalTracks).forEach(([,e])=>this.detach(e)),e.filter(({id:e})=>!this.externalTracks.has(e)).forEach(e=>this.attach(e)),Array.from(this.externalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:e,language:n,isAuto:r})=>!this.internalTracks.has(e)&&!t.some(([,e])=>e.language===n&&e.isAuto===r)).forEach(e=>this.attach(e)),Array.from(this.internalTracks).filter(([t])=>!e.find(e=>e.id===t)).forEach(([,e])=>this.detach(e))}select(e){rr(this.video);for(let e of this.htmlTextTracksAsArray(!0))e.mode=`showing`;for(let t of this.htmlTextTracksAsArray(!0))(ar(e)||!wr(t,e))&&(t.mode=`disabled`)}destroy(){if(this.subscription.unsubscribe(),this.video)for(let e of Array.from(this.video.getElementsByTagName(`track`))){let t=e.getAttribute(`id`);t&&this.externalTracks.has(t)&&this.video.removeChild(e)}this.externalTracks.clear()}attach(e){rr(this.video);let t=document.createElement(`track`);this.baseURL?t.setAttribute(`src`,new URL(e.url,this.baseURL).toString()):t.setAttribute(`src`,e.url),t.setAttribute(`id`,e.id),e.label&&t.setAttribute(`label`,e.label),e.language&&t.setAttribute(`srclang`,e.language),e.type===`external`?this.externalTracks.set(e.id,e):e.type===`internal`&&this.internalTracks.set(e.id,e),this.video.appendChild(t)}detach(e){rr(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName(`track`),t=>t.getAttribute(`id`)===e.id);t&&this.video.removeChild(t),e.type===`external`?this.externalTracks.delete(e.id):e.type===`internal`&&this.internalTracks.delete(e.id)}}var Er=Tr;class Dr{constructor(){this.pausedTime=0,this.streamOffset=0,this.pauseTimestamp=0}getTotalPausedTime(){return this.pausedTime+this.getCurrentPausedTime()}getCurrentPausedTime(){return this.pauseTimestamp>0?Date.now()-this.pauseTimestamp:0}getStreamOffset(){return this.streamOffset}getTotalOffset(){return this.getTotalPausedTime()+this.streamOffset}pause(){this.pauseTimestamp===0&&(this.pauseTimestamp=Date.now())}resume(){this.pauseTimestamp>0&&(this.pausedTime+=this.getCurrentPausedTime(),this.pauseTimestamp=0)}resetTo(e,t=!1){this.streamOffset=e,this.pauseTimestamp=0,this.pausedTime=0,t&&this.pause()}}var Or=e=>{let t=e;for(;!(t instanceof Document)&&!(t instanceof ShadowRoot)&&t!==null;)t=t?.parentNode;return t??void 0},kr=e=>{let t=Or(e);return!!(t&&t.fullscreenElement&&t.fullscreenElement===e)},Ar=e=>{let t=Or(e);return!!(t&&t.pictureInPictureElement&&t.pictureInPictureElement===e)};var Gr=3,Kr=(e,t,n=Gr)=>{let r=0,i=0;for(let a=0;a<e.length;a++){let o=e.start(a),s=e.end(a);if(o<=t&&t<=s){if(r=o,i=s,!n)return{from:r,to:i};for(let t=a-1;t>=0;t--)e.end(t)+n>=r&&(r=e.start(t));for(let t=a+1;t<e.length;t++)e.start(t)-n<=i&&(i=e.end(t))}}return{from:r,to:i}},qr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t},Jr=e=>{let t=0;for(let n=0;n<e.length;n++)t+=e.end(n)-e.start(n);return t*1e3},Yr=e=>{let t=t=>F(e,t).pipe(Lr(void 0),I(1)),n=new Wr,r=()=>n.unsubscribe(),i=Mr(F(e,`progress`),F(e,`timeupdate`)),a=i.pipe(jr(()=>Kr(e.buffered,e.currentTime)),I(1)),o=i.pipe(jr(()=>Jr(e.buffered)),I(1)),s=i.pipe(jr(()=>e.buffered.length),I(1)),c=P.browser.isSafari?Rr({play:t(`play`).pipe(zr()),playing:t(`playing`)}).pipe(Lr(void 0),I(1)):t(`playing`),l=F(e,`volumechange`).pipe(jr(()=>({muted:e.muted,volume:e.volume})),I(1)),u=F(e,`ratechange`).pipe(jr(()=>e.playbackRate),I(1)),d=F(e,`error`).pipe(Ir(()=>!!(e.error||e.played.length)),jr(()=>{let t=e.error;return{id:t?`MediaError#${t.code}`:`HtmlVideoError`,category:Vr.VIDEO_PIPELINE,message:t?t.message:`Error event from HTML video element`,thrown:e.error??void 0,origin:Hr.MediaError,data:t?{code:t.code}:void 0}}),I(1)),f=F(e,`timeupdate`).pipe(jr(()=>e.currentTime),I(1)),p=Mr(F(e,`loadedmetadata`),F(e,`timeupdate`),F(e,`pause`),F(e,`seeked`),F(e,`ended`)).pipe(jr(()=>qr(e.played)),Nr(),I(1)),m=[`waiting`,`seeking`,`seeked`,`timeupdate`],h=new Fr,g=.3,_;n.add(Mr(...m.map(t=>F(e,t))).subscribe(t=>{let n=e.currentTime;e.loop&&Pr(_)&&Pr(n)&&_>=e.duration-g&&n<=g&&h.next(_),_=n}));let v=t(`pause`).pipe(Ir(()=>!e.error&&_!==e.duration),I(1)),y=F(e,`enterpictureinpicture`).pipe(I(1)),b=F(e,`leavepictureinpicture`).pipe(I(1)),x=new Ur(Ar(e));n.add(y.subscribe(()=>x.next(!0))),n.add(b.subscribe(()=>x.next(!1)));let S=new Ur(kr(e)),C=F(e,`fullscreenchange`).pipe(I(1));n.add(C.pipe(jr(()=>kr(e))).subscribe(S));let ee=F(e,`timeupdate`).pipe(jr(t=>e.duration-e.currentTime<.1),Nr(),I(1)),w=Mr(ee.pipe(Ir(t=>!e.loop&&t)),F(e,`ended`)).pipe(Br(1e3),Lr(void 0),I(1)),T=Mr(...[`waiting`,`pause`,`canplay`,`play`,`canplaythrough`,`playing`,`seeking`,`seeked`,`ended`].map(t=>F(e,t)),ee.pipe(jr(e=>({type:e?`ended`:`unknown`})))).pipe(jr(t=>P.browser.isFirefox&&t.type===`ended`?e.readyState<2:e.readyState<3),Nr(),I(1));return{playing$:c,pause$:v,canplay$:t(`canplay`),ended$:w,looped$:h,error$:d,seeked$:t(`seeked`),seeking$:t(`seeking`),progress$:t(`progress`),loadStart$:t(`loadstart`),loadedMetadata$:t(`loadedmetadata`),loadedData$:t(`loadeddata`),timeUpdate$:f,durationChange$:F(e,`durationchange`).pipe(jr(()=>e.duration),I(1)),playedTime$:p,isBuffering$:T,currentBuffer$:a,totalBufferDuration$:o,bufferRangeCount$:s,volumeState$:l,playbackRateState$:u,inPiP$:x,inFullscreen$:S,enterPip$:y,leavePip$:b,destroy:r}};var Zr=e=>{switch(e){case`mobile`:return Xr.Q_144P;case`lowest`:return Xr.Q_240P;case`low`:return Xr.Q_360P;case`sd`:case`medium`:return Xr.Q_480P;case`hd`:case`high`:return Xr.Q_720P;case`fullhd`:case`full`:return Xr.Q_1080P;case`quadhd`:case`quad`:return Xr.Q_1440P;case`ultrahd`:case`ultra`:return Xr.Q_2160P}};var ii=e=>`audioTracksAsc`in e;class oi{constructor(){this.last=void 0,this.history={}}recordSelection(e){this.history[e.id]=ai()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}}var _i=(e,t)=>(e??0)/(t>0?t:1),vi=e=>`quality`in e,yi=e=>(t,n)=>e*(Number(t.bitrate)-Number(n.bitrate)),bi=e=>(t,n)=>e*(mi(t.quality,n.quality)?-1:1),xi=e=>(t,n)=>vi(t)&&vi(n)?bi(e)(t,n):yi(e)(t,n),Si=(e,t)=>xi(1)(e,t)<0,Ci=(e,t)=>Math.log(t)/Math.log(e),wi=(e,t,n)=>(t-n)*2**(-10*e)+n,Ti=(e,t,n,r)=>{if(gi(e))return n[0];let i=n.filter(t=>hi(t.bitrate)&&hi(e.bitrate)?e.bitrate/t.bitrate>r:!0),a=fi(n,Math.round(n.length*t.indexOf(e)/(t.length+1)))??fi(n,-1);return a&&pi(i,a)?a:i.length?fi(i,-1):fi(n,0)},Ei=(e,t)=>{if(gi(t)||gi(e))return;let n=e.get(t.id);if(!n?.length)return;let r=(n[n.length-1].time.to-n[0].time.from)/1e3;if(r<=0)return;let i=n.reduce((e,t)=>e+(t.size??1/0),0)*8/1024/r;return isFinite(i)?i:void 0},Di=(e,t)=>hi(e)&&hi(t)&&t>0&&e>0&&e<=t*2,Oi=e=>{let{name:t}=e;return`
7
7
  ${t}
8
8
  ${ni(D(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
9
9
  `)}
@@ -37,4 +37,4 @@ ${ni(D(e,b)).map(([e,t])=>` ${e}: ${t}`).join(`
37
37
  `,e.map(({time:e,data:t,stack:n})=>`${e}: ${JSON.stringify(t)}${n?`
38
38
  `+n:``}`).join(`
39
39
  `),`
40
- ===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=fn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);uv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,lv(t)):this.tracer.error(`providerError`,lv(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var ky=`vk_uvp_throughput`,Ay=`vk_uvp_rtt`,jy=`one_video_throughput`,My=`one_video_rtt`,Ny=()=>{let{navigator:e}=Oy();if(e)return e.connection},Py=()=>{let e=Ny()?.downlink;if(Ey(e)&&e!==10)return e*1e3},Fy=()=>{let e=Ny()?.rtt;if(Ey(e)&&e!==3e3)return e},Iy=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Ly{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new Sy,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Ly.loadStored(ky,jy,e)||(e.useBrowserEstimation?Py():void 0)||e.initialThroughput,n=Ly.loadStored(Ay,My,e)??(e.useBrowserEstimation?Fy():void 0)??0;if(this.throughput$=new Cy(t),this.rtt$=new Cy(n),this.rttAdjustedThroughput$=new Cy(Iy(t,n,e.rttPenaltyRequestSize)),this.throughput=Jp.getSmoothedValue(t,-1,e),this.rtt=Jp.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Py();e&&this.throughput.next(e);let t=Fy();Ey(t)&&this.rtt.next(t)},t=Ny();t&&`onchange`in t&&this.subscription.add(yy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Ly.writeStored(ky,jy,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Ly.writeStored(Ay,My,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(wy(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(xy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(wy(({throughput:t,rtt:n})=>Iy(t,n,e.rttPenaltyRequestSize)),Ty(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new Sy;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(yy(e,`progress`).pipe(by()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(yy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(yy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=E(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=Dy.get(t);if(!Ey(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=Dy.get(e)??Dy.get(t);if(Ey(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Ly.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){Dy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:Ny()?.effectiveType});Dy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=Ny()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var Ry=Ly;var Vy={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,cacheHitTtfbMaxMs:10,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:By.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:By.Q_720P,trafficSavingLimit:By.Q_480P,lowQualityTelemetryLimit:By.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:By.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:1e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferQueueSegmentEndSelection:!1,useBufferGapWatchdog:!1,useNativeBufferGapWatchdog:!1,useZeroAudioBufferLengthWhenAudioManagerExists:!1,jumpToFirstNativeBufferFrame:!1,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:By.Q_240P,saveData2gQualityLimit:By.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:By.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,recoverStuckSegmentLoading:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,reuseOwnVideoElementOnBackgroundTabOnly:!1,handleExtendedNetworkErrorsSet:!1,useDurationFromSegments:!0,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1,segmentCache:{mode:`none`,maxTotalSizeBytes:500*1024*1024,evictionThreshold:.9,evictionTargetPercent:.7,evictionBatchMaxBytes:150*1024*1024,quotaExceededEvictPercent:.5,ttlMs:1440*60*1e3,initTtlMs:10080*60*1e3,clearOnErrorStrategy:`once`}},Hy=e=>zy(e,Vy);var yb=({seekState:e,position$:t})=>hb(e.stateChangeEnded$.pipe(gb(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),_b(vb)),t.pipe(_b(()=>e.getState().state===`none`)));var xb=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return bb(t,`Wrong container or containerId {${e.container}}`),t};var wb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(Sb(e=>e.length>0),Cb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var Ab=()=>{let e=`mediaCapabilities`in kb().navigator?jb:Mb,t=Tb(E(function*(){let t=yield Promise.all(Eb(Nb).map(function(){var t=E(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[P.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return Ob.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>Db(t)},jb=function(){var e=E(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield kb().navigator.mediaCapabilities.decodingInfo(T({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),Mb=e=>{if(!e)return Promise.resolve({supported:!1});let t=kb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Nb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},Pb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVirtualVideoBuffer$:{start:0,end:0},currentVideoBuffer$:{start:0,end:0},currentVirtualAudioBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Fb={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Ib{constructor(e={},t=fb.createRootTracer(`fake`),n){this.subscription=new lb,this.persistentSubscription=new lb,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new ib,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new pb(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new pb(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=ce(Fb).reduce((e,[t,n])=>(e[t]=new yn(n),e),{}),this.info=ce(Pb).reduce((e,[t,n])=>(e[t]=new pb(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new pb(void 0),enableDebugTelemetry$:new pb(!1),dumpTelemetry:zp,getCurrentTime$:new pb(null),skipVideoElVolumeSync$:new pb(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.releaseTimers=void 0,this.doInit=e=>{let{container:t}=e,n=D(e,w);this.tracer.log(`initVideo`,qy(n),!0),this.domContainer=xb(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new vy({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Gy.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=Ab())):Gy.destroy(`core`)},this.initLogs(),this.tuning=Hy(e),this.tracer=t,this.releaseTimers=cb(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(le(this.info).forEach(e=>e.setSuppressErrors(!0)),le(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new un(r):new Ee(r),this.throughputEstimator=new Ry(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new $y(`core`,Yy(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:Xy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Gy.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return ue([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Ky.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Fb[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{ue(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],Pb[n])})}initAudio(e){return this.initVideo(T(T({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Qy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(e.isMuted??this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?P.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),Jy(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Qy();this.tracer.log(`destroy`),M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Gy.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.releaseTimers()}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{Uy(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();this.tracer.log(`setQuality`,{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,qy(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,qy(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>T({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{wb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,T({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(rb(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return nb(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(nb(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:k,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(mb([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVirtualVideoBuffer$,this.info.currentVirtualAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(pa(e,t,n))})).add(ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=sb(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case`ready`:this.events.ready$.next();break;case`playing`:this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case`paused`:this.events.paused$.next();break;case`stopped`:this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,qy(e)),e.state===`requested`?this.desiredState.seekState.setState(T(T({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Ky.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,qy(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Wy({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>tb(e)?1:tb(t)?-1:eb(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>nb(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVirtualVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVirtualVideoBuffer$)).add(e.providerOutput.currentVirtualVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentVirtualAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVirtualAudioBuffer$)).add(e.providerOutput.currentVirtualAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(ub(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Wy({hasLiveOffsetByPaused:ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(M.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=M.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Wy({atLiveEdge:Wy({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),ub(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Wy({isLive:e.providerOutput.isLive$,position:P.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),ub(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(ob(e.providerOutput.endedEvent$.pipe(ab(!0)),e.providerOutput.seekedEvent$.pipe(ab(!1))).pipe(X()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Ky.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),Uy(r),{id:r,category:Ky.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??sb()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>sb()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>sb()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new pb(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new pb(!0),r=new lb;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new pb(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=ob(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=sb(),n===`verbose`&&this.info.stallStartTime$.next(o),a=M.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?sb():o)},t)):(M.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(ob(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(ob(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new lb;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=za({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(ob(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Uy(this.providerContainer),Uy(e),Rp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>Lp(e)),this.providerContainer.current$.subscribe(({type:e})=>Bp(`provider`,e)),e.duration$.subscribe(e=>Bp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>Bp(`tracks`,e)),this.events.fatalError$.subscribe(new Vp(`fatalError`)),this.events.managedError$.subscribe(new Vp(`managedError`)),e.position$.subscribe(new Vp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new Vp(`quality`)),this.info.currentVirtualVideoBuffer$.subscribe(new Vp(`buffer`)),e.isBuffering$.subscribe(new Vp(`isBuffering`))].forEach(e=>this.subscription.add(e)),Bp(`codecs`,P.video.supportedCodecs)}initTracerSubscription(){let e=Zy(this.tracer.log.bind(this.tracer)),t=Zy(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e(`playbackState`))).add(this.info.isLooped$.subscribe(e(`isLooped`))).add(this.info.currentPlaybackRate$.pipe(X()).subscribe(e(`currentPlaybackRate`))).add(this.info.isAutoQualityEnabled$.subscribe(e(`isAutoQualityEnabled`))).add(this.info.autoQualityLimits$.subscribe(e(`autoQualityLimits`))).add(this.info.currentFormat$.subscribe(e(`currentFormat`))).add(this.info.availableQualities$.subscribe(e(`availableQualities`))).add(this.info.availableQualitiesFps$.subscribe(e(`availableQualitiesFps`))).add(this.info.availableAudioTracks$.subscribe(e(`availableAudioTracks`))).add(this.info.isAudioAvailable$.subscribe(e(`isAudioAvailable`))).add(Wy({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentAudioSegmentLength`))).add(this.info.hostname$.subscribe(e(`hostname`))).add(this.info.currentTextTrack$.subscribe(e(`currentTextTrack`))).add(this.info.availableTextTracks$.subscribe(e(`availableTextTracks`))).add(this.info.autoQualityLimitingAvailable$.subscribe(e(`autoQualityLimitingAvailable`))).add(Wy({currentBuffer:this.info.currentVirtualVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(db(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Wy({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),db(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Wy({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),db(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).add(this.info.surface$.subscribe(e(`surface`))).add(this.events.ended$.subscribe(e(`ended`))).add(this.events.looped$.subscribe(e(`looped`))).add(this.events.managedError$.subscribe(t(`managedError`))).add(this.events.fatalError$.subscribe(t(`fatalError`))).add(this.events.firstBytes$.subscribe(e(`firstBytes`))).add(this.events.firstFrame$.subscribe(e(`firstFrame`))).add(this.events.canplay$.subscribe(e(`canplay`)))}initWakeLock(){var e=this;let t=Qy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=E(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Ky.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(ob(Jy(t.document,`visibilitychange`),Jy(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,qy({quality:t,availableTracks:qy(e),track:qy(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Ky.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Qy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!es()}}var Hb=`@vkontakte/videoplayer-core@${k}`;;return{pt,P,Ht,is,Vb,ne,re,Bb,k,oe,Lb,zb,Hb,se,Ib,A,Rb,ae,ie};}();var{pt:_oxcModku6ih4_pt,P:_oxcModku6ih4_P,Ht:_oxcModku6ih4_Ht,is:_oxcModku6ih4_is,Vb:_oxcModku6ih4_Vb,ne:_oxcModku6ih4_ne,re:_oxcModku6ih4_re,Bb:_oxcModku6ih4_Bb,k:_oxcModku6ih4_k,oe:_oxcModku6ih4_oe,Lb:_oxcModku6ih4_Lb,zb:_oxcModku6ih4_zb,Hb:_oxcModku6ih4_Hb,se:_oxcModku6ih4_se,Ib:_oxcModku6ih4_Ib,A:_oxcModku6ih4_A,Rb:_oxcModku6ih4_Rb,ae:_oxcModku6ih4_ae,ie:_oxcModku6ih4_ie}=_oxcModku6ih4;export{_oxcModku6ih4_pt as isMobile,_oxcModku6ih4_P as clientChecker,_oxcModku6ih4_Ht as areValidLiveRecordSources,_oxcModku6ih4_is as WebmCodecStrategy,_oxcModku6ih4_Vb as VideoQuality,_oxcModku6ih4_ne as VideoFormat,_oxcModku6ih4_re as VideoCodecName,_oxcModku6ih4_Bb as ValueSubject,_oxcModku6ih4_k as VERSION,_oxcModku6ih4_oe as Surface,_oxcModku6ih4_Lb as Subscription,_oxcModku6ih4_zb as Subject,_oxcModku6ih4_Hb as SDK_VERSION,_oxcModku6ih4_se as PredefinedQualityLimits,_oxcModku6ih4_Ib as Player,_oxcModku6ih4_A as PlaybackState,_oxcModku6ih4_Rb as Observable,_oxcModku6ih4_ae as HttpConnectionType,_oxcModku6ih4_ie as ChromecastState};
40
+ ===== DASH_LIVE DEBUG END ====`),n){let t=e.reduce((e,{time:t,data:n,stack:r})=>{let i=fn(n).map(([e,t])=>`${e}:${t}`).join(`,`);return e+=`${t}: ${i}${r?`: ${r}`:``};`,e},``);uv.push(`core`,{key:`vp_dash_live_debug`,strings:[t]})}};return e.add(this.providerError$.subscribe(e=>{e.id.startsWith(`ProviderHangup`)&&(R({m:`final.0`,e:e.id}),t())})).add(this.noAvailableProvidersError$.subscribe(()=>{R({m:`final.1`}),t()})),e.add(this.mayday.recommendation$.subscribe(({error:e,recommendation:t})=>{let n=this.current$.getValue().destination??`SCREEN`;if(this.handleMaydayRecommendation(t,n),t.action!==`wait`){let t={error:e,currentDestination:n};e.traceAsLog?this.tracer.log(`providerInfo`,lv(t)):this.tracer.error(`providerError`,lv(t))}})),e.add(this.providerError$.subscribe(e=>{let t=this.current$.getValue(),{destination:n}=t;n===`CHROMECAST`?(this.destroyProvider(),this.params.dependencies.chromecastInitializer.stopMedia().then(()=>this.switchToNextProvider(`CHROMECAST`),()=>this.params.dependencies.chromecastInitializer.disconnect())):(this.applyErrorSideEffects(e,t.type),this.mayday.handleError(e))})),e}}var ky=`vk_uvp_throughput`,Ay=`vk_uvp_rtt`,jy=`one_video_throughput`,My=`one_video_rtt`,Ny=()=>{let{navigator:e}=Oy();if(e)return e.connection},Py=()=>{let e=Ny()?.downlink;if(Ey(e)&&e!==10)return e*1e3},Fy=()=>{let e=Ny()?.rtt;if(Ey(e)&&e!==3e3)return e},Iy=(e,t,n)=>{let r=n*8;return r/(r/e+t)};class Ly{constructor(e){this.throughput=void 0,this.rtt=void 0,this.subscription=new Sy,this.tuningConfig=void 0,this.concurrentDownloads=new Map,this.throughput$=void 0,this.rtt$=void 0,this.rttAdjustedThroughput$=void 0,this.tuningConfig=e;let t=Ly.loadStored(ky,jy,e)||(e.useBrowserEstimation?Py():void 0)||e.initialThroughput,n=Ly.loadStored(Ay,My,e)??(e.useBrowserEstimation?Fy():void 0)??0;if(this.throughput$=new Cy(t),this.rtt$=new Cy(n),this.rttAdjustedThroughput$=new Cy(Iy(t,n,e.rttPenaltyRequestSize)),this.throughput=Jp.getSmoothedValue(t,-1,e),this.rtt=Jp.getSmoothedValue(n,1,e),e.useBrowserEstimation){let e=()=>{let e=Py();e&&this.throughput.next(e);let t=Fy();Ey(t)&&this.rtt.next(t)},t=Ny();t&&`onchange`in t&&this.subscription.add(yy(t,`change`).subscribe(e)),e()}this.subscription.add(this.throughput.smoothed$.subscribe(t=>{Ly.writeStored(ky,jy,t,e)})),this.subscription.add(this.rtt.smoothed$.subscribe(t=>{Ly.writeStored(Ay,My,t,e)})),this.subscription.add(this.throughput.debounced$.pipe(wy(e=>Math.round(e))).subscribe(this.throughput$)),this.subscription.add(this.rtt.debounced$.subscribe(this.rtt$)),this.subscription.add(xy({throughput:this.throughput.smoothed$,rtt:this.rtt.smoothed$}).pipe(wy(({throughput:t,rtt:n})=>Iy(t,n,e.rttPenaltyRequestSize)),Ty(t=>{let n=this.rttAdjustedThroughput$.getValue()||0;return Math.abs(t-n)/n>=e.changeThreshold})).subscribe(this.rttAdjustedThroughput$))}destroy(){this.concurrentDownloads.clear(),this.subscription.unsubscribe()}trackXHR(e){let t=0,n=J(),r=new Sy;switch(this.subscription.add(r),this.concurrentDownloads.set(e,J()),e.readyState){case 4:break;case 3:case 2:r.add(yy(e,`progress`).pipe(by()).subscribe(e=>{t=e.loaded,n=J()}));break;case 1:case 0:r.add(yy(e,`loadstart`).subscribe(()=>{t=0,n=J()}));break}r.add(yy(e,`loadend`).subscribe(i=>{if(e.status===200){let e=i.loaded,r=J(),a=e-t,o=r-n;this.addRawSpeed(a,o,1)}this.concurrentDownloads.delete(e),r.unsubscribe()}))}trackStream(e,t=!1){var n=this;let r=e.getReader();if(!r){e.cancel(`Could not get reader`);return}let i=0,a=J(),o=0,s=J(),c=t=>{this.concurrentDownloads.delete(e),r.releaseLock(),e.cancel(`Throughput Estimator error: ${t}`).catch(()=>{})},l=function(){var u=E(function*({done:u,value:d}){if(u){if(!t){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(a):1;n.addRawSpeed(i,J()-a,e)}n.concurrentDownloads.delete(e)}else if(d){if(n.tuningConfig.measureFastSamples&&n.concurrentDownloads.set(e,J()),t){let e=J();if(e-s>n.tuningConfig.lowLatency.continuesByteSequenceInterval||e-a>n.tuningConfig.lowLatency.maxLastEvaluationTimeout){let e=s-a;e&&n.addRawSpeed(o,e,1,t),o=d.byteLength,a=J()}else o+=d.byteLength;s=J()}else if(i+=d.byteLength,o+=d.byteLength,o>=n.tuningConfig.streamMinSampleSize&&J()-s>=n.tuningConfig.streamMinSampleTime){let e=n.tuningConfig.measureFastSamples?n.countActiveDownloads(s):n.concurrentDownloads.size;n.addRawSpeed(o,J()-s,e),o=0,s=J()}yield r?.read().then(l,c)}});return function(e){return u.apply(this,arguments)}}();this.concurrentDownloads.set(e,J()),r?.read().then(l,c)}addRawSpeed(e,t,n=1,r=!1){if(this.sanityCheck(e,t,r)){let i=e*8/t*n;if(this.isFastSample(t,r)&&i<this.throughput.smoothed$.getValue())return;this.throughput.next(i)}}countActiveDownloads(e){let t=0;return this.concurrentDownloads.forEach(n=>{n>=e&&t++}),Math.max(t,1)}isFastSample(e,t){return this.tuningConfig.measureFastSamples&&!t&&e<=this.tuningConfig.cacheThresholdSize}addRawThroughput(e){this.throughput.next(e)}addRawRtt(e){this.rtt.next(e)}sanityCheck(e,t,n=!1){let r=e*8/t;return!(!r||!isFinite(r)||r>1e6||r<30||n&&e<1e4||!n&&e<10*1024&&(!this.tuningConfig.measureNonSegmentRequests||t<this.tuningConfig.smallSampleMinDuration+this.rtt$.getValue())||!n&&!this.tuningConfig.measureFastSamples&&t<=this.tuningConfig.cacheThresholdSize)}get throughputVariance$(){return this.throughput.varianceCoefficient$}static loadStored(e,t,n){if(!n.useThroughputTtl){let e=Dy.get(t);if(!Ey(e))return;let n=parseInt(e,10);return isNaN(n)?void 0:n}let r=Dy.get(e)??Dy.get(t);if(Ey(r))try{let e=JSON.parse(r);if(typeof e==`object`&&e&&typeof e.value==`number`)return Ly.validateStored(e,n)}catch{}}static writeStored(e,t,n,r){if(!r.useThroughputTtl){Dy.set(t,n.toFixed(0));return}let i=JSON.stringify({value:Math.round(n),timestamp:Date.now(),networkType:Ny()?.effectiveType});Dy.set(e,i)}static validateStored(e,t){if(!t.useThroughputTtl)return e.value;if(Date.now()-e.timestamp>t.storedThroughputTtlMs)return;let n=Ny()?.effectiveType;if(!(n!==void 0&&e.networkType!==void 0&&n!==e.networkType))return e.value}}var Ry=Ly;var Vy={mayday:{playingUnstableThresholdMs:3e3,heuristics:[],hangupGraceDecayFactor:.5,hangupGraceMinTimeoutMs:0,deferAudibleHangupOnHiddenTab:!1},allowPlayerReuse:!1,useWorkerTimers:[],throughputEstimator:{type:`EmaAndMa`,emaAlphaSlow:.2,emaAlphaFast:.7,emaAlpha:.45,basisTrendChangeCount:10,changeThreshold:.05,useBrowserEstimation:!0,initialThroughput:5e3,measureNonSegmentRequests:!1,rttPenaltyRequestSize:1*1024*1024,streamMinSampleSize:10*1024,streamMinSampleTime:300,smallSampleMinDuration:100,cacheThresholdSize:20,cacheHitTtfbMaxMs:10,measureFastSamples:!1,deviationDepth:20,deviationFactor:.5,lowLatency:{continuesByteSequenceInterval:50,maxLastEvaluationTimeout:300},useThroughputTtl:!1,storedThroughputTtlMs:144e5},autoTrackSelection:{maxBitrateFactorAtEmptyBuffer:4,bitrateFactorAtEmptyBuffer:2.8,minBitrateFactorAtEmptyBuffer:1.5,bitrateAudioFactorAtEmptyBuffer:10,maxBitrateFactorAtFullBuffer:3,bitrateFactorAtFullBuffer:2,minBitrateFactorAtFullBuffer:1,bitrateAudioFactorAtFullBuffer:7,minVideoAudioRatio:5,minAvailableThroughputAudioRatio:5,usePixelRatio:!0,pixelRatioMultiplier:void 0,pixelRatioLogBase:3,pixelRatioLogCoefficients:[1,0,1],limitByContainer:!0,maxContainerSizeFactor:2,containerSizeFactor:1.3,minContainerSizeFactor:1,lazyQualitySwitch:!0,minBufferToSwitchUp:.4,considerPlaybackRate:!1,trackCooldownIncreaseQuality:15e3,trackCooldownDecreaseQuality:3e3,backgroundVideoQualityLimit:By.Q_4320P,activeVideoAreaThreshold:.1,highQualityLimit:By.Q_720P,trafficSavingLimit:By.Q_480P,lowQualityTelemetryLimit:By.Q_240P},stallsManager:{enabled:!1,ignoreDynamicAbrForShortVideo:!1,stallDurationNoDataBeforeQualityDecrease:500,stallDurationToBeCount:100,stallCountBeforeQualityDecrease:3,resetQualityRestrictionTimeout:1e4,ignoreStallsOnSeek:!0,stallsMetricsHistoryLength:20,maxPossibleStallDuration:3e4,minTvtToBeCounted:120,maxTvtToBeCounted:10800,significantTvt:600,targetStallsDurationPerTvt:1,deviationStallsDurationPerTvt:.5,criticalStallsDurationPerTvt:6,abrAdjustingSpeed:.1,emaAlpha:.6,useTotalStallsDurationPerTvt:!0,useAverageStallsDurationPerTvt:!0,useEmaStallsDurationPerTvt:!0,ignoreStallsOnPause:!1},droppedFramesChecker:{enabled:!1,percentLimit:.1,checkTime:1e3,countLimit:3,tickCountAfterQualityChange:5,qualityUpWaitingTime:5e3,minQualityBanLimit:By.Q_480P},dash:{forwardBufferTarget:6e4,forwardBufferTargetAuto:6e4,forwardBufferTargetManual:5*6e4,forwardBufferTargetPreload:5e3,audioBufferAheadOfVideoMs:1e4,seekBiasInTheEnd:2e3,maxSegmentDurationLeftToSelectNextSegment:3e3,minSafeBufferThreshold:.5,bufferPruningSafeZone:1e3,segmentRequestSize:1*1024*1024,maxVirtualBufferSize:250*1024*1024,virtualBufferPruneSize:100*1024*1024,representationSwitchForwardBufferGap:6e4,crashOnStallTimeout:25e3,crashOnStallTWithoutDataTimeout:5e3,restoreBufferBeforeCrashTimeout:1e3,enableSubSegmentBufferFeeding:!0,bufferEmptinessTolerance:100,virtualBufferEmptinessTolerance:100,useBufferQueueVerification:!1,useVirtualBufferImplicitSeek:!1,bufferQueueVerificationMinPosition:2e3,useNewRepresentationSwitch:!1,useDelayedRepresentationSwitch:!1,useSmartRepresentationSwitch:!1,brokenSegmentAppendDetection:!1,brokenSegmentAppendTolerance:100,useFetchPriorityHints:!0,enableBaseUrlSupport:!0,maxSegmentRetryCount:5,sourceOpenTimeout:1e3,vktvAbrThrottle:0,timeupdateEventTickThrottle:300,fetcherBufferOptimisation:!0,usePersistentGaps:!1,abrThrottle:0,useVideoElementWaitingCurrentTimeReassign:!0,stallWatchdogInterval:100,liveUpdateInterval:1e3,liveStallReinitInterval:3e3,ignoreNetworkErrorsOnLoadInit:!1,bufferTolerance:100,useBufferQueueSegmentEndSelection:!1,useBufferGapWatchdog:!1,useNativeBufferGapWatchdog:!1,useZeroAudioBufferLengthWhenAudioManagerExists:!1,jumpToFirstNativeBufferFrame:!1,minNativeBufferSize:5e3,removeTimeShiftFromSegment:500,tickMaintainInterval:100,minSafeBufferToPlay:0,useBufferHoldingOnlyOnStall:!0,useAbrPhases:!1,abrVideoRules:[`fits_container_rule`,`throughput_rule`,`buffer_rule`,`stalls_rule`,`upper_limit_rule`,`lower_limit_rule`],abrAudioRules:[`throughput_rule`,`min_audio_for_video_rule`],useFailoverHostsOnAllProviderCrash:!1,saveData3gQualityLimit:By.Q_240P,saveData2gQualityLimit:By.Q_144P,useConnectionDataUpperLimit:!1,abandon:{minElapsedMs:1500,bufferSafetyFactor:.8,minLoadedFraction:.15,minBufferToActivateMs:500},bola:{bufferTargetMs:3e4,minBufferMs:1e4,minBufferPerBitrateLevelMs:2e3,placeholderBufferDecay:.99,fallbackSegmentDurationMs:4e3,finiteThresholdMs:6e4,adaptiveBufferTargetK:.5,adaptiveBufferTargetMaxMs:6e4,trimDetectThresholdMs:1e4,antiCascadeDownshift:!0},insufficientBuffer:{thresholdMs:500,gracePeriodAfterPlaybackResetMs:1e3,budgetFactor:.5,fallbackSegmentDurationMs:6e3},videoStreamRepresentaionsFilter:[],filterOnDemandQualityList:!1,dashMaxTvVideoQuality:!1,checkRepresentationCanPlayType:!1,preloadFirstSegment:!1,maxQualityForFirstSegmentPreload:By.Q_480P,tracerResumeOnUnexpectedStall:!1,tracerResumeOnLowQuality:!1,recoverStuckSegmentLoading:!1},dashCmafLive:{externalStopControl:!1,keepSilentStallWatchdogWhenNotActive:!1,maxActiveLiveOffset:1e4,normalizedTargetMinBufferSize:6e4,normalizedLiveMinBufferSize:5e3,normalizedActualBufferOffset:1e4,offsetCalculationError:3e3,maxLiveDuration:7200,catchupLiveForMutedInactiveTab:!0,lowLatency:{maxTargetOffset:3e3,maxTargetOffsetDeviation:250,playbackCatchupSpeedup:.05,isActiveOnDefault:!1,bufferEstimator:{emaAlpha:.45,changeThreshold:.05,deviationDepth:20,deviationFactor:.5,extremumInterval:5}}},live:{minBuffer:3e3,minBufferSegments:3,lowLatencyMinBuffer:1e3,lowLatencyMinBufferSegments:1,isLiveCatchUpMode:!1,lowLatencyActiveLiveDelay:3e3,activeLiveDelay:5e3,maxPausedTime:5e3,catchupLiveForMutedInactiveTab:!1,disableLiveSeekWithoutOffsetMarker:!1},downloadBackoff:{bufferThreshold:100,start:100,factor:2,max:3*1e3,random:.1},enableWakeLock:!0,enableTelemetryAtStart:!1,forceFormat:void 0,formatsToAvoid:[],disableChromecast:!1,chromecastReceiverId:`07A4434E`,chromecastPresentationApi:!1,useWebmBigRequest:!1,webmCodec:`vp9`,androidPreferredFormat:`dash`,iosPreferredFormat:`hls`,preferCMAF:!1,preferWebRTC:!1,preferMultiStream:!1,preferHDR:!1,bigRequestMinInitSize:50*1024,bigRequestMinDataSize:1*1024*1024,stripRangeHeader:!0,flushShortLoopedBuffers:!0,insufficientBufferRuleMargin:1e4,seekNearDurationBias:1,dashSeekInSegmentDurationThreshold:180*1e3,dashSeekInSegmentAlwaysSeekDelta:1e4,useDelayedPlaybackHangupWithData:!1,playbackHangupNoDataThreshold:5e3,hangupTimeoutMs:5e3,endGapTolerance:300,stallIgnoreThreshold:33,stallHandlingStrategy:`exclude-threshold`,stallIgnoreOnPause:!1,gapWatchdogInterval:50,requestQuick:!1,useHlsJs:!1,disableHlsOnDesktop:!1,useNativeHLSTextTracks:!1,useNewSwitchTo:!1,alwaysAbortPreviousSwitch:!1,useDashProviderVirtual:!1,useDashProviderVirtualMobile:!1,useDashLiveProviderVirtual:!1,useDashLiveProviderVirtualMobile:!1,useSafariEndlessRequestBugfix:!0,useSafariOptimisticPositionForLiveEdgeBugfix:!1,isAudioDisabled:!1,autoplayOnlyInActiveTab:!0,autoplayOnlyIfVisible:!0,dynamicImportTimeout:5e3,maxPlaybackTransitionInterval:2e4,providerErrorLimit:3,manifestRetryInterval:300,manifestRetryMaxInterval:1e4,manifestRetryMaxCount:10,audioVideoSyncRate:20,webrtc:{connectionRetryMaxNumber:3},useVolumeMultiplier:!1,ignoreAudioRendererError:!1,useEnableSubtitlesParam:!1,useHlsLiveNewTextManager:!1,exposeInternalsToGlobal:!1,hlsLiveNewTextManagerDownloadThreshold:4e3,disableYandexPiP:!1,asyncResolveClientChecker:!1,changePlaybackStateToPausedWhenEnded:!1,suppressExceptionsInObservables:!0,devNullLogEnabled:!1,collectingDecodingInfoEnabled:!1,sendDashLiveDebug:!1,logDashLiveDebug:!1,reuseOwnVideoElement:!1,reuseOwnVideoElementOnBackgroundTabOnly:!1,handleExtendedNetworkErrorsSet:!1,useDurationFromSegments:!0,ignoreForcePlayResultWhenProviderChanged:!1,hls:{filterOnDemandQualityList:!1},disableSubtitles:!1,audioOnly:!1,clearAudioElementOnDispose:!0,readyOnLoadedMetadata:!1,segmentCache:{mode:`none`,maxTotalSizeBytes:500*1024*1024,evictionThreshold:.9,evictionTargetPercent:.7,evictionBatchMaxBytes:150*1024*1024,quotaExceededEvictPercent:.5,ttlMs:1440*60*1e3,initTtlMs:10080*60*1e3,clearOnErrorStrategy:`once`}},Hy=e=>zy(e,Vy);var yb=({seekState:e,position$:t})=>hb(e.stateChangeEnded$.pipe(gb(({to:e})=>e.state===`none`?void 0:(e.position??NaN)/1e3),_b(vb)),t.pipe(_b(()=>e.getState().state===`none`)));var xb=e=>{let t=typeof e.container==`string`?document.getElementById(e.container):e.container;return bb(t,`Wrong container or containerId {${e.container}}`),t};var wb=(e,t,n,r)=>{e!==void 0&&t.getState()===void 0&&t.getPrevState()===void 0&&n?.getValue().length===0?n.pipe(Sb(e=>e.length>0),Cb()).subscribe(n=>{n.find(r)&&t.startTransitionTo(e)}):(e===void 0||n?.getValue().find(r))&&t.startTransitionTo(e)};var Ab=()=>{let e=`mediaCapabilities`in kb().navigator?jb:Mb,t=Tb(E(function*(){let t=yield Promise.all(Eb(Nb).map(function(){var t=E(function*([t,n]){return{codec:t,supported:yield e(n)}});return function(e){return t.apply(this,arguments)}}())),n=[P.browser.current,...t.map(e=>JSON.stringify(e))].slice(0,16);return Ob.push(`core`,{key:`videoplayer_decoding_info`,strings:n}),t}));return()=>Db(t)},jb=function(){var e=E(function*(e){if(!e)return Promise.resolve({supported:!1});let t={[`channels`in e?`audio`:`video`]:e};return yield kb().navigator.mediaCapabilities.decodingInfo(T({type:`media-source`},t))});return function(t){return e.apply(this,arguments)}}(),Mb=e=>{if(!e)return Promise.resolve({supported:!1});let t=kb().document,n=`channels`in e?t.createElement(`audio`):t.createElement(`video`);return Promise.resolve({supported:n.canPlayType(e?.contentType??``)===`probably`})},Nb={H264:{contentType:`video/mp4; codecs="avc1.4D400C"`,width:720,height:720,bitrate:2886,framerate:30},H265:{contentType:`video/mp4; codecs="hvc1.1.6.L123.B0"`,width:720,height:720,bitrate:2886,framerate:30},VP8:{contentType:`video/webm; codecs="vp8"`,width:720,height:720,bitrate:2886,framerate:30},VP9:{contentType:`video/webm; codecs="vp09.00.10.08"`,width:720,height:720,bitrate:2886,framerate:30},AV1:{contentType:`video/mp4; codecs="av01.0.01M.08"`,width:720,height:720,bitrate:2886,framerate:30},OPUS:{contentType:`audio/ogg; codecs="opus"`,channels:`2`,bitrate:128e3},AAC_LC:{contentType:`audio/mp4; codecs="mp4a.40.2"`,channels:`2`,bitrate:128e3},AC3:{contentType:`audio/mp4; codecs="ac-3"`,channels:`6`,bitrate:128e3},EAC3:{contentType:`audio/mp4; codecs="ec-3"`,channels:`6`,bitrate:128e3},AAC_HE_V1:{contentType:`audio/mp4; codecs="mp4a.40.5"`,channels:`2`,bitrate:128e3},AAC_HE_V2:{contentType:`audio/mp4; codecs="mp4a.40.29"`,channels:`2`,bitrate:128e3},AAC_xHE:{contentType:`audio/mp4; codecs="mp4a.40.42"`,channels:`2`,bitrate:128e3}},Pb={playbackState$:void 0,position$:0,duration$:1/0,playedTime$:0,muted$:!1,volume$:1,availableVideoStreams$:[],currentVideoStream$:void 0,availableVideoTracks$:[],availableQualities$:[],availableQualitiesFps$:{},currentQuality$:void 0,isAutoQualityEnabled$:!0,autoQualityLimitingAvailable$:!1,autoQualityLimits$:{},predefinedQualityLimitType$:`unknown`,availableAudioStreams$:[],currentAudioStream$:void 0,availableAudioTracks$:[],isAudioAvailable$:!0,currentPlaybackRate$:1,currentVirtualVideoBuffer$:{start:0,end:0},currentVideoBuffer$:{start:0,end:0},currentVirtualAudioBuffer$:{start:0,end:0},currentAudioBuffer$:{start:0,end:0},totalBufferDuration$:0,currentNativeVideoBuffer$:{start:0,end:0},currentNativeAudioBuffer$:{start:0,end:0},isBuffering$:!0,isStalled$:!1,stallStartTime$:0,isEnded$:!1,isLooped$:!1,isLive$:void 0,isLiveEnded$:null,canPlayLiveTailBuffer$:!1,canChangePlaybackSpeed$:void 0,atLiveEdge$:void 0,atLiveDurationEdge$:void 0,liveTime$:void 0,liveBufferTime$:void 0,liveLatency$:void 0,currentFormat$:void 0,availableTextTracks$:[],currentTextTrack$:void 0,throughputEstimation$:void 0,rttEstimation$:void 0,videoBitrate$:void 0,hostname$:void 0,httpConnectionType$:void 0,httpConnectionReused$:void 0,httpConnectionMetrics$:void 0,httpDownloadMetrics$:void 0,surface$:`none`,chromecastState$:`NOT_AVAILABLE`,chromecastDeviceName$:void 0,intrinsicVideoSize$:void 0,availableSources$:void 0,currentVideoSegmentLength$:0,currentAudioSegmentLength$:0,debugData$:{volume:0,muted:!1}},Fb={audioStream:void 0,autoVideoTrackLimits:{},autoVideoTrackSwitching:!0,currentTextTrack:void 0,externalTextTracks:[],internalTextTracks:[],isLooped:!1,isLowLatency:!1,playbackRate:1,playbackState:`stopped`,seekState:{state:`none`},textTrackCuesSettings:{},videoTrack:void 0,videoStream:void 0,volume:{volume:1,muted:!1}};class Ib{constructor(e={},t=fb.createRootTracer(`fake`),n){this.subscription=new lb,this.persistentSubscription=new lb,this.domContainer=null,this.providerContainer=void 0,this.chromecastInitializer=void 0,this.logger=new ib,this.tracer=void 0,this.abrLogger=this.logger.createComponentLog(`ABR`),this.config=void 0,this.tuning=void 0,this.throughputEstimator=void 0,this.internalsExposure=null,this.isPlaybackStarted=!1,this.suppressWillStop=!1,this.initedAt=void 0,this.hasLiveOffsetByPaused=new pb(!1),this.hasLiveOffsetByPausedTimer=0,this.playerInitRequest=0,this.playerInited=new pb(!1),this.explicitInitialQuality=void 0,this.wasSetStartedQuality=!1,this.desiredState=ce(Fb).reduce((e,[t,n])=>(e[t]=new yn(n),e),{}),this.info=ce(Pb).reduce((e,[t,n])=>(e[t]=new pb(n),e),{}),this.events={inited$:new $,ready$:new $,started$:new $,playing$:new $,paused$:new $,stopped$:new $,willReady$:new $,willStart$:new $,willResume$:new $,willPause$:new $,willStop$:new $,willDestruct$:new $,watchCoverageRecord$:new $,watchCoverageLive$:new $,managedError$:new $,fatalError$:new $,fetcherRecoverableError$:new $,ended$:new $,looped$:new $,seeked$:new $,willSeek$:new $,autoplaySoundProhibited$:new $,manifestRequested$:new $,firstBytesManifest$:new $,manifestReceived$:new $,firstBytesRequested$:new $,firstBytesReceived$:new $,firstBytes$:new $,loadedMetadata$:new $,firstFrame$:new $,canplay$:new $,log$:new $,fetcherError$:new $,severeStallOccured$:new $},this.experimental={element$:new pb(void 0),enableDebugTelemetry$:new pb(!1),dumpTelemetry:zp,getCurrentTime$:new pb(null),skipVideoElVolumeSync$:new pb(!1)},this.devNullLog=void 0,this.collectDecodingInfoDestroyCb=void 0,this.releaseTimers=void 0,this.doInit=e=>{let{container:t}=e,n=D(e,w);this.tracer.log(`initVideo`,qy(n),!0),this.domContainer=xb(e),this.chromecastInitializer.contentId=e.meta?.videoId,this.providerContainer=new vy({sources:e.sources,meta:e.meta??{},failoverHosts:e.failoverHosts??[],container:this.domContainer,desiredState:this.desiredState,dependencies:{throughputEstimator:this.throughputEstimator,chromecastInitializer:this.chromecastInitializer,tracer:this.tracer,logger:this.logger,abrLogger:this.abrLogger},tuning:this.tuning,volumeMultiplier:e.volumeMultiplier,panelSize:e.panelSize,skipVideoElVolumeSync$:this.experimental.skipVideoElVolumeSync$,handleNetworkRecoverableErrorAsProviderError:e.handleNetworkRecoverableErrorAsProviderError}),this.initProviderContainerSubscription(this.providerContainer),this.initStartingVideoTrack(this.providerContainer),this.providerContainer.init(),this.setLiveLowLatency(this.tuning.dashCmafLive.lowLatency.isActiveOnDefault),this.initDebugTelemetry(),this.initWakeLock(),this.playerInited.next(!0),this.devNullLog&&this.tuning.devNullLogEnabled?(Gy.subscribe(`core`,this.devNullLog),this.tuning.collectingDecodingInfoEnabled&&(this.collectDecodingInfoDestroyCb=Ab())):Gy.destroy(`core`)},this.initLogs(),this.tuning=Hy(e),this.tracer=t,this.releaseTimers=cb(this.tuning.useWorkerTimers),this.tuning.suppressExceptionsInObservables&&(le(this.info).forEach(e=>e.setSuppressErrors(!0)),le(this.events).forEach(e=>e.setSuppressErrors(!0)));let r={receiverApplicationId:this.tuning.chromecastReceiverId,isDisabled:this.tuning.disableChromecast,dependencies:{logger:this.logger}};if(this.chromecastInitializer=this.tuning.chromecastPresentationApi?new un(r):new Ee(r),this.throughputEstimator=new Ry(this.tuning.throughputEstimator),e.exposeInternalsToGlobal&&(this.internalsExposure=new $y(`core`,Yy(n?.playerId)),this.internalsExposure.expose({player:this,getTimersDiagnostics:Xy})),this.initChromecastSubscription(),this.initDesiredStateSubscriptions(),this.initDebugDataSubscriptions(),this.devNullLog=n?.onDevNullLog,Gy.create(`core`),Proxy&&Reflect)return new Proxy(this,{get:(e,t,n)=>{let r=Reflect.get(e,t,n);return typeof r==`function`?(...n)=>{try{return r.apply(e,n)}catch(e){let r=n.map(e=>JSON.stringify(e,(e,t)=>{let n=typeof t;return ue([`number`,`string`,`boolean`],n)?t:t===null?null:`<${n}>`})),i=`Player.${String(t)}`,a=`Exception calling ${i} (${r.join(`, `)})`;throw this.events.fatalError$.next({id:i,category:Ky.WTF,message:a,thrown:e}),e}}:r}})}resetDesiredState(){let e=(e,t)=>{e.setState(t)};Object.keys(this.desiredState).forEach(t=>{e(this.desiredState[t],Fb[t])})}reset(){this.subscription.unsubscribe(),this.providerContainer?.destroy(),this.providerContainer=void 0,M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.collectDecodingInfoDestroyCb?.call(this),this.playerInited.next(!1),this.resetDesiredState();let e=(e,t)=>{e.next(t)},t=[`muted$`,`volume$`];Object.keys(this.info).forEach(n=>{ue(t,n)?e(this.info[n],this.info[n].getValue()):e(this.info[n],Pb[n])})}initAudio(e){return this.initVideo(T(T({},e),{},{container:e.audioElement??document.createElement(`audio`)}))}initVideo(e){let t=Qy();this.config=e,this.internalsExposure?.expose({config:e,logger:this.logger,tuning:this.tuning}),this.setMuted(e.isMuted??this.tuning.isAudioDisabled);let n=()=>{this.tuning.autoplayOnlyIfVisible&&t.requestAnimationFrame?this.playerInitRequest=t.requestAnimationFrame(()=>this.doInit(e)):this.doInit(e)},r=()=>{this.tuning.asyncResolveClientChecker?P.isInited$.pipe(Y(e=>!!e),Q()).subscribe(()=>{console.log(`Core SDK async start`),n()}):n()};return this.isNotActiveTabCase()?(this.tracer.log(`request play from hidden tab`),Jy(t.document,`visibilitychange`).pipe(Q()).subscribe(r)):r(),this}destroy(e){let t=Qy();this.tracer.log(`destroy`),M.clearTimeout(this.hasLiveOffsetByPausedTimer),this.playerInitRequest&&t.cancelAnimationFrame(this.playerInitRequest),this.events.willDestruct$.next(),this.suppressWillStop=e?.reportStop===!1,this.stop(),this.providerContainer?.destroy(),this.throughputEstimator.destroy(),this.chromecastInitializer.destroy(),this.subscription.unsubscribe(),this.persistentSubscription.unsubscribe(),this.tracer.end(),this.internalsExposure?.destroy(),Gy.destroy(`core`),this.collectDecodingInfoDestroyCb?.call(this),this.releaseTimers()}waitInit(e){this.playerInited.getValue()?e():this.subscription.add(this.playerInited.pipe(Y(e=>!!e),Q()).subscribe(e))}prepare(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`prepare`,{currentPlayBackState:e.getState()}),e.getState()===`stopped`&&e.startTransitionTo(`ready`)}),this}play(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`play`,{currentPlayBackState:e.getState()}),e.getState()!==`playing`&&e.startTransitionTo(`playing`)}),this}pause(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`pause`,{currentPlayBackState:e.getState()}),e.getState()!==`paused`&&e.startTransitionTo(`paused`)}),this}stop(){return this.waitInit(()=>{let e=this.desiredState.playbackState;this.tracer.log(`stop`,{currentPlayBackState:e.getState()}),e.getState()!==`stopped`&&(e.startTransitionTo(`stopped`),this.tuning.allowPlayerReuse&&this.reset())}),this}seekTime(e,t=!0){return this.waitInit(()=>{let n=this.info.duration$.getValue(),r=this.info.isLive$.getValue(),i=e;e>=n&&!r&&(i=n-this.tuning.seekNearDurationBias),i<0&&!r&&(i=0),this.tracer.log(`seekTime`,{duration:n,isLive:r,time:e,calculatedTime:i,forcePrecise:t}),Number.isFinite(i)&&(this.events.willSeek$.next({from:this.getExactTime(),to:i}),this.desiredState.seekState.setState({state:`requested`,position:i*1e3,forcePrecise:t}))}),this}seekPercent(e){return this.waitInit(()=>{let t=this.info.duration$.getValue();this.tracer.log(`seekPercent`,{percent:e,duration:t}),isFinite(t)&&this.seekTime(Math.abs(t)*e,!1)}),this}setVolume(e,t,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=r.getTransition()?.to.muted??this.info.muted$.getValue(),a=t??(this.tuning.isAudioDisabled||i);this.tracer.log(`setVolume`,{volume:e,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue(),muted:a}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setVolume(e):r.startTransitionTo({volume:e,muted:a})}),this}setMuted(e,t=!1,n=!1){return this.waitInit(()=>{this.experimental.skipVideoElVolumeSync$.next(n);let r=this.desiredState.volume,i=this.tuning.isAudioDisabled&&!t||e,a=r.getTransition()?.to.volume??this.info.volume$.getValue();this.tracer.log(`setMuted`,{isMuted:e,nextMuted:i,volume:a,isAudioDisabled:this.tuning.isAudioDisabled,chromecastState:this.chromecastInitializer.castState$.getValue()}),this.chromecastInitializer.castState$.getValue()===`CONNECTED`&&!(this.chromecastInitializer instanceof un)?this.chromecastInitializer.setMuted(i):r.startTransitionTo({volume:a,muted:i})}),this}setVideoStream(e){return this.waitInit(()=>{this.desiredState.videoStream.startTransitionTo(e)}),this}setAudioStream(e){return this.waitInit(()=>{this.desiredState.audioStream.startTransitionTo(e)}),this}setQuality(e){return this.waitInit(()=>{Uy(this.providerContainer);let t=this.providerContainer.providerOutput.availableVideoTracks$.getValue();this.tracer.log(`setQuality`,{isDelayed:t.length===0,quality:e}),this.desiredState.videoTrack.getState()===void 0&&this.desiredState.videoTrack.getPrevState()===void 0&&t.length===0?this.wasSetStartedQuality?this.providerContainer.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(t=>{this.setVideoTrackIdByQuality(t,e)}):this.explicitInitialQuality=e:t.length>0&&this.setVideoTrackIdByQuality(t,e)}),this}setAutoQuality(e){return this.waitInit(()=>{this.tracer.log(`setAutoQuality`,{enable:e}),this.desiredState.autoVideoTrackSwitching.startTransitionTo(e)}),this}setAutoQualityLimits(e){return this.waitInit(()=>{this.tracer.log(`setAutoQualityLimits`,qy(e)),this.desiredState.autoVideoTrackLimits.startTransitionTo(e)}),this}setPredefinedQualityLimits(e){return this.waitInit(()=>{if(this.info.predefinedQualityLimitType$.getValue()===e)return this;let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection,r;switch(e){case`high_quality`:r={min:t,max:void 0};break;case`traffic_saving`:r={max:n,min:void 0};break;default:r={max:void 0,min:void 0}}this.setAutoQualityLimits(r)}),this}setPlaybackRate(e){return this.waitInit(()=>{this.tracer.log(`setPlaybackRate`,{playbackRate:e}),this.desiredState.playbackRate.startTransitionTo(e)}),this}setExternalTextTracks(e){return this.waitInit(()=>{e.length&&this.tracer.log(`setExternalTextTracks`,qy(e)),this.desiredState.externalTextTracks.startTransitionTo(e.map(e=>T({type:`external`},e)))}),this}selectTextTrack(e){return this.waitInit(()=>{wb(e,this.desiredState.currentTextTrack,this.providerContainer?.providerOutput.availableTextTracks$,t=>t.id===e),this.tracer.log(`selectTextTrack`,{textTrackId:e})}),this}setTextTrackCueSettings(e){return this.waitInit(()=>{this.tracer.log(`setTextTrackCueSettings`,T({},e)),this.desiredState.textTrackCuesSettings.startTransitionTo(e)}),this}setLiveLowLatency(e){let t=this.info.isLive$.getValue(),n=this.desiredState.isLowLatency.getState();return!t||n===e?this:(this.tracer.log(`live switch to low latency `+e),this.desiredState.isLowLatency.setState(e),this.seekTime(0))}setLooped(e){return this.waitInit(()=>{this.tracer.log(`setLooped`,{isLooped:e}),this.desiredState.isLooped.startTransitionTo(e)}),this}toggleChromecast(){this.tracer.log(`toggleChromecast`),this.chromecastInitializer.toggleConnection()}getExactTime(){if(!this.providerContainer)return 0;let e=this.providerContainer.providerOutput.element$.getValue();if(rb(e))return this.info.position$.getValue();let t=this.desiredState.seekState.getState(),n=t.state===`none`?void 0:t.position;return nb(n)?n/1e3:e.currentTime}getExactLiveTime(){if(!this.providerContainer)return 0;let e=this.desiredState.seekState.getState(),t=e.state===`none`?void 0:e.position;return(nb(t)?t:this.info.liveTime$.getValue()??0)/1e3}getAllLogs(){return this.logger.getAllLogs()}getDebugData(){return this.info.debugData$.getValue()}buildDebugData([e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v]){let y={version:k,volume:Math.round(_*100),muted:v,provider:e,cdn:t,videoSize:n?`${n.width}x${n.height}`:void 0,speed:l,bitrate:u,liveLatency:d,currentVideoSegmentLength:f,currentAudioSegmentLength:p,videoCodec:m?.codec,audioCodec:h?.codec,hdr:m?.hdr,audioLanguage:h?.language,position:g};return r&&a&&(s&&c?(y.videoBuffer=r.end-c,y.nativeVideoBuffer=a.end-c):(y.videoBuffer=Math.max(r.end-g,0),y.nativeVideoBuffer=Math.max(a.end-g,0))),i&&(y.audioBuffer=Math.max(i.end-g,0),o&&(y.nativeAudioBuffer=Math.max(o.end-g,0))),y}setIntrinsicVideoSize(...e){let t={width:e.reduce((e,{width:t})=>e||t||0,0),height:e.reduce((e,{height:t})=>e||t||0,0)};t.width&&t.height&&this.info.intrinsicVideoSize$.next({width:t.width,height:t.height})}initDebugDataSubscriptions(){this.subscription.add(mb([this.info.currentFormat$,this.info.hostname$,this.info.intrinsicVideoSize$,this.info.currentVirtualVideoBuffer$,this.info.currentVirtualAudioBuffer$,this.info.currentNativeVideoBuffer$,this.info.currentNativeAudioBuffer$,this.info.isLive$,this.info.liveBufferTime$,this.info.throughputEstimation$,this.info.videoBitrate$,this.info.liveLatency$,this.info.currentVideoSegmentLength$,this.info.currentAudioSegmentLength$,this.info.currentVideoStream$,this.info.currentAudioStream$,this.info.position$,this.info.volume$,this.info.muted$]).pipe(Z(e=>this.buildDebugData(e))).subscribe(this.info.debugData$))}initDesiredStateSubscriptions(){this.persistentSubscription.add(ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to)).subscribe(this.info.playbackState$)).add(this.desiredState.isLooped.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isLooped$)).add(this.desiredState.playbackRate.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.currentPlaybackRate$)).add(this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(this.info.isAutoQualityEnabled$)).add(this.desiredState.autoVideoTrackLimits.stateChangeEnded$.pipe(Z(e=>e.to)).subscribe(e=>{this.info.autoQualityLimits$.next(e);let{highQualityLimit:t,trafficSavingLimit:n}=this.tuning.autoTrackSelection;this.info.predefinedQualityLimitType$.next(pa(e,t,n))})).add(ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Y(({from:e})=>e===`stopped`)).subscribe(()=>{this.initedAt=sb(),this.events.inited$.next()})).add(this.desiredState.playbackState.stateChangeEnded$.subscribe(e=>{switch(e.to){case`ready`:this.events.ready$.next();break;case`playing`:this.isPlaybackStarted||this.events.started$.next(),this.isPlaybackStarted=!0,this.events.playing$.next();break;case`paused`:this.events.paused$.next();break;case`stopped`:this.events.stopped$.next()}})).add(this.desiredState.playbackState.stateChangeStarted$.subscribe(e=>{switch(e.to){case`ready`:this.events.willReady$.next();break;case`paused`:this.events.willPause$.next();break;case`playing`:this.isPlaybackStarted?this.events.willResume$.next():this.events.willStart$.next();break;case`stopped`:this.suppressWillStop||this.events.willStop$.next();break;default:}}))}initProviderContainerSubscription(e){this.subscription.add(e.providerOutput.willSeekEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`willSeekEvent`,qy(e)),e.state===`requested`?this.desiredState.seekState.setState(T(T({},e),{},{state:`applying`})):this.events.managedError$.next({id:`WillSeekIn${e.state}`,category:Ky.WTF,message:`Received unexpeceted willSeek$`})})).add(e.providerOutput.soundProhibitedEvent$.pipe(Q()).subscribe(this.events.autoplaySoundProhibited$)).add(e.providerOutput.severeStallOccurred$.subscribe(this.events.severeStallOccured$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{let e=this.desiredState.seekState.getState();this.tracer.log(`seekedEvent`,qy(e)),e.state===`applying`&&(this.desiredState.seekState.setState({state:`none`}),this.events.seeked$.next())})).add(e.current$.pipe(Z(e=>e.type)).subscribe(this.info.currentFormat$)).add(e.current$.pipe(Z(e=>e.destination),X()).subscribe(()=>this.isPlaybackStarted=!1)).add(e.providerOutput.availableVideoStreams$.subscribe(this.info.availableVideoStreams$)).add(e.providerOutput.availableVideoTracks$.subscribe(this.info.availableVideoTracks$)).add(Wy({availableVideoTracks:e.providerOutput.availableVideoTracks$,currentVideoStream:e.providerOutput.currentVideoStream$}).pipe(Z(({availableVideoTracks:e,currentVideoStream:t})=>e.filter(e=>t?t.id===e.streamId:!0).map(({quality:e})=>e).sort((e,t)=>tb(e)?1:tb(t)?-1:eb(t,e)?1:-1))).subscribe(this.info.availableQualities$)).add(e.providerOutput.availableVideoTracks$.subscribe(e=>{let t={};for(let n of e)n.fps&&(t[n.quality]=n.fps);this.info.availableQualitiesFps$.next(t)})).add(e.providerOutput.availableAudioStreams$.subscribe(this.info.availableAudioStreams$)).add(e.providerOutput.currentVideoStream$.subscribe(this.info.currentVideoStream$)).add(e.providerOutput.currentAudioStream$.subscribe(this.info.currentAudioStream$)).add(e.providerOutput.availableAudioTracks$.subscribe(this.info.availableAudioTracks$)).add(e.providerOutput.isAudioAvailable$.pipe(X()).subscribe(this.info.isAudioAvailable$)).add(e.providerOutput.currentVideoTrack$.pipe(Y(e=>nb(e))).subscribe(e=>{this.info.currentQuality$.next(e?.quality),this.info.videoBitrate$.next(e?.bitrate)})).add(e.providerOutput.currentVideoSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentVideoSegmentLength$)).add(e.providerOutput.currentAudioSegmentLength$.pipe(X((e,t)=>Math.round(e)===Math.round(t))).subscribe(this.info.currentAudioSegmentLength$)).add(e.providerOutput.hostname$.pipe(X()).subscribe(this.info.hostname$)).add(e.providerOutput.httpConnectionType$.pipe(X()).subscribe(this.info.httpConnectionType$)).add(e.providerOutput.httpConnectionReused$.pipe(X()).subscribe(this.info.httpConnectionReused$)).add(e.providerOutput.httpConnectionMetrics$.pipe(X()).subscribe(this.info.httpConnectionMetrics$)).add(e.providerOutput.httpDownloadMetrics$.pipe(X()).subscribe(this.info.httpDownloadMetrics$)).add(e.providerOutput.currentTextTrack$.subscribe(this.info.currentTextTrack$)).add(e.providerOutput.availableTextTracks$.subscribe(this.info.availableTextTracks$)).add(e.providerOutput.autoVideoTrackLimitingAvailable$.subscribe(this.info.autoQualityLimitingAvailable$)).add(e.providerOutput.autoVideoTrackLimits$.subscribe(e=>{this.desiredState.autoVideoTrackLimits.setState(e??{})})).add(e.providerOutput.currentVirtualVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVirtualVideoBuffer$)).add(e.providerOutput.currentVirtualVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVideoBuffer$)).add(e.providerOutput.currentVirtualAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentVirtualAudioBuffer$)).add(e.providerOutput.currentVirtualAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentAudioBuffer$)).add(e.providerOutput.currentNativeVideoBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeVideoBuffer$)).add(e.providerOutput.currentNativeAudioBuffer$.pipe(Z(e=>e?{start:e.from,end:e.to}:{start:0,end:0})).subscribe(this.info.currentNativeAudioBuffer$)).add(e.providerOutput.totalBufferDuration$.subscribe(this.info.totalBufferDuration$)).add(e.providerOutput.duration$.subscribe(this.info.duration$)).add(e.providerOutput.playedTime$.subscribe(this.info.playedTime$)).add(e.providerOutput.isBuffering$.subscribe(this.info.isBuffering$)).add(e.providerOutput.isLive$.subscribe(this.info.isLive$)).add(e.providerOutput.isLiveEnded$.pipe(ub(e=>e&&this.stop())).subscribe(this.info.isLiveEnded$)).add(e.providerOutput.canPlayLiveTailBuffer$.subscribe(this.info.canPlayLiveTailBuffer$)).add(e.providerOutput.canChangePlaybackSpeed$.subscribe(this.info.canChangePlaybackSpeed$)).add(e.providerOutput.liveTime$.pipe(X()).subscribe(this.info.liveTime$)).add(e.providerOutput.liveBufferTime$.subscribe(this.info.liveBufferTime$)).add(e.providerOutput.liveLatency$.subscribe(this.info.liveLatency$)).add(Wy({hasLiveOffsetByPaused:ob(this.desiredState.playbackState.stateChangeStarted$,this.desiredState.playbackState.forceChanged$).pipe(Z(e=>e.to),X(),Z(e=>e===`paused`)),isLowLatency:e.providerOutput.isLowLatency$}).subscribe(({hasLiveOffsetByPaused:e,isLowLatency:t})=>{if(M.clearTimeout(this.hasLiveOffsetByPausedTimer),e){this.hasLiveOffsetByPausedTimer=M.setTimeout(()=>{this.hasLiveOffsetByPaused.next(!0)},this.getActiveLiveDelay(t));return}this.hasLiveOffsetByPaused.next(!1)})).add(Wy({atLiveEdge:Wy({isLive:e.providerOutput.isLive$,isLowLatency:e.providerOutput.isLowLatency$,position:yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$})}).pipe(Z(({isLive:e,position:t,isLowLatency:n})=>{let r=this.getActiveLiveDelay(n);return e&&Math.abs(t)<r/1e3}),X(),ub(e=>e&&this.setPlaybackRate(1))),hasPausedTimeoutCase:this.hasLiveOffsetByPaused}).pipe(Z(({atLiveEdge:e,hasPausedTimeoutCase:t})=>e&&!t)).subscribe(this.info.atLiveEdge$)).add(Wy({isLive:e.providerOutput.isLive$,position:P.browser.isSafari&&this.tuning.useSafariOptimisticPositionForLiveEdgeBugfix?yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}):e.providerOutput.position$,duration:e.providerOutput.duration$}).pipe(Z(({isLive:e,position:t,duration:n})=>e&&(Math.abs(n)-Math.abs(t))*1e3<this.tuning.live.activeLiveDelay),X(),ub(e=>e&&this.setPlaybackRate(1))).subscribe(this.info.atLiveDurationEdge$)).add(e.providerOutput.volume$.pipe(Z(e=>e.muted),X()).subscribe(this.info.muted$)).add(e.providerOutput.volume$.pipe(Z(e=>e.volume),X()).subscribe(this.info.volume$)).add(yb({seekState:this.desiredState.seekState,position$:e.providerOutput.position$}).subscribe(this.info.position$)).add(e.providerOutput.seekedEvent$.subscribe(()=>{this.info.isEnded$.getValue()&&this.tuning.changePlaybackStateToPausedWhenEnded&&this.play()})).add(ob(e.providerOutput.endedEvent$.pipe(ab(!0)),e.providerOutput.seekedEvent$.pipe(ab(!1))).pipe(X()).subscribe(this.info.isEnded$)).add(e.providerOutput.endedEvent$.subscribe(this.events.ended$)).add(e.providerOutput.loopedEvent$.subscribe(this.events.looped$)).add(e.providerError$.subscribe(this.events.managedError$)).add(e.providerOutput.updateDurationError$.subscribe(this.events.managedError$)).add(e.providerOutput.fetcherRecoverableError$.subscribe(this.events.fetcherRecoverableError$)).add(e.providerOutput.fetcherError$.pipe(Y(e=>e.category===Ky.FATAL)).subscribe(this.events.fatalError$)).add(e.volumeMultiplierError$.subscribe(this.events.managedError$)).add(e.noAvailableProvidersError$.pipe(Z(({forced:e,input:t,supported:n})=>{let r,i;return e?(r=`NoForcedFormat`,i=`${e} was forced but failed or not available`):n.length?(r=`NoFormats`,i=`All formats failed`):t.length?(r=`NoSupportedFormats`,i=`No supported formats`):(r=`NoInputFormats`,i=`No formats supplied`),Uy(r),{id:r,category:Ky.VIDEO_PIPELINE,message:i}})).subscribe(this.events.fatalError$)).add(e.providerOutput.element$.subscribe(this.experimental.element$)).add(e.providerOutput.getCurrentTime$.subscribe(this.experimental.getCurrentTime$)).add(e.providerOutput.manifestRequested$.pipe(Q()).subscribe(this.events.manifestRequested$)).add(e.providerOutput.firstBytesManifest$.pipe(Q()).subscribe(this.events.firstBytesManifest$)).add(e.providerOutput.manifestReceived$.pipe(Q()).subscribe(this.events.manifestReceived$)).add(e.providerOutput.firstBytesRequested$.pipe(Q()).subscribe(this.events.firstBytesRequested$)).add(e.providerOutput.firstBytesReceived$.pipe(Q()).subscribe(this.events.firstBytesReceived$)).add(e.providerOutput.firstBytesEvent$.pipe(Q(),Z(e=>e??sb()-this.initedAt)).subscribe(this.events.firstBytes$)).add(e.providerOutput.loadedMetadataEvent$.subscribe(this.events.loadedMetadata$)).add(e.providerOutput.firstFrameEvent$.pipe(Q(),Z(()=>sb()-this.initedAt)).subscribe(this.events.firstFrame$)).add(e.providerOutput.canplay$.pipe(Q(),Z(()=>sb()-this.initedAt)).subscribe(this.events.canplay$)).add(this.throughputEstimator.throughput$.subscribe(this.info.throughputEstimation$)).add(this.throughputEstimator.rtt$.subscribe(this.info.rttEstimation$)).add(e.providerOutput.availableSources$.subscribe(this.info.availableSources$));let t=new pb(!1);this.subscription.add(e.providerOutput.seekedEvent$.subscribe(()=>t.next(!1))).add(e.providerOutput.willSeekEvent$.subscribe(()=>t.next(!0)));let n=new pb(!0),r=new lb;this.subscription.add(r).add(e.current$.subscribe(()=>{n.next(!0),r.unsubscribe(),r.add(this.desiredState.playbackState.stateChangeEnded$.pipe(Y(({to:e})=>e===`playing`),Q()).subscribe(()=>n.next(!1)))}));let i=new pb(!1);this.subscription.add(this.desiredState.playbackState.stateChangeEnded$.subscribe(({to:e})=>i.next(e===`paused`)));let a=0,o=0,s=ob(e.providerOutput.isBuffering$,t,n,i).pipe(Z(()=>{let r=e.providerOutput.isBuffering$.getValue(),a=t.getValue()||n.getValue()||this.tuning.stallIgnoreOnPause&&i.getValue();return r&&!a}),X());this.subscription.add(s.subscribe(e=>{let{stallIgnoreThreshold:t,stallHandlingStrategy:n}=this.tuning;e?(o=sb(),n===`verbose`&&this.info.stallStartTime$.next(o),a=M.setTimeout(()=>{this.info.isStalled$.next(!0),o&&this.info.stallStartTime$.next(n===`exclude-threshold`?sb():o)},t)):(M.clearTimeout(a),this.info.isStalled$.next(!1),o=0,this.info.stallStartTime$.next(0))})),this.subscription.add(ob(e.providerOutput.canplay$,e.providerOutput.firstFrameEvent$,e.providerOutput.firstBytesEvent$).subscribe(()=>{let t=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t?.videoWidth,height:t?.videoHeight})})).add(e.providerOutput.currentVideoTrack$.subscribe(t=>{var n,r;let i=e.providerOutput.element$.getValue();this.setIntrinsicVideoSize({width:t==null||(n=t.size)==null?void 0:n.width,height:t==null||(r=t.size)==null?void 0:r.height},{width:i?.videoWidth,height:i?.videoHeight})})),this.subscription.add(ob(e.providerOutput.inPiP$,e.providerOutput.inFullscreen$,e.providerOutput.element$,e.providerOutput.elementVisible$,this.chromecastInitializer.castState$).subscribe(()=>{let t=e.providerOutput.inPiP$.getValue(),n=e.providerOutput.inFullscreen$.getValue(),r=e.providerOutput.element$.getValue(),i=e.providerOutput.elementVisible$.getValue(),a=this.chromecastInitializer.castState$.getValue(),o;o=a===`CONNECTED`?`second_screen`:r?i?t?`pip`:n?`fullscreen`:`inline`:`invisible`:`none`,this.info.surface$.getValue()!==o&&this.info.surface$.next(o)}))}initChromecastSubscription(){this.subscription.add(this.chromecastInitializer.castState$.subscribe(this.info.chromecastState$)),this.subscription.add(this.chromecastInitializer.connection$.pipe(Z(e=>e?.castDevice.friendlyName)).subscribe(this.info.chromecastDeviceName$)),this.subscription.add(this.chromecastInitializer.errorEvent$.subscribe(this.events.managedError$))}initStartingVideoTrack(e){let t=new lb;this.subscription.add(t),this.subscription.add(e.current$.pipe(X((e,t)=>e.provider===t.provider)).subscribe(()=>{t.unsubscribe(),t.add(e.providerOutput.availableVideoTracks$.pipe(Y(e=>e.length>0),Q()).subscribe(e=>{this.setStartingVideoTrack(e)}))}))}setStartingVideoTrack(e){let t;this.wasSetStartedQuality=!0;let n=this.explicitInitialQuality??this.info.currentQuality$.getValue();n&&(t=e.find(({quality:e,tvDisabled:t})=>e===n&&!t),t||this.setAutoQuality(!0)),!t&&(t=za({videoTracks:e,tuning:this.tuning,abrLogger:this.abrLogger,tracer:this.tracer,container:this.domContainer?.getBoundingClientRect()??null,panelSize:this.config.panelSize??null,estimatedThroughput:this.throughputEstimator.throughput$.getValue(),limits:this.desiredState.autoVideoTrackLimits.getState(),playbackRate:this.info.currentPlaybackRate$.getValue(),forwardBufferHealth:0})),this.desiredState.videoTrack.startTransitionTo(t),this.info.currentQuality$.next(t.quality),this.info.videoBitrate$.next(t.bitrate)}initLogs(){this.persistentSubscription.add(ob(this.desiredState.videoTrack.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`quality`,type:`start`}))),this.desiredState.videoTrack.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`quality`,type:`end`}))),this.desiredState.autoVideoTrackSwitching.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`start`}))),this.desiredState.autoVideoTrackSwitching.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`autoQualityEnabled`,type:`end`}))),this.desiredState.seekState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`start`}))),this.desiredState.seekState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`seekState`,type:`end`}))),this.desiredState.playbackState.stateChangeStarted$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`start`}))),this.desiredState.playbackState.stateChangeEnded$.pipe(Z(e=>({transition:e,entity:`playbackState`,type:`end`})))).pipe(Z(e=>({component:`desiredState`,message:`[${e.entity} change] ${e.type}: ${JSON.stringify(e.transition)}`}))).subscribe(this.logger.log)),this.persistentSubscription.add(this.logger.log$.subscribe(this.events.log$))}initDebugTelemetry(){let e=this.providerContainer?.providerOutput;Uy(this.providerContainer),Uy(e),Rp(),this.experimental.enableDebugTelemetry$.next(this.tuning.enableTelemetryAtStart),[this.experimental.enableDebugTelemetry$.subscribe(e=>Lp(e)),this.providerContainer.current$.subscribe(({type:e})=>Bp(`provider`,e)),e.duration$.subscribe(e=>Bp(`duration`,e)),e.availableVideoTracks$.pipe(Y(e=>!!e.length),Q()).subscribe(e=>Bp(`tracks`,e)),this.events.fatalError$.subscribe(new Vp(`fatalError`)),this.events.managedError$.subscribe(new Vp(`managedError`)),e.position$.subscribe(new Vp(`position`)),e.currentVideoTrack$.pipe(Z(e=>e?.quality)).subscribe(new Vp(`quality`)),this.info.currentVirtualVideoBuffer$.subscribe(new Vp(`buffer`)),e.isBuffering$.subscribe(new Vp(`isBuffering`))].forEach(e=>this.subscription.add(e)),Bp(`codecs`,P.video.supportedCodecs)}initTracerSubscription(){let e=Zy(this.tracer.log.bind(this.tracer)),t=Zy(this.tracer.error.bind(this.tracer));this.subscription.add(this.info.playbackState$.subscribe(e(`playbackState`))).add(this.info.isLooped$.subscribe(e(`isLooped`))).add(this.info.currentPlaybackRate$.pipe(X()).subscribe(e(`currentPlaybackRate`))).add(this.info.isAutoQualityEnabled$.subscribe(e(`isAutoQualityEnabled`))).add(this.info.autoQualityLimits$.subscribe(e(`autoQualityLimits`))).add(this.info.currentFormat$.subscribe(e(`currentFormat`))).add(this.info.availableQualities$.subscribe(e(`availableQualities`))).add(this.info.availableQualitiesFps$.subscribe(e(`availableQualitiesFps`))).add(this.info.availableAudioTracks$.subscribe(e(`availableAudioTracks`))).add(this.info.isAudioAvailable$.subscribe(e(`isAudioAvailable`))).add(Wy({currentQuality:this.info.currentQuality$,videoBitrate:this.info.videoBitrate$}).pipe(Y(({currentQuality:e,videoBitrate:t})=>!!e&&!!t),X((e,t)=>e.currentQuality===t.currentQuality)).subscribe(e(`currentVideoTrack`))).add(this.info.currentVideoSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentVideoSegmentLength`))).add(this.info.currentAudioSegmentLength$.pipe(Y(e=>e>0),X()).subscribe(e(`currentAudioSegmentLength`))).add(this.info.hostname$.subscribe(e(`hostname`))).add(this.info.currentTextTrack$.subscribe(e(`currentTextTrack`))).add(this.info.availableTextTracks$.subscribe(e(`availableTextTracks`))).add(this.info.autoQualityLimitingAvailable$.subscribe(e(`autoQualityLimitingAvailable`))).add(Wy({currentBuffer:this.info.currentVirtualVideoBuffer$.pipe(Y(e=>e.end>0),X((e,t)=>e.end===t.end&&e.start===t.start)),position:this.info.position$.pipe(X())}).pipe(db(1e3)).subscribe(e(`currentBufferAndPosition`))).add(this.info.duration$.pipe(X()).subscribe(e(`duration`))).add(this.info.isBuffering$.subscribe(e(`isBuffering`))).add(this.info.isLive$.pipe(X()).subscribe(e(`isLive`))).add(this.info.canChangePlaybackSpeed$.pipe(X()).subscribe(e(`canChangePlaybackSpeed`))).add(Wy({liveTime:this.info.liveTime$,liveBufferTime:this.info.liveBufferTime$,position:this.info.position$}).pipe(Y(({liveTime:e,liveBufferTime:t})=>!!e&&!!t),db(1e3)).subscribe(e(`liveBufferAndPosition`))).add(this.info.atLiveEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveEdge`))).add(this.info.atLiveDurationEdge$.pipe(X(),Y(e=>e===!0)).subscribe(e(`atLiveDurationEdge`))).add(this.info.muted$.pipe(X()).subscribe(e(`muted`))).add(this.info.volume$.pipe(X()).subscribe(e(`volume`))).add(this.info.isEnded$.pipe(X(),Y(e=>e===!0)).subscribe(e(`isEnded`))).add(this.info.availableSources$.subscribe(e(`availableSources`))).add(Wy({throughputEstimation:this.info.throughputEstimation$,rtt:this.info.rttEstimation$}).pipe(Y(({throughputEstimation:e,rtt:t})=>!!e&&!!t),db(3e3)).subscribe(e(`throughputEstimation`))).add(this.info.isStalled$.subscribe(e(`isStalled`))).add(this.info.surface$.subscribe(e(`surface`))).add(this.events.ended$.subscribe(e(`ended`))).add(this.events.looped$.subscribe(e(`looped`))).add(this.events.managedError$.subscribe(t(`managedError`))).add(this.events.fatalError$.subscribe(t(`fatalError`))).add(this.events.firstBytes$.subscribe(e(`firstBytes`))).add(this.events.firstFrame$.subscribe(e(`firstFrame`))).add(this.events.canplay$.subscribe(e(`canplay`)))}initWakeLock(){var e=this;let t=Qy();if(!t.navigator.wakeLock||!this.tuning.enableWakeLock)return;let n,r=()=>{n?.release(),n=void 0},i=function(){var t=E(function*(){r(),n=yield window.navigator.wakeLock.request(`screen`).catch(t=>{t instanceof DOMException&&t.name===`NotAllowedError`||e.events.managedError$.next({id:`WakeLock`,category:Ky.DOM,message:String(t)})})});return function(){return t.apply(this,arguments)}}();this.subscription.add(ob(Jy(t.document,`visibilitychange`),Jy(t.document,`fullscreenchange`),this.desiredState.playbackState.stateChangeEnded$).subscribe(()=>{let e=t.document.visibilityState===`visible`,a=this.desiredState.playbackState.getState()===`playing`,o=!!n&&!n?.released;e&&a?o||i():r()})).add(this.events.willDestruct$.subscribe(r))}setVideoTrackIdByQuality(e,t){let n=e.find(e=>e.quality===t);this.tracer.log(`setVideoTrackIdByQuality`,qy({quality:t,availableTracks:qy(e),track:qy(n),isAutoQuality:!n})),n?n.tvDisabled?(this.setAutoQuality(!0),this.events.managedError$.next({id:`SetQualityTrackTvDisabled`,category:Ky.WTF,message:`Set quality was called on track with tvDisabled flag`})):this.desiredState.videoTrack.startTransitionTo(n):this.setAutoQuality(!0)}getActiveLiveDelay(e=!1){return e?this.tuning.live.lowLatencyActiveLiveDelay:this.tuning.live.activeLiveDelay}isNotActiveTabCase(){return Qy().document.hidden&&this.tuning.autoplayOnlyInActiveTab&&!es()}}var Hb=`@vkontakte/videoplayer-core@${k}`;;return{ie,ae,Rb,A,Ib,se,Hb,zb,Lb,oe,k,Bb,re,ne,Vb,is,Ht,P,pt};}();var{ie:_oxcMod8io6zu_ie,ae:_oxcMod8io6zu_ae,Rb:_oxcMod8io6zu_Rb,A:_oxcMod8io6zu_A,Ib:_oxcMod8io6zu_Ib,se:_oxcMod8io6zu_se,Hb:_oxcMod8io6zu_Hb,zb:_oxcMod8io6zu_zb,Lb:_oxcMod8io6zu_Lb,oe:_oxcMod8io6zu_oe,k:_oxcMod8io6zu_k,Bb:_oxcMod8io6zu_Bb,re:_oxcMod8io6zu_re,ne:_oxcMod8io6zu_ne,Vb:_oxcMod8io6zu_Vb,is:_oxcMod8io6zu_is,Ht:_oxcMod8io6zu_Ht,P:_oxcMod8io6zu_P,pt:_oxcMod8io6zu_pt}=_oxcMod8io6zu;export{_oxcMod8io6zu_ie as ChromecastState,_oxcMod8io6zu_ae as HttpConnectionType,_oxcMod8io6zu_Rb as Observable,_oxcMod8io6zu_A as PlaybackState,_oxcMod8io6zu_Ib as Player,_oxcMod8io6zu_se as PredefinedQualityLimits,_oxcMod8io6zu_Hb as SDK_VERSION,_oxcMod8io6zu_zb as Subject,_oxcMod8io6zu_Lb as Subscription,_oxcMod8io6zu_oe as Surface,_oxcMod8io6zu_k as VERSION,_oxcMod8io6zu_Bb as ValueSubject,_oxcMod8io6zu_re as VideoCodecName,_oxcMod8io6zu_ne as VideoFormat,_oxcMod8io6zu_Vb as VideoQuality,_oxcMod8io6zu_is as WebmCodecStrategy,_oxcMod8io6zu_Ht as areValidLiveRecordSources,_oxcMod8io6zu_P as clientChecker,_oxcMod8io6zu_pt as isMobile};