@vkontakte/videoplayer-core 2.0.119-dev.381e55bc.0 → 2.0.119-dev.57953263.0

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/esnext.esm.js CHANGED
@@ -1,10 +1,10 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.119-dev.381e55bc.0
3
- * Wed, 11 Dec 2024 12:39:08 GMT
2
+ * @vkontakte/videoplayer-core v2.0.119-dev.57953263.0
3
+ * Wed, 11 Dec 2024 12:35:47 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-119/doc/
5
5
  */
6
6
  var ry=Object.create;var kl=Object.defineProperty;var iy=Object.getOwnPropertyDescriptor;var ay=Object.getOwnPropertyNames;var sy=Object.getPrototypeOf,ny=Object.prototype.hasOwnProperty;var m=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var oy=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of ay(e))!ny.call(i,a)&&a!==t&&kl(i,a,{get:()=>e[a],enumerable:!(r=iy(e,a))||r.enumerable});return i};var C=(i,e,t)=>(t=i!=null?ry(sy(i)):{},oy(e||!i||!i.__esModule?kl(t,"default",{value:i,enumerable:!0}):t,i));var Q=m((pn,wl)=>{"use strict";var zr=function(i){return i&&i.Math===Math&&i};wl.exports=zr(typeof globalThis=="object"&&globalThis)||zr(typeof window=="object"&&window)||zr(typeof self=="object"&&self)||zr(typeof global=="object"&&global)||zr(typeof pn=="object"&&pn)||function(){return this}()||Function("return this")()});var ie=m((AC,Rl)=>{"use strict";Rl.exports=function(i){try{return!!i()}catch{return!0}}});var Kr=m((wC,$l)=>{"use strict";var uy=ie();$l.exports=!uy(function(){var i=function(){}.bind();return typeof i!="function"||i.hasOwnProperty("prototype")})});var hn=m((RC,Dl)=>{"use strict";var ly=Kr(),Cl=Function.prototype,Ll=Cl.apply,Ml=Cl.call;Dl.exports=typeof Reflect=="object"&&Reflect.apply||(ly?Ml.bind(Ll):function(){return Ml.apply(Ll,arguments)})});var J=m(($C,Ol)=>{"use strict";var Vl=Kr(),Bl=Function.prototype,mn=Bl.call,cy=Vl&&Bl.bind.bind(mn,mn);Ol.exports=Vl?cy:function(i){return function(){return mn.apply(i,arguments)}}});var Nt=m((LC,Nl)=>{"use strict";var _l=J(),dy=_l({}.toString),py=_l("".slice);Nl.exports=function(i){return py(dy(i),8,-1)}});var fn=m((MC,Fl)=>{"use strict";var hy=Nt(),my=J();Fl.exports=function(i){if(hy(i)==="Function")return my(i)}});var G=m((CC,ql)=>{"use strict";var bn=typeof document=="object"&&document.all;ql.exports=typeof bn>"u"&&bn!==void 0?function(i){return typeof i=="function"||i===bn}:function(i){return typeof i=="function"}});var Ie=m((DC,Ul)=>{"use strict";var fy=ie();Ul.exports=!fy(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Ee=m((VC,Hl)=>{"use strict";var by=Kr(),Oa=Function.prototype.call;Hl.exports=by?Oa.bind(Oa):function(){return Oa.apply(Oa,arguments)}});var gn=m(Ql=>{"use strict";var jl={}.propertyIsEnumerable,Gl=Object.getOwnPropertyDescriptor,gy=Gl&&!jl.call({1:2},1);Ql.f=gy?function(e){var t=Gl(this,e);return!!t&&t.enumerable}:jl});var Jr=m((OC,Wl)=>{"use strict";Wl.exports=function(i,e){return{enumerable:!(i&1),configurable:!(i&2),writable:!(i&4),value:e}}});var zl=m((_C,Yl)=>{"use strict";var Sy=J(),vy=ie(),yy=Nt(),Sn=Object,Ty=Sy("".split);Yl.exports=vy(function(){return!Sn("z").propertyIsEnumerable(0)})?function(i){return yy(i)==="String"?Ty(i,""):Sn(i)}:Sn});var hr=m((NC,Kl)=>{"use strict";Kl.exports=function(i){return i==null}});var St=m((FC,Jl)=>{"use strict";var Iy=hr(),Ey=TypeError;Jl.exports=function(i){if(Iy(i))throw new Ey("Can't call method on "+i);return i}});var Ft=m((qC,Xl)=>{"use strict";var xy=zl(),Py=St();Xl.exports=function(i){return xy(Py(i))}});var xe=m((UC,Zl)=>{"use strict";var ky=G();Zl.exports=function(i){return typeof i=="object"?i!==null:ky(i)}});var mr=m((HC,ec)=>{"use strict";ec.exports={}});var at=m((jC,rc)=>{"use strict";var vn=mr(),yn=Q(),Ay=G(),tc=function(i){return Ay(i)?i:void 0};rc.exports=function(i,e){return arguments.length<2?tc(vn[i])||tc(yn[i]):vn[i]&&vn[i][e]||yn[i]&&yn[i][e]}});var Xr=m((GC,ic)=>{"use strict";var wy=J();ic.exports=wy({}.isPrototypeOf)});var qt=m((QC,nc)=>{"use strict";var Ry=Q(),ac=Ry.navigator,sc=ac&&ac.userAgent;nc.exports=sc?String(sc):""});var In=m((WC,pc)=>{"use strict";var dc=Q(),Tn=qt(),oc=dc.process,uc=dc.Deno,lc=oc&&oc.versions||uc&&uc.version,cc=lc&&lc.v8,_e,_a;cc&&(_e=cc.split("."),_a=_e[0]>0&&_e[0]<4?1:+(_e[0]+_e[1]));!_a&&Tn&&(_e=Tn.match(/Edge\/(\d+)/),(!_e||_e[1]>=74)&&(_e=Tn.match(/Chrome\/(\d+)/),_e&&(_a=+_e[1])));pc.exports=_a});var En=m((YC,mc)=>{"use strict";var hc=In(),$y=ie(),Ly=Q(),My=Ly.String;mc.exports=!!Object.getOwnPropertySymbols&&!$y(function(){var i=Symbol("symbol detection");return!My(i)||!(Object(i)instanceof Symbol)||!Symbol.sham&&hc&&hc<41})});var xn=m((zC,fc)=>{"use strict";var Cy=En();fc.exports=Cy&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Pn=m((KC,bc)=>{"use strict";var Dy=at(),Vy=G(),By=Xr(),Oy=xn(),_y=Object;bc.exports=Oy?function(i){return typeof i=="symbol"}:function(i){var e=Dy("Symbol");return Vy(e)&&By(e.prototype,_y(i))}});var Zr=m((JC,gc)=>{"use strict";var Ny=String;gc.exports=function(i){try{return Ny(i)}catch{return"Object"}}});var Ye=m((XC,Sc)=>{"use strict";var Fy=G(),qy=Zr(),Uy=TypeError;Sc.exports=function(i){if(Fy(i))return i;throw new Uy(qy(i)+" is not a function")}});var ei=m((ZC,vc)=>{"use strict";var Hy=Ye(),jy=hr();vc.exports=function(i,e){var t=i[e];return jy(t)?void 0:Hy(t)}});var Tc=m((e0,yc)=>{"use strict";var kn=Ee(),An=G(),wn=xe(),Gy=TypeError;yc.exports=function(i,e){var t,r;if(e==="string"&&An(t=i.toString)&&!wn(r=kn(t,i))||An(t=i.valueOf)&&!wn(r=kn(t,i))||e!=="string"&&An(t=i.toString)&&!wn(r=kn(t,i)))return r;throw new Gy("Can't convert object to primitive value")}});var Ne=m((t0,Ic)=>{"use strict";Ic.exports=!0});var Pc=m((r0,xc)=>{"use strict";var Ec=Q(),Qy=Object.defineProperty;xc.exports=function(i,e){try{Qy(Ec,i,{value:e,configurable:!0,writable:!0})}catch{Ec[i]=e}return e}});var ti=m((i0,wc)=>{"use strict";var Wy=Ne(),Yy=Q(),zy=Pc(),kc="__core-js_shared__",Ac=wc.exports=Yy[kc]||zy(kc,{});(Ac.versions||(Ac.versions=[])).push({version:"3.38.0",mode:Wy?"pure":"global",copyright:"\xA9 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.0/LICENSE",source:"https://github.com/zloirock/core-js"})});var Rn=m((a0,$c)=>{"use strict";var Rc=ti();$c.exports=function(i,e){return Rc[i]||(Rc[i]=e||{})}});var fr=m((s0,Lc)=>{"use strict";var Ky=St(),Jy=Object;Lc.exports=function(i){return Jy(Ky(i))}});var Fe=m((n0,Mc)=>{"use strict";var Xy=J(),Zy=fr(),eT=Xy({}.hasOwnProperty);Mc.exports=Object.hasOwn||function(e,t){return eT(Zy(e),t)}});var $n=m((o0,Cc)=>{"use strict";var tT=J(),rT=0,iT=Math.random(),aT=tT(1 .toString);Cc.exports=function(i){return"Symbol("+(i===void 0?"":i)+")_"+aT(++rT+iT,36)}});var ae=m((u0,Vc)=>{"use strict";var sT=Q(),nT=Rn(),Dc=Fe(),oT=$n(),uT=En(),lT=xn(),br=sT.Symbol,Ln=nT("wks"),cT=lT?br.for||br:br&&br.withoutSetter||oT;Vc.exports=function(i){return Dc(Ln,i)||(Ln[i]=uT&&Dc(br,i)?br[i]:cT("Symbol."+i)),Ln[i]}});var Nc=m((l0,_c)=>{"use strict";var dT=Ee(),Bc=xe(),Oc=Pn(),pT=ei(),hT=Tc(),mT=ae(),fT=TypeError,bT=mT("toPrimitive");_c.exports=function(i,e){if(!Bc(i)||Oc(i))return i;var t=pT(i,bT),r;if(t){if(e===void 0&&(e="default"),r=dT(t,i,e),!Bc(r)||Oc(r))return r;throw new fT("Can't convert object to primitive value")}return e===void 0&&(e="number"),hT(i,e)}});var Mn=m((c0,Fc)=>{"use strict";var gT=Nc(),ST=Pn();Fc.exports=function(i){var e=gT(i,"string");return ST(e)?e:e+""}});var Na=m((d0,Uc)=>{"use strict";var vT=Q(),qc=xe(),Cn=vT.document,yT=qc(Cn)&&qc(Cn.createElement);Uc.exports=function(i){return yT?Cn.createElement(i):{}}});var Dn=m((p0,Hc)=>{"use strict";var TT=Ie(),IT=ie(),ET=Na();Hc.exports=!TT&&!IT(function(){return Object.defineProperty(ET("div"),"a",{get:function(){return 7}}).a!==7})});var Qc=m(Gc=>{"use strict";var xT=Ie(),PT=Ee(),kT=gn(),AT=Jr(),wT=Ft(),RT=Mn(),$T=Fe(),LT=Dn(),jc=Object.getOwnPropertyDescriptor;Gc.f=xT?jc:function(e,t){if(e=wT(e),t=RT(t),LT)try{return jc(e,t)}catch{}if($T(e,t))return AT(!PT(kT.f,e,t),e[t])}});var Vn=m((m0,Wc)=>{"use strict";var MT=ie(),CT=G(),DT=/#|\.prototype\./,ri=function(i,e){var t=BT[VT(i)];return t===_T?!0:t===OT?!1:CT(e)?MT(e):!!e},VT=ri.normalize=function(i){return String(i).replace(DT,".").toLowerCase()},BT=ri.data={},OT=ri.NATIVE="N",_T=ri.POLYFILL="P";Wc.exports=ri});var gr=m((f0,zc)=>{"use strict";var Yc=fn(),NT=Ye(),FT=Kr(),qT=Yc(Yc.bind);zc.exports=function(i,e){return NT(i),e===void 0?i:FT?qT(i,e):function(){return i.apply(e,arguments)}}});var Bn=m((b0,Kc)=>{"use strict";var UT=Ie(),HT=ie();Kc.exports=UT&&HT(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var ze=m((g0,Jc)=>{"use strict";var jT=xe(),GT=String,QT=TypeError;Jc.exports=function(i){if(jT(i))return i;throw new QT(GT(i)+" is not an object")}});var Ut=m(Zc=>{"use strict";var WT=Ie(),YT=Dn(),zT=Bn(),Fa=ze(),Xc=Mn(),KT=TypeError,On=Object.defineProperty,JT=Object.getOwnPropertyDescriptor,_n="enumerable",Nn="configurable",Fn="writable";Zc.f=WT?zT?function(e,t,r){if(Fa(e),t=Xc(t),Fa(r),typeof e=="function"&&t==="prototype"&&"value"in r&&Fn in r&&!r[Fn]){var a=JT(e,t);a&&a[Fn]&&(e[t]=r.value,r={configurable:Nn in r?r[Nn]:a[Nn],enumerable:_n in r?r[_n]:a[_n],writable:!1})}return On(e,t,r)}:On:function(e,t,r){if(Fa(e),t=Xc(t),Fa(r),YT)try{return On(e,t,r)}catch{}if("get"in r||"set"in r)throw new KT("Accessors not supported");return"value"in r&&(e[t]=r.value),e}});var Sr=m((v0,ed)=>{"use strict";var XT=Ie(),ZT=Ut(),eI=Jr();ed.exports=XT?function(i,e,t){return ZT.f(i,e,eI(1,t))}:function(i,e,t){return i[e]=t,i}});var z=m((y0,rd)=>{"use strict";var ii=Q(),tI=hn(),rI=fn(),iI=G(),aI=Qc().f,sI=Vn(),vr=mr(),nI=gr(),yr=Sr(),td=Fe();ti();var oI=function(i){var e=function(t,r,a){if(this instanceof e){switch(arguments.length){case 0:return new i;case 1:return new i(t);case 2:return new i(t,r)}return new i(t,r,a)}return tI(i,this,arguments)};return e.prototype=i.prototype,e};rd.exports=function(i,e){var t=i.target,r=i.global,a=i.stat,s=i.proto,n=r?ii:a?ii[t]:ii[t]&&ii[t].prototype,o=r?vr:vr[t]||yr(vr,t,{})[t],u=o.prototype,l,c,d,p,h,f,b,g,S;for(p in e)l=sI(r?p:t+(a?".":"#")+p,i.forced),c=!l&&n&&td(n,p),f=o[p],c&&(i.dontCallGetSet?(S=aI(n,p),b=S&&S.value):b=n[p]),h=c&&b?b:e[p],!(!l&&!s&&typeof f==typeof h)&&(i.bind&&c?g=nI(h,ii):i.wrap&&c?g=oI(h):s&&iI(h)?g=rI(h):g=h,(i.sham||h&&h.sham||f&&f.sham)&&yr(g,"sham",!0),yr(o,p,g),s&&(d=t+"Prototype",td(vr,d)||yr(vr,d,{}),yr(vr[d],p,h),i.real&&u&&(l||!u[p])&&yr(u,p,h)))}});var ad=m((T0,id)=>{"use strict";var uI=Math.ceil,lI=Math.floor;id.exports=Math.trunc||function(e){var t=+e;return(t>0?lI:uI)(t)}});var ai=m((I0,sd)=>{"use strict";var cI=ad();sd.exports=function(i){var e=+i;return e!==e||e===0?0:cI(e)}});var od=m((E0,nd)=>{"use strict";var dI=ai(),pI=Math.max,hI=Math.min;nd.exports=function(i,e){var t=dI(i);return t<0?pI(t+e,0):hI(t,e)}});var qn=m((x0,ud)=>{"use strict";var mI=ai(),fI=Math.min;ud.exports=function(i){var e=mI(i);return e>0?fI(e,9007199254740991):0}});var Tr=m((P0,ld)=>{"use strict";var bI=qn();ld.exports=function(i){return bI(i.length)}});var Un=m((k0,dd)=>{"use strict";var gI=Ft(),SI=od(),vI=Tr(),cd=function(i){return function(e,t,r){var a=gI(e),s=vI(a);if(s===0)return!i&&-1;var n=SI(r,s),o;if(i&&t!==t){for(;s>n;)if(o=a[n++],o!==o)return!0}else for(;s>n;n++)if((i||n in a)&&a[n]===t)return i||n||0;return!i&&-1}};dd.exports={includes:cd(!0),indexOf:cd(!1)}});var si=m((A0,pd)=>{"use strict";pd.exports=function(){}});var hd=m(()=>{"use strict";var yI=z(),TI=Un().includes,II=ie(),EI=si(),xI=II(function(){return!Array(1).includes()});yI({target:"Array",proto:!0,forced:xI},{includes:function(e){return TI(this,e,arguments.length>1?arguments[1]:void 0)}});EI("includes")});var vt=m(($0,md)=>{"use strict";var PI=at();md.exports=PI});var bd=m((L0,fd)=>{"use strict";hd();var kI=vt();fd.exports=kI("Array","includes")});var Sd=m((M0,gd)=>{"use strict";var AI=bd();gd.exports=AI});var Ke=m((C0,vd)=>{"use strict";var wI=Sd();vd.exports=wI});var Ha=m((G0,Ad)=>{"use strict";var BI=Rn(),OI=$n(),kd=BI("keys");Ad.exports=function(i){return kd[i]||(kd[i]=OI(i))}});var Rd=m((Q0,wd)=>{"use strict";var _I=ie();wd.exports=!_I(function(){function i(){}return i.prototype.constructor=null,Object.getPrototypeOf(new i)!==i.prototype})});var ja=m((W0,Ld)=>{"use strict";var NI=Fe(),FI=G(),qI=fr(),UI=Ha(),HI=Rd(),$d=UI("IE_PROTO"),Gn=Object,jI=Gn.prototype;Ld.exports=HI?Gn.getPrototypeOf:function(i){var e=qI(i);if(NI(e,$d))return e[$d];var t=e.constructor;return FI(t)&&e instanceof t?t.prototype:e instanceof Gn?jI:null}});var Ga=m((Y0,Md)=>{"use strict";Md.exports={}});var Vd=m((z0,Dd)=>{"use strict";var GI=J(),Qn=Fe(),QI=Ft(),WI=Un().indexOf,YI=Ga(),Cd=GI([].push);Dd.exports=function(i,e){var t=QI(i),r=0,a=[],s;for(s in t)!Qn(YI,s)&&Qn(t,s)&&Cd(a,s);for(;e.length>r;)Qn(t,s=e[r++])&&(~WI(a,s)||Cd(a,s));return a}});var Wn=m((K0,Bd)=>{"use strict";Bd.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var Yn=m((J0,Od)=>{"use strict";var zI=Vd(),KI=Wn();Od.exports=Object.keys||function(e){return zI(e,KI)}});var zn=m((X0,Ud)=>{"use strict";var Nd=Ie(),JI=ie(),Fd=J(),XI=ja(),ZI=Yn(),eE=Ft(),tE=gn().f,qd=Fd(tE),rE=Fd([].push),iE=Nd&&JI(function(){var i=Object.create(null);return i[2]=2,!qd(i,2)}),_d=function(i){return function(e){for(var t=eE(e),r=ZI(t),a=iE&&XI(t)===null,s=r.length,n=0,o=[],u;s>n;)u=r[n++],(!Nd||(a?u in t:qd(t,u)))&&rE(o,i?[u,t[u]]:t[u]);return o}};Ud.exports={entries:_d(!0),values:_d(!1)}});var Hd=m(()=>{"use strict";var aE=z(),sE=zn().entries;aE({target:"Object",stat:!0},{entries:function(e){return sE(e)}})});var Gd=m((tD,jd)=>{"use strict";Hd();var nE=mr();jd.exports=nE.Object.entries});var Wd=m((rD,Qd)=>{"use strict";var oE=Gd();Qd.exports=oE});var Ir=m((iD,Yd)=>{"use strict";var uE=Wd();Yd.exports=uE});var Ht=m((aD,zd)=>{"use strict";zd.exports={}});var Xd=m((sD,Jd)=>{"use strict";var lE=Q(),cE=G(),Kd=lE.WeakMap;Jd.exports=cE(Kd)&&/native code/.test(String(Kd))});var Zn=m((nD,tp)=>{"use strict";var dE=Xd(),ep=Q(),pE=xe(),hE=Sr(),Kn=Fe(),Jn=ti(),mE=Ha(),fE=Ga(),Zd="Object already initialized",Xn=ep.TypeError,bE=ep.WeakMap,Qa,ni,Wa,gE=function(i){return Wa(i)?ni(i):Qa(i,{})},SE=function(i){return function(e){var t;if(!pE(e)||(t=ni(e)).type!==i)throw new Xn("Incompatible receiver, "+i+" required");return t}};dE||Jn.state?(qe=Jn.state||(Jn.state=new bE),qe.get=qe.get,qe.has=qe.has,qe.set=qe.set,Qa=function(i,e){if(qe.has(i))throw new Xn(Zd);return e.facade=i,qe.set(i,e),e},ni=function(i){return qe.get(i)||{}},Wa=function(i){return qe.has(i)}):(jt=mE("state"),fE[jt]=!0,Qa=function(i,e){if(Kn(i,jt))throw new Xn(Zd);return e.facade=i,hE(i,jt,e),e},ni=function(i){return Kn(i,jt)?i[jt]:{}},Wa=function(i){return Kn(i,jt)});var qe,jt;tp.exports={set:Qa,get:ni,has:Wa,enforce:gE,getterFor:SE}});var ro=m((oD,ip)=>{"use strict";var eo=Ie(),vE=Fe(),rp=Function.prototype,yE=eo&&Object.getOwnPropertyDescriptor,to=vE(rp,"name"),TE=to&&function(){}.name==="something",IE=to&&(!eo||eo&&yE(rp,"name").configurable);ip.exports={EXISTS:to,PROPER:TE,CONFIGURABLE:IE}});var sp=m(ap=>{"use strict";var EE=Ie(),xE=Bn(),PE=Ut(),kE=ze(),AE=Ft(),wE=Yn();ap.f=EE&&!xE?Object.defineProperties:function(e,t){kE(e);for(var r=AE(t),a=wE(t),s=a.length,n=0,o;s>n;)PE.f(e,o=a[n++],r[o]);return e}});var io=m((lD,np)=>{"use strict";var RE=at();np.exports=RE("document","documentElement")});var oo=m((cD,hp)=>{"use strict";var $E=ze(),LE=sp(),op=Wn(),ME=Ga(),CE=io(),DE=Na(),VE=Ha(),up=">",lp="<",so="prototype",no="script",dp=VE("IE_PROTO"),ao=function(){},pp=function(i){return lp+no+up+i+lp+"/"+no+up},cp=function(i){i.write(pp("")),i.close();var e=i.parentWindow.Object;return i=null,e},BE=function(){var i=DE("iframe"),e="java"+no+":",t;return i.style.display="none",CE.appendChild(i),i.src=String(e),t=i.contentWindow.document,t.open(),t.write(pp("document.F=Object")),t.close(),t.F},Ya,za=function(){try{Ya=new ActiveXObject("htmlfile")}catch{}za=typeof document<"u"?document.domain&&Ya?cp(Ya):BE():cp(Ya);for(var i=op.length;i--;)delete za[so][op[i]];return za()};ME[dp]=!0;hp.exports=Object.create||function(e,t){var r;return e!==null?(ao[so]=$E(e),r=new ao,ao[so]=null,r[dp]=e):r=za(),t===void 0?r:LE.f(r,t)}});var Er=m((dD,mp)=>{"use strict";var OE=Sr();mp.exports=function(i,e,t,r){return r&&r.enumerable?i[e]=t:OE(i,e,t),i}});var po=m((pD,gp)=>{"use strict";var _E=ie(),NE=G(),FE=xe(),qE=oo(),fp=ja(),UE=Er(),HE=ae(),jE=Ne(),co=HE("iterator"),bp=!1,st,uo,lo;[].keys&&(lo=[].keys(),"next"in lo?(uo=fp(fp(lo)),uo!==Object.prototype&&(st=uo)):bp=!0);var GE=!FE(st)||_E(function(){var i={};return st[co].call(i)!==i});GE?st={}:jE&&(st=qE(st));NE(st[co])||UE(st,co,function(){return this});gp.exports={IteratorPrototype:st,BUGGY_SAFARI_ITERATORS:bp}});var Ka=m((hD,vp)=>{"use strict";var QE=ae(),WE=QE("toStringTag"),Sp={};Sp[WE]="z";vp.exports=String(Sp)==="[object z]"});var oi=m((mD,yp)=>{"use strict";var YE=Ka(),zE=G(),Ja=Nt(),KE=ae(),JE=KE("toStringTag"),XE=Object,ZE=Ja(function(){return arguments}())==="Arguments",ex=function(i,e){try{return i[e]}catch{}};yp.exports=YE?Ja:function(i){var e,t,r;return i===void 0?"Undefined":i===null?"Null":typeof(t=ex(e=XE(i),JE))=="string"?t:ZE?Ja(e):(r=Ja(e))==="Object"&&zE(e.callee)?"Arguments":r}});var Ip=m((fD,Tp)=>{"use strict";var tx=Ka(),rx=oi();Tp.exports=tx?{}.toString:function(){return"[object "+rx(this)+"]"}});var ui=m((bD,xp)=>{"use strict";var ix=Ka(),ax=Ut().f,sx=Sr(),nx=Fe(),ox=Ip(),ux=ae(),Ep=ux("toStringTag");xp.exports=function(i,e,t,r){var a=t?i:i&&i.prototype;a&&(nx(a,Ep)||ax(a,Ep,{configurable:!0,value:e}),r&&!ix&&sx(a,"toString",ox))}});var kp=m((gD,Pp)=>{"use strict";var lx=po().IteratorPrototype,cx=oo(),dx=Jr(),px=ui(),hx=Ht(),mx=function(){return this};Pp.exports=function(i,e,t,r){var a=e+" Iterator";return i.prototype=cx(lx,{next:dx(+!r,t)}),px(i,a,!1,!0),hx[a]=mx,i}});var wp=m((SD,Ap)=>{"use strict";var fx=J(),bx=Ye();Ap.exports=function(i,e,t){try{return fx(bx(Object.getOwnPropertyDescriptor(i,e)[t]))}catch{}}});var $p=m((vD,Rp)=>{"use strict";var gx=xe();Rp.exports=function(i){return gx(i)||i===null}});var Mp=m((yD,Lp)=>{"use strict";var Sx=$p(),vx=String,yx=TypeError;Lp.exports=function(i){if(Sx(i))return i;throw new yx("Can't set "+vx(i)+" as a prototype")}});var ho=m((TD,Cp)=>{"use strict";var Tx=wp(),Ix=xe(),Ex=St(),xx=Mp();Cp.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var i=!1,e={},t;try{t=Tx(Object.prototype,"__proto__","set"),t(e,[]),i=e instanceof Array}catch{}return function(a,s){return Ex(a),xx(s),Ix(a)&&(i?t(a,s):a.__proto__=s),a}}():void 0)});var jp=m((ID,Hp)=>{"use strict";var Px=z(),kx=Ee(),Xa=Ne(),qp=ro(),Ax=G(),wx=kp(),Dp=ja(),Vp=ho(),Rx=ui(),$x=Sr(),mo=Er(),Lx=ae(),Bp=Ht(),Up=po(),Mx=qp.PROPER,Cx=qp.CONFIGURABLE,Op=Up.IteratorPrototype,Za=Up.BUGGY_SAFARI_ITERATORS,li=Lx("iterator"),_p="keys",ci="values",Np="entries",Fp=function(){return this};Hp.exports=function(i,e,t,r,a,s,n){wx(t,e,r);var o=function(S){if(S===a&&p)return p;if(!Za&&S&&S in c)return c[S];switch(S){case _p:return function(){return new t(this,S)};case ci:return function(){return new t(this,S)};case Np:return function(){return new t(this,S)}}return function(){return new t(this)}},u=e+" Iterator",l=!1,c=i.prototype,d=c[li]||c["@@iterator"]||a&&c[a],p=!Za&&d||o(a),h=e==="Array"&&c.entries||d,f,b,g;if(h&&(f=Dp(h.call(new i)),f!==Object.prototype&&f.next&&(!Xa&&Dp(f)!==Op&&(Vp?Vp(f,Op):Ax(f[li])||mo(f,li,Fp)),Rx(f,u,!0,!0),Xa&&(Bp[u]=Fp))),Mx&&a===ci&&d&&d.name!==ci&&(!Xa&&Cx?$x(c,"name",ci):(l=!0,p=function(){return kx(d,this)})),a)if(b={values:o(ci),keys:s?p:o(_p),entries:o(Np)},n)for(g in b)(Za||l||!(g in c))&&mo(c,g,b[g]);else Px({target:e,proto:!0,forced:Za||l},b);return(!Xa||n)&&c[li]!==p&&mo(c,li,p,{name:a}),Bp[e]=p,b}});var Qp=m((ED,Gp)=>{"use strict";Gp.exports=function(i,e){return{value:i,done:e}}});var bo=m((xD,Jp)=>{"use strict";var Dx=Ft(),fo=si(),Wp=Ht(),zp=Zn(),Vx=Ut().f,Bx=jp(),es=Qp(),Ox=Ne(),_x=Ie(),Kp="Array Iterator",Nx=zp.set,Fx=zp.getterFor(Kp);Jp.exports=Bx(Array,"Array",function(i,e){Nx(this,{type:Kp,target:Dx(i),index:0,kind:e})},function(){var i=Fx(this),e=i.target,t=i.index++;if(!e||t>=e.length)return i.target=void 0,es(void 0,!0);switch(i.kind){case"keys":return es(t,!1);case"values":return es(e[t],!1)}return es([t,e[t]],!1)},"values");var Yp=Wp.Arguments=Wp.Array;fo("keys");fo("values");fo("entries");if(!Ox&&_x&&Yp.name!=="values")try{Vx(Yp,"name",{value:"values"})}catch{}});var Zp=m((PD,Xp)=>{"use strict";var qx=ae(),Ux=Ht(),Hx=qx("iterator"),jx=Array.prototype;Xp.exports=function(i){return i!==void 0&&(Ux.Array===i||jx[Hx]===i)}});var go=m((kD,th)=>{"use strict";var Gx=oi(),eh=ei(),Qx=hr(),Wx=Ht(),Yx=ae(),zx=Yx("iterator");th.exports=function(i){if(!Qx(i))return eh(i,zx)||eh(i,"@@iterator")||Wx[Gx(i)]}});var ih=m((AD,rh)=>{"use strict";var Kx=Ee(),Jx=Ye(),Xx=ze(),Zx=Zr(),eP=go(),tP=TypeError;rh.exports=function(i,e){var t=arguments.length<2?eP(i):e;if(Jx(t))return Xx(Kx(t,i));throw new tP(Zx(i)+" is not iterable")}});var nh=m((wD,sh)=>{"use strict";var rP=Ee(),ah=ze(),iP=ei();sh.exports=function(i,e,t){var r,a;ah(i);try{if(r=iP(i,"return"),!r){if(e==="throw")throw t;return t}r=rP(r,i)}catch(s){a=!0,r=s}if(e==="throw")throw t;if(a)throw r;return ah(r),t}});var rs=m((RD,ch)=>{"use strict";var aP=gr(),sP=Ee(),nP=ze(),oP=Zr(),uP=Zp(),lP=Tr(),oh=Xr(),cP=ih(),dP=go(),uh=nh(),pP=TypeError,ts=function(i,e){this.stopped=i,this.result=e},lh=ts.prototype;ch.exports=function(i,e,t){var r=t&&t.that,a=!!(t&&t.AS_ENTRIES),s=!!(t&&t.IS_RECORD),n=!!(t&&t.IS_ITERATOR),o=!!(t&&t.INTERRUPTED),u=aP(e,r),l,c,d,p,h,f,b,g=function(k){return l&&uh(l,"normal",k),new ts(!0,k)},S=function(k){return a?(nP(k),o?u(k[0],k[1],g):u(k[0],k[1])):o?u(k,g):u(k)};if(s)l=i.iterator;else if(n)l=i;else{if(c=dP(i),!c)throw new pP(oP(i)+" is not iterable");if(uP(c)){for(d=0,p=lP(i);p>d;d++)if(h=S(i[d]),h&&oh(lh,h))return h;return new ts(!1)}l=cP(i,c)}for(f=s?i.next:l.next;!(b=sP(f,l)).done;){try{h=S(b.value)}catch(k){uh(l,"throw",k)}if(typeof h=="object"&&h&&oh(lh,h))return h}return new ts(!1)}});var ph=m(($D,dh)=>{"use strict";var hP=Ie(),mP=Ut(),fP=Jr();dh.exports=function(i,e,t){hP?mP.f(i,e,fP(0,t)):i[e]=t}});var hh=m(()=>{"use strict";var bP=z(),gP=rs(),SP=ph();bP({target:"Object",stat:!0},{fromEntries:function(e){var t={};return gP(e,function(r,a){SP(t,r,a)},{AS_ENTRIES:!0}),t}})});var fh=m((CD,mh)=>{"use strict";bo();hh();var vP=mr();mh.exports=vP.Object.fromEntries});var gh=m((DD,bh)=>{"use strict";bh.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var vh=m(()=>{"use strict";bo();var yP=gh(),TP=Q(),IP=ui(),Sh=Ht();for(is in yP)IP(TP[is],is),Sh[is]=Sh.Array;var is});var Th=m((OD,yh)=>{"use strict";var EP=fh();vh();yh.exports=EP});var So=m((_D,Ih)=>{"use strict";var xP=Th();Ih.exports=xP});var Eh=m(()=>{"use strict"});var vo=m((qD,xh)=>{"use strict";var di=Q(),PP=qt(),kP=Nt(),as=function(i){return PP.slice(0,i.length)===i};xh.exports=function(){return as("Bun/")?"BUN":as("Cloudflare-Workers")?"CLOUDFLARE":as("Deno/")?"DENO":as("Node.js/")?"NODE":di.Bun&&typeof Bun.version=="string"?"BUN":di.Deno&&typeof Deno.version=="object"?"DENO":kP(di.process)==="process"?"NODE":di.window&&di.document?"BROWSER":"REST"}()});var ss=m((UD,Ph)=>{"use strict";var AP=vo();Ph.exports=AP==="NODE"});var Ah=m((HD,kh)=>{"use strict";var wP=Ut();kh.exports=function(i,e,t){return wP.f(i,e,t)}});var $h=m((jD,Rh)=>{"use strict";var RP=at(),$P=Ah(),LP=ae(),MP=Ie(),wh=LP("species");Rh.exports=function(i){var e=RP(i);MP&&e&&!e[wh]&&$P(e,wh,{configurable:!0,get:function(){return this}})}});var Mh=m((GD,Lh)=>{"use strict";var CP=Xr(),DP=TypeError;Lh.exports=function(i,e){if(CP(e,i))return i;throw new DP("Incorrect invocation")}});var To=m((QD,Ch)=>{"use strict";var VP=J(),BP=G(),yo=ti(),OP=VP(Function.toString);BP(yo.inspectSource)||(yo.inspectSource=function(i){return OP(i)});Ch.exports=yo.inspectSource});var Eo=m((WD,_h)=>{"use strict";var _P=J(),NP=ie(),Dh=G(),FP=oi(),qP=at(),UP=To(),Vh=function(){},Bh=qP("Reflect","construct"),Io=/^\s*(?:class|function)\b/,HP=_P(Io.exec),jP=!Io.test(Vh),pi=function(e){if(!Dh(e))return!1;try{return Bh(Vh,[],e),!0}catch{return!1}},Oh=function(e){if(!Dh(e))return!1;switch(FP(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return jP||!!HP(Io,UP(e))}catch{return!0}};Oh.sham=!0;_h.exports=!Bh||NP(function(){var i;return pi(pi.call)||!pi(Object)||!pi(function(){i=!0})||i})?Oh:pi});var Fh=m((YD,Nh)=>{"use strict";var GP=Eo(),QP=Zr(),WP=TypeError;Nh.exports=function(i){if(GP(i))return i;throw new WP(QP(i)+" is not a constructor")}});var xo=m((zD,Uh)=>{"use strict";var qh=ze(),YP=Fh(),zP=hr(),KP=ae(),JP=KP("species");Uh.exports=function(i,e){var t=qh(i).constructor,r;return t===void 0||zP(r=qh(t)[JP])?e:YP(r)}});var jh=m((KD,Hh)=>{"use strict";var XP=J();Hh.exports=XP([].slice)});var Qh=m((JD,Gh)=>{"use strict";var ZP=TypeError;Gh.exports=function(i,e){if(i<e)throw new ZP("Not enough arguments");return i}});var Po=m((XD,Wh)=>{"use strict";var ek=qt();Wh.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(ek)});var Do=m((ZD,rm)=>{"use strict";var Pe=Q(),tk=hn(),rk=gr(),Yh=G(),ik=Fe(),tm=ie(),zh=io(),ak=jh(),Kh=Na(),sk=Qh(),nk=Po(),ok=ss(),Lo=Pe.setImmediate,Mo=Pe.clearImmediate,uk=Pe.process,ko=Pe.Dispatch,lk=Pe.Function,Jh=Pe.MessageChannel,ck=Pe.String,Ao=0,hi={},Xh="onreadystatechange",mi,Gt,wo,Ro;tm(function(){mi=Pe.location});var Co=function(i){if(ik(hi,i)){var e=hi[i];delete hi[i],e()}},$o=function(i){return function(){Co(i)}},Zh=function(i){Co(i.data)},em=function(i){Pe.postMessage(ck(i),mi.protocol+"//"+mi.host)};(!Lo||!Mo)&&(Lo=function(e){sk(arguments.length,1);var t=Yh(e)?e:lk(e),r=ak(arguments,1);return hi[++Ao]=function(){tk(t,void 0,r)},Gt(Ao),Ao},Mo=function(e){delete hi[e]},ok?Gt=function(i){uk.nextTick($o(i))}:ko&&ko.now?Gt=function(i){ko.now($o(i))}:Jh&&!nk?(wo=new Jh,Ro=wo.port2,wo.port1.onmessage=Zh,Gt=rk(Ro.postMessage,Ro)):Pe.addEventListener&&Yh(Pe.postMessage)&&!Pe.importScripts&&mi&&mi.protocol!=="file:"&&!tm(em)?(Gt=em,Pe.addEventListener("message",Zh,!1)):Xh in Kh("script")?Gt=function(i){zh.appendChild(Kh("script"))[Xh]=function(){zh.removeChild(this),Co(i)}}:Gt=function(i){setTimeout($o(i),0)});rm.exports={set:Lo,clear:Mo}});var sm=m((eV,am)=>{"use strict";var im=Q(),dk=Ie(),pk=Object.getOwnPropertyDescriptor;am.exports=function(i){if(!dk)return im[i];var e=pk(im,i);return e&&e.value}});var Vo=m((tV,om)=>{"use strict";var nm=function(){this.head=null,this.tail=null};nm.prototype={add:function(i){var e={item:i,next:null},t=this.tail;t?t.next=e:this.head=e,this.tail=e},get:function(){var i=this.head;if(i){var e=this.head=i.next;return e===null&&(this.tail=null),i.item}}};om.exports=nm});var lm=m((rV,um)=>{"use strict";var hk=qt();um.exports=/ipad|iphone|ipod/i.test(hk)&&typeof Pebble<"u"});var dm=m((iV,cm)=>{"use strict";var mk=qt();cm.exports=/web0s(?!.*chrome)/i.test(mk)});var Sm=m((aV,gm)=>{"use strict";var Pr=Q(),fk=sm(),pm=gr(),Bo=Do().set,bk=Vo(),gk=Po(),Sk=lm(),vk=dm(),Oo=ss(),hm=Pr.MutationObserver||Pr.WebKitMutationObserver,mm=Pr.document,fm=Pr.process,ns=Pr.Promise,Fo=fk("queueMicrotask"),xr,_o,No,os,bm;Fo||(fi=new bk,bi=function(){var i,e;for(Oo&&(i=fm.domain)&&i.exit();e=fi.get();)try{e()}catch(t){throw fi.head&&xr(),t}i&&i.enter()},!gk&&!Oo&&!vk&&hm&&mm?(_o=!0,No=mm.createTextNode(""),new hm(bi).observe(No,{characterData:!0}),xr=function(){No.data=_o=!_o}):!Sk&&ns&&ns.resolve?(os=ns.resolve(void 0),os.constructor=ns,bm=pm(os.then,os),xr=function(){bm(bi)}):Oo?xr=function(){fm.nextTick(bi)}:(Bo=pm(Bo,Pr),xr=function(){Bo(bi)}),Fo=function(i){fi.head||xr(),fi.add(i)});var fi,bi;gm.exports=Fo});var ym=m((sV,vm)=>{"use strict";vm.exports=function(i,e){try{arguments.length===1?console.error(i):console.error(i,e)}catch{}}});var us=m((nV,Tm)=>{"use strict";Tm.exports=function(i){try{return{error:!1,value:i()}}catch(e){return{error:!0,value:e}}}});var Qt=m((oV,Im)=>{"use strict";var yk=Q();Im.exports=yk.Promise});var kr=m((uV,km)=>{"use strict";var Tk=Q(),gi=Qt(),Ik=G(),Ek=Vn(),xk=To(),Pk=ae(),Em=vo(),kk=Ne(),qo=In(),xm=gi&&gi.prototype,Ak=Pk("species"),Uo=!1,Pm=Ik(Tk.PromiseRejectionEvent),wk=Ek("Promise",function(){var i=xk(gi),e=i!==String(gi);if(!e&&qo===66||kk&&!(xm.catch&&xm.finally))return!0;if(!qo||qo<51||!/native code/.test(i)){var t=new gi(function(s){s(1)}),r=function(s){s(function(){},function(){})},a=t.constructor={};if(a[Ak]=r,Uo=t.then(function(){})instanceof r,!Uo)return!0}return!e&&(Em==="BROWSER"||Em==="DENO")&&!Pm});km.exports={CONSTRUCTOR:wk,REJECTION_EVENT:Pm,SUBCLASSING:Uo}});var Ar=m((lV,wm)=>{"use strict";var Am=Ye(),Rk=TypeError,$k=function(i){var e,t;this.promise=new i(function(r,a){if(e!==void 0||t!==void 0)throw new Rk("Bad Promise constructor");e=r,t=a}),this.resolve=Am(e),this.reject=Am(t)};wm.exports.f=function(i){return new $k(i)}});var Wm=m(()=>{"use strict";var Lk=z(),Mk=Ne(),ps=ss(),yt=Q(),Lr=Ee(),Rm=Er(),$m=ho(),Ck=ui(),Dk=$h(),Vk=Ye(),ds=G(),Bk=xe(),Ok=Mh(),_k=xo(),Vm=Do().set,Wo=Sm(),Nk=ym(),Fk=us(),qk=Vo(),Bm=Zn(),hs=Qt(),Yo=kr(),Om=Ar(),ms="Promise",_m=Yo.CONSTRUCTOR,Uk=Yo.REJECTION_EVENT,Hk=Yo.SUBCLASSING,Ho=Bm.getterFor(ms),jk=Bm.set,wr=hs&&hs.prototype,Wt=hs,ls=wr,Nm=yt.TypeError,jo=yt.document,zo=yt.process,Go=Om.f,Gk=Go,Qk=!!(jo&&jo.createEvent&&yt.dispatchEvent),Fm="unhandledrejection",Wk="rejectionhandled",Lm=0,qm=1,Yk=2,Ko=1,Um=2,cs,Mm,zk,Cm,Hm=function(i){var e;return Bk(i)&&ds(e=i.then)?e:!1},jm=function(i,e){var t=e.value,r=e.state===qm,a=r?i.ok:i.fail,s=i.resolve,n=i.reject,o=i.domain,u,l,c;try{a?(r||(e.rejection===Um&&Jk(e),e.rejection=Ko),a===!0?u=t:(o&&o.enter(),u=a(t),o&&(o.exit(),c=!0)),u===i.promise?n(new Nm("Promise-chain cycle")):(l=Hm(u))?Lr(l,u,s,n):s(u)):n(t)}catch(d){o&&!c&&o.exit(),n(d)}},Gm=function(i,e){i.notified||(i.notified=!0,Wo(function(){for(var t=i.reactions,r;r=t.get();)jm(r,i);i.notified=!1,e&&!i.rejection&&Kk(i)}))},Qm=function(i,e,t){var r,a;Qk?(r=jo.createEvent("Event"),r.promise=e,r.reason=t,r.initEvent(i,!1,!0),yt.dispatchEvent(r)):r={promise:e,reason:t},!Uk&&(a=yt["on"+i])?a(r):i===Fm&&Nk("Unhandled promise rejection",t)},Kk=function(i){Lr(Vm,yt,function(){var e=i.facade,t=i.value,r=Dm(i),a;if(r&&(a=Fk(function(){ps?zo.emit("unhandledRejection",t,e):Qm(Fm,e,t)}),i.rejection=ps||Dm(i)?Um:Ko,a.error))throw a.value})},Dm=function(i){return i.rejection!==Ko&&!i.parent},Jk=function(i){Lr(Vm,yt,function(){var e=i.facade;ps?zo.emit("rejectionHandled",e):Qm(Wk,e,i.value)})},Rr=function(i,e,t){return function(r){i(e,r,t)}},$r=function(i,e,t){i.done||(i.done=!0,t&&(i=t),i.value=e,i.state=Yk,Gm(i,!0))},Qo=function(i,e,t){if(!i.done){i.done=!0,t&&(i=t);try{if(i.facade===e)throw new Nm("Promise can't be resolved itself");var r=Hm(e);r?Wo(function(){var a={done:!1};try{Lr(r,e,Rr(Qo,a,i),Rr($r,a,i))}catch(s){$r(a,s,i)}}):(i.value=e,i.state=qm,Gm(i,!1))}catch(a){$r({done:!1},a,i)}}};if(_m&&(Wt=function(e){Ok(this,ls),Vk(e),Lr(cs,this);var t=Ho(this);try{e(Rr(Qo,t),Rr($r,t))}catch(r){$r(t,r)}},ls=Wt.prototype,cs=function(e){jk(this,{type:ms,done:!1,notified:!1,parent:!1,reactions:new qk,rejection:!1,state:Lm,value:void 0})},cs.prototype=Rm(ls,"then",function(e,t){var r=Ho(this),a=Go(_k(this,Wt));return r.parent=!0,a.ok=ds(e)?e:!0,a.fail=ds(t)&&t,a.domain=ps?zo.domain:void 0,r.state===Lm?r.reactions.add(a):Wo(function(){jm(a,r)}),a.promise}),Mm=function(){var i=new cs,e=Ho(i);this.promise=i,this.resolve=Rr(Qo,e),this.reject=Rr($r,e)},Om.f=Go=function(i){return i===Wt||i===zk?new Mm(i):Gk(i)},!Mk&&ds(hs)&&wr!==Object.prototype)){Cm=wr.then,Hk||Rm(wr,"then",function(e,t){var r=this;return new Wt(function(a,s){Lr(Cm,r,a,s)}).then(e,t)},{unsafe:!0});try{delete wr.constructor}catch{}$m&&$m(wr,ls)}Lk({global:!0,constructor:!0,wrap:!0,forced:_m},{Promise:Wt});Ck(Wt,ms,!1,!0);Dk(ms)});var Xm=m((pV,Jm)=>{"use strict";var Xk=ae(),zm=Xk("iterator"),Km=!1;try{Ym=0,Jo={next:function(){return{done:!!Ym++}},return:function(){Km=!0}},Jo[zm]=function(){return this},Array.from(Jo,function(){throw 2})}catch{}var Ym,Jo;Jm.exports=function(i,e){try{if(!e&&!Km)return!1}catch{return!1}var t=!1;try{var r={};r[zm]=function(){return{next:function(){return{done:t=!0}}}},i(r)}catch{}return t}});var Xo=m((hV,Zm)=>{"use strict";var Zk=Qt(),eA=Xm(),tA=kr().CONSTRUCTOR;Zm.exports=tA||!eA(function(i){Zk.all(i).then(void 0,function(){})})});var ef=m(()=>{"use strict";var rA=z(),iA=Ee(),aA=Ye(),sA=Ar(),nA=us(),oA=rs(),uA=Xo();rA({target:"Promise",stat:!0,forced:uA},{all:function(e){var t=this,r=sA.f(t),a=r.resolve,s=r.reject,n=nA(function(){var o=aA(t.resolve),u=[],l=0,c=1;oA(e,function(d){var p=l++,h=!1;c++,iA(o,t,d).then(function(f){h||(h=!0,u[p]=f,--c||a(u))},s)}),--c||a(u)});return n.error&&s(n.value),r.promise}})});var rf=m(()=>{"use strict";var lA=z(),cA=Ne(),dA=kr().CONSTRUCTOR,eu=Qt(),pA=at(),hA=G(),mA=Er(),tf=eu&&eu.prototype;lA({target:"Promise",proto:!0,forced:dA,real:!0},{catch:function(i){return this.then(void 0,i)}});!cA&&hA(eu)&&(Zo=pA("Promise").prototype.catch,tf.catch!==Zo&&mA(tf,"catch",Zo,{unsafe:!0}));var Zo});var af=m(()=>{"use strict";var fA=z(),bA=Ee(),gA=Ye(),SA=Ar(),vA=us(),yA=rs(),TA=Xo();fA({target:"Promise",stat:!0,forced:TA},{race:function(e){var t=this,r=SA.f(t),a=r.reject,s=vA(function(){var n=gA(t.resolve);yA(e,function(o){bA(n,t,o).then(r.resolve,a)})});return s.error&&a(s.value),r.promise}})});var sf=m(()=>{"use strict";var IA=z(),EA=Ar(),xA=kr().CONSTRUCTOR;IA({target:"Promise",stat:!0,forced:xA},{reject:function(e){var t=EA.f(this),r=t.reject;return r(e),t.promise}})});var tu=m((IV,nf)=>{"use strict";var PA=ze(),kA=xe(),AA=Ar();nf.exports=function(i,e){if(PA(i),kA(e)&&e.constructor===i)return e;var t=AA.f(i),r=t.resolve;return r(e),t.promise}});var lf=m(()=>{"use strict";var wA=z(),RA=at(),of=Ne(),$A=Qt(),uf=kr().CONSTRUCTOR,LA=tu(),MA=RA("Promise"),CA=of&&!uf;wA({target:"Promise",stat:!0,forced:of||uf},{resolve:function(e){return LA(CA&&this===MA?$A:this,e)}})});var cf=m(()=>{"use strict";Wm();ef();rf();af();sf();lf()});var mf=m(()=>{"use strict";var DA=z(),VA=Ne(),fs=Qt(),BA=ie(),pf=at(),hf=G(),OA=xo(),df=tu(),_A=Er(),iu=fs&&fs.prototype,NA=!!fs&&BA(function(){iu.finally.call({then:function(){}},function(){})});DA({target:"Promise",proto:!0,real:!0,forced:NA},{finally:function(i){var e=OA(this,pf("Promise")),t=hf(i);return this.then(t?function(r){return df(e,i()).then(function(){return r})}:i,t?function(r){return df(e,i()).then(function(){throw r})}:i)}});!VA&&hf(fs)&&(ru=pf("Promise").prototype.finally,iu.finally!==ru&&_A(iu,"finally",ru,{unsafe:!0}));var ru});var bf=m((RV,ff)=>{"use strict";Eh();cf();mf();var FA=vt();ff.exports=FA("Promise","finally")});var Sf=m(($V,gf)=>{"use strict";var qA=bf();gf.exports=qA});var bs=m((LV,vf)=>{"use strict";var UA=Sf();vf.exports=UA});var Mf=m(()=>{"use strict";var rw=z(),iw=zn().values;rw({target:"Object",stat:!0},{values:function(e){return iw(e)}})});var Df=m((fB,Cf)=>{"use strict";Mf();var aw=mr();Cf.exports=aw.Object.values});var Bf=m((bB,Vf)=>{"use strict";var sw=Df();Vf.exports=sw});var vi=m((gB,Of)=>{"use strict";var nw=Bf();Of.exports=nw});var Kf=m(()=>{"use strict";var Iw=z(),Ew=fr(),xw=Tr(),Pw=ai(),kw=si();Iw({target:"Array",proto:!0},{at:function(e){var t=Ew(this),r=xw(t),a=Pw(e),s=a>=0?a:r+a;return s<0||s>=r?void 0:t[s]}});kw("at")});var Xf=m((GB,Jf)=>{"use strict";Kf();var Aw=vt();Jf.exports=Aw("Array","at")});var eb=m((QB,Zf)=>{"use strict";var ww=Xf();Zf.exports=ww});var Dr=m((WB,tb)=>{"use strict";var Rw=eb();tb.exports=Rw});var ku=m((v_,Lb)=>{"use strict";var cR=Nt();Lb.exports=Array.isArray||function(e){return cR(e)==="Array"}});var Cb=m((y_,Mb)=>{"use strict";var dR=TypeError,pR=9007199254740991;Mb.exports=function(i){if(i>pR)throw dR("Maximum allowed index exceeded");return i}});var Bb=m((T_,Vb)=>{"use strict";var hR=ku(),mR=Tr(),fR=Cb(),bR=gr(),Db=function(i,e,t,r,a,s,n,o){for(var u=a,l=0,c=n?bR(n,o):!1,d,p;l<r;)l in t&&(d=c?c(t[l],l,e):t[l],s>0&&hR(d)?(p=mR(d),u=Db(i,e,d,p,u,s-1)-1):(fR(u+1),i[u]=d),u++),l++;return u};Vb.exports=Db});var Fb=m((I_,Nb)=>{"use strict";var Ob=ku(),gR=Eo(),SR=xe(),vR=ae(),yR=vR("species"),_b=Array;Nb.exports=function(i){var e;return Ob(i)&&(e=i.constructor,gR(e)&&(e===_b||Ob(e.prototype))?e=void 0:SR(e)&&(e=e[yR],e===null&&(e=void 0))),e===void 0?_b:e}});var Ub=m((E_,qb)=>{"use strict";var TR=Fb();qb.exports=function(i,e){return new(TR(i))(e===0?0:e)}});var Hb=m(()=>{"use strict";var IR=z(),ER=Bb(),xR=Ye(),PR=fr(),kR=Tr(),AR=Ub();IR({target:"Array",proto:!0},{flatMap:function(e){var t=PR(this),r=kR(t),a;return xR(e),a=AR(t,0),a.length=ER(a,t,t,r,0,1,e,arguments.length>1?arguments[1]:void 0),a}})});var jb=m(()=>{"use strict";var wR=si();wR("flatMap")});var Qb=m((w_,Gb)=>{"use strict";Hb();jb();var RR=vt();Gb.exports=RR("Array","flatMap")});var Yb=m((R_,Wb)=>{"use strict";var $R=Qb();Wb.exports=$R});var Au=m(($_,zb)=>{"use strict";var LR=Yb();zb.exports=LR});var Ci=m((F_,sg)=>{"use strict";var NR=oi(),FR=String;sg.exports=function(i){if(NR(i)==="Symbol")throw new TypeError("Cannot convert a Symbol value to a string");return FR(i)}});var Ru=m((q_,ng)=>{"use strict";ng.exports=`
7
- \v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var lg=m((U_,ug)=>{"use strict";var qR=J(),UR=St(),HR=Ci(),Lu=Ru(),og=qR("".replace),jR=RegExp("^["+Lu+"]+"),GR=RegExp("(^|[^"+Lu+"])["+Lu+"]+$"),$u=function(i){return function(e){var t=HR(UR(e));return i&1&&(t=og(t,jR,"")),i&2&&(t=og(t,GR,"$1")),t}};ug.exports={start:$u(1),end:$u(2),trim:$u(3)}});var hg=m((H_,pg)=>{"use strict";var QR=ro().PROPER,WR=ie(),cg=Ru(),dg="\u200B\x85\u180E";pg.exports=function(i){return WR(function(){return!!cg[i]()||dg[i]()!==dg||QR&&cg[i].name!==i})}});var Mu=m((j_,mg)=>{"use strict";var YR=lg().start,zR=hg();mg.exports=zR("trimStart")?function(){return YR(this)}:"".trimStart});var bg=m(()=>{"use strict";var KR=z(),fg=Mu();KR({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==fg},{trimLeft:fg})});var Sg=m(()=>{"use strict";bg();var JR=z(),gg=Mu();JR({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==gg},{trimStart:gg})});var yg=m((z_,vg)=>{"use strict";Sg();var XR=vt();vg.exports=XR("String","trimLeft")});var Ig=m((K_,Tg)=>{"use strict";var ZR=yg();Tg.exports=ZR});var xg=m((J_,Eg)=>{"use strict";var e$=Ig();Eg.exports=e$});var Fg=m(()=>{"use strict"});var qg=m(()=>{"use strict"});var Hg=m((Tq,Ug)=>{"use strict";var E$=xe(),x$=Nt(),P$=ae(),k$=P$("match");Ug.exports=function(i){var e;return E$(i)&&((e=i[k$])!==void 0?!!e:x$(i)==="RegExp")}});var Gg=m((Iq,jg)=>{"use strict";var A$=ze();jg.exports=function(){var i=A$(this),e="";return i.hasIndices&&(e+="d"),i.global&&(e+="g"),i.ignoreCase&&(e+="i"),i.multiline&&(e+="m"),i.dotAll&&(e+="s"),i.unicode&&(e+="u"),i.unicodeSets&&(e+="v"),i.sticky&&(e+="y"),e}});var Yg=m((Eq,Wg)=>{"use strict";var w$=Ee(),R$=Fe(),$$=Xr(),L$=Gg(),Qg=RegExp.prototype;Wg.exports=function(i){var e=i.flags;return e===void 0&&!("flags"in Qg)&&!R$(i,"flags")&&$$(Qg,i)?w$(L$,i):e}});var Kg=m((xq,zg)=>{"use strict";var qu=J(),M$=fr(),C$=Math.floor,Nu=qu("".charAt),D$=qu("".replace),Fu=qu("".slice),V$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,B$=/\$([$&'`]|\d{1,2})/g;zg.exports=function(i,e,t,r,a,s){var n=t+i.length,o=r.length,u=B$;return a!==void 0&&(a=M$(a),u=V$),D$(s,u,function(l,c){var d;switch(Nu(c,0)){case"$":return"$";case"&":return i;case"`":return Fu(e,0,t);case"'":return Fu(e,n);case"<":d=a[Fu(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=C$(p/10);return h===0?l:h<=o?r[h-1]===void 0?Nu(c,1):r[h-1]+Nu(c,1):l}d=r[p-1]}return d===void 0?"":d})}});var Zg=m(()=>{"use strict";var O$=z(),_$=Ee(),Hu=J(),Jg=St(),N$=G(),F$=hr(),q$=Hg(),Fr=Ci(),U$=ei(),H$=Yg(),j$=Kg(),G$=ae(),Q$=Ne(),W$=G$("replace"),Y$=TypeError,Uu=Hu("".indexOf),z$=Hu("".replace),Xg=Hu("".slice),K$=Math.max;O$({target:"String",proto:!0},{replaceAll:function(e,t){var r=Jg(this),a,s,n,o,u,l,c,d,p,h,f=0,b="";if(!F$(e)){if(a=q$(e),a&&(s=Fr(Jg(H$(e))),!~Uu(s,"g")))throw new Y$("`.replaceAll` does not allow non-global regexes");if(n=U$(e,W$),n)return _$(n,e,r,t);if(Q$&&a)return z$(Fr(r),e,t)}for(o=Fr(r),u=Fr(e),l=N$(t),l||(t=Fr(t)),c=u.length,d=K$(1,c),p=Uu(o,u);p!==-1;)h=l?Fr(t(u,p,o)):j$(u,o,p,[],void 0,t),b+=Xg(o,f,p)+h,f=p+c,p=p+d>o.length?-1:Uu(o,u,p+d);return f<o.length&&(b+=Xg(o,f)),b}})});var tS=m((Aq,eS)=>{"use strict";Fg();qg();Zg();var J$=vt();eS.exports=J$("String","replaceAll")});var iS=m((wq,rS)=>{"use strict";var X$=tS();rS.exports=X$});var sS=m((Rq,aS)=>{"use strict";var Z$=iS();aS.exports=Z$});var oS=m(($q,nS)=>{"use strict";var eL=ai(),tL=Ci(),rL=St(),iL=RangeError;nS.exports=function(e){var t=tL(rL(this)),r="",a=eL(e);if(a<0||a===1/0)throw new iL("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(r+=t);return r}});var pS=m((Lq,dS)=>{"use strict";var cS=J(),aL=qn(),uS=Ci(),sL=oS(),nL=St(),oL=cS(sL),uL=cS("".slice),lL=Math.ceil,lS=function(i){return function(e,t,r){var a=uS(nL(e)),s=aL(t),n=a.length,o=r===void 0?" ":uS(r),u,l;return s<=n||o===""?a:(u=s-n,l=oL(o,lL(u/o.length)),l.length>u&&(l=uL(l,0,u)),i?a+l:l+a)}};dS.exports={start:lS(!1),end:lS(!0)}});var mS=m((Mq,hS)=>{"use strict";var cL=qt();hS.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(cL)});var fS=m(()=>{"use strict";var dL=z(),pL=pS().start,hL=mS();dL({target:"String",proto:!0,forced:hL},{padStart:function(e){return pL(this,e,arguments.length>1?arguments[1]:void 0)}})});var gS=m((Vq,bS)=>{"use strict";fS();var mL=vt();bS.exports=mL("String","padStart")});var vS=m((Bq,SS)=>{"use strict";var fL=gS();SS.exports=fL});var TS=m((Oq,yS)=>{"use strict";var bL=vS();yS.exports=bL});var Al="2.0.119-dev.381e55bc.0";var de=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(de||{}),gt=(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_LIVE="HLS_LIVE",E.HLS_LIVE_CMAF="HLS_LIVE_CMAF",E.WEB_RTC_LIVE="WEB_RTC_LIVE",E))(gt||{});var Ba=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ba||{}),cn=(r=>(r.HTTP1="http1",r.HTTP2="http2",r.QUIC="quic",r))(cn||{});var dn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(dn||{});var Jv=C(Ke(),1);import{assertNever as Pd,assertNonNullable as RI,isNonNullable as qa,ValueSubject as Hn,Subject as $I,Subscription as LI,merge as MI,observableFrom as CI,fromEvent as Td,map as Id,tap as Ed,filterChanged as DI,isNullable as jn,ErrorCategory as xd}from"@vkontakte/videoplayer-shared";var yd=i=>new Promise((e,t)=>{let r=document.createElement("script");r.setAttribute("src",i),r.onload=()=>e,r.onerror=()=>t,document.body.appendChild(r)});var Ua=class{constructor(e){this.connection$=new Hn(void 0);this.castState$=new Hn("NOT_AVAILABLE");this.errorEvent$=new $I;this.realCastState$=new Hn("NOT_AVAILABLE");this.subscription=new LI;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 r=qa(window.chrome?.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||yd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:xd.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){qa(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();jn(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();jn(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),r=cast.framework.CastContext.getInstance();this.subscription.add(Td(r,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=r.getCurrentSession()?.getMediaSession()?.media?.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 Pd(a.sessionState)}})).add(MI(Td(r,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ed(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Id(a=>a.castState)),CI([r.getCastState()])).pipe(DI(),Id(VI),Ed(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=qa(this.connection$.getValue());if(s&&!n){let o=r.getCurrentSession();RI(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(jn(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?qa(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,r;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:xd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},VI=i=>{switch(i){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 Pd(i)}};var Sl=C(Ke(),1),Lv=C(Ir(),1),Mv=C(So(),1);var Rf=C(bs(),1);import{assertNever as yf}from"@vkontakte/videoplayer-shared";var se=(i,e=0,t=0)=>{switch(t){case 0:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return i;let r=new URL(i);return r.searchParams.append("playback_shift",e.toFixed(0)),r.toString()}case 2:{let r=new URL(i);return!r.searchParams.get("offset_p")&&e===0?i:(r.searchParams.set("offset_p",e.toFixed(0)),r.toString())}default:yf(t)}return i},gs=(i,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(i);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(i);return Number(t.searchParams.get("offset_p")??0)}default:yf(e)}};var I=(i,e,t=!1)=>{let r=i.getTransition();(t||!r||r.to===e)&&i.setState(e)};import{isNonNullable as HA,Subject as Ss,merge as Tf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new Ss;this.transitionEnded$=new Ss;this.transitionUpdated$=new Ss;this.forceChanged$=new Ss;this.stateChangeStarted$=Tf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Tf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,r=this.state;this.transition=void 0,this.prevState=r,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:r,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,r=this.state;r===e||HA(t)&&t.to===e||(this.prevState=r,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:r,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as jA}from"@vkontakte/videoplayer-shared";var If=i=>{switch(i){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 jA(i)}};import{assertNever as Mr,assertNonNullable as Yt,debounce as Ef,ErrorCategory as xf,fromEvent as zt,isNonNullable as Pf,map as kf,merge as Af,observableFrom as GA,Subject as QA,Subscription as au,timeout as WA,getHighestQuality as YA}from"@vkontakte/videoplayer-shared";var zA=5,KA=5,JA=500,wf=7e3,Si=class{constructor(e){this.subscription=new au;this.loadMediaTimeoutSubscription=new au;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),r=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${r}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),r==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(r){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mr(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:Mr(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:Mr(e)}break}default:Mr(r)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(If(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 au;this.subscription.add(e),this.subscription.add(Af(this.videoState.stateChangeStarted$.pipe(kf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(kf(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new QA;e.add(a.pipe(Ef(JA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>zA)&&a.next(o),s=o})),e.add(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<KA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(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:Mr(n)}}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let r=Af(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,GA(["init"])).pipe(Ef(0));t(r,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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let r=this.params.output.isLive$.getValue();this.params.output.duration$.next(r?0:t.duration),this.params.output.position$.next(r?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),r=this.createLoadRequest(t);this.loadMedia(r)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),r={volume:e.volume??t.volume,muted:e.muted??t.muted};(r.volume!==t.volume||r.muted!==r.muted)&&this.params.output.volume$.next(r)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:r}=this.params.connection;t.currentTime=e,r.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,r,a,s;switch(e){case"MPEG":{let l=t[e];Yt(l);let c=YA(Object.keys(l));Yt(c);let d=l[c];Yt(d),r=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Yt(l),r=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Yt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Yt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Yt(l),r=se(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:xf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mr(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??r,a);n.contentUrl=r,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Pf(o)&&(n.metadata.title=o),Pf(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let r=this.params.desiredState.seekState.getState();return r.state==="applying"||r.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:r.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),r=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(WA(wf).subscribe(()=>s(`timeout(${wf})`)))});(0,Rf.default)(Promise.race([t,r]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:xf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var xu=C(Ke(),1);import{clearVideoElement as Lf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as XA}from"@vkontakte/videoplayer-shared";var $f=i=>{try{i.pause(),i.playbackRate=0,XA(i),i.remove()}catch(e){console.error(e)}};import{fromEvent as ZA,Subscription as ew}from"@vkontakte/videoplayer-shared";var su=class{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)}},nu=window.WeakMap?new WeakMap:new su,ou=window.WeakMap?new WeakMap:new Map,tw=(i,e=20)=>{let t=0;return ZA(i,"ratechange").subscribe(r=>{t++,t>=e&&(i.currentTime=i.currentTime,t=0)})},pe=(i,{audioVideoSyncRate:e})=>{let t=i.querySelector("video"),r=!!t;t?Lf(t):(t=document.createElement("video"),i.appendChild(t)),nu.set(t,r);let a=new ew;return a.add(tw(t,e)),ou.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},he=i=>{ou.get(i)?.unsubscribe(),ou.delete(i);let t=nu.get(i);nu.delete(i),t?Lf(i):$f(i)};var lu=C(vi(),1);import{assertNonNullable as yi,isNonNullable as Xe,isNullable as lw,fromEvent as Cr,merge as _f,observableFrom as Nf,filterChanged as Ff,map as Ti,Subject as qf,Subscription as cw,ValueSubject as dw,ErrorCategory as pw}from"@vkontakte/videoplayer-shared";import{isNonNullable as uu,isNullable as ow,Subscription as uw}from"@vkontakte/videoplayer-shared";var vs=(i,e,t,{equal:r=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=i.getState(),o=e(),u=ow(a),l=new uw;return a&&l.add(a.subscribe(c=>{let d=i.getState();r(c,d)&&i.setState(c)},s)),r(o,n)||(t(n),u&&i.setState(n)),l.add(i.stateChangeStarted$.subscribe(c=>{t(c.to),u&&i.setState(c.to)},s)),l},Je=(i,e,t)=>vs(e,()=>i.loop,r=>{uu(r)&&(i.loop=r)},{onError:t}),me=(i,e,t,r)=>vs(e,()=>({muted:i.muted,volume:i.volume}),a=>{uu(a)&&(i.muted=a.muted,i.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:r}),$e=(i,e,t,r)=>vs(e,()=>i.playbackRate,a=>{uu(a)&&(i.playbackRate=a)},{changed$:t,onError:r}),Tt=vs;var hw=i=>["__",i.language,i.label].join("|"),mw=(i,e)=>{if(i.id===e)return!0;let[t,r,a]=e.split("|");return i.language===r&&i.label===a},cu=class i{constructor(){this.available$=new qf;this.current$=new dw(void 0);this.error$=new qf;this.subscription=new cw;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,r){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:pw.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(r.availableTextTracks$)),this.subscription.add(this.current$.subscribe(r.currentTextTrack$)),this.subscription.add(this.error$.subscribe(r.error$)),this.subscription.add(Tt(t.internalTextTracks,()=>(0,lu.default)(this.internalTracks),s=>{Xe(s)&&this.setInternal(s)},{equal:(s,n)=>Xe(s)&&Xe(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ti(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(Tt(t.externalTextTracks,()=>(0,lu.default)(this.externalTracks),s=>{Xe(s)&&this.setExternal(s)},{equal:(s,n)=>Xe(s)&&Xe(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ti(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(Tt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(Tt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){yi(this.video);let{textTracks:e}=this.video;this.subscription.add(Cr(e,"addtrack").subscribe(()=>{let r=this.current$.getValue();r&&this.select(r)})),this.subscription.add(_f(Cr(e,"addtrack"),Cr(e,"removetrack"),Nf(["init"])).pipe(Ti(()=>this.htmlTextTracksAsArray().map(r=>this.htmlTextTrackToITextTrack(r))),Ff((r,a)=>r.length===a.length&&r.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(_f(Cr(e,"change"),Nf(["init"])).pipe(Ti(()=>this.htmlTextTracksAsArray().find(({mode:r})=>r==="showing")),Ti(r=>r&&this.htmlTextTrackToITextTrack(r).id),Ff()).subscribe(this.current$));let t=r=>this.applyCueSettings(r.target?.activeCues??null);this.subscription.add(Cr(e,"addtrack").subscribe(r=>{r.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};r.track?.addEventListener("cuechange",a)})),this.subscription.add(Cr(e,"removetrack").subscribe(r=>{r.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let r of Array.from(e)){let a=r;Xe(t.align)&&(a.align=t.align),Xe(t.position)&&(a.position=t.position),Xe(t.size)&&(a.size=t.size),Xe(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){yi(this.video);let t=[...this.video.textTracks];return e?t:t.filter(i.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:r}=e,a=e.id?e.id:hw(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:r,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:r,url:this.internalTracks.get(a)?.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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(r=>r.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:r,language:a,isAuto:s})=>!this.internalTracks.has(r)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(r=>this.attach(r)),Array.from(this.internalTracks).filter(([r])=>!e.find(a=>a.id===r)).forEach(([,r])=>this.detach(r))}select(e){yi(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(lw(e)||!mw(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){yi(this.video);let t=document.createElement("track");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){yi(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),r=>r.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)}},Le=cu;var ot=class{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 Uf=i=>{let e=i;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},du=i=>{let e=Uf(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},Hf=i=>{let e=Uf(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)};import{fromEvent as Me,map as It,merge as Gf,filterChanged as bw,isNonNullable as Qf,Subject as gw,filter as Wf,mapTo as Yf,combine as Sw,once as vw,ErrorCategory as yw,ValueSubject as zf,clientChecker as Tw}from"@vkontakte/videoplayer-shared";var fw=3,jf=(i,e,t=fw)=>{let r=0,a=0;for(let s=0;s<i.length;s++){let n=i.start(s),o=i.end(s);if(n<=e&&e<=o){if(r=n,a=o,!t)return{from:r,to:a};for(let u=s-1;u>=0;u--)i.end(u)+t>=r&&(r=i.start(u));for(let u=s+1;u<i.length;u++)i.start(u)-t<=a&&(a=i.end(u))}}return{from:r,to:a}};var fe=i=>{let e=E=>Me(i,E).pipe(Yf(void 0)),r=Gf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(E=>Me(i,E))).pipe(It(E=>E.type==="ended"?i.readyState<2:i.readyState<3),bw()),a=Gf(Me(i,"progress"),Me(i,"timeupdate")).pipe(It(()=>jf(i.buffered,i.currentTime))),s=Tw.isSafari?Sw({play:e("play").pipe(vw()),playing:e("playing")}).pipe(Yf(void 0)):e("playing"),n=Me(i,"volumechange").pipe(It(()=>({muted:i.muted,volume:i.volume}))),o=Me(i,"ratechange").pipe(It(()=>i.playbackRate)),u=Me(i,"error").pipe(Wf(()=>!!(i.error||i.played.length)),It(()=>{let E=i.error;return{id:E?`MediaError#${E.code}`:"HtmlVideoError",category:yw.VIDEO_PIPELINE,message:E?E.message:"Error event from HTML video element",thrown:i.error??void 0}})),l=Me(i,"timeupdate").pipe(It(()=>i.currentTime)),c=new gw,d=.3,p;l.subscribe(E=>{i.loop&&Qf(p)&&Qf(E)&&p>=i.duration-d&&E<=d&&c.next(p),p=E});let h=e("pause").pipe(Wf(()=>!i.error&&p!==i.duration)),f=Me(i,"enterpictureinpicture"),b=Me(i,"leavepictureinpicture"),g=new zf(Hf(i));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let S=new zf(du(i));return Me(i,"fullscreenchange").pipe(It(()=>du(i))).subscribe(S),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Me(i,"durationchange").pipe(It(()=>i.duration)),isBuffering$:r,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:S}};import{VideoQuality as Et}from"@vkontakte/videoplayer-shared";var xt=i=>{switch(i){case"mobile":return Et.Q_144P;case"lowest":return Et.Q_240P;case"low":return Et.Q_360P;case"sd":case"medium":return Et.Q_480P;case"hd":case"high":return Et.Q_720P;case"fullhd":case"full":return Et.Q_1080P;case"quadhd":case"quad":return Et.Q_1440P;case"ultrahd":case"ultra":return Et.Q_2160P}};var Pt=C(Dr(),1),ub=C(Ke(),1),ys=C(Ir(),1);import{isNonNullable as X,isNullable as hu,now as lb,isHigher as mu,isHigherOrEqual as fu,isInvariantQuality as sb,isLower as nb,isLowerOrEqual as bu,videoSizeToQuality as $w,assertNotEmptyArray as cb,assertNonNullable as Lw}from"@vkontakte/videoplayer-shared";var pu=!1,ut={},rb=i=>{pu=i},ib=()=>{ut={}},ab=i=>{i(ut)},Ii=(i,e)=>{pu&&(ut.meta=ut.meta??{},ut.meta[i]=e)},oe=class{constructor(e){this.name=e}next(e){if(!pu)return;ut.series=ut.series??{};let t=ut.series[this.name]??[];t.push([Date.now(),e]),ut.series[this.name]=t}};var Mw=new oe("best_bitrate"),db=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;var gu=i=>(e,t)=>i*(Number(e.bitrate)-Number(t.bitrate)),Ei=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=lb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},pb='Assertion "ABR Tracks is empty array" failed',Ts=(i,e,t,r)=>{let a=[...e].sort(gu(1)),s=[...t].sort(gu(1)),n=s.filter(u=>X(u.bitrate)&&X(i.bitrate)?i.bitrate/u.bitrate>r:!0),o=(0,Pt.default)(s,Math.round(s.length*a.indexOf(i)/(a.length+1)))??(0,Pt.default)(s,-1);return o&&(0,ub.default)(n,o)?o:n.length?(0,Pt.default)(n,-1):(0,Pt.default)(s,0)},ob=i=>"quality"in i,hb=(i,e,t,r)=>{let a=X(r?.last?.bitrate)&&X(t?.bitrate)&&r.last.bitrate<t.bitrate?i.trackCooldownIncreaseQuality:i.trackCooldownDecreaseQuality,s=t&&r&&r.history[t.id]&&lb()-r.history[t.id]<=a&&(!r.last||t.id!==r.last.id);if(t?.id&&r&&!s&&r.recordSelection(t),s&&r?.last){let n=r.last;r?.recordSwitch(n);let o=ob(n)?"video":"audio",u=ob(n)?n.quality:n.bitrate;return e({message:`
7
+ \v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var lg=m((U_,ug)=>{"use strict";var qR=J(),UR=St(),HR=Ci(),Lu=Ru(),og=qR("".replace),jR=RegExp("^["+Lu+"]+"),GR=RegExp("(^|[^"+Lu+"])["+Lu+"]+$"),$u=function(i){return function(e){var t=HR(UR(e));return i&1&&(t=og(t,jR,"")),i&2&&(t=og(t,GR,"$1")),t}};ug.exports={start:$u(1),end:$u(2),trim:$u(3)}});var hg=m((H_,pg)=>{"use strict";var QR=ro().PROPER,WR=ie(),cg=Ru(),dg="\u200B\x85\u180E";pg.exports=function(i){return WR(function(){return!!cg[i]()||dg[i]()!==dg||QR&&cg[i].name!==i})}});var Mu=m((j_,mg)=>{"use strict";var YR=lg().start,zR=hg();mg.exports=zR("trimStart")?function(){return YR(this)}:"".trimStart});var bg=m(()=>{"use strict";var KR=z(),fg=Mu();KR({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==fg},{trimLeft:fg})});var Sg=m(()=>{"use strict";bg();var JR=z(),gg=Mu();JR({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==gg},{trimStart:gg})});var yg=m((z_,vg)=>{"use strict";Sg();var XR=vt();vg.exports=XR("String","trimLeft")});var Ig=m((K_,Tg)=>{"use strict";var ZR=yg();Tg.exports=ZR});var xg=m((J_,Eg)=>{"use strict";var e$=Ig();Eg.exports=e$});var Fg=m(()=>{"use strict"});var qg=m(()=>{"use strict"});var Hg=m((Tq,Ug)=>{"use strict";var E$=xe(),x$=Nt(),P$=ae(),k$=P$("match");Ug.exports=function(i){var e;return E$(i)&&((e=i[k$])!==void 0?!!e:x$(i)==="RegExp")}});var Gg=m((Iq,jg)=>{"use strict";var A$=ze();jg.exports=function(){var i=A$(this),e="";return i.hasIndices&&(e+="d"),i.global&&(e+="g"),i.ignoreCase&&(e+="i"),i.multiline&&(e+="m"),i.dotAll&&(e+="s"),i.unicode&&(e+="u"),i.unicodeSets&&(e+="v"),i.sticky&&(e+="y"),e}});var Yg=m((Eq,Wg)=>{"use strict";var w$=Ee(),R$=Fe(),$$=Xr(),L$=Gg(),Qg=RegExp.prototype;Wg.exports=function(i){var e=i.flags;return e===void 0&&!("flags"in Qg)&&!R$(i,"flags")&&$$(Qg,i)?w$(L$,i):e}});var Kg=m((xq,zg)=>{"use strict";var qu=J(),M$=fr(),C$=Math.floor,Nu=qu("".charAt),D$=qu("".replace),Fu=qu("".slice),V$=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,B$=/\$([$&'`]|\d{1,2})/g;zg.exports=function(i,e,t,r,a,s){var n=t+i.length,o=r.length,u=B$;return a!==void 0&&(a=M$(a),u=V$),D$(s,u,function(l,c){var d;switch(Nu(c,0)){case"$":return"$";case"&":return i;case"`":return Fu(e,0,t);case"'":return Fu(e,n);case"<":d=a[Fu(c,1,-1)];break;default:var p=+c;if(p===0)return l;if(p>o){var h=C$(p/10);return h===0?l:h<=o?r[h-1]===void 0?Nu(c,1):r[h-1]+Nu(c,1):l}d=r[p-1]}return d===void 0?"":d})}});var Zg=m(()=>{"use strict";var O$=z(),_$=Ee(),Hu=J(),Jg=St(),N$=G(),F$=hr(),q$=Hg(),Fr=Ci(),U$=ei(),H$=Yg(),j$=Kg(),G$=ae(),Q$=Ne(),W$=G$("replace"),Y$=TypeError,Uu=Hu("".indexOf),z$=Hu("".replace),Xg=Hu("".slice),K$=Math.max;O$({target:"String",proto:!0},{replaceAll:function(e,t){var r=Jg(this),a,s,n,o,u,l,c,d,p,h,f=0,b="";if(!F$(e)){if(a=q$(e),a&&(s=Fr(Jg(H$(e))),!~Uu(s,"g")))throw new Y$("`.replaceAll` does not allow non-global regexes");if(n=U$(e,W$),n)return _$(n,e,r,t);if(Q$&&a)return z$(Fr(r),e,t)}for(o=Fr(r),u=Fr(e),l=N$(t),l||(t=Fr(t)),c=u.length,d=K$(1,c),p=Uu(o,u);p!==-1;)h=l?Fr(t(u,p,o)):j$(u,o,p,[],void 0,t),b+=Xg(o,f,p)+h,f=p+c,p=p+d>o.length?-1:Uu(o,u,p+d);return f<o.length&&(b+=Xg(o,f)),b}})});var tS=m((Aq,eS)=>{"use strict";Fg();qg();Zg();var J$=vt();eS.exports=J$("String","replaceAll")});var iS=m((wq,rS)=>{"use strict";var X$=tS();rS.exports=X$});var sS=m((Rq,aS)=>{"use strict";var Z$=iS();aS.exports=Z$});var oS=m(($q,nS)=>{"use strict";var eL=ai(),tL=Ci(),rL=St(),iL=RangeError;nS.exports=function(e){var t=tL(rL(this)),r="",a=eL(e);if(a<0||a===1/0)throw new iL("Wrong number of repetitions");for(;a>0;(a>>>=1)&&(t+=t))a&1&&(r+=t);return r}});var pS=m((Lq,dS)=>{"use strict";var cS=J(),aL=qn(),uS=Ci(),sL=oS(),nL=St(),oL=cS(sL),uL=cS("".slice),lL=Math.ceil,lS=function(i){return function(e,t,r){var a=uS(nL(e)),s=aL(t),n=a.length,o=r===void 0?" ":uS(r),u,l;return s<=n||o===""?a:(u=s-n,l=oL(o,lL(u/o.length)),l.length>u&&(l=uL(l,0,u)),i?a+l:l+a)}};dS.exports={start:lS(!1),end:lS(!0)}});var mS=m((Mq,hS)=>{"use strict";var cL=qt();hS.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(cL)});var fS=m(()=>{"use strict";var dL=z(),pL=pS().start,hL=mS();dL({target:"String",proto:!0,forced:hL},{padStart:function(e){return pL(this,e,arguments.length>1?arguments[1]:void 0)}})});var gS=m((Vq,bS)=>{"use strict";fS();var mL=vt();bS.exports=mL("String","padStart")});var vS=m((Bq,SS)=>{"use strict";var fL=gS();SS.exports=fL});var TS=m((Oq,yS)=>{"use strict";var bL=vS();yS.exports=bL});var Al="2.0.119-dev.57953263.0";var de=(a=>(a.STOPPED="stopped",a.READY="ready",a.PLAYING="playing",a.PAUSED="paused",a))(de||{}),gt=(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_LIVE="HLS_LIVE",E.HLS_LIVE_CMAF="HLS_LIVE_CMAF",E.WEB_RTC_LIVE="WEB_RTC_LIVE",E))(gt||{});var Ba=(a=>(a.NOT_AVAILABLE="NOT_AVAILABLE",a.AVAILABLE="AVAILABLE",a.CONNECTING="CONNECTING",a.CONNECTED="CONNECTED",a))(Ba||{}),cn=(r=>(r.HTTP1="http1",r.HTTP2="http2",r.QUIC="quic",r))(cn||{});var dn=(n=>(n.NONE="none",n.INLINE="inline",n.FULLSCREEN="fullscreen",n.SECOND_SCREEN="second_screen",n.PIP="pip",n.INVISIBLE="invisible",n))(dn||{});var Jv=C(Ke(),1);import{assertNever as Pd,assertNonNullable as RI,isNonNullable as qa,ValueSubject as Hn,Subject as $I,Subscription as LI,merge as MI,observableFrom as CI,fromEvent as Td,map as Id,tap as Ed,filterChanged as DI,isNullable as jn,ErrorCategory as xd}from"@vkontakte/videoplayer-shared";var yd=i=>new Promise((e,t)=>{let r=document.createElement("script");r.setAttribute("src",i),r.onload=()=>e,r.onerror=()=>t,document.body.appendChild(r)});var Ua=class{constructor(e){this.connection$=new Hn(void 0);this.castState$=new Hn("NOT_AVAILABLE");this.errorEvent$=new $I;this.realCastState$=new Hn("NOT_AVAILABLE");this.subscription=new LI;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 r=qa(window.chrome?.cast),a=!!window.__onGCastApiAvailable;r?this.initializeCastApi():(window.__onGCastApiAvailable=s=>{delete window.__onGCastApiAvailable,s&&this.initializeCastApi()},a||yd("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:xd.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){qa(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();jn(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();jn(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),r=cast.framework.CastContext.getInstance();this.subscription.add(Td(r,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(a=>{switch(a.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=r.getCurrentSession()?.getMediaSession()?.media?.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 Pd(a.sessionState)}})).add(MI(Td(r,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(Ed(a=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(a)}`})}),Id(a=>a.castState)),CI([r.getCastState()])).pipe(DI(),Id(VI),Ed(a=>{this.log({message:`realCastState$: ${a}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(a=>{let s=a==="CONNECTED",n=qa(this.connection$.getValue());if(s&&!n){let o=r.getCurrentSession();RI(o);let u=o.getCastDevice(),l=o.getMediaSession()?.media?.contentId;(jn(l)||l===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!s&&n&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(a==="CONNECTED"?qa(this.connection$.getValue())?"CONNECTED":"AVAILABLE":a)}))}initializeCastApi(){let e,t,r;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,r=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:r}),this.initListeners()}catch(a){this.errorEvent$.next({id:"ChromecastInitializer",category:xd.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:a})}}},VI=i=>{switch(i){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 Pd(i)}};var Sl=C(Ke(),1),Lv=C(Ir(),1),Mv=C(So(),1);var Rf=C(bs(),1);import{assertNever as yf}from"@vkontakte/videoplayer-shared";var se=(i,e=0,t=0)=>{switch(t){case 0:return i.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return i;let r=new URL(i);return r.searchParams.append("playback_shift",e.toFixed(0)),r.toString()}case 2:{let r=new URL(i);return!r.searchParams.get("offset_p")&&e===0?i:(r.searchParams.set("offset_p",e.toFixed(0)),r.toString())}default:yf(t)}return i},gs=(i,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(i);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(i);return Number(t.searchParams.get("offset_p")??0)}default:yf(e)}};var I=(i,e,t=!1)=>{let r=i.getTransition();(t||!r||r.to===e)&&i.setState(e)};import{isNonNullable as HA,Subject as Ss,merge as Tf}from"@vkontakte/videoplayer-shared";var $=class{constructor(e){this.transitionStarted$=new Ss;this.transitionEnded$=new Ss;this.transitionUpdated$=new Ss;this.forceChanged$=new Ss;this.stateChangeStarted$=Tf(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=Tf(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,r=this.state;this.transition=void 0,this.prevState=r,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:r,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,r=this.state;r===e||HA(t)&&t.to===e||(this.prevState=r,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:r,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as jA}from"@vkontakte/videoplayer-shared";var If=i=>{switch(i){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 jA(i)}};import{assertNever as Mr,assertNonNullable as Yt,debounce as Ef,ErrorCategory as xf,fromEvent as zt,isNonNullable as Pf,map as kf,merge as Af,observableFrom as GA,Subject as QA,Subscription as au,timeout as WA,getHighestQuality as YA}from"@vkontakte/videoplayer-shared";var zA=5,KA=5,JA=500,wf=7e3,Si=class{constructor(e){this.subscription=new au;this.loadMediaTimeoutSubscription=new au;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),r=this.params.desiredState.playbackState.getState(),a=this.params.desiredState.playbackState.getTransition(),s=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${r}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(s)};`}),r==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(a?.to!=="paused"&&s.state==="requested"&&e!=="stopped"){this.seek(s.position/1e3);return}switch(r){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mr(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:Mr(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:Mr(e)}break}default:Mr(r)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(If(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 au;this.subscription.add(e),this.subscription.add(Af(this.videoState.stateChangeStarted$.pipe(kf(a=>`stateChangeStarted$ ${JSON.stringify(a)}`)),this.videoState.stateChangeEnded$.pipe(kf(a=>`stateChangeEnded$ ${JSON.stringify(a)}`))).subscribe(a=>this.log({message:`[videoState] ${a}`})));let t=(a,s)=>this.subscription.add(a.subscribe(s));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let a=new QA;e.add(a.pipe(Ef(JA)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let s=NaN;e.add(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(n=>{this.logRemoteEvent(n);let o=n.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-s)>zA)&&a.next(o),s=o})),e.add(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(n=>{this.logRemoteEvent(n),this.params.output.duration$.next(n.value)}))}t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),a=>{this.logRemoteEvent(a),a.value?this.handleRemotePause():this.handleRemotePlay()}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),a=>{this.logRemoteEvent(a);let{remotePlayer:s}=this.params.connection,n=a.value,o=this.params.output.isBuffering$.getValue(),u=n===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),n){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&s.duration-s.currentTime<KA&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),I(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:Mr(n)}}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({volume:a.value})}),t(zt(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),a=>{this.logRemoteEvent(a),this.handleRemoteVolumeChange({muted:a.value})});let r=Af(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,GA(["init"])).pipe(Ef(0));t(r,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"),I(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"));let r=this.params.output.isLive$.getValue();this.params.output.duration$.next(r?0:t.duration),this.params.output.position$.next(r?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),r=this.createLoadRequest(t);this.loadMedia(r)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),I(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),I(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&I(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),r={volume:e.volume??t.volume,muted:e.muted??t.muted};(r.volume!==t.volume||r.muted!==r.muted)&&this.params.output.volume$.next(r)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:r}=this.params.connection;t.currentTime=e,r.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,r,a,s;switch(e){case"MPEG":{let l=t[e];Yt(l);let c=YA(Object.keys(l));Yt(c);let d=l[c];Yt(d),r=d,a="video/mp4",s=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let l=t[e];Yt(l),r=l.url,a="application/x-mpegurl",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let l=t[e];Yt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let l=t[e];Yt(l),r=l.url,a="application/dash+xml",s=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let l=t[e];Yt(l),r=se(l.url),a="application/x-mpegurl",s=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let l="Unsupported format for Chromecast",c=new Error(l);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:xf.VIDEO_PIPELINE,message:l,thrown:c}),c}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mr(e)}let n=new chrome.cast.media.MediaInfo(this.params.meta.videoId??r,a);n.contentUrl=r,n.streamType=s,n.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return Pf(o)&&(n.metadata.title=o),Pf(u)&&(n.metadata.subtitle=u),n}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let r=this.params.desiredState.seekState.getState();return r.state==="applying"||r.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:r.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),r=new Promise((a,s)=>{this.loadMediaTimeoutSubscription.add(WA(wf).subscribe(()=>s(`timeout(${wf})`)))});(0,Rf.default)(Promise.race([t,r]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},a=>{let s=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${a}`;this.log({message:s}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:xf.VIDEO_PIPELINE,message:s,thrown:a})}),()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};var xu=C(Ke(),1);import{clearVideoElement as Lf}from"@vkontakte/videoplayer-shared";import{clearVideoElement as XA}from"@vkontakte/videoplayer-shared";var $f=i=>{try{i.pause(),i.playbackRate=0,XA(i),i.remove()}catch(e){console.error(e)}};import{fromEvent as ZA,Subscription as ew}from"@vkontakte/videoplayer-shared";var su=class{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)}},nu=window.WeakMap?new WeakMap:new su,ou=window.WeakMap?new WeakMap:new Map,tw=(i,e=20)=>{let t=0;return ZA(i,"ratechange").subscribe(r=>{t++,t>=e&&(i.currentTime=i.currentTime,t=0)})},pe=(i,{audioVideoSyncRate:e})=>{let t=i.querySelector("video"),r=!!t;t?Lf(t):(t=document.createElement("video"),i.appendChild(t)),nu.set(t,r);let a=new ew;return a.add(tw(t,e)),ou.set(t,a),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},he=i=>{ou.get(i)?.unsubscribe(),ou.delete(i);let t=nu.get(i);nu.delete(i),t?Lf(i):$f(i)};var lu=C(vi(),1);import{assertNonNullable as yi,isNonNullable as Xe,isNullable as lw,fromEvent as Cr,merge as _f,observableFrom as Nf,filterChanged as Ff,map as Ti,Subject as qf,Subscription as cw,ValueSubject as dw,ErrorCategory as pw}from"@vkontakte/videoplayer-shared";import{isNonNullable as uu,isNullable as ow,Subscription as uw}from"@vkontakte/videoplayer-shared";var vs=(i,e,t,{equal:r=(n,o)=>n===o,changed$:a,onError:s}={})=>{let n=i.getState(),o=e(),u=ow(a),l=new uw;return a&&l.add(a.subscribe(c=>{let d=i.getState();r(c,d)&&i.setState(c)},s)),r(o,n)||(t(n),u&&i.setState(n)),l.add(i.stateChangeStarted$.subscribe(c=>{t(c.to),u&&i.setState(c.to)},s)),l},Je=(i,e,t)=>vs(e,()=>i.loop,r=>{uu(r)&&(i.loop=r)},{onError:t}),me=(i,e,t,r)=>vs(e,()=>({muted:i.muted,volume:i.volume}),a=>{uu(a)&&(i.muted=a.muted,i.volume=a.volume)},{equal:(a,s)=>a===s||a?.muted===s?.muted&&a?.volume===s?.volume,changed$:t,onError:r}),$e=(i,e,t,r)=>vs(e,()=>i.playbackRate,a=>{uu(a)&&(i.playbackRate=a)},{changed$:t,onError:r}),Tt=vs;var hw=i=>["__",i.language,i.label].join("|"),mw=(i,e)=>{if(i.id===e)return!0;let[t,r,a]=e.split("|");return i.language===r&&i.label===a},cu=class i{constructor(){this.available$=new qf;this.current$=new dw(void 0);this.error$=new qf;this.subscription=new cw;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,r){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let a=s=>{this.error$.next({id:"TextTracksManager",category:pw.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:s})};this.subscription.add(this.available$.subscribe(r.availableTextTracks$)),this.subscription.add(this.current$.subscribe(r.currentTextTrack$)),this.subscription.add(this.error$.subscribe(r.error$)),this.subscription.add(Tt(t.internalTextTracks,()=>(0,lu.default)(this.internalTracks),s=>{Xe(s)&&this.setInternal(s)},{equal:(s,n)=>Xe(s)&&Xe(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ti(s=>s.filter(({type:n})=>n==="internal"))),onError:a})),this.subscription.add(Tt(t.externalTextTracks,()=>(0,lu.default)(this.externalTracks),s=>{Xe(s)&&this.setExternal(s)},{equal:(s,n)=>Xe(s)&&Xe(n)&&s.length===n.length&&s.every(({id:o},u)=>o===n[u].id),changed$:this.available$.pipe(Ti(s=>s.filter(({type:n})=>n==="external"))),onError:a})),this.subscription.add(Tt(t.currentTextTrack,()=>{if(this.video)return;let s=this.htmlTextTracksAsArray().find(({mode:n})=>n==="showing");return s&&this.htmlTextTrackToITextTrack(s).id},s=>this.select(s),{changed$:this.current$,onError:a})),this.subscription.add(Tt(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let s of this.htmlTextTracksAsArray())this.applyCueSettings(s.cues),this.applyCueSettings(s.activeCues)}))}subscribe(){yi(this.video);let{textTracks:e}=this.video;this.subscription.add(Cr(e,"addtrack").subscribe(()=>{let r=this.current$.getValue();r&&this.select(r)})),this.subscription.add(_f(Cr(e,"addtrack"),Cr(e,"removetrack"),Nf(["init"])).pipe(Ti(()=>this.htmlTextTracksAsArray().map(r=>this.htmlTextTrackToITextTrack(r))),Ff((r,a)=>r.length===a.length&&r.every(({id:s},n)=>s===a[n].id))).subscribe(this.available$)),this.subscription.add(_f(Cr(e,"change"),Nf(["init"])).pipe(Ti(()=>this.htmlTextTracksAsArray().find(({mode:r})=>r==="showing")),Ti(r=>r&&this.htmlTextTrackToITextTrack(r).id),Ff()).subscribe(this.current$));let t=r=>this.applyCueSettings(r.target?.activeCues??null);this.subscription.add(Cr(e,"addtrack").subscribe(r=>{r.track?.addEventListener("cuechange",t);let a=s=>{let n=s.target?.cues??null;n&&n.length&&(this.applyCueSettings(s.target?.cues??null),s.target?.removeEventListener("cuechange",a))};r.track?.addEventListener("cuechange",a)})),this.subscription.add(Cr(e,"removetrack").subscribe(r=>{r.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let r of Array.from(e)){let a=r;Xe(t.align)&&(a.align=t.align),Xe(t.position)&&(a.position=t.position),Xe(t.size)&&(a.size=t.size),Xe(t.line)&&(a.line=t.line)}}htmlTextTracksAsArray(e=!1){yi(this.video);let t=[...this.video.textTracks];return e?t:t.filter(i.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:r}=e,a=e.id?e.id:hw(e),s=this.externalTracks.has(a),n=(s?this.externalTracks.get(a)?.isAuto:this.internalTracks.get(a)?.isAuto)??a.includes("auto");return s?{id:a,type:"external",isAuto:n,language:t,label:r,url:this.externalTracks.get(a)?.url}:{id:a,type:"internal",isAuto:n,language:t,label:r,url:this.internalTracks.get(a)?.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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(r=>r.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:r,language:a,isAuto:s})=>!this.internalTracks.has(r)&&!t.some(([,n])=>n.language===a&&n.isAuto===s)).forEach(r=>this.attach(r)),Array.from(this.internalTracks).filter(([r])=>!e.find(a=>a.id===r)).forEach(([,r])=>this.detach(r))}select(e){yi(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(lw(e)||!mw(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){yi(this.video);let t=document.createElement("track");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){yi(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),r=>r.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)}},Le=cu;var ot=class{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 Uf=i=>{let e=i;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},du=i=>{let e=Uf(i);return!!(e&&e.fullscreenElement&&e.fullscreenElement===i)},Hf=i=>{let e=Uf(i);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===i)};import{fromEvent as Me,map as It,merge as Gf,filterChanged as bw,isNonNullable as Qf,Subject as gw,filter as Wf,mapTo as Yf,combine as Sw,once as vw,ErrorCategory as yw,ValueSubject as zf,clientChecker as Tw}from"@vkontakte/videoplayer-shared";var fw=3,jf=(i,e,t=fw)=>{let r=0,a=0;for(let s=0;s<i.length;s++){let n=i.start(s),o=i.end(s);if(n<=e&&e<=o){if(r=n,a=o,!t)return{from:r,to:a};for(let u=s-1;u>=0;u--)i.end(u)+t>=r&&(r=i.start(u));for(let u=s+1;u<i.length;u++)i.start(u)-t<=a&&(a=i.end(u))}}return{from:r,to:a}};var fe=i=>{let e=E=>Me(i,E).pipe(Yf(void 0)),r=Gf(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(E=>Me(i,E))).pipe(It(E=>E.type==="ended"?i.readyState<2:i.readyState<3),bw()),a=Gf(Me(i,"progress"),Me(i,"timeupdate")).pipe(It(()=>jf(i.buffered,i.currentTime))),s=Tw.isSafari?Sw({play:e("play").pipe(vw()),playing:e("playing")}).pipe(Yf(void 0)):e("playing"),n=Me(i,"volumechange").pipe(It(()=>({muted:i.muted,volume:i.volume}))),o=Me(i,"ratechange").pipe(It(()=>i.playbackRate)),u=Me(i,"error").pipe(Wf(()=>!!(i.error||i.played.length)),It(()=>{let E=i.error;return{id:E?`MediaError#${E.code}`:"HtmlVideoError",category:yw.VIDEO_PIPELINE,message:E?E.message:"Error event from HTML video element",thrown:i.error??void 0}})),l=Me(i,"timeupdate").pipe(It(()=>i.currentTime)),c=new gw,d=.3,p;l.subscribe(E=>{i.loop&&Qf(p)&&Qf(E)&&p>=i.duration-d&&E<=d&&c.next(p),p=E});let h=e("pause").pipe(Wf(()=>!i.error&&p!==i.duration)),f=Me(i,"enterpictureinpicture"),b=Me(i,"leavepictureinpicture"),g=new zf(Hf(i));f.subscribe(()=>g.next(!0)),b.subscribe(()=>g.next(!1));let S=new zf(du(i));return Me(i,"fullscreenchange").pipe(It(()=>du(i))).subscribe(S),{playing$:s,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:c,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:l,durationChange$:Me(i,"durationchange").pipe(It(()=>i.duration)),isBuffering$:r,currentBuffer$:a,volumeState$:n,playbackRateState$:o,inPiP$:g,inFullscreen$:S}};import{VideoQuality as Et}from"@vkontakte/videoplayer-shared";var xt=i=>{switch(i){case"mobile":return Et.Q_144P;case"lowest":return Et.Q_240P;case"low":return Et.Q_360P;case"sd":case"medium":return Et.Q_480P;case"hd":case"high":return Et.Q_720P;case"fullhd":case"full":return Et.Q_1080P;case"quadhd":case"quad":return Et.Q_1440P;case"ultrahd":case"ultra":return Et.Q_2160P}};var Pt=C(Dr(),1),ub=C(Ke(),1),ys=C(Ir(),1);import{isNonNullable as X,isNullable as hu,now as lb,isHigher as mu,isHigherOrEqual as fu,isInvariantQuality as sb,isLower as nb,isLowerOrEqual as bu,videoSizeToQuality as $w,assertNotEmptyArray as cb,assertNonNullable as Lw}from"@vkontakte/videoplayer-shared";var pu=!1,ut={},rb=i=>{pu=i},ib=()=>{ut={}},ab=i=>{i(ut)},Ii=(i,e)=>{pu&&(ut.meta=ut.meta??{},ut.meta[i]=e)},oe=class{constructor(e){this.name=e}next(e){if(!pu)return;ut.series=ut.series??{};let t=ut.series[this.name]??[];t.push([Date.now(),e]),ut.series[this.name]=t}};var Mw=new oe("best_bitrate"),db=(i,e,t)=>(e-t)*Math.pow(2,-10*i)+t;var gu=i=>(e,t)=>i*(Number(e.bitrate)-Number(t.bitrate)),Ei=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=lb()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},pb='Assertion "ABR Tracks is empty array" failed',Ts=(i,e,t,r)=>{let a=[...e].sort(gu(1)),s=[...t].sort(gu(1)),n=s.filter(u=>X(u.bitrate)&&X(i.bitrate)?i.bitrate/u.bitrate>r:!0),o=(0,Pt.default)(s,Math.round(s.length*a.indexOf(i)/(a.length+1)))??(0,Pt.default)(s,-1);return o&&(0,ub.default)(n,o)?o:n.length?(0,Pt.default)(n,-1):(0,Pt.default)(s,0)},ob=i=>"quality"in i,hb=(i,e,t,r)=>{let a=X(r?.last?.bitrate)&&X(t?.bitrate)&&r.last.bitrate<t.bitrate?i.trackCooldownIncreaseQuality:i.trackCooldownDecreaseQuality,s=t&&r&&r.history[t.id]&&lb()-r.history[t.id]<=a&&(!r.last||t.id!==r.last.id);if(t?.id&&r&&!s&&r.recordSelection(t),s&&r?.last){let n=r.last;r?.recordSwitch(n);let o=ob(n)?"video":"audio",u=ob(n)?n.quality:n.bitrate;return e({message:`
8
8
  [last ${o} selected] ${u}
9
9
  `}),n}return r?.recordSwitch(t),t},Cw=(i,e)=>Math.log(e)/Math.log(i),kt=(i,{container:e,estimatedThroughput:t,tuning:r,limits:a,reserve:s=0,forwardBufferHealth:n,playbackRate:o,current:u,history:l,visible:c,droppedVideoMaxQualityLimit:d,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:h,abrLogger:f})=>{cb(i,pb);let b=r.containerSizeFactor;if(r.usePixelRatio&&window.devicePixelRatio){let v=window.devicePixelRatio;if(r.pixelRatioMultiplier)b*=r.pixelRatioMultiplier*(v-1)+1;else{let T=r.pixelRatioLogBase,[q=0,ye=0,Ve=0]=r.pixelRatioLogCoefficients,P=Cw(T,q*v+ye)+Ve;Number.isFinite(P)&&(b*=P)}}let g=r.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*b,height:e.height*b}:void 0,S=r.considerPlaybackRate&&X(o)?o:1,k=i.filter(v=>!sb(v.quality)).sort((v,T)=>mu(v.quality,T.quality)?-1:1),E=(0,Pt.default)(k,-1)?.quality,A=(0,Pt.default)(k,0)?.quality,y=hu(a)||X(a.min)&&X(a.max)&&nb(a.max,a.min)||X(a.min)&&A&&mu(a.min,A)||X(a.max)&&E&&nb(a.max,E),R=S*db(n??.5,r.bitrateFactorAtEmptyBuffer,r.bitrateFactorAtFullBuffer),B={},_=k.filter(v=>{let T=!0;if(g)if(v.size)T=v.size.width<=g.width&&v.size.height<=g.height;else{let te=g&&$w(g);T=te?bu(v.quality,te):!0}if(!T)return B[v.quality]="FitsContainer",!1;let q=h||t;if(!(X(q)&&isFinite(q)&&X(v.bitrate)?q-s>=v.bitrate*R:!0))return B[v.quality]="FitsThroughput",!1;if(r.lazyQualitySwitch&&X(r.minBufferToSwitchUp)&&u&&!sb(u.quality)&&(n??0)<r.minBufferToSwitchUp&&mu(v.quality,u.quality))return B[v.quality]="Buffer",!1;if(!!d&&fu(v.quality,d))return B[v.quality]="DroppedFramesLimit",!1;if(!!p&&fu(v.quality,p))return B[v.quality]="StallsLimit",!1;let w=y||(hu(a.max)||bu(v.quality,a.max))&&(hu(a.min)||fu(v.quality,a.min)),K=X(c)&&!c?bu(v.quality,r.backgroundVideoQualityLimit):!0;return!w||!K?(B[v.quality]="FitsQualityLimits",!1):!0})[0];_&&_.bitrate&&Mw.next(_.bitrate);let U=_??(0,Pt.default)(k,-1)??i[0];return U.quality!==l?.last?.quality&&f({message:`
10
10
  [VIDEO TRACKS ABR]
package/evergreen.esm.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @vkontakte/videoplayer-core v2.0.119-dev.381e55bc.0
3
- * Wed, 11 Dec 2024 12:39:08 GMT
2
+ * @vkontakte/videoplayer-core v2.0.119-dev.57953263.0
3
+ * Wed, 11 Dec 2024 12:35:47 GMT
4
4
  * https://st.mycdn.me/static/vkontakte-videoplayer/2-0-119/doc/
5
5
  */
6
- var Ka="2.0.119-dev.381e55bc.0";var re=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(re||{}),Ye=(I=>(I.MPEG="MPEG",I.DASH="DASH",I.DASH_SEP="DASH_SEP",I.DASH_SEP_VK="DASH_SEP",I.DASH_WEBM="DASH_WEBM",I.DASH_WEBM_AV1="DASH_WEBM_AV1",I.DASH_STREAMS="DASH_STREAMS",I.DASH_WEBM_VK="DASH_WEBM",I.DASH_ONDEMAND="DASH_ONDEMAND",I.DASH_ONDEMAND_VK="DASH_ONDEMAND",I.DASH_LIVE="DASH_LIVE",I.DASH_LIVE_CMAF="DASH_LIVE_CMAF",I.DASH_LIVE_WEBM="DASH_LIVE_WEBM",I.HLS="HLS",I.HLS_ONDEMAND="HLS_ONDEMAND",I.HLS_JS="HLS",I.HLS_LIVE="HLS_LIVE",I.HLS_LIVE_CMAF="HLS_LIVE_CMAF",I.WEB_RTC_LIVE="WEB_RTC_LIVE",I))(Ye||{});var tr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(tr||{}),jr=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(jr||{});var qr=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(qr||{});import{assertNever as is,assertNonNullable as Uo,isNonNullable as ir,ValueSubject as Gr,Subject as Ho,Subscription as Qo,merge as jo,observableFrom as qo,fromEvent as Xa,map as Za,tap as es,filterChanged as Go,isNullable as Wr,ErrorCategory as ts}from"@vkontakte/videoplayer-shared/evergreen";var Ja=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var rr=class{constructor(e){this.connection$=new Gr(void 0);this.castState$=new Gr("NOT_AVAILABLE");this.errorEvent$=new Ho;this.realCastState$=new Gr("NOT_AVAILABLE");this.subscription=new Qo;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 i=ir(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&this.initializeCastApi()},r||Ja("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:ts.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){ir(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Wr(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Wr(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Xa(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.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 is(r.sessionState)}})).add(jo(Xa(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(es(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),Za(r=>r.castState)),qo([i.getCastState()])).pipe(Go(),Za(Wo),es(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=ir(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();Uo(o);let u=o.getCastDevice(),d=o.getMediaSession()?.media?.contentId;(Wr(d)||d===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?ir(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:ts.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Wo=n=>{switch(n){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 is(n)}};import{assertNever as rs}from"@vkontakte/videoplayer-shared/evergreen";var J=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:rs(t)}return n},ar=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:rs(e)}};var T=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Yo,Subject as sr,merge as as}from"@vkontakte/videoplayer-shared/evergreen";var $=class{constructor(e){this.transitionStarted$=new sr;this.transitionEnded$=new sr;this.transitionUpdated$=new sr;this.forceChanged$=new sr;this.stateChangeStarted$=as(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=as(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||Yo(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as zo}from"@vkontakte/videoplayer-shared/evergreen";var ss=n=>{switch(n){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 zo(n)}};import{assertNever as Mt,assertNonNullable as pt,debounce as ns,ErrorCategory as os,fromEvent as ht,isNonNullable as us,map as ds,merge as ls,observableFrom as Ko,Subject as Jo,Subscription as Yr,timeout as Xo,getHighestQuality as Zo}from"@vkontakte/videoplayer-shared/evergreen";var eu=5,tu=5,iu=500,cs=7e3,jt=class{constructor(e){this.subscription=new Yr;this.loadMediaTimeoutSubscription=new Yr;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mt(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:Mt(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:Mt(e)}break}default:Mt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ss(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 Yr;this.subscription.add(e),this.subscription.add(ls(this.videoState.stateChangeStarted$.pipe(ds(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(ds(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new Jo;e.add(r.pipe(ns(iu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>eu)&&r.next(o),a=o})),e.add(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<tu&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),T(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:Mt(s)}}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=ls(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Ko(["init"])).pipe(ns(0));t(i,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"),T(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),T(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&T(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,r,a;switch(e){case"MPEG":{let d=t[e];pt(d);let l=Zo(Object.keys(d));pt(l);let c=d[l];pt(c),i=c,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let d=t[e];pt(d),i=d.url,r="application/x-mpegurl",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let d=t[e];pt(d),i=d.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let d=t[e];pt(d),i=d.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let d=t[e];pt(d),i=J(d.url),r="application/x-mpegurl",a=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let d="Unsupported format for Chromecast",l=new Error(d);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:os.VIDEO_PIPELINE,message:d,thrown:l}),l}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return us(o)&&(s.metadata.title=o),us(u)&&(s.metadata.subtitle=u),s}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(Xo(cs).subscribe(()=>a(`timeout(${cs})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:os.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as hs}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as ru}from"@vkontakte/videoplayer-shared/evergreen";var ps=n=>{try{n.pause(),n.playbackRate=0,ru(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as au,Subscription as su}from"@vkontakte/videoplayer-shared/evergreen";var zr=class{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)}},Kr=window.WeakMap?new WeakMap:new zr,Jr=window.WeakMap?new WeakMap:new Map,nu=(n,e=20)=>{let t=0;return au(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},ae=(n,{audioVideoSyncRate:e})=>{let t=n.querySelector("video"),i=!!t;t?hs(t):(t=document.createElement("video"),n.appendChild(t)),Kr.set(t,i);let r=new su;return r.add(nu(t,e)),Jr.set(t,r),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},se=n=>{Jr.get(n)?.unsubscribe(),Jr.delete(n);let t=Kr.get(n);Kr.delete(n),t?hs(n):ps(n)};import{assertNonNullable as qt,isNonNullable as Re,isNullable as du,fromEvent as Rt,merge as ms,observableFrom as fs,filterChanged as bs,map as Gt,Subject as gs,Subscription as lu,ValueSubject as cu,ErrorCategory as pu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as Xr,isNullable as ou,Subscription as uu}from"@vkontakte/videoplayer-shared/evergreen";var nr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=ou(r),d=new uu;return r&&d.add(r.subscribe(l=>{let c=n.getState();i(l,c)&&n.setState(l)},a)),i(o,s)||(t(s),u&&n.setState(s)),d.add(n.stateChangeStarted$.subscribe(l=>{t(l.to),u&&n.setState(l.to)},a)),d},Me=(n,e,t)=>nr(e,()=>n.loop,i=>{Xr(i)&&(n.loop=i)},{onError:t}),ne=(n,e,t,i)=>nr(e,()=>({muted:n.muted,volume:n.volume}),r=>{Xr(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ge=(n,e,t,i)=>nr(e,()=>n.playbackRate,r=>{Xr(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),ze=nr;var hu=n=>["__",n.language,n.label].join("|"),mu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},Zr=class n{constructor(){this.available$=new gs;this.current$=new cu(void 0);this.error$=new gs;this.subscription=new lu;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:pu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(ze(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{Re(a)&&this.setInternal(a)},{equal:(a,s)=>Re(a)&&Re(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(ze(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{Re(a)&&this.setExternal(a)},{equal:(a,s)=>Re(a)&&Re(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(ze(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(ze(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){qt(this.video);let{textTracks:e}=this.video;this.subscription.add(Rt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(ms(Rt(e,"addtrack"),Rt(e,"removetrack"),fs(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),bs((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(ms(Rt(e,"change"),fs(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Gt(i=>i&&this.htmlTextTrackToITextTrack(i).id),bs()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Rt(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Rt(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let r=i;Re(t.align)&&(r.align=t.align),Re(t.position)&&(r.position=t.position),Re(t.size)&&(r.size=t.size),Re(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){qt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:hu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){qt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(du(e)||!mu(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){qt(this.video);let t=document.createElement("track");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){qt(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.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)}},Se=Zr;var _e=class{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 Ss=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ea=n=>{let e=Ss(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},vs=n=>{let e=Ss(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as ve,map as Ke,merge as Ts,filterChanged as bu,isNonNullable as Is,Subject as gu,filter as Es,mapTo as xs,combine as Su,once as vu,ErrorCategory as yu,ValueSubject as ks,clientChecker as Tu}from"@vkontakte/videoplayer-shared/evergreen";var fu=3,ys=(n,e,t=fu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var oe=n=>{let e=I=>ve(n,I).pipe(xs(void 0)),i=Ts(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(I=>ve(n,I))).pipe(Ke(I=>I.type==="ended"?n.readyState<2:n.readyState<3),bu()),r=Ts(ve(n,"progress"),ve(n,"timeupdate")).pipe(Ke(()=>ys(n.buffered,n.currentTime))),a=Tu.isSafari?Su({play:e("play").pipe(vu()),playing:e("playing")}).pipe(xs(void 0)):e("playing"),s=ve(n,"volumechange").pipe(Ke(()=>({muted:n.muted,volume:n.volume}))),o=ve(n,"ratechange").pipe(Ke(()=>n.playbackRate)),u=ve(n,"error").pipe(Es(()=>!!(n.error||n.played.length)),Ke(()=>{let I=n.error;return{id:I?`MediaError#${I.code}`:"HtmlVideoError",category:yu.VIDEO_PIPELINE,message:I?I.message:"Error event from HTML video element",thrown:n.error??void 0}})),d=ve(n,"timeupdate").pipe(Ke(()=>n.currentTime)),l=new gu,c=.3,p;d.subscribe(I=>{n.loop&&Is(p)&&Is(I)&&p>=n.duration-c&&I<=c&&l.next(p),p=I});let h=e("pause").pipe(Es(()=>!n.error&&p!==n.duration)),m=ve(n,"enterpictureinpicture"),f=ve(n,"leavepictureinpicture"),b=new ks(vs(n));m.subscribe(()=>b.next(!0)),f.subscribe(()=>b.next(!1));let v=new ks(ea(n));return ve(n,"fullscreenchange").pipe(Ke(()=>ea(n))).subscribe(v),{playing$:a,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:l,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:d,durationChange$:ve(n,"durationchange").pipe(Ke(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:b,inFullscreen$:v}};import{VideoQuality as Je}from"@vkontakte/videoplayer-shared/evergreen";var Xe=n=>{switch(n){case"mobile":return Je.Q_144P;case"lowest":return Je.Q_240P;case"low":return Je.Q_360P;case"sd":case"medium":return Je.Q_480P;case"hd":case"high":return Je.Q_720P;case"fullhd":case"full":return Je.Q_1080P;case"quadhd":case"quad":return Je.Q_1440P;case"ultrahd":case"ultra":return Je.Q_2160P}};import{isNonNullable as G,isNullable as ia,now as Rs,isHigher as ra,isHigherOrEqual as aa,isInvariantQuality as ws,isLower as Ls,isLowerOrEqual as sa,videoSizeToQuality as Iu,assertNotEmptyArray as Ds,assertNonNullable as Eu}from"@vkontakte/videoplayer-shared/evergreen";var ta=!1,Fe={},Ps=n=>{ta=n},As=()=>{Fe={}},$s=n=>{n(Fe)},Wt=(n,e)=>{ta&&(Fe.meta=Fe.meta??{},Fe.meta[n]=e)},Z=class{constructor(e){this.name=e}next(e){if(!ta)return;Fe.series=Fe.series??{};let t=Fe.series[this.name]??[];t.push([Date.now(),e]),Fe.series[this.name]=t}};var xu=new Z("best_bitrate"),Cs=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var na=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Yt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=Rs()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Vs='Assertion "ABR Tracks is empty array" failed',or=(n,e,t,i)=>{let r=[...e].sort(na(1)),a=[...t].sort(na(1)),s=a.filter(u=>G(u.bitrate)&&G(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},Ms=n=>"quality"in n,Bs=(n,e,t,i)=>{let r=G(i?.last?.bitrate)&&G(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&Rs()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=Ms(s)?"video":"audio",u=Ms(s)?s.quality:s.bitrate;return e({message:`
6
+ var Ka="2.0.119-dev.57953263.0";var re=(r=>(r.STOPPED="stopped",r.READY="ready",r.PLAYING="playing",r.PAUSED="paused",r))(re||{}),Ye=(I=>(I.MPEG="MPEG",I.DASH="DASH",I.DASH_SEP="DASH_SEP",I.DASH_SEP_VK="DASH_SEP",I.DASH_WEBM="DASH_WEBM",I.DASH_WEBM_AV1="DASH_WEBM_AV1",I.DASH_STREAMS="DASH_STREAMS",I.DASH_WEBM_VK="DASH_WEBM",I.DASH_ONDEMAND="DASH_ONDEMAND",I.DASH_ONDEMAND_VK="DASH_ONDEMAND",I.DASH_LIVE="DASH_LIVE",I.DASH_LIVE_CMAF="DASH_LIVE_CMAF",I.DASH_LIVE_WEBM="DASH_LIVE_WEBM",I.HLS="HLS",I.HLS_ONDEMAND="HLS_ONDEMAND",I.HLS_JS="HLS",I.HLS_LIVE="HLS_LIVE",I.HLS_LIVE_CMAF="HLS_LIVE_CMAF",I.WEB_RTC_LIVE="WEB_RTC_LIVE",I))(Ye||{});var tr=(r=>(r.NOT_AVAILABLE="NOT_AVAILABLE",r.AVAILABLE="AVAILABLE",r.CONNECTING="CONNECTING",r.CONNECTED="CONNECTED",r))(tr||{}),jr=(i=>(i.HTTP1="http1",i.HTTP2="http2",i.QUIC="quic",i))(jr||{});var qr=(s=>(s.NONE="none",s.INLINE="inline",s.FULLSCREEN="fullscreen",s.SECOND_SCREEN="second_screen",s.PIP="pip",s.INVISIBLE="invisible",s))(qr||{});import{assertNever as is,assertNonNullable as Uo,isNonNullable as ir,ValueSubject as Gr,Subject as Ho,Subscription as Qo,merge as jo,observableFrom as qo,fromEvent as Xa,map as Za,tap as es,filterChanged as Go,isNullable as Wr,ErrorCategory as ts}from"@vkontakte/videoplayer-shared/evergreen";var Ja=n=>new Promise((e,t)=>{let i=document.createElement("script");i.setAttribute("src",n),i.onload=()=>e,i.onerror=()=>t,document.body.appendChild(i)});var rr=class{constructor(e){this.connection$=new Gr(void 0);this.castState$=new Gr("NOT_AVAILABLE");this.errorEvent$=new Ho;this.realCastState$=new Gr("NOT_AVAILABLE");this.subscription=new Qo;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 i=ir(window.chrome?.cast),r=!!window.__onGCastApiAvailable;i?this.initializeCastApi():(window.__onGCastApiAvailable=a=>{delete window.__onGCastApiAvailable,a&&this.initializeCastApi()},r||Ja("https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1").catch(()=>this.errorEvent$.next({id:"ChromecastLoading",category:ts.NETWORK,message:"Script loading failed!"})))}connect(){cast.framework.CastContext.getInstance()?.requestSession()}disconnect(){cast.framework.CastContext.getInstance()?.getCurrentSession()?.endSession(!0)}stopMedia(){return new Promise((e,t)=>{cast.framework.CastContext.getInstance()?.getCurrentSession()?.getMediaSession()?.stop(new chrome.cast.media.StopRequest,e,t)})}toggleConnection(){ir(this.connection$.getValue())?this.disconnect():this.connect()}setVolume(e){let t=this.connection$.getValue();Wr(t)||(t.remotePlayer.volumeLevel=e,t.remotePlayerController.setVolumeLevel())}setMuted(e){let t=this.connection$.getValue();Wr(t)||e!==t.remotePlayer.isMuted&&t.remotePlayerController.muteOrUnmute()}destroy(){this.subscription.unsubscribe()}initListeners(){let e=new cast.framework.RemotePlayer,t=new cast.framework.RemotePlayerController(e),i=cast.framework.CastContext.getInstance();this.subscription.add(Xa(i,cast.framework.CastContextEventType.SESSION_STATE_CHANGED).subscribe(r=>{switch(r.sessionState){case cast.framework.SessionState.SESSION_STARTED:case cast.framework.SessionState.SESSION_STARTING:case cast.framework.SessionState.SESSION_RESUMED:this.contentId=i.getCurrentSession()?.getMediaSession()?.media?.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 is(r.sessionState)}})).add(jo(Xa(i,cast.framework.CastContextEventType.CAST_STATE_CHANGED).pipe(es(r=>{this.log({message:`[cast.framework.RemotePlayerEventType.CAST_STATE_CHANGED]: ${JSON.stringify(r)}`})}),Za(r=>r.castState)),qo([i.getCastState()])).pipe(Go(),Za(Wo),es(r=>{this.log({message:`realCastState$: ${r}`})})).subscribe(this.realCastState$)).add(this.realCastState$.subscribe(r=>{let a=r==="CONNECTED",s=ir(this.connection$.getValue());if(a&&!s){let o=i.getCurrentSession();Uo(o);let u=o.getCastDevice(),d=o.getMediaSession()?.media?.contentId;(Wr(d)||d===this.contentId)&&(this.log({message:"connection created"}),this.connection$.next({remotePlayer:e,remotePlayerController:t,session:o,castDevice:u}))}else!a&&s&&(this.log({message:"connection destroyed"}),this.connection$.next(void 0));this.castState$.next(r==="CONNECTED"?ir(this.connection$.getValue())?"CONNECTED":"AVAILABLE":r)}))}initializeCastApi(){let e,t,i;try{e=cast.framework.CastContext.getInstance(),t=chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID,i=chrome.cast.AutoJoinPolicy.ORIGIN_SCOPED}catch{return}try{e.setOptions({receiverApplicationId:this.params.receiverApplicationId??t,autoJoinPolicy:i}),this.initListeners()}catch(r){this.errorEvent$.next({id:"ChromecastInitializer",category:ts.EXTERNAL_API,message:"[initializeCastApi] failed",thrown:r})}}},Wo=n=>{switch(n){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 is(n)}};import{assertNever as rs}from"@vkontakte/videoplayer-shared/evergreen";var J=(n,e=0,t=0)=>{switch(t){case 0:return n.replace("_offset_p",e===0?"":"_"+e.toFixed(0));case 1:{if(e===0)return n;let i=new URL(n);return i.searchParams.append("playback_shift",e.toFixed(0)),i.toString()}case 2:{let i=new URL(n);return!i.searchParams.get("offset_p")&&e===0?n:(i.searchParams.set("offset_p",e.toFixed(0)),i.toString())}default:rs(t)}return n},ar=(n,e)=>{switch(e){case 0:return NaN;case 1:{let t=new URL(n);return Number(t.searchParams.get("playback_shift"))}case 2:{let t=new URL(n);return Number(t.searchParams.get("offset_p")??0)}default:rs(e)}};var T=(n,e,t=!1)=>{let i=n.getTransition();(t||!i||i.to===e)&&n.setState(e)};import{isNonNullable as Yo,Subject as sr,merge as as}from"@vkontakte/videoplayer-shared/evergreen";var $=class{constructor(e){this.transitionStarted$=new sr;this.transitionEnded$=new sr;this.transitionUpdated$=new sr;this.forceChanged$=new sr;this.stateChangeStarted$=as(this.transitionStarted$,this.transitionUpdated$);this.stateChangeEnded$=as(this.transitionEnded$,this.forceChanged$);this.state=e,this.prevState=void 0}setState(e){let t=this.transition,i=this.state;this.transition=void 0,this.prevState=i,this.state=e,t?t.to===e?this.transitionEnded$.next(t):this.forceChanged$.next({from:t.from,to:e,canceledTransition:t}):this.forceChanged$.next({from:i,to:e,canceledTransition:t})}startTransitionTo(e){let t=this.transition,i=this.state;i===e||Yo(t)&&t.to===e||(this.prevState=i,this.state=e,t?(this.transition={from:t.from,to:e,canceledTransition:t},this.transitionUpdated$.next(this.transition)):(this.transition={from:i,to:e},this.transitionStarted$.next(this.transition)))}getTransition(){return this.transition}getState(){return this.state}getPrevState(){return this.prevState}};import{assertNever as zo}from"@vkontakte/videoplayer-shared/evergreen";var ss=n=>{switch(n){case"MPEG":case"DASH":case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":case"HLS":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 zo(n)}};import{assertNever as Mt,assertNonNullable as pt,debounce as ns,ErrorCategory as os,fromEvent as ht,isNonNullable as us,map as ds,merge as ls,observableFrom as Ko,Subject as Jo,Subscription as Yr,timeout as Xo,getHighestQuality as Zo}from"@vkontakte/videoplayer-shared/evergreen";var eu=5,tu=5,iu=500,cs=7e3,jt=class{constructor(e){this.subscription=new Yr;this.loadMediaTimeoutSubscription=new Yr;this.videoState=new $("stopped");this.syncPlayback=()=>{let e=this.videoState.getState(),t=this.videoState.getTransition(),i=this.params.desiredState.playbackState.getState(),r=this.params.desiredState.playbackState.getTransition(),a=this.params.desiredState.seekState.getState();if(this.log({message:`[syncPlayback] videoState: ${e}; videoTransition: ${JSON.stringify(t)}; desiredPlaybackState: ${i}; desiredPlaybackStateTransition: ${this.params.desiredState.playbackState.getTransition()}; seekState: ${JSON.stringify(a)};`}),i==="stopped"){e!=="stopped"&&(this.videoState.startTransitionTo("stopped"),this.stop());return}if(!t){if(r?.to!=="paused"&&a.state==="requested"&&e!=="stopped"){this.seek(a.position/1e3);return}switch(i){case"ready":{switch(e){case"playing":case"paused":case"ready":break;case"stopped":this.videoState.startTransitionTo("ready"),this.prepare();break;default:Mt(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:Mt(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:Mt(e)}break}default:Mt(i)}}};this.params=e,this.log=this.params.dependencies.logger.createComponentLog("ChromecastProvider"),this.log({message:`constructor, format: ${e.format}`}),this.params.output.isLive$.next(ss(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 Yr;this.subscription.add(e),this.subscription.add(ls(this.videoState.stateChangeStarted$.pipe(ds(r=>`stateChangeStarted$ ${JSON.stringify(r)}`)),this.videoState.stateChangeEnded$.pipe(ds(r=>`stateChangeEnded$ ${JSON.stringify(r)}`))).subscribe(r=>this.log({message:`[videoState] ${r}`})));let t=(r,a)=>this.subscription.add(r.subscribe(a));if(this.params.output.isLive$.getValue())this.params.output.position$.next(0),this.params.output.duration$.next(0);else{let r=new Jo;e.add(r.pipe(ns(iu)).subscribe(()=>{this.params.output.seekedEvent$.next()}));let a=NaN;e.add(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.CURRENT_TIME_CHANGED).subscribe(s=>{this.logRemoteEvent(s);let o=s.value;this.params.output.position$.next(o),(this.params.desiredState.seekState.getState().state==="applying"||Math.abs(o-a)>eu)&&r.next(o),a=o})),e.add(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.DURATION_CHANGED).subscribe(s=>{this.logRemoteEvent(s),this.params.output.duration$.next(s.value)}))}t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemoteReady():(this.handleRemoteStop(),e.unsubscribe())}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_PAUSED_CHANGED),r=>{this.logRemoteEvent(r),r.value?this.handleRemotePause():this.handleRemotePlay()}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.PLAYER_STATE_CHANGED),r=>{this.logRemoteEvent(r);let{remotePlayer:a}=this.params.connection,s=r.value,o=this.params.output.isBuffering$.getValue(),u=s===chrome.cast.media.PlayerState.BUFFERING;switch(o!==u&&this.params.output.isBuffering$.next(u),s){case chrome.cast.media.PlayerState.IDLE:!this.params.output.isLive$.getValue()&&a.duration-a.currentTime<tu&&this.params.output.endedEvent$.next(),this.handleRemoteStop(),T(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:Mt(s)}}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.VOLUME_LEVEL_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({volume:r.value})}),t(ht(this.params.connection.remotePlayerController,cast.framework.RemotePlayerEventType.IS_MUTED_CHANGED),r=>{this.logRemoteEvent(r),this.handleRemoteVolumeChange({muted:r.value})});let i=ls(this.params.desiredState.playbackState.stateChangeStarted$,this.params.desiredState.seekState.stateChangeEnded$,this.videoState.stateChangeEnded$,Ko(["init"])).pipe(ns(0));t(i,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"),T(this.params.desiredState.playbackState,"paused")):(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"));let i=this.params.output.isLive$.getValue();this.params.output.duration$.next(i?0:t.duration),this.params.output.position$.next(i?0:t.currentTime),this.params.desiredState.seekState.setState({state:"none"})}}prepare(){let e=this.params.format;this.log({message:`[prepare] format: ${e}`});let t=this.createMediaInfo(e),i=this.createLoadRequest(t);this.loadMedia(i)}handleRemotePause(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="paused"||e==="playing")&&(this.videoState.setState("paused"),T(this.params.desiredState.playbackState,"paused"))}handleRemotePlay(){let e=this.videoState.getState();(this.videoState.getTransition()?.to==="playing"||e==="paused")&&(this.videoState.setState("playing"),T(this.params.desiredState.playbackState,"playing"))}handleRemoteReady(){this.videoState.getTransition()?.to==="ready"&&this.videoState.setState("ready"),this.params.desiredState.playbackState.getTransition()?.to==="ready"&&T(this.params.desiredState.playbackState,"ready")}handleRemoteStop(){this.videoState.getState()!=="stopped"&&this.videoState.setState("stopped")}handleRemoteVolumeChange(e){let t=this.params.output.volume$.getValue(),i={volume:e.volume??t.volume,muted:e.muted??t.muted};(i.volume!==t.volume||i.muted!==i.muted)&&this.params.output.volume$.next(i)}seek(e){this.params.output.willSeekEvent$.next();let{remotePlayer:t,remotePlayerController:i}=this.params.connection;t.currentTime=e,i.seek()}stop(){let{remotePlayerController:e}=this.params.connection;e.stop()}createMediaInfo(e){let t=this.params.source,i,r,a;switch(e){case"MPEG":{let d=t[e];pt(d);let l=Zo(Object.keys(d));pt(l);let c=d[l];pt(c),i=c,r="video/mp4",a=chrome.cast.media.StreamType.BUFFERED;break}case"HLS":case"HLS_ONDEMAND":{let d=t[e];pt(d),i=d.url,r="application/x-mpegurl",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_SEP":case"DASH_ONDEMAND":case"DASH_WEBM":case"DASH_WEBM_AV1":case"DASH_STREAMS":{let d=t[e];pt(d),i=d.url,r="application/dash+xml",a=chrome.cast.media.StreamType.BUFFERED;break}case"DASH_LIVE_CMAF":{let d=t[e];pt(d),i=d.url,r="application/dash+xml",a=chrome.cast.media.StreamType.LIVE;break}case"HLS_LIVE":case"HLS_LIVE_CMAF":{let d=t[e];pt(d),i=J(d.url),r="application/x-mpegurl",a=chrome.cast.media.StreamType.LIVE;break}case"DASH_LIVE":case"WEB_RTC_LIVE":{let d="Unsupported format for Chromecast",l=new Error(d);throw this.params.output.error$.next({id:"ChromecastProvider.createMediaInfo()",category:os.VIDEO_PIPELINE,message:d,thrown:l}),l}case"DASH":case"DASH_LIVE_WEBM":throw new Error(`${e} is no longer supported`);default:return Mt(e)}let s=new chrome.cast.media.MediaInfo(this.params.meta.videoId??i,r);s.contentUrl=i,s.streamType=a,s.metadata=new chrome.cast.media.GenericMediaMetadata;let{title:o,subtitle:u}=this.params.meta;return us(o)&&(s.metadata.title=o),us(u)&&(s.metadata.subtitle=u),s}createLoadRequest(e){let t=new chrome.cast.media.LoadRequest(e);t.autoplay=!1;let i=this.params.desiredState.seekState.getState();return i.state==="applying"||i.state==="requested"?t.currentTime=this.params.output.isLive$.getValue()?0:i.position/1e3:t.currentTime=0,t}loadMedia(e){let t=this.params.connection.session.loadMedia(e),i=new Promise((r,a)=>{this.loadMediaTimeoutSubscription.add(Xo(cs).subscribe(()=>a(`timeout(${cs})`)))});Promise.race([t,i]).then(()=>{this.log({message:`[loadMedia] completed, format: ${this.params.format}`}),this.params.desiredState.seekState.getState().state==="applying"&&this.params.output.seekedEvent$.next(),this.handleRemoteReady()},r=>{let a=`[prepare] loadMedia failed, format: ${this.params.format}, reason: ${r}`;this.log({message:a}),this.params.output.error$.next({id:"ChromecastProvider.loadMedia",category:os.VIDEO_PIPELINE,message:a,thrown:r})}).finally(()=>{this.loadMediaTimeoutSubscription.unsubscribe()})}logRemoteEvent(e){this.log({message:`[remoteEvent] ${JSON.stringify(e)}`})}};import{clearVideoElement as hs}from"@vkontakte/videoplayer-shared/evergreen";import{clearVideoElement as ru}from"@vkontakte/videoplayer-shared/evergreen";var ps=n=>{try{n.pause(),n.playbackRate=0,ru(n),n.remove()}catch(e){console.error(e)}};import{fromEvent as au,Subscription as su}from"@vkontakte/videoplayer-shared/evergreen";var zr=class{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)}},Kr=window.WeakMap?new WeakMap:new zr,Jr=window.WeakMap?new WeakMap:new Map,nu=(n,e=20)=>{let t=0;return au(n,"ratechange").subscribe(i=>{t++,t>=e&&(n.currentTime=n.currentTime,t=0)})},ae=(n,{audioVideoSyncRate:e})=>{let t=n.querySelector("video"),i=!!t;t?hs(t):(t=document.createElement("video"),n.appendChild(t)),Kr.set(t,i);let r=new su;return r.add(nu(t,e)),Jr.set(t,r),t.setAttribute("crossorigin","anonymous"),t.setAttribute("playsinline","playsinline"),t.controls=!1,t.setAttribute("poster","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),t},se=n=>{Jr.get(n)?.unsubscribe(),Jr.delete(n);let t=Kr.get(n);Kr.delete(n),t?hs(n):ps(n)};import{assertNonNullable as qt,isNonNullable as Re,isNullable as du,fromEvent as Rt,merge as ms,observableFrom as fs,filterChanged as bs,map as Gt,Subject as gs,Subscription as lu,ValueSubject as cu,ErrorCategory as pu}from"@vkontakte/videoplayer-shared/evergreen";import{isNonNullable as Xr,isNullable as ou,Subscription as uu}from"@vkontakte/videoplayer-shared/evergreen";var nr=(n,e,t,{equal:i=(s,o)=>s===o,changed$:r,onError:a}={})=>{let s=n.getState(),o=e(),u=ou(r),d=new uu;return r&&d.add(r.subscribe(l=>{let c=n.getState();i(l,c)&&n.setState(l)},a)),i(o,s)||(t(s),u&&n.setState(s)),d.add(n.stateChangeStarted$.subscribe(l=>{t(l.to),u&&n.setState(l.to)},a)),d},Me=(n,e,t)=>nr(e,()=>n.loop,i=>{Xr(i)&&(n.loop=i)},{onError:t}),ne=(n,e,t,i)=>nr(e,()=>({muted:n.muted,volume:n.volume}),r=>{Xr(r)&&(n.muted=r.muted,n.volume=r.volume)},{equal:(r,a)=>r===a||r?.muted===a?.muted&&r?.volume===a?.volume,changed$:t,onError:i}),ge=(n,e,t,i)=>nr(e,()=>n.playbackRate,r=>{Xr(r)&&(n.playbackRate=r)},{changed$:t,onError:i}),ze=nr;var hu=n=>["__",n.language,n.label].join("|"),mu=(n,e)=>{if(n.id===e)return!0;let[t,i,r]=e.split("|");return n.language===i&&n.label===r},Zr=class n{constructor(){this.available$=new gs;this.current$=new cu(void 0);this.error$=new gs;this.subscription=new lu;this.externalTracks=new Map;this.internalTracks=new Map}connect(e,t,i){this.video=e,this.cueSettings=t.textTrackCuesSettings,this.subscribe();let r=a=>{this.error$.next({id:"TextTracksManager",category:pu.WTF,message:"Generic HtmlVideoTextTrackManager error",thrown:a})};this.subscription.add(this.available$.subscribe(i.availableTextTracks$)),this.subscription.add(this.current$.subscribe(i.currentTextTrack$)),this.subscription.add(this.error$.subscribe(i.error$)),this.subscription.add(ze(t.internalTextTracks,()=>Object.values(this.internalTracks),a=>{Re(a)&&this.setInternal(a)},{equal:(a,s)=>Re(a)&&Re(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="internal"))),onError:r})),this.subscription.add(ze(t.externalTextTracks,()=>Object.values(this.externalTracks),a=>{Re(a)&&this.setExternal(a)},{equal:(a,s)=>Re(a)&&Re(s)&&a.length===s.length&&a.every(({id:o},u)=>o===s[u].id),changed$:this.available$.pipe(Gt(a=>a.filter(({type:s})=>s==="external"))),onError:r})),this.subscription.add(ze(t.currentTextTrack,()=>{if(this.video)return;let a=this.htmlTextTracksAsArray().find(({mode:s})=>s==="showing");return a&&this.htmlTextTrackToITextTrack(a).id},a=>this.select(a),{changed$:this.current$,onError:r})),this.subscription.add(ze(t.textTrackCuesSettings,()=>({}),()=>{if(this.video)for(let a of this.htmlTextTracksAsArray())this.applyCueSettings(a.cues),this.applyCueSettings(a.activeCues)}))}subscribe(){qt(this.video);let{textTracks:e}=this.video;this.subscription.add(Rt(e,"addtrack").subscribe(()=>{let i=this.current$.getValue();i&&this.select(i)})),this.subscription.add(ms(Rt(e,"addtrack"),Rt(e,"removetrack"),fs(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().map(i=>this.htmlTextTrackToITextTrack(i))),bs((i,r)=>i.length===r.length&&i.every(({id:a},s)=>a===r[s].id))).subscribe(this.available$)),this.subscription.add(ms(Rt(e,"change"),fs(["init"])).pipe(Gt(()=>this.htmlTextTracksAsArray().find(({mode:i})=>i==="showing")),Gt(i=>i&&this.htmlTextTrackToITextTrack(i).id),bs()).subscribe(this.current$));let t=i=>this.applyCueSettings(i.target?.activeCues??null);this.subscription.add(Rt(e,"addtrack").subscribe(i=>{i.track?.addEventListener("cuechange",t);let r=a=>{let s=a.target?.cues??null;s&&s.length&&(this.applyCueSettings(a.target?.cues??null),a.target?.removeEventListener("cuechange",r))};i.track?.addEventListener("cuechange",r)})),this.subscription.add(Rt(e,"removetrack").subscribe(i=>{i.track?.removeEventListener("cuechange",t)}))}applyCueSettings(e){if(!e||!e.length)return;let t=this.cueSettings.getState();for(let i of Array.from(e)){let r=i;Re(t.align)&&(r.align=t.align),Re(t.position)&&(r.position=t.position),Re(t.size)&&(r.size=t.size),Re(t.line)&&(r.line=t.line)}}htmlTextTracksAsArray(e=!1){qt(this.video);let t=[...this.video.textTracks];return e?t:t.filter(n.isHealthyTrack)}htmlTextTrackToITextTrack(e){let{language:t,label:i}=e,r=e.id?e.id:hu(e),a=this.externalTracks.has(r),s=(a?this.externalTracks.get(r)?.isAuto:this.internalTracks.get(r)?.isAuto)??r.includes("auto");return a?{id:r,type:"external",isAuto:s,language:t,label:i,url:this.externalTracks.get(r)?.url}:{id:r,type:"internal",isAuto:s,language:t,label:i,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(([,t])=>this.detach(t)),e.filter(({id:t})=>!this.externalTracks.has(t)).forEach(t=>this.attach(t)),Array.from(this.externalTracks).filter(([t])=>!e.find(i=>i.id===t)).forEach(([,t])=>this.detach(t))}setInternal(e){let t=[...this.externalTracks];e.filter(({id:i,language:r,isAuto:a})=>!this.internalTracks.has(i)&&!t.some(([,s])=>s.language===r&&s.isAuto===a)).forEach(i=>this.attach(i)),Array.from(this.internalTracks).filter(([i])=>!e.find(r=>r.id===i)).forEach(([,i])=>this.detach(i))}select(e){qt(this.video);for(let t of this.htmlTextTracksAsArray(!0))t.mode="showing";for(let t of this.htmlTextTracksAsArray(!0))(du(e)||!mu(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){qt(this.video);let t=document.createElement("track");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){qt(this.video);let t=Array.prototype.find.call(this.video.getElementsByTagName("track"),i=>i.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)}},Se=Zr;var _e=class{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 Ss=n=>{let e=n;for(;!(e instanceof Document)&&!(e instanceof ShadowRoot)&&e!==null;)e=e?.parentNode;return e??void 0},ea=n=>{let e=Ss(n);return!!(e&&e.fullscreenElement&&e.fullscreenElement===n)},vs=n=>{let e=Ss(n);return!!(e&&e.pictureInPictureElement&&e.pictureInPictureElement===n)};import{fromEvent as ve,map as Ke,merge as Ts,filterChanged as bu,isNonNullable as Is,Subject as gu,filter as Es,mapTo as xs,combine as Su,once as vu,ErrorCategory as yu,ValueSubject as ks,clientChecker as Tu}from"@vkontakte/videoplayer-shared/evergreen";var fu=3,ys=(n,e,t=fu)=>{let i=0,r=0;for(let a=0;a<n.length;a++){let s=n.start(a),o=n.end(a);if(s<=e&&e<=o){if(i=s,r=o,!t)return{from:i,to:r};for(let u=a-1;u>=0;u--)n.end(u)+t>=i&&(i=n.start(u));for(let u=a+1;u<n.length;u++)n.start(u)-t<=r&&(r=n.end(u))}}return{from:i,to:r}};var oe=n=>{let e=I=>ve(n,I).pipe(xs(void 0)),i=Ts(...["waiting","pause","canplay","play","canplaythrough","playing","seeking","seeked","ended"].map(I=>ve(n,I))).pipe(Ke(I=>I.type==="ended"?n.readyState<2:n.readyState<3),bu()),r=Ts(ve(n,"progress"),ve(n,"timeupdate")).pipe(Ke(()=>ys(n.buffered,n.currentTime))),a=Tu.isSafari?Su({play:e("play").pipe(vu()),playing:e("playing")}).pipe(xs(void 0)):e("playing"),s=ve(n,"volumechange").pipe(Ke(()=>({muted:n.muted,volume:n.volume}))),o=ve(n,"ratechange").pipe(Ke(()=>n.playbackRate)),u=ve(n,"error").pipe(Es(()=>!!(n.error||n.played.length)),Ke(()=>{let I=n.error;return{id:I?`MediaError#${I.code}`:"HtmlVideoError",category:yu.VIDEO_PIPELINE,message:I?I.message:"Error event from HTML video element",thrown:n.error??void 0}})),d=ve(n,"timeupdate").pipe(Ke(()=>n.currentTime)),l=new gu,c=.3,p;d.subscribe(I=>{n.loop&&Is(p)&&Is(I)&&p>=n.duration-c&&I<=c&&l.next(p),p=I});let h=e("pause").pipe(Es(()=>!n.error&&p!==n.duration)),m=ve(n,"enterpictureinpicture"),f=ve(n,"leavepictureinpicture"),b=new ks(vs(n));m.subscribe(()=>b.next(!0)),f.subscribe(()=>b.next(!1));let v=new ks(ea(n));return ve(n,"fullscreenchange").pipe(Ke(()=>ea(n))).subscribe(v),{playing$:a,pause$:h,canplay$:e("canplay"),ended$:e("ended"),looped$:l,error$:u,seeked$:e("seeked"),seeking$:e("seeking"),progress$:e("progress"),loadStart$:e("loadstart"),loadedMetadata$:e("loadedmetadata"),loadedData$:e("loadeddata"),timeUpdate$:d,durationChange$:ve(n,"durationchange").pipe(Ke(()=>n.duration)),isBuffering$:i,currentBuffer$:r,volumeState$:s,playbackRateState$:o,inPiP$:b,inFullscreen$:v}};import{VideoQuality as Je}from"@vkontakte/videoplayer-shared/evergreen";var Xe=n=>{switch(n){case"mobile":return Je.Q_144P;case"lowest":return Je.Q_240P;case"low":return Je.Q_360P;case"sd":case"medium":return Je.Q_480P;case"hd":case"high":return Je.Q_720P;case"fullhd":case"full":return Je.Q_1080P;case"quadhd":case"quad":return Je.Q_1440P;case"ultrahd":case"ultra":return Je.Q_2160P}};import{isNonNullable as G,isNullable as ia,now as Rs,isHigher as ra,isHigherOrEqual as aa,isInvariantQuality as ws,isLower as Ls,isLowerOrEqual as sa,videoSizeToQuality as Iu,assertNotEmptyArray as Ds,assertNonNullable as Eu}from"@vkontakte/videoplayer-shared/evergreen";var ta=!1,Fe={},Ps=n=>{ta=n},As=()=>{Fe={}},$s=n=>{n(Fe)},Wt=(n,e)=>{ta&&(Fe.meta=Fe.meta??{},Fe.meta[n]=e)},Z=class{constructor(e){this.name=e}next(e){if(!ta)return;Fe.series=Fe.series??{};let t=Fe.series[this.name]??[];t.push([Date.now(),e]),Fe.series[this.name]=t}};var xu=new Z("best_bitrate"),Cs=(n,e,t)=>(e-t)*Math.pow(2,-10*n)+t;var na=n=>(e,t)=>n*(Number(e.bitrate)-Number(t.bitrate)),Yt=class{constructor(){this.history={}}recordSelection(e){this.history[e.id]=Rs()}recordSwitch(e){this.last=e}clear(){this.last=void 0,this.history={}}},Vs='Assertion "ABR Tracks is empty array" failed',or=(n,e,t,i)=>{let r=[...e].sort(na(1)),a=[...t].sort(na(1)),s=a.filter(u=>G(u.bitrate)&&G(n.bitrate)?n.bitrate/u.bitrate>i:!0),o=a.at(Math.round(a.length*r.indexOf(n)/(r.length+1)))??a.at(-1);return o&&s.includes(o)?o:s.length?s.at(-1):a.at(0)},Ms=n=>"quality"in n,Bs=(n,e,t,i)=>{let r=G(i?.last?.bitrate)&&G(t?.bitrate)&&i.last.bitrate<t.bitrate?n.trackCooldownIncreaseQuality:n.trackCooldownDecreaseQuality,a=t&&i&&i.history[t.id]&&Rs()-i.history[t.id]<=r&&(!i.last||t.id!==i.last.id);if(t?.id&&i&&!a&&i.recordSelection(t),a&&i?.last){let s=i.last;i?.recordSwitch(s);let o=Ms(s)?"video":"audio",u=Ms(s)?s.quality:s.bitrate;return e({message:`
7
7
  [last ${o} selected] ${u}
8
8
  `}),s}return i?.recordSwitch(t),t},ku=(n,e)=>Math.log(e)/Math.log(n),Ze=(n,{container:e,estimatedThroughput:t,tuning:i,limits:r,reserve:a=0,forwardBufferHealth:s,playbackRate:o,current:u,history:d,visible:l,droppedVideoMaxQualityLimit:c,stallsVideoMaxQualityLimit:p,stallsPredictedThroughput:h,abrLogger:m})=>{Ds(n,Vs);let f=i.containerSizeFactor;if(i.usePixelRatio&&window.devicePixelRatio){let g=window.devicePixelRatio;if(i.pixelRatioMultiplier)f*=i.pixelRatioMultiplier*(g-1)+1;else{let y=i.pixelRatioLogBase,[_=0,pe=0,Ie=0]=i.pixelRatioLogCoefficients,x=ku(y,_*g+pe)+Ie;Number.isFinite(x)&&(f*=x)}}let b=i.limitByContainer&&e&&e.width>0&&e.height>0?{width:e.width*f,height:e.height*f}:void 0,v=i.considerPlaybackRate&&G(o)?o:1,L=n.filter(g=>!ws(g.quality)).sort((g,y)=>ra(g.quality,y.quality)?-1:1),I=L.at(-1)?.quality,k=L.at(0)?.quality,S=ia(r)||G(r.min)&&G(r.max)&&Ls(r.max,r.min)||G(r.min)&&k&&ra(r.min,k)||G(r.max)&&I&&Ls(r.max,I),A=v*Cs(s??.5,i.bitrateFactorAtEmptyBuffer,i.bitrateFactorAtFullBuffer),C={},B=L.filter(g=>{let y=!0;if(b)if(g.size)y=g.size.width<=b.width&&g.size.height<=b.height;else{let z=b&&Iu(b);y=z?sa(g.quality,z):!0}if(!y)return C[g.quality]="FitsContainer",!1;let _=h||t;if(!(G(_)&&isFinite(_)&&G(g.bitrate)?_-a>=g.bitrate*A:!0))return C[g.quality]="FitsThroughput",!1;if(i.lazyQualitySwitch&&G(i.minBufferToSwitchUp)&&u&&!ws(u.quality)&&(s??0)<i.minBufferToSwitchUp&&ra(g.quality,u.quality))return C[g.quality]="Buffer",!1;if(!!c&&aa(g.quality,c))return C[g.quality]="DroppedFramesLimit",!1;if(!!p&&aa(g.quality,p))return C[g.quality]="StallsLimit",!1;let P=S||(ia(r.max)||sa(g.quality,r.max))&&(ia(r.min)||aa(g.quality,r.min)),q=G(l)&&!l?sa(g.quality,i.backgroundVideoQualityLimit):!0;return!P||!q?(C[g.quality]="FitsQualityLimits",!1):!0})[0];B&&B.bitrate&&xu.next(B.bitrate);let F=B??L.at(-1)??n[0];return F.quality!==d?.last?.quality&&m({message:`
9
9
  [VIDEO TRACKS ABR]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/videoplayer-core",
3
- "version": "2.0.119-dev.381e55bc.0",
3
+ "version": "2.0.119-dev.57953263.0",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer core library based on the vk.com platform",
6
6
  "homepage": "https://vk.com",