import"./chunk-kmey03h3.js";var{create:bz,defineProperty:GY,getOwnPropertyDescriptor:Iz,getOwnPropertyNames:xz,getPrototypeOf:Sz}=Object,Tz=Object.prototype.hasOwnProperty,HY=function(Z,Y){return function(){return Z&&(Y=Z(Z=0)),Y}},y0=function(Z,Y){return function(){return Y||Z((Y={exports:{}}).exports,Y),Y.exports}},hz=function(Z,Y,J,X){if(Y&&typeof Y=="object"||typeof Y=="function")for(var Q=xz(Y),z=0,W=Q.length,H;z";default:return Q(N)}}function Q(N){var j=[],K=N.tagName;return N.namespaceURI==="http://www.w3.org/1999/xhtml"&&(K=K.toLowerCase()),j.push("<"+K+q(N)+H(N)),J.indexOf(K)>-1?j.push(" />"):(j.push(">"),N.childNodes.length?j.push.apply(j,N.childNodes.map(X)):N.textContent||N.innerText?j.push(V(N.textContent||N.innerText)):N.innerHTML&&j.push(N.innerHTML),j.push("")),j.join("")}function z(N,j){var K=qY(N[j]);return j==="style"&&Object.keys(N.style).length>0?!0:N.hasOwnProperty(j)&&(K==="string"||K==="boolean"||K==="number")&&j!=="nodeName"&&j!=="className"&&j!=="tagName"&&j!=="textContent"&&j!=="innerText"&&j!=="namespaceURI"&&j!=="innerHTML"}function W(N){if(typeof N=="string")return N;var j="";return Object.keys(N).forEach(function(K){var B=N[K];K=K.replace(/[A-Z]/g,function(R){return"-"+R.toLowerCase()}),j+=K+":"+B+";"}),j}function H(N){var j=N.dataset,K=[];for(var B in j)K.push({name:"data-"+B,value:j[B]});return K.length?G(K):""}function G(N){var j=[];return N.forEach(function(K){var{name:B,value:R}=K;B==="style"&&(R=W(R)),j.push(B+'="'+U(R)+'"')}),j.length?" "+j.join(" "):""}function q(N){var j=[];for(var K in N)z(N,K)&&j.push({name:K,value:N[K]});for(var B in N._attributes)for(var R in N._attributes[B]){var E=N._attributes[B][R],O=(E.prefix?E.prefix+":":"")+R;j.push({name:O,value:E.value})}return N.className&&j.push({name:"class",value:N.className}),j.length?G(j):""}function V(N){var j="";return typeof N=="string"?j=N:N&&(j=N.toString()),j.replace(/&/g,"&").replace(//g,">")}function U(N){return V(N).replace(/"/g,""")}}),BY=y0(function(Z,Y){r8();var J=UY(),X=jY(),Q=NY(),z=KY(),W=kz(),H="http://www.w3.org/1999/xhtml";Y.exports=G;function G(q,V,U){if(!i8(this,G))return new G(q);var N=U===void 0?H:U||null;this.tagName=N===H?String(q).toUpperCase():q,this.nodeName=this.tagName,this.className="",this.dataset={},this.childNodes=[],this.parentNode=null,this.style={},this.ownerDocument=V||null,this.namespaceURI=N,this._attributes={},this.tagName==="INPUT"&&(this.type="text")}G.prototype.type="DOMElement",G.prototype.nodeType=1,G.prototype.appendChild=function(q){return q.parentNode&&q.parentNode.removeChild(q),this.childNodes.push(q),q.parentNode=this,q},G.prototype.replaceChild=function(q,V){q.parentNode&&q.parentNode.removeChild(q);var U=this.childNodes.indexOf(V);return V.parentNode=null,this.childNodes[U]=q,q.parentNode=this,V},G.prototype.removeChild=function(q){var V=this.childNodes.indexOf(q);return this.childNodes.splice(V,1),q.parentNode=null,q},G.prototype.insertBefore=function(q,V){q.parentNode&&q.parentNode.removeChild(q);var U=V==null?-1:this.childNodes.indexOf(V);return U>-1?this.childNodes.splice(U,0,q):this.childNodes.push(q),q.parentNode=this,q},G.prototype.setAttributeNS=function(q,V,U){var N=null,j=V,K=V.indexOf(":");if(K>-1&&(N=V.substr(0,K),j=V.substr(K+1)),this.tagName==="INPUT"&&V==="type")this.type=U;else{var B=this._attributes[q]||(this._attributes[q]={});B[j]={value:U,prefix:N}}},G.prototype.getAttributeNS=function(q,V){var U=this._attributes[q],N=U&&U[V]&&U[V].value;return this.tagName==="INPUT"&&V==="type"?this.type:typeof N!="string"?null:N},G.prototype.removeAttributeNS=function(q,V){var U=this._attributes[q];U&&delete U[V]},G.prototype.hasAttributeNS=function(q,V){var U=this._attributes[q];return!!U&&V in U},G.prototype.setAttribute=function(q,V){return this.setAttributeNS(null,q,V)},G.prototype.getAttribute=function(q){return this.getAttributeNS(null,q)},G.prototype.removeAttribute=function(q){return this.removeAttributeNS(null,q)},G.prototype.hasAttribute=function(q){return this.hasAttributeNS(null,q)},G.prototype.removeEventListener=z,G.prototype.addEventListener=Q,G.prototype.dispatchEvent=X,G.prototype.focus=function(){},G.prototype.toString=function(){return W(this)},G.prototype.getElementsByClassName=function(q){var V=q.split(" "),U=[];return J(this,function(N){if(N.nodeType===1){var j=N.className||"",K=j.split(" ");V.every(function(B){return K.indexOf(B)!==-1})&&U.push(N)}}),U},G.prototype.getElementsByTagName=function(q){q=q.toLowerCase();var V=[];return J(this.childNodes,function(U){U.nodeType===1&&(q==="*"||U.tagName.toLowerCase()===q)&&V.push(U)}),V},G.prototype.contains=function(q){return J(this,function(V){return q===V})||!1}}),yz=y0(function(Z,Y){r8();var J=BY();Y.exports=X;function X(Q){if(!i8(this,X))return new X;this.childNodes=[],this.parentNode=null,this.ownerDocument=Q||null}X.prototype.type="DocumentFragment",X.prototype.nodeType=11,X.prototype.nodeName="#document-fragment",X.prototype.appendChild=J.prototype.appendChild,X.prototype.replaceChild=J.prototype.replaceChild,X.prototype.removeChild=J.prototype.removeChild,X.prototype.toString=function(){return this.childNodes.map(function(Q){return String(Q)}).join("")}}),fz=y0(function(Z,Y){Y.exports=J;function J(X){}J.prototype.initEvent=function(X,Q,z){this.type=X,this.bubbles=Q,this.cancelable=z},J.prototype.preventDefault=function(){}}),pz=y0(function(Z,Y){r8();var J=UY(),X=vz(),Q=gz(),z=BY(),W=yz(),H=fz(),G=jY(),q=NY(),V=KY();Y.exports=U;function U(){if(!i8(this,U))return new U;this.head=this.createElement("head"),this.body=this.createElement("body"),this.documentElement=this.createElement("html"),this.documentElement.appendChild(this.head),this.documentElement.appendChild(this.body),this.childNodes=[this.documentElement],this.nodeType=9}var N=U.prototype;N.createTextNode=function(j){return new Q(j,this)},N.createElementNS=function(j,K){var B=j===null?null:String(j);return new z(K,this,B)},N.createElement=function(j){return new z(j,this)},N.createDocumentFragment=function(){return new W(this)},N.createEvent=function(j){return new H(j)},N.createComment=function(j){return new X(j,this)},N.getElementById=function(j){j=String(j);var K=J(this.childNodes,function(B){if(String(B.id)===j)return B});return K||null},N.getElementsByClassName=z.prototype.getElementsByClassName,N.getElementsByTagName=z.prototype.getElementsByTagName,N.contains=z.prototype.contains,N.removeEventListener=V,N.addEventListener=q,N.dispatchEvent=G}),mz=y0(function(Z,Y){var J=pz();Y.exports=new J}),RY=y0(function(Z,Y){var J=typeof global<"u"?global:typeof window<"u"?window:{},X=mz(),Q;typeof document<"u"?Q=document:(Q=J["__GLOBAL_DOCUMENT_CACHE@4"],Q||(Q=J["__GLOBAL_DOCUMENT_CACHE@4"]=X)),Y.exports=Q});function uz(Z){if(Array.isArray(Z))return Z}function cz(Z,Y){var J=Z==null?null:typeof Symbol<"u"&&Z[Symbol.iterator]||Z["@@iterator"];if(J!=null){var X=[],Q=!0,z=!1,W,H;try{for(J=J.call(Z);!(Q=(W=J.next()).done)&&(X.push(W.value),!(Y&&X.length===Y));Q=!0);}catch(G){z=!0,H=G}finally{try{!Q&&J.return!=null&&J.return()}finally{if(z)throw H}}return X}}function dz(){throw TypeError(`Invalid attempt to destructure non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function u1(Z,Y){(Y==null||Y>Z.length)&&(Y=Z.length);for(var J=0,X=Array(Y);J1&&arguments[1]!==void 0?arguments[1]:3,J,X,Q,z,W,H=Z?[console,Z]:[console],G=(J=console.trace).bind.apply(J,J8(H)),q=(X=console.info).bind.apply(X,J8(H)),V=(Q=console.debug).bind.apply(Q,J8(H)),U=(z=console.warn).bind.apply(z,J8(H)),N=(W=console.error).bind.apply(W,J8(H)),j=Y;return{trace:function(){for(var K=arguments.length,B=Array(K),R=0;Rn8.TRACE))return G.apply(void 0,J8(B))},debug:function(){for(var K=arguments.length,B=Array(K),R=0;Rn8.DEBUG))return V.apply(void 0,J8(B))},info:function(){for(var K=arguments.length,B=Array(K),R=0;Rn8.INFO))return q.apply(void 0,J8(B))},warn:function(){for(var K=arguments.length,B=Array(K),R=0;Rn8.WARN))return U.apply(void 0,J8(B))},error:function(){for(var K=arguments.length,B=Array(K),R=0;Rn8.ERROR))return N.apply(void 0,J8(B))},get level(){return j},set level(K){K!==this.level&&(j=K!=null?K:Y)}}},j0=rz("[mux]"),g1=i0(q8());function c1(){var Z=g1.default.doNotTrack||g1.default.navigator&&g1.default.navigator.doNotTrack;return Z==="1"}function r(Z){if(Z===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return Z}r8();function O0(Z,Y){if(!i8(Z,Y))throw TypeError("Cannot call a class as a function")}function ZY(Z,Y){for(var J=0;J=0)&&(J[Q]=Z[Q]);return J}function ZW(Z,Y){if(Z==null)return{};var J=ez(Z,Y),X,Q;if(Object.getOwnPropertySymbols){var z=Object.getOwnPropertySymbols(Z);for(Q=0;Q=0)&&Object.prototype.propertyIsEnumerable.call(Z,X)&&(J[X]=Z[X])}return J}function YW(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(Z){return!1}}VY();function JW(Z,Y){return Y&&(qY(Y)==="object"||typeof Y=="function")?Y:r(Z)}function XW(Z){var Y=YW();return function(){var J=G9(Z),X;if(Y){var Q=G9(this).constructor;X=Reflect.construct(J,arguments,Q)}else X=J.apply(this,arguments);return JW(this,X)}}var X8=function(Z){return g9(Z)[0]},g9=function(Z){if(typeof Z!="string"||Z==="")return["localhost"];var Y=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,J=Z.match(Y)||[],X=J[4],Q;return X&&(Q=(X.match(/[^\.]+\.[^\.]+$/)||[])[0]),[X,Q]},k1=i0(q8()),QW={exists:function(){var Z=k1.default.performance,Y=Z&&Z.timing;return Y!==void 0},domContentLoadedEventEnd:function(){var Z=k1.default.performance,Y=Z&&Z.timing;return Y&&Y.domContentLoadedEventEnd},navigationStart:function(){var Z=k1.default.performance,Y=Z&&Z.timing;return Y&&Y.navigationStart}},j7=QW;function D0(Z,Y,J){J=J===void 0?1:J,Z[Y]=Z[Y]||0,Z[Y]+=J}function k9(Z){for(var Y=1;Y=0||z.toLowerCase().indexOf("x-litix-")===0)&&(Y[z]=Q.join(": "))}}),Y}function N7(Z){if(Z){var Y=AY.find(function(J){return Z[J]!==void 0});return Y?Z[Y]:void 0}}var HW=function(Z){var Y={};for(var J in Z){var X=Z[J],Q=X["DATA-ID"].search("io.litix.data.");if(Q!==-1){var z=X["DATA-ID"].replace("io.litix.data.","");Y[z]=X.VALUE}}return Y},OY=HW,q7=function(Z){if(!Z)return{};var Y=j7.navigationStart(),J=Z.loading,X=J?J.start:Z.trequest,Q=J?J.first:Z.tfirst,z=J?J.end:Z.tload;return{bytesLoaded:Z.total,requestStart:Math.round(Y+X),responseStart:Math.round(Y+Q),responseEnd:Math.round(Y+z)}},x9=function(Z){if(!(!Z||typeof Z.getAllResponseHeaders!="function"))return n1(Z.getAllResponseHeaders())},qW=function(Z,Y,J){var X=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},Q=arguments.length>4?arguments[4]:void 0,z=Z.log,W=Z.utils.secondsToMs,H=function(E){var O=parseInt(Q.version),A;return O===1&&E.programDateTime!==null&&(A=E.programDateTime),O===0&&E.pdt!==null&&(A=E.pdt),A};if(!j7.exists()){z.warn("performance timing not supported. Not tracking HLS.js.");return}var G=function(E,O){return Z.emit(Y,E,O)},q=function(E,O){var{levels:A,audioTracks:$,url:L,stats:M,networkDetails:w,sessionData:_}=O,C={},D={};A.forEach(function(p,k){C[k]={width:p.width,height:p.height,bitrate:p.bitrate,attrs:p.attrs}}),$.forEach(function(p,k){D[k]={name:p.name,language:p.lang,bitrate:p.bitrate}});var I=q7(M),h=I.bytesLoaded,y=I.requestStart,c=I.responseStart,T=I.responseEnd;G("requestcompleted",l1(k9({},OY(_)),{request_event_type:E,request_bytes_loaded:h,request_start:y,request_response_start:c,request_response_end:T,request_type:"manifest",request_hostname:X8(L),request_response_headers:x9(w),request_rendition_lists:{media:C,audio:D,video:{}}}))};J.on(Q.Events.MANIFEST_LOADED,q);var V=function(E,O){var{details:A,level:$,networkDetails:L,stats:M}=O,w=q7(M),_=w.bytesLoaded,C=w.requestStart,D=w.responseStart,I=w.responseEnd,h=A.fragments[A.fragments.length-1],y=H(h)+W(h.duration);G("requestcompleted",{request_event_type:E,request_bytes_loaded:_,request_start:C,request_response_start:D,request_response_end:I,request_current_level:$,request_type:"manifest",request_hostname:X8(A.url),request_response_headers:x9(L),video_holdback:A.holdBack&&W(A.holdBack),video_part_holdback:A.partHoldBack&&W(A.partHoldBack),video_part_target_duration:A.partTarget&&W(A.partTarget),video_target_duration:A.targetduration&&W(A.targetduration),video_source_is_live:A.live,player_manifest_newest_program_time:isNaN(y)?void 0:y})};J.on(Q.Events.LEVEL_LOADED,V);var U=function(E,O){var{details:A,networkDetails:$,stats:L}=O,M=q7(L),w=M.bytesLoaded,_=M.requestStart,C=M.responseStart,D=M.responseEnd;G("requestcompleted",{request_event_type:E,request_bytes_loaded:w,request_start:_,request_response_start:C,request_response_end:D,request_type:"manifest",request_hostname:X8(A.url),request_response_headers:x9($)})};J.on(Q.Events.AUDIO_TRACK_LOADED,U);var N=function(E,O){var{stats:A,networkDetails:$,frag:L}=O;A=A||L.stats;var M=q7(A),w=M.bytesLoaded,_=M.requestStart,C=M.responseStart,D=M.responseEnd,I=$?x9($):void 0,h={request_event_type:E,request_bytes_loaded:w,request_start:_,request_response_start:C,request_response_end:D,request_hostname:$?X8($.responseURL):void 0,request_id:I?N7(I):void 0,request_response_headers:I,request_media_duration:L.duration,request_url:$==null?void 0:$.responseURL};L.type==="main"?(h.request_type="media",h.request_current_level=L.level,h.request_video_width=(J.levels[L.level]||{}).width,h.request_video_height=(J.levels[L.level]||{}).height,h.request_labeled_bitrate=(J.levels[L.level]||{}).bitrate):h.request_type=L.type,G("requestcompleted",h)};J.on(Q.Events.FRAG_LOADED,N);var j=function(E,O){var A=O.frag,$=A.start,L=H(A),M={currentFragmentPDT:L,currentFragmentStart:W($)};G("fragmentchange",M)};J.on(Q.Events.FRAG_CHANGED,j);var K=function(E,O){var{type:A,details:$,response:L,fatal:M,frag:w,networkDetails:_}=O,C=(w==null?void 0:w.url)||O.url||"",D=_?x9(_):void 0;if(($===Q.ErrorDetails.MANIFEST_LOAD_ERROR||$===Q.ErrorDetails.MANIFEST_LOAD_TIMEOUT||$===Q.ErrorDetails.FRAG_LOAD_ERROR||$===Q.ErrorDetails.FRAG_LOAD_TIMEOUT||$===Q.ErrorDetails.LEVEL_LOAD_ERROR||$===Q.ErrorDetails.LEVEL_LOAD_TIMEOUT||$===Q.ErrorDetails.AUDIO_TRACK_LOAD_ERROR||$===Q.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT||$===Q.ErrorDetails.SUBTITLE_LOAD_ERROR||$===Q.ErrorDetails.SUBTITLE_LOAD_TIMEOUT||$===Q.ErrorDetails.KEY_LOAD_ERROR||$===Q.ErrorDetails.KEY_LOAD_TIMEOUT)&&G("requestfailed",{request_error:$,request_url:C,request_hostname:X8(C),request_id:D?N7(D):void 0,request_type:$===Q.ErrorDetails.FRAG_LOAD_ERROR||$===Q.ErrorDetails.FRAG_LOAD_TIMEOUT?"media":$===Q.ErrorDetails.AUDIO_TRACK_LOAD_ERROR||$===Q.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT?"audio":$===Q.ErrorDetails.SUBTITLE_LOAD_ERROR||$===Q.ErrorDetails.SUBTITLE_LOAD_TIMEOUT?"subtitle":$===Q.ErrorDetails.KEY_LOAD_ERROR||$===Q.ErrorDetails.KEY_LOAD_TIMEOUT?"encryption":"manifest",request_error_code:L==null?void 0:L.code,request_error_text:L==null?void 0:L.text}),M){var I,h="".concat(C?"url: ".concat(C,` `):"")+"".concat(L&&(L.code||L.text)?"response: ".concat(L.code,", ").concat(L.text,` `):"")+"".concat(O.reason?"failure reason: ".concat(O.reason,` `):"")+"".concat(O.level?"level: ".concat(O.level,` `):"")+"".concat(O.parent?"parent stream controller: ".concat(O.parent,` `):"")+"".concat(O.buffer?"buffer length: ".concat(O.buffer,` `):"")+"".concat(O.error?"error: ".concat(O.error,` `):"")+"".concat(O.event?"event: ".concat(O.event,` `):"")+"".concat(O.err?"error message: ".concat((I=O.err)===null||I===void 0?void 0:I.message,` `):"");G("error",{player_error_code:A,player_error_message:$,player_error_context:h})}};J.on(Q.Events.ERROR,K);var B=function(E,O){var A=O.frag,$=A&&A._url||"";G("requestcanceled",{request_event_type:E,request_url:$,request_type:"media",request_hostname:X8($)})};J.on(Q.Events.FRAG_LOAD_EMERGENCY_ABORTED,B);var R=function(E,O){var A=O.level,$=J.levels[A];if($&&$.attrs&&$.attrs.BANDWIDTH){var L=$.attrs.BANDWIDTH,M,w=parseFloat($.attrs["FRAME-RATE"]);isNaN(w)||(M=w),L?G("renditionchange",{video_source_fps:M,video_source_bitrate:L,video_source_width:$.width,video_source_height:$.height,video_source_rendition_name:$.name,video_source_codec:$==null?void 0:$.videoCodec}):z.warn("missing BANDWIDTH from HLS manifest parsed by HLS.js")}};J.on(Q.Events.LEVEL_SWITCHED,R),J._stopMuxMonitor=function(){J.off(Q.Events.MANIFEST_LOADED,q),J.off(Q.Events.LEVEL_LOADED,V),J.off(Q.Events.AUDIO_TRACK_LOADED,U),J.off(Q.Events.FRAG_LOADED,N),J.off(Q.Events.FRAG_CHANGED,j),J.off(Q.Events.ERROR,K),J.off(Q.Events.FRAG_LOAD_EMERGENCY_ABORTED,B),J.off(Q.Events.LEVEL_SWITCHED,R),J.off(Q.Events.DESTROYING,J._stopMuxMonitor),delete J._stopMuxMonitor},J.on(Q.Events.DESTROYING,J._stopMuxMonitor)},VW=function(Z){Z&&typeof Z._stopMuxMonitor=="function"&&Z._stopMuxMonitor()},YY=function(Z,Y){if(!Z||!Z.requestEndDate)return{};var J=X8(Z.url),X=Z.url,Q=Z.bytesLoaded,z=new Date(Z.requestStartDate).getTime(),W=new Date(Z.firstByteDate).getTime(),H=new Date(Z.requestEndDate).getTime(),G=isNaN(Z.duration)?0:Z.duration,q=typeof Y.getMetricsFor=="function"?Y.getMetricsFor(Z.mediaType).HttpList:Y.getDashMetrics().getHttpRequests(Z.mediaType),V;q.length>0&&(V=n1(q[q.length-1]._responseHeaders||""));var U=V?N7(V):void 0;return{requestStart:z,requestResponseStart:W,requestResponseEnd:H,requestBytesLoaded:Q,requestResponseHeaders:V,requestMediaDuration:G,requestHostname:J,requestUrl:X,requestId:U}},UW=function(Z,Y){if(typeof Y.getCurrentRepresentationForType=="function"){var J=Y.getCurrentRepresentationForType(Z);return J?{currentLevel:J.absoluteIndex,renditionWidth:J.width||null,renditionHeight:J.height||null,renditionBitrate:J.bandwidth}:{}}var X=Y.getQualityFor(Z),Q=Y.getCurrentTrackFor(Z).bitrateList;return Q?{currentLevel:X,renditionWidth:Q[X].width||null,renditionHeight:Q[X].height||null,renditionBitrate:Q[X].bandwidth}:{}},jW=function(Z){var Y;return(Y=Z.match(/.*codecs\*?="(.*)"/))===null||Y===void 0?void 0:Y[1]},NW=function(Z){try{var Y,J,X=(J=Z.getVersion)===null||J===void 0||(Y=J.call(Z))===null||Y===void 0?void 0:Y.split(".").map(function(Q){return parseInt(Q)})[0];return X}catch(Q){return!1}},KW=function(Z,Y,J){var X=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},Q=Z.log;if(!J||!J.on){Q.warn("Invalid dash.js player reference. Monitoring blocked.");return}var z=NW(J),W=function(A,$){return Z.emit(Y,A,$)},H=function(A){var{type:$,data:L}=A,M=(L||{}).url;W("requestcompleted",{request_event_type:$,request_start:0,request_response_start:0,request_response_end:0,request_bytes_loaded:-1,request_type:"manifest",request_hostname:X8(M),request_url:M})};J.on("manifestLoaded",H);var G={},q=function(A){if(typeof A.getRequests!="function")return null;var $=A.getRequests({state:"executed"});return $.length===0?null:$[$.length-1]},V=function(A){var{type:$,fragmentModel:L,chunk:M}=A,w=q(L);U({type:$,request:w,chunk:M})},U=function(A){var{type:$,chunk:L,request:M}=A,w=(L||{}).mediaInfo,_=w||{},C=_.type,D=_.bitrateList;D=D||[];var I={};D.forEach(function(f,s){I[s]={},I[s].width=f.width,I[s].height=f.height,I[s].bitrate=f.bandwidth,I[s].attrs={}}),C==="video"?G.video=I:C==="audio"?G.audio=I:G.media=I;var h=YY(M,J),y=h.requestStart,c=h.requestResponseStart,T=h.requestResponseEnd,p=h.requestResponseHeaders,k=h.requestMediaDuration,l=h.requestHostname,i=h.requestUrl,g=h.requestId;W("requestcompleted",{request_event_type:$,request_start:y,request_response_start:c,request_response_end:T,request_bytes_loaded:-1,request_type:C+"_init",request_response_headers:p,request_hostname:l,request_id:g,request_url:i,request_media_duration:k,request_rendition_lists:G})};z>=4?J.on("initFragmentLoaded",U):J.on("initFragmentLoaded",V);var N=function(A){var{type:$,fragmentModel:L,chunk:M}=A,w=q(L);j({type:$,request:w,chunk:M})},j=function(A){var{type:$,chunk:L,request:M}=A,w=L||{},_=w.mediaInfo,C=w.start,D=_||{},I=D.type,h=YY(M,J),y=h.requestStart,c=h.requestResponseStart,T=h.requestResponseEnd,p=h.requestBytesLoaded,k=h.requestResponseHeaders,l=h.requestMediaDuration,i=h.requestHostname,g=h.requestUrl,f=h.requestId,s=UW(I,J),Q0=s.currentLevel,e=s.renditionWidth,z0=s.renditionHeight,M0=s.renditionBitrate;W("requestcompleted",{request_event_type:$,request_start:y,request_response_start:c,request_response_end:T,request_bytes_loaded:p,request_type:I,request_response_headers:k,request_hostname:i,request_id:f,request_url:g,request_media_start_time:C,request_media_duration:l,request_current_level:Q0,request_labeled_bitrate:M0,request_video_width:e,request_video_height:z0})};z>=4?J.on("mediaFragmentLoaded",j):J.on("mediaFragmentLoaded",N);var K={video:void 0,audio:void 0,totalBitrate:void 0},B=function(){if(K.video&&typeof K.video.bitrate=="number"){if(!(K.video.width&&K.video.height)){Q.warn("have bitrate info for video but missing width/height");return}var A=K.video.bitrate;if(K.audio&&typeof K.audio.bitrate=="number"&&(A+=K.audio.bitrate),A!==K.totalBitrate)return K.totalBitrate=A,{video_source_bitrate:A,video_source_height:K.video.height,video_source_width:K.video.width,video_source_codec:jW(K.video.codec)}}},R=function(A,$,L){var M=A.mediaType;if(M==="audio"||M==="video"){var w;if(typeof J.getRepresentationsByType=="function")if(A.newRepresentation)w={bitrate:A.newRepresentation.bandwidth,width:A.newRepresentation.width,height:A.newRepresentation.height,qualityIndex:A.newRepresentation.absoluteIndex};else{var _=J.getRepresentationsByType(M);if(_&&typeof A.newQuality=="number"){var C=_.find(function(I){return I.absoluteIndex===A.newQuality||I.index===A.newQuality});C&&(w={bitrate:C.bandwidth,width:C.width,height:C.height,qualityIndex:A.newQuality})}}else{if(typeof A.newQuality!="number"){Q.warn("missing evt.newQuality in qualityChangeRendered event",A);return}w=J.getBitrateInfoListFor(M).find(function(I){var h=I.qualityIndex;return h===A.newQuality})}if(!(w&&typeof w.bitrate=="number")){Q.warn("missing bitrate info for ".concat(M));return}K[M]=l1(k9({},w),{codec:J.getCurrentTrackFor(M).codec});var D=B();D&&W("renditionchange",D)}};J.on("qualityChangeRendered",R);var E=function(A){var{request:$,mediaType:L}=A;$=$||{},W("requestcanceled",{request_event_type:$.type+"_"+$.action,request_url:$.url,request_type:L,request_hostname:X8($.url)})};J.on("fragmentLoadingAbandoned",E);var O=function(A){var $=A.error,L,M,w=($==null||(L=$.data)===null||L===void 0?void 0:L.request)||{},_=($==null||(M=$.data)===null||M===void 0?void 0:M.response)||{};($==null?void 0:$.code)===27&&W("requestfailed",{request_error:w.type+"_"+w.action,request_url:w.url,request_hostname:X8(w.url),request_type:w.mediaType,request_error_code:_.status,request_error_text:_.statusText});var C="".concat(w!=null&&w.url?"url: ".concat(w.url,` `):"")+"".concat(_!=null&&_.status||_!=null&&_.statusText?"response: ".concat(_==null?void 0:_.status,", ").concat(_==null?void 0:_.statusText,` `):"");W("error",{player_error_code:$==null?void 0:$.code,player_error_message:$==null?void 0:$.message,player_error_context:C})};J.on("error",O),J._stopMuxMonitor=function(){J.off("manifestLoaded",H),J.off("initFragmentLoaded",U),J.off("mediaFragmentLoaded",j),J.off("qualityChangeRendered",R),J.off("error",O),J.off("fragmentLoadingAbandoned",E),delete J._stopMuxMonitor}},BW=function(Z){Z&&typeof Z._stopMuxMonitor=="function"&&Z._stopMuxMonitor()},JY=0,RW=function(){function Z(){O0(this,Z),v(this,"_listeners",void 0)}return r0(Z,[{key:"on",value:function(Y,J,X){return J._eventEmitterGuid=J._eventEmitterGuid||++JY,this._listeners=this._listeners||{},this._listeners[Y]=this._listeners[Y]||[],X&&(J=J.bind(X)),this._listeners[Y].push(J),J}},{key:"off",value:function(Y,J){var X=this._listeners&&this._listeners[Y];X&&X.forEach(function(Q,z){Q._eventEmitterGuid===J._eventEmitterGuid&&X.splice(z,1)})}},{key:"one",value:function(Y,J,X){var Q=this;J._eventEmitterGuid=J._eventEmitterGuid||++JY;var z=function(){Q.off(Y,z),J.apply(X||this,arguments)};z._eventEmitterGuid=J._eventEmitterGuid,this.on(Y,z)}},{key:"emit",value:function(Y,J){var X=this;if(this._listeners){J=J||{};var Q=this._listeners["before"+Y]||[],z=this._listeners["before*"]||[],W=this._listeners[Y]||[],H=this._listeners["after"+Y]||[],G=function(q,V){q=q.slice(),q.forEach(function(U){U.call(X,{type:Y},V)})};G(Q,J),G(z,J),G(W,J),G(H,J)}}}]),Z}(),FW=RW,y1=i0(q8()),EW=function(){function Z(Y){var J=this;O0(this,Z),v(this,"_playbackHeartbeatInterval",void 0),v(this,"_playheadShouldBeProgressing",void 0),v(this,"pm",void 0),this.pm=Y,this._playbackHeartbeatInterval=null,this._playheadShouldBeProgressing=!1,Y.on("playing",function(){J._playheadShouldBeProgressing=!0}),Y.on("play",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("playing",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("adbreakstart",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("adplay",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("adplaying",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("devicewake",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("viewstart",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("rebufferstart",this._startPlaybackHeartbeatInterval.bind(this)),Y.on("pause",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("ended",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("viewend",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("error",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("aderror",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("adpause",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("adended",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("adbreakend",this._stopPlaybackHeartbeatInterval.bind(this)),Y.on("seeked",function(){Y.data.player_is_paused?J._stopPlaybackHeartbeatInterval():J._startPlaybackHeartbeatInterval()}),Y.on("timeupdate",function(){J._playbackHeartbeatInterval!==null&&Y.emit("playbackheartbeat")}),Y.on("devicesleep",function(X,Q){J._playbackHeartbeatInterval!==null&&(y1.default.clearInterval(J._playbackHeartbeatInterval),Y.emit("playbackheartbeatend",{viewer_time:Q.viewer_time}),J._playbackHeartbeatInterval=null)})}return r0(Z,[{key:"_startPlaybackHeartbeatInterval",value:function(){var Y=this;this._playbackHeartbeatInterval===null&&(this.pm.emit("playbackheartbeat"),this._playbackHeartbeatInterval=y1.default.setInterval(function(){Y.pm.emit("playbackheartbeat")},this.pm.playbackHeartbeatTime))}},{key:"_stopPlaybackHeartbeatInterval",value:function(){this._playheadShouldBeProgressing=!1,this._playbackHeartbeatInterval!==null&&(y1.default.clearInterval(this._playbackHeartbeatInterval),this.pm.emit("playbackheartbeatend"),this._playbackHeartbeatInterval=null)}}]),Z}(),AW=EW,OW=function Z(Y){var J=this;O0(this,Z),v(this,"viewErrored",void 0),Y.on("viewinit",function(){J.viewErrored=!1}),Y.on("error",function(X,Q){try{var z=Y.errorTranslator({player_error_code:Q.player_error_code,player_error_message:Q.player_error_message,player_error_context:Q.player_error_context,player_error_severity:Q.player_error_severity,player_error_business_exception:Q.player_error_business_exception});z&&(Y.data.player_error_code=z.player_error_code||Q.player_error_code,Y.data.player_error_message=z.player_error_message||Q.player_error_message,Y.data.player_error_context=z.player_error_context||Q.player_error_context,Y.data.player_error_severity=z.player_error_severity||Q.player_error_severity,Y.data.player_error_business_exception=z.player_error_business_exception||Q.player_error_business_exception,J.viewErrored=!0)}catch(W){Y.mux.log.warn("Exception in error translator callback.",W),J.viewErrored=!0}}),Y.on("aftererror",function(){var X,Q,z,W,H;(X=Y.data)===null||X===void 0||delete X.player_error_code,(Q=Y.data)===null||Q===void 0||delete Q.player_error_message,(z=Y.data)===null||z===void 0||delete z.player_error_context,(W=Y.data)===null||W===void 0||delete W.player_error_severity,(H=Y.data)===null||H===void 0||delete H.player_error_business_exception})},$W=OW,MW=function(){function Z(Y){O0(this,Z),v(this,"_watchTimeTrackerLastCheckedTime",void 0),v(this,"pm",void 0),this.pm=Y,this._watchTimeTrackerLastCheckedTime=null,Y.on("playbackheartbeat",this._updateWatchTime.bind(this)),Y.on("playbackheartbeatend",this._clearWatchTimeState.bind(this))}return r0(Z,[{key:"_updateWatchTime",value:function(Y,J){var X=J.viewer_time;this._watchTimeTrackerLastCheckedTime===null&&(this._watchTimeTrackerLastCheckedTime=X),D0(this.pm.data,"view_watch_time",X-this._watchTimeTrackerLastCheckedTime),this._watchTimeTrackerLastCheckedTime=X}},{key:"_clearWatchTimeState",value:function(Y,J){this._updateWatchTime(Y,J),this._watchTimeTrackerLastCheckedTime=null}}]),Z}(),wW=MW,LW=function(){function Z(Y){var J=this;O0(this,Z),v(this,"_playbackTimeTrackerLastPlayheadPosition",void 0),v(this,"_lastTime",void 0),v(this,"_isAdPlaying",void 0),v(this,"_callbackUpdatePlaybackTime",void 0),v(this,"pm",void 0),this.pm=Y,this._playbackTimeTrackerLastPlayheadPosition=-1,this._lastTime=I0.now(),this._isAdPlaying=!1,this._callbackUpdatePlaybackTime=null,Y.on("viewinit",function(){J.pm.data.view_playing_time_ms_cumulative=0});var X=this._startPlaybackTimeTracking.bind(this);Y.on("playing",X),Y.on("adplaying",X);var Q=function(){J.pm.data.player_is_paused||X()};Y.on("seeked",Q),Y.on("rebufferend",Q);var z=this._stopPlaybackTimeTracking.bind(this);Y.on("playbackheartbeatend",z),Y.on("seeking",z),Y.on("rebufferstart",z),Y.on("adplaying",function(){J._isAdPlaying=!0}),Y.on("adended",function(){J._isAdPlaying=!1}),Y.on("adpause",function(){J._isAdPlaying=!1}),Y.on("adbreakstart",function(){J._isAdPlaying=!1}),Y.on("adbreakend",function(){J._isAdPlaying=!1}),Y.on("adplay",function(){J._isAdPlaying=!1}),Y.on("viewinit",function(){J._playbackTimeTrackerLastPlayheadPosition=-1,J._lastTime=I0.now(),J._isAdPlaying=!1,J._callbackUpdatePlaybackTime=null})}return r0(Z,[{key:"_startPlaybackTimeTracking",value:function(){this._callbackUpdatePlaybackTime===null&&(this._callbackUpdatePlaybackTime=this._updatePlaybackTime.bind(this),this._playbackTimeTrackerLastPlayheadPosition=this.pm.data.player_playhead_time,this._lastTime=I0.now(),this.pm.on("playbackheartbeat",this._callbackUpdatePlaybackTime))}},{key:"_stopPlaybackTimeTracking",value:function(){this._callbackUpdatePlaybackTime&&(this._updatePlaybackTime(),this.pm.off("playbackheartbeat",this._callbackUpdatePlaybackTime),this._callbackUpdatePlaybackTime=null,this._playbackTimeTrackerLastPlayheadPosition=-1)}},{key:"_updatePlaybackTime",value:function(){var Y=this.pm.data.player_playhead_time||0,J=I0.now(),X=J-this._lastTime,Q=-1;this._playbackTimeTrackerLastPlayheadPosition>=0&&Y>this._playbackTimeTrackerLastPlayheadPosition?Q=Y-this._playbackTimeTrackerLastPlayheadPosition:this._isAdPlaying&&(Q=X),Q>0&&Q<=1000&&D0(this.pm.data,"view_content_playback_time",Q),this._callbackUpdatePlaybackTime!==null&&X>0&&X<=1000&&(this._isAdPlaying&&D0(this.pm.data,"ad_playing_time_ms_cumulative",X),D0(this.pm.data,"view_playing_time_ms_cumulative",X)),this._playbackTimeTrackerLastPlayheadPosition=Y,this._lastTime=J}}]),Z}(),_W=LW,DW=function(){function Z(Y){O0(this,Z),v(this,"pm",void 0),this.pm=Y;var J=this._updatePlayheadTime.bind(this);Y.on("playbackheartbeat",J),Y.on("playbackheartbeatend",J),Y.on("timeupdate",J),Y.on("destroy",function(){Y.off("timeupdate",J)})}return r0(Z,[{key:"_updateMaxPlayheadPosition",value:function(){this.pm.data.view_max_playhead_position=typeof this.pm.data.view_max_playhead_position>"u"?this.pm.data.player_playhead_time:Math.max(this.pm.data.view_max_playhead_position,this.pm.data.player_playhead_time)}},{key:"_updatePlayheadTime",value:function(Y,J){var X=this,Q=function(){X.pm.currentFragmentPDT&&X.pm.currentFragmentStart&&(X.pm.data.player_program_time=X.pm.currentFragmentPDT+X.pm.data.player_playhead_time-X.pm.currentFragmentStart)};if(J&&J.player_playhead_time)this.pm.data.player_playhead_time=J.player_playhead_time,Q(),this._updateMaxPlayheadPosition();else if(this.pm.getPlayheadTime){var z=this.pm.getPlayheadTime();typeof z<"u"&&(this.pm.data.player_playhead_time=z,Q(),this._updateMaxPlayheadPosition())}}}]),Z}(),CW=DW,XY=300000,PW=function Z(Y){if(O0(this,Z),!Y.disableRebufferTracking){var J,X=function(z,W){Q(W),J=void 0},Q=function(z){if(J){var W=z.viewer_time-J;D0(Y.data,"view_rebuffer_duration",W),J=z.viewer_time,Y.data.view_rebuffer_duration>XY&&(Y.emit("viewend"),Y.send("viewend"),Y.mux.log.warn("Ending view after rebuffering for longer than ".concat(XY,"ms, future events will be ignored unless a programchange or videochange occurs.")))}Y.data.view_watch_time>=0&&Y.data.view_rebuffer_count>0&&(Y.data.view_rebuffer_frequency=Y.data.view_rebuffer_count/Y.data.view_watch_time,Y.data.view_rebuffer_percentage=Y.data.view_rebuffer_duration/Y.data.view_watch_time)};Y.on("playbackheartbeat",function(z,W){return Q(W)}),Y.on("rebufferstart",function(z,W){J||(D0(Y.data,"view_rebuffer_count",1),J=W.viewer_time,Y.one("rebufferend",X))}),Y.on("viewinit",function(){J=void 0,Y.off("rebufferend",X)})}},bW=PW,IW=function(){function Z(Y){var J=this;O0(this,Z),v(this,"_lastCheckedTime",void 0),v(this,"_lastPlayheadTime",void 0),v(this,"_lastPlayheadTimeUpdatedTime",void 0),v(this,"_rebuffering",void 0),v(this,"pm",void 0),this.pm=Y,!(Y.disableRebufferTracking||Y.disablePlayheadRebufferTracking)&&(this._lastCheckedTime=null,this._lastPlayheadTime=null,this._lastPlayheadTimeUpdatedTime=null,Y.on("playbackheartbeat",this._checkIfRebuffering.bind(this)),Y.on("playbackheartbeatend",this._cleanupRebufferTracker.bind(this)),Y.on("seeking",function(){J._cleanupRebufferTracker(null,{viewer_time:I0.now()})}))}return r0(Z,[{key:"_checkIfRebuffering",value:function(Y,J){if(this.pm.seekingTracker.isSeeking||this.pm.adTracker.isAdBreak||!this.pm.playbackHeartbeat._playheadShouldBeProgressing){this._cleanupRebufferTracker(Y,J);return}if(this._lastCheckedTime===null){this._prepareRebufferTrackerState(J.viewer_time);return}if(this._lastPlayheadTime!==this.pm.data.player_playhead_time){this._cleanupRebufferTracker(Y,J,!0);return}var X=J.viewer_time-this._lastPlayheadTimeUpdatedTime;typeof this.pm.sustainedRebufferThreshold=="number"&&X>=this.pm.sustainedRebufferThreshold&&(this._rebuffering||(this._rebuffering=!0,this.pm.emit("rebufferstart",{viewer_time:this._lastPlayheadTimeUpdatedTime}))),this._lastCheckedTime=J.viewer_time}},{key:"_clearRebufferTrackerState",value:function(){this._lastCheckedTime=null,this._lastPlayheadTime=null,this._lastPlayheadTimeUpdatedTime=null}},{key:"_prepareRebufferTrackerState",value:function(Y){this._lastCheckedTime=Y,this._lastPlayheadTime=this.pm.data.player_playhead_time,this._lastPlayheadTimeUpdatedTime=Y}},{key:"_cleanupRebufferTracker",value:function(Y,J){var X=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(this._rebuffering)this._rebuffering=!1,this.pm.emit("rebufferend",{viewer_time:J.viewer_time});else{if(this._lastCheckedTime===null)return;var Q=this.pm.data.player_playhead_time-this._lastPlayheadTime,z=J.viewer_time-this._lastPlayheadTimeUpdatedTime;typeof this.pm.minimumRebufferDuration=="number"&&Q>0&&z-Q>this.pm.minimumRebufferDuration&&(this._lastCheckedTime=null,this.pm.emit("rebufferstart",{viewer_time:this._lastPlayheadTimeUpdatedTime}),this.pm.emit("rebufferend",{viewer_time:this._lastPlayheadTimeUpdatedTime+z-Q}))}X?this._prepareRebufferTrackerState(J.viewer_time):this._clearRebufferTrackerState()}}]),Z}(),xW=IW,SW=function(){function Z(Y){var J=this;O0(this,Z),v(this,"pm",void 0),this.pm=Y,Y.on("viewinit",function(){var X=Y.data,Q=X.view_id;if(!X.view_program_changed){var z=function(W,H){var G=H.viewer_time;W.type==="playing"&&typeof Y.data.view_time_to_first_frame>"u"?J.calculateTimeToFirstFrame(G||I0.now(),Q):W.type==="adplaying"&&(typeof Y.data.view_time_to_first_frame>"u"||J._inPrerollPosition())&&J.calculateTimeToFirstFrame(G||I0.now(),Q)};Y.one("playing",z),Y.one("adplaying",z),Y.one("viewend",function(){Y.off("playing",z),Y.off("adplaying",z)})}})}return r0(Z,[{key:"_inPrerollPosition",value:function(){return typeof this.pm.data.view_content_playback_time>"u"||this.pm.data.view_content_playback_time<=1000}},{key:"calculateTimeToFirstFrame",value:function(Y,J){J===this.pm.data.view_id&&(this.pm.watchTimeTracker._updateWatchTime(null,{viewer_time:Y}),this.pm.data.view_time_to_first_frame=this.pm.data.view_watch_time,(this.pm.data.player_autoplay_on||this.pm.data.video_is_autoplay)&&this.pm.pageLoadInitTime&&(this.pm.data.view_aggregate_startup_time=this.pm.data.view_start+this.pm.data.view_watch_time-this.pm.pageLoadInitTime))}}]),Z}(),TW=SW,hW=function Z(Y){var J=this;O0(this,Z),v(this,"_lastPlayerHeight",void 0),v(this,"_lastPlayerWidth",void 0),v(this,"_lastPlayheadPosition",void 0),v(this,"_lastSourceHeight",void 0),v(this,"_lastSourceWidth",void 0),Y.on("viewinit",function(){J._lastPlayheadPosition=-1});var X=["pause","rebufferstart","seeking","error","adbreakstart","hb","renditionchange","orientationchange","viewend","playbackmodechange"],Q=["playing","hb","renditionchange","orientationchange","playbackmodechange"];X.forEach(function(z){Y.on(z,function(){if(J._lastPlayheadPosition>=0&&Y.data.player_playhead_time>=0&&J._lastPlayerWidth>=0&&J._lastSourceWidth>0&&J._lastPlayerHeight>=0&&J._lastSourceHeight>0){var W=Y.data.player_playhead_time-J._lastPlayheadPosition;if(W<0){J._lastPlayheadPosition=-1;return}var H=Math.min(J._lastPlayerWidth/J._lastSourceWidth,J._lastPlayerHeight/J._lastSourceHeight),G=Math.max(0,H-1),q=Math.max(0,1-H);Y.data.view_max_upscale_percentage=Math.max(Y.data.view_max_upscale_percentage||0,G),Y.data.view_max_downscale_percentage=Math.max(Y.data.view_max_downscale_percentage||0,q),D0(Y.data,"view_total_content_playback_time",W),D0(Y.data,"view_total_upscaling",G*W),D0(Y.data,"view_total_downscaling",q*W)}J._lastPlayheadPosition=-1})}),Q.forEach(function(z){Y.on(z,function(){J._lastPlayheadPosition=Y.data.player_playhead_time,J._lastPlayerWidth=Y.data.player_width,J._lastPlayerHeight=Y.data.player_height,J._lastSourceWidth=Y.data.video_source_width,J._lastSourceHeight=Y.data.video_source_height})})},vW=hW,gW=2000,kW=function Z(Y){var J=this;O0(this,Z),v(this,"isSeeking",void 0),this.isSeeking=!1;var X=-1,Q=function(){var z=I0.now(),W=(Y.data.viewer_time||z)-(X||z);D0(Y.data,"view_seek_duration",W),Y.data.view_max_seek_time=Math.max(Y.data.view_max_seek_time||0,W),J.isSeeking=!1,X=-1};Y.on("seeking",function(z,W){if(Object.assign(Y.data,W),J.isSeeking&&W.viewer_time-X<=gW){X=W.viewer_time;return}J.isSeeking&&Q(),J.isSeeking=!0,X=W.viewer_time,D0(Y.data,"view_seek_count",1),Y.send("seeking")}),Y.on("seeked",function(){Q()}),Y.on("viewend",function(){J.isSeeking&&(Q(),Y.send("seeked")),J.isSeeking=!1,X=-1})},yW=kW,QY=function(Z,Y){Z.push(Y),Z.sort(function(J,X){return J.viewer_time-X.viewer_time})},fW=["adbreakstart","adrequest","adresponse","adplay","adplaying","adpause","adended","adbreakend","aderror","adclicked","adskipped"],pW=function(){function Z(Y){var J=this;O0(this,Z),v(this,"_adHasPlayed",void 0),v(this,"_adRequests",void 0),v(this,"_adResponses",void 0),v(this,"_currentAdRequestNumber",void 0),v(this,"_currentAdResponseNumber",void 0),v(this,"_prerollPlayTime",void 0),v(this,"_wouldBeNewAdPlay",void 0),v(this,"isAdBreak",void 0),v(this,"pm",void 0),this.pm=Y,Y.on("viewinit",function(){J.isAdBreak=!1,J._currentAdRequestNumber=0,J._currentAdResponseNumber=0,J._adRequests=[],J._adResponses=[],J._adHasPlayed=!1,J._wouldBeNewAdPlay=!0,J._prerollPlayTime=void 0}),fW.forEach(function(Q){return Y.on(Q,J._updateAdData.bind(J))});var X=function(){J.isAdBreak=!1};Y.on("adbreakstart",function(){J.isAdBreak=!0}),Y.on("play",X),Y.on("playing",X),Y.on("viewend",X),Y.on("adrequest",function(Q,z){z=Object.assign({ad_request_id:"generatedAdRequestId"+J._currentAdRequestNumber++},z),QY(J._adRequests,z),D0(Y.data,"view_ad_request_count"),J.inPrerollPosition()&&(Y.data.view_preroll_requested=!0,J._adHasPlayed||D0(Y.data,"view_preroll_request_count"))}),Y.on("adresponse",function(Q,z){z=Object.assign({ad_request_id:"generatedAdRequestId"+J._currentAdResponseNumber++},z),QY(J._adResponses,z);var W=J.findAdRequest(z.ad_request_id);W&&D0(Y.data,"view_ad_request_time",Math.max(0,z.viewer_time-W.viewer_time))}),Y.on("adplay",function(Q,z){J._adHasPlayed=!0,J._wouldBeNewAdPlay&&(J._wouldBeNewAdPlay=!1,D0(Y.data,"view_ad_played_count")),J.inPrerollPosition()&&!Y.data.view_preroll_played&&(Y.data.view_preroll_played=!0,J._adRequests.length>0&&(Y.data.view_preroll_request_time=Math.max(0,z.viewer_time-J._adRequests[0].viewer_time)),Y.data.view_start&&(Y.data.view_startup_preroll_request_time=Math.max(0,z.viewer_time-Y.data.view_start)),J._prerollPlayTime=z.viewer_time)}),Y.on("adplaying",function(Q,z){J.inPrerollPosition()&&typeof Y.data.view_preroll_load_time>"u"&&typeof J._prerollPlayTime<"u"&&(Y.data.view_preroll_load_time=z.viewer_time-J._prerollPlayTime,Y.data.view_startup_preroll_load_time=z.viewer_time-J._prerollPlayTime)}),Y.on("adclicked",function(Q,z){J._wouldBeNewAdPlay||D0(Y.data,"view_ad_clicked_count")}),Y.on("adskipped",function(Q,z){J._wouldBeNewAdPlay||D0(Y.data,"view_ad_skipped_count")}),Y.on("adended",function(){J._wouldBeNewAdPlay=!0}),Y.on("aderror",function(){J._wouldBeNewAdPlay=!0})}return r0(Z,[{key:"inPrerollPosition",value:function(){return typeof this.pm.data.view_content_playback_time>"u"||this.pm.data.view_content_playback_time<=1000}},{key:"findAdRequest",value:function(Y){for(var J=0;J30000&&(Y.emit("devicesleep",{viewer_time:H}),Object.assign(Y.data,{viewer_time:H}),Y.send("devicesleep"),Y.emit("devicewake",{viewer_time:W}),Object.assign(Y.data,{viewer_time:W}),Y.send("devicewake"))};Y.one("playbackheartbeat",X),Y.on("playbackheartbeatend",function(){Y.off("before*",Q),Y.one("playbackheartbeat",X)})},cW=uW,f1=i0(q8()),$Y=function(Z){return Z()}(function(){var Z=function(){for(var J=0,X={};J1){if(W=Z({path:"/"},X.defaults,W),typeof W.expires=="number"){var G=new Date;G.setMilliseconds(G.getMilliseconds()+W.expires*86400000),W.expires=G}try{H=JSON.stringify(z),/^[\{\[]/.test(H)&&(z=H)}catch(B){}return J.write?z=J.write(z,Q):z=encodeURIComponent(String(z)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),Q=encodeURIComponent(String(Q)),Q=Q.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),Q=Q.replace(/[\(\)]/g,escape),document.cookie=[Q,"=",z,W.expires?"; expires="+W.expires.toUTCString():"",W.path?"; path="+W.path:"",W.domain?"; domain="+W.domain:"",W.secure?"; secure":""].join("")}Q||(H={});for(var q=document.cookie?document.cookie.split("; "):[],V=/(%[0-9A-Z]{2})+/g,U=0;U1&&arguments[1]!==void 0?arguments[1]:{};this._beaconUrl=Z||JG,this._eventQueue=[],this._postInFlight=!1,this._resendAfterPost=!1,this._failureCount=0,this._sendTimeout=!1,this._options=Object.assign({},eW,Y)};$8.prototype.queueEvent=function(Z,Y){var J=Object.assign({},Y);return this._eventQueue.length<=this._options.maxQueueLength||Z==="eventrateexceeded"?(this._eventQueue.push(J),this._sendTimeout||this._startBeaconSending(),this._eventQueue.length<=this._options.maxQueueLength):!1};$8.prototype.flushEvents=function(){var Z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(Z&&this._eventQueue.length===1){this._eventQueue.pop();return}this._eventQueue.length&&this._sendBeaconQueue(),this._startBeaconSending()};$8.prototype.destroy=function(){var Z=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;this.destroyed=!0,Z?this._clearBeaconQueue():this.flushEvents(),s8.default.clearTimeout(this._sendTimeout)};$8.prototype._clearBeaconQueue=function(){var Z=this._eventQueue.length>this._options.maxBeaconSize?this._eventQueue.length-this._options.maxBeaconSize:0,Y=this._eventQueue.slice(Z);Z>0&&Object.assign(Y[Y.length-1],o1({mux_view_message:"event queue truncated"}));var J=this._createPayload(Y);DY(this._beaconUrl,J,!0,function(){})};$8.prototype._sendBeaconQueue=function(){var Z=this;if(this._postInFlight){this._resendAfterPost=!0;return}var Y=this._eventQueue.slice(0,this._options.maxBeaconSize);this._eventQueue=this._eventQueue.slice(this._options.maxBeaconSize),this._postInFlight=!0;var J=this._createPayload(Y),X=I0.now();DY(this._beaconUrl,J,!1,function(Q,z){z?(Z._eventQueue=Y.concat(Z._eventQueue),Z._failureCount+=1,j0.info("Error sending beacon: "+z)):Z._failureCount=0,Z._roundTripTime=I0.now()-X,Z._postInFlight=!1,Z._resendAfterPost&&(Z._resendAfterPost=!1,Z._eventQueue.length>0&&Z._sendBeaconQueue())})};$8.prototype._getNextBeaconTime=function(){if(!this._failureCount)return this._options.baseTimeBetweenBeacons;var Z=Math.pow(2,this._failureCount-1);return Z=Z*Math.random(),(1+Z)*this._options.baseTimeBetweenBeacons};$8.prototype._startBeaconSending=function(){var Z=this;s8.default.clearTimeout(this._sendTimeout),!this.destroyed&&(this._sendTimeout=s8.default.setTimeout(function(){Z._eventQueue.length&&Z._sendBeaconQueue(),Z._startBeaconSending()},this._getNextBeaconTime()))};$8.prototype._createPayload=function(Z){var Y=this,J={transmission_timestamp:Math.round(I0.now())};this._roundTripTime&&(J.rtt_ms=Math.round(this._roundTripTime));var X,Q,z,W=function(){X=JSON.stringify({metadata:J,events:Q||Z}),z=X.length/1024},H=function(){return z<=Y._options.maxPayloadKBSize};return W(),H()||(j0.info("Payload size is too big ("+z+" kb). Removing unnecessary events."),Q=Z.filter(function(G){return YG.indexOf(G.e)===-1}),W()),H()||(j0.info("Payload size still too big ("+z+" kb). Cropping fields.."),Q.forEach(function(G){for(var q in G){var V=G[q],U=51200;typeof V=="string"&&V.length>U&&(G[q]=V.substring(0,U))}}),W()),X};var XG=typeof tW.default.exitPictureInPicture=="function"?function(Z){return Z.length<=ZG}:function(Z){return!1},DY=function(Z,Y,J,X){if(J&&navigator&&navigator.sendBeacon&&navigator.sendBeacon(Z,Y)){X();return}if(s8.default.fetch){s8.default.fetch(Z,{method:"POST",body:Y,headers:{"Content-Type":"text/plain"},keepalive:XG(Y)}).then(function(z){return X(null,z.ok?null:"Error")}).catch(function(z){return X(null,z)});return}if(s8.default.XMLHttpRequest){var Q=new s8.default.XMLHttpRequest;Q.onreadystatechange=function(){if(Q.readyState===4)return X(null,Q.status!==200?"error":void 0)},Q.open("POST",Z),Q.setRequestHeader("Content-Type","text/plain"),Q.send(Y);return}X()},QG=$8,zG=["env_key","view_id","view_sequence_number","player_sequence_number","beacon_domain","player_playhead_time","viewer_time","mux_api_version","event","video_id","player_instance_id","player_error_code","player_error_message","player_error_context","player_error_severity","player_error_business_exception","view_playing_time_ms_cumulative","ad_playing_time_ms_cumulative"],WG=["adplay","adplaying","adpause","adfirstquartile","admidpoint","adthirdquartile","adended","adresponse","adrequest"],GG=["ad_id","ad_creative_id","ad_universal_id"],HG=["viewstart","error","ended","viewend"],qG=600000,VG=function(){function Z(Y,J){var X=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};O0(this,Z);var Q,z,W,H,G,q,V,U,N,j,K,B;v(this,"mux",void 0),v(this,"envKey",void 0),v(this,"options",void 0),v(this,"eventQueue",void 0),v(this,"sampleRate",void 0),v(this,"disableCookies",void 0),v(this,"respectDoNotTrack",void 0),v(this,"previousBeaconData",void 0),v(this,"lastEventTime",void 0),v(this,"rateLimited",void 0),v(this,"pageLevelData",void 0),v(this,"viewerData",void 0),this.mux=Y,this.envKey=J,this.options=X,this.previousBeaconData=null,this.lastEventTime=0,this.rateLimited=!1,this.eventQueue=new QG(sW(this.envKey,this.options));var R;this.sampleRate=(R=this.options.sampleRate)!==null&&R!==void 0?R:1;var E;this.disableCookies=(E=this.options.disableCookies)!==null&&E!==void 0?E:!1;var O;this.respectDoNotTrack=(O=this.options.respectDoNotTrack)!==null&&O!==void 0?O:!1,this.previousBeaconData=null,this.lastEventTime=0,this.rateLimited=!1,this.pageLevelData={mux_api_version:this.mux.API_VERSION,mux_embed:this.mux.NAME,mux_embed_version:this.mux.VERSION,viewer_application_name:(Q=this.options.platform)===null||Q===void 0?void 0:Q.name,viewer_application_version:(z=this.options.platform)===null||z===void 0?void 0:z.version,viewer_application_engine:(W=this.options.platform)===null||W===void 0?void 0:W.layout,viewer_device_name:(H=this.options.platform)===null||H===void 0?void 0:H.product,viewer_device_category:"",viewer_device_manufacturer:(G=this.options.platform)===null||G===void 0?void 0:G.manufacturer,viewer_os_family:(V=this.options.platform)===null||V===void 0||(q=V.os)===null||q===void 0?void 0:q.family,viewer_os_architecture:(N=this.options.platform)===null||N===void 0||(U=N.os)===null||U===void 0?void 0:U.architecture,viewer_os_version:(K=this.options.platform)===null||K===void 0||(j=K.os)===null||j===void 0?void 0:j.version,page_url:f1.default===null||f1.default===void 0||(B=f1.default.location)===null||B===void 0?void 0:B.href},this.viewerData=this.disableCookies?{}:lW()}return r0(Z,[{key:"send",value:function(Y,J){if(!(!Y||!(J!=null&&J.view_id))){if(this.respectDoNotTrack&&c1())return j0.info("Not sending `"+Y+"` because Do Not Track is enabled");if(!J||typeof J!="object")return j0.error("A data object was expected in send() but was not provided");var X=this.disableCookies?{}:nW(),Q=l1(k9({},this.pageLevelData,J,X,this.viewerData),{event:Y,env_key:this.envKey});Q.user_id&&(Q.viewer_user_id=Q.user_id,delete Q.user_id);var z,W=((z=Q.mux_sample_number)!==null&&z!==void 0?z:0)>=this.sampleRate,H=this._deduplicateBeaconData(Y,Q),G=o1(H);if(this.lastEventTime=this.mux.utils.now(),W)return j0.info("Not sending event due to sample rate restriction",Y,Q,G);if(this.envKey||j0.info("Missing environment key (envKey) - beacons will be dropped if the video source is not a valid mux video URL",Y,Q,G),!this.rateLimited)if(j0.info("Sending event",Y,Q,G),this.rateLimited=!this.eventQueue.queueEvent(Y,G),this.mux.WINDOW_UNLOADING&&Y==="viewend")this.eventQueue.destroy(!0);else{if(this.mux.WINDOW_HIDDEN&&Y==="hb")this.eventQueue.flushEvents(!0);else if(HG.indexOf(Y)>=0){if(Y==="error"&&J.player_error_severity==="warning")return;this.eventQueue.flushEvents()}if(this.rateLimited)return Q.event="eventrateexceeded",G=o1(Q),this.eventQueue.queueEvent(Q.event,G),j0.error("Beaconing disabled due to rate limit.")}}}},{key:"destroy",value:function(){this.eventQueue.destroy(!1)}},{key:"_deduplicateBeaconData",value:function(Y,J){var X=this,Q={},z=J.view_id;if(z==="-1"||Y==="viewstart"||Y==="viewend"||!this.previousBeaconData||this.mux.utils.now()-this.lastEventTime>=qG)Q=k9({},J),z&&(this.previousBeaconData=Q),z&&Y==="viewend"&&(this.previousBeaconData=null);else{var W=Y.indexOf("request")===0;Object.entries(J).forEach(function(H){var G=O8(H,2),q=G[0],V=G[1];X.previousBeaconData&&(V!==X.previousBeaconData[q]||zG.indexOf(q)>-1||X.objectHasChanged(W,q,V,X.previousBeaconData[q])||X.eventRequiresKey(Y,q))&&(Q[q]=V,X.previousBeaconData[q]=V)})}return Q}},{key:"objectHasChanged",value:function(Y,J,X,Q){return!Y||J.indexOf("request_")!==0?!1:J==="request_response_headers"||typeof X!="object"||typeof Q!="object"?!0:Object.keys(X||{}).length!==Object.keys(Q||{}).length}},{key:"eventRequiresKey",value:function(Y,J){return!!(Y==="renditionchange"&&J.indexOf("video_source_")===0||GG.includes(J)&&WG.includes(Y)||Y==="playbackmodechange"&&J.indexOf("player_playback_mode")===0)}}]),Z}(),UG=function Z(Y){O0(this,Z);var J=0,X=0,Q=0,z=0,W=0,H=0,G=0,q=function(N,j){var{request_start:K,request_response_start:B,request_response_end:R,request_bytes_loaded:E}=j;z++;var O,A;if(B?(O=B-(K!=null?K:0),A=(R!=null?R:0)-B):A=(R!=null?R:0)-(K!=null?K:0),A>0&&E&&E>0){var $=E/A*8000;W++,X+=E,Q+=A,Y.data.view_min_request_throughput=Math.min(Y.data.view_min_request_throughput||1/0,$),Y.data.view_average_request_throughput=X/Q*8000,Y.data.view_request_count=z,O>0&&(J+=O,Y.data.view_max_request_latency=Math.max(Y.data.view_max_request_latency||0,O),Y.data.view_average_request_latency=J/W)}},V=function(N,j){z++,H++,Y.data.view_request_count=z,Y.data.view_request_failed_count=H},U=function(N,j){z++,G++,Y.data.view_request_count=z,Y.data.view_request_canceled_count=G};Y.on("requestcompleted",q),Y.on("requestfailed",V),Y.on("requestcanceled",U)},jG=UG,NG=3600000,KG=function Z(Y){var J=this;O0(this,Z),v(this,"_lastEventTime",void 0),Y.on("before*",function(X,Q){var z=Q.viewer_time,W=I0.now(),H=J._lastEventTime;if(J._lastEventTime=W,H&&W-H>NG){var G=Object.keys(Y.data).reduce(function(V,U){return U.indexOf("video_")===0?Object.assign(V,v({},U,Y.data[U])):V},{});Y.mux.log.info("Received event after at least an hour inactivity, creating a new view");var q=Y.playbackHeartbeat._playheadShouldBeProgressing;Y._resetView(Object.assign({viewer_time:z},G)),Y.playbackHeartbeat._playheadShouldBeProgressing=q,Y.playbackHeartbeat._playheadShouldBeProgressing&&X.type!=="play"&&X.type!=="adbreakstart"&&(Y.emit("play",{viewer_time:z}),X.type!=="playing"&&Y.emit("playing",{viewer_time:z}))}})},BG=KG,RG=function Z(Y){O0(this,Z);var J=function(H){var G=FG(H),q=EG(H);if(G!=null&&!WY(G,z)&&W<=q){z=G,W=q;var V={video_cdn:G};Y.emit("cdnchange",V)}},X=null,Q=null,z=null,W=0;Y.on("viewinit",function(){X=null,Q=null,z=null,W=0}),Y.on("beforecdnchange",function(H,G){var q=G==null?void 0:G.video_cdn;q&&(typeof G.video_previous_cdn>"u"||G.video_previous_cdn===null)&&(WY(q,Q)?G.video_previous_cdn=X!=null?X:void 0:(G.video_previous_cdn=Q!=null?Q:void 0,X=Q,Q=q))}),Y.on("requestcompleted",function(H,G){J(G)})};function WY(Z,Y){return(Z==null?void 0:Z.toLowerCase())===(Y==null?void 0:Y.toLowerCase())}function FG(Z){var Y;return Z!=null&&Z.request_type&&(Z.request_type==="media"||Z.request_type==="video")&&(!((Y=Z.request_response_headers)===null||Y===void 0)&&Y["x-cdn"])?Z.request_response_headers["x-cdn"]:Z!=null&&Z.video_cdn?Z.video_cdn:null}function EG(Z){return Z!=null&&Z.request_start?Z.request_start:Z!=null&&Z.viewer_time?Z.viewer_time:Date.now()}var AG=RG,OG=function(Z){try{return JSON.parse(Z),!0}catch(Y){return!1}},$G=function Z(Y){var J=this;O0(this,Z),v(this,"_emittingAutomaticEvent",!1),v(this,"_hasInitialized",!1),v(this,"_currentMode","standard"),Y.on("viewstart",function(){J._hasInitialized||(J._hasInitialized=!0,J._currentMode=Y.data.player_playback_mode||"standard",J._emittingAutomaticEvent=!0,Y.emit("playbackmodechange",{player_playback_mode:J._currentMode,player_playback_mode_data:"{}"}),J._emittingAutomaticEvent=!1)}),Y.on("viewend",function(){J._hasInitialized=!1}),Y.on("playbackmodechange",function(X,Q){J._emittingAutomaticEvent||(Q.player_playback_mode_data?OG(Q.player_playback_mode_data)||(Y.mux.log.warn("Invalid JSON string for player_playback_mode_data"),Q.player_playback_mode_data="{}"):Q.player_playback_mode_data="{}",Y.data.player_playback_mode_data=Q.player_playback_mode_data,Y.data.player_playback_mode=Q.player_playback_mode,J._currentMode=Q.player_playback_mode)})},MG=$G,wG=function(){function Z(Y){O0(this,Z),v(this,"pm",void 0),v(this,"_currentRangeStart",void 0),v(this,"_lastPlayheadTime",void 0),this.pm=Y,this._currentRangeStart=null,this._lastPlayheadTime=null,Y.on("playbackheartbeat",this._updatePlaybackRange.bind(this)),Y.on("playbackheartbeatend",this._endPlaybackRange.bind(this))}return r0(Z,[{key:"_updateLastRangeEnd",value:function(){var Y=this.pm.data.video_playback_ranges;if(Y&&Y.length>0){var J=this.pm.data.player_playhead_time||0;Y[Y.length-1][1]=J}}},{key:"_updatePlaybackRange",value:function(){var Y,J=this.pm.data.player_playhead_time||0;if(!(!this.pm.disableAdPlaybackRangeFiltering&&(!((Y=this.pm.adTracker)===null||Y===void 0)&&Y.isAdBreak)&&this._lastPlayheadTime!==null&&J1000){var Q=this.pm.data.video_playback_ranges;Q&&Q.length>0&&(Q[Q.length-1][1]=this._lastPlayheadTime),this._currentRangeStart=null}}if(this._currentRangeStart===null){var z=this.pm.data.video_playback_ranges||[];z.length>0&&z[z.length-1][1]===J?this._currentRangeStart=z[z.length-1][0]:(this._currentRangeStart=J,z.push([J,J])),this.pm.data.video_playback_ranges=z}else this._updateLastRangeEnd();this._lastPlayheadTime=J}}},{key:"_endPlaybackRange",value:function(){this._currentRangeStart!==null&&(this._updateLastRangeEnd(),this._currentRangeStart=null,this._lastPlayheadTime=null)}}]),Z}(),LG=wG,H8=Object.freeze({CELLULAR:"cellular",WIFI:"wifi",WIRED:"wired",OTHER:"other",NO_CONNECTION:"no_connection",UNKNOWN:"unknown"}),_G=function(Z){if(!Z)return H8.UNKNOWN;switch(Z){case"cellular":case"wimax":return H8.CELLULAR;case"wifi":return H8.WIFI;case"ethernet":return H8.WIRED;case"none":return H8.NO_CONNECTION;case"bluetooth":case"other":return H8.OTHER;case"unknown":return H8.UNKNOWN;default:var Y=Z;return H8.OTHER}},DG=function(Z){return typeof Z=="object"&&"connection"in Z&&typeof Z.connection=="object"},o8=i0(q8()),CG=function(){function Z(Y){var J=this;O0(this,Z),v(this,"pm",void 0),v(this,"lastType",void 0),v(this,"lastLowDataMode",void 0),this.pm=Y,this.pm.one("viewinit",function(){var X,Q=J.emit.bind(J);Q(),o8.default.addEventListener("online",Q),o8.default.addEventListener("offline",Q),(X=Z.connection)===null||X===void 0||X.addEventListener("change",Q),J.pm.on("destroy",function(){var z;(z=Z.connection)===null||z===void 0||z.removeEventListener("change",Q),o8.default.removeEventListener("online",Q),o8.default.removeEventListener("offline",Q)})})}return r0(Z,[{key:"type",get:function(){var Y,J;return((Y=o8.default.navigator)===null||Y===void 0?void 0:Y.onLine)===!1?H8.NO_CONNECTION:!((J=Z.connection)===null||J===void 0)&&J.type?_G(Z.connection.type):H8.UNKNOWN}},{key:"lowDataMode",get:function(){var Y;return(Y=Z.connection)===null||Y===void 0?void 0:Y.saveData}},{key:"emit",value:function(){var Y=this.type,J=this.lowDataMode;Y===this.lastType&&J===this.lastLowDataMode||(this.lastType=Y,this.lastLowDataMode=J,this.pm.emit("networkchange",k9({viewer_connection_type:Y},J!==void 0&&{viewer_connection_low_data_mode:J})))}}],[{key:"connection",get:function(){return DG(o8.default.navigator)?o8.default.navigator.connection:null}}]),Z}(),PG=CG,bG=["viewstart","ended","loadstart","pause","play","playing","ratechange","waiting","adplay","adpause","adended","aderror","adplaying","adrequest","adresponse","adbreakstart","adbreakend","adfirstquartile","admidpoint","adthirdquartile","rebufferstart","rebufferend","seeked","error","hb","requestcompleted","requestfailed","requestcanceled","renditionchange","networkchange","cdnchange","playbackmodechange"],IG=new Set(["requestcompleted","requestfailed","requestcanceled"]),xG=function(Z){tz(J,Z);var Y=XW(J);function J(X,Q,z){O0(this,J);var W;W=Y.call(this),v(r(W),"pageLoadEndTime",void 0),v(r(W),"pageLoadInitTime",void 0),v(r(W),"_destroyed",void 0),v(r(W),"_heartBeatTimeout",void 0),v(r(W),"adTracker",void 0),v(r(W),"dashjs",void 0),v(r(W),"data",void 0),v(r(W),"disablePlayheadRebufferTracking",void 0),v(r(W),"disableRebufferTracking",void 0),v(r(W),"disableAdPlaybackRangeFiltering",void 0),v(r(W),"errorTracker",void 0),v(r(W),"errorTranslator",void 0),v(r(W),"emitTranslator",void 0),v(r(W),"getAdData",void 0),v(r(W),"getPlayheadTime",void 0),v(r(W),"getStateData",void 0),v(r(W),"stateDataTranslator",void 0),v(r(W),"hlsjs",void 0),v(r(W),"id",void 0),v(r(W),"longResumeTracker",void 0),v(r(W),"minimumRebufferDuration",void 0),v(r(W),"mux",void 0),v(r(W),"playbackEventDispatcher",void 0),v(r(W),"playbackHeartbeat",void 0),v(r(W),"playbackHeartbeatTime",void 0),v(r(W),"playheadTime",void 0),v(r(W),"seekingTracker",void 0),v(r(W),"sustainedRebufferThreshold",void 0),v(r(W),"watchTimeTracker",void 0),v(r(W),"currentFragmentPDT",void 0),v(r(W),"currentFragmentStart",void 0),W.pageLoadInitTime=j7.navigationStart(),W.pageLoadEndTime=j7.domContentLoadedEventEnd();var H={debug:!1,minimumRebufferDuration:250,sustainedRebufferThreshold:1000,playbackHeartbeatTime:25,beaconDomain:"litix.io",sampleRate:1,disableCookies:!1,respectDoNotTrack:!1,disableRebufferTracking:!1,disablePlayheadRebufferTracking:!1,disableAdPlaybackRangeFiltering:!1,errorTranslator:function(K){return K},emitTranslator:function(){for(var K=arguments.length,B=Array(K),R=0;R"u"&&(this.data.view_start=this.mux.utils.now(),this.emit("viewstart"),this.emit("renditionchange"))}.bind(r(W));if(W.on("viewinit",function(K,B){this._resetVideoData(),this._resetViewData(),this._resetErrorData(),this._updateStateData(),Object.assign(this.data,B),this._initializeViewData(),this.one("play",V),this.one("adbreakstart",V)}),W.on("videochange",function(K,B){this._resetView(B)}),W.on("programchange",function(K,B){this.data.player_is_paused&&this.mux.log.warn("The `programchange` event is intended to be used when the content changes mid playback without the video source changing, however the video is not currently playing. If the video source is changing please use the videochange event otherwise you will lose startup time information."),this._resetView(Object.assign(B,{view_program_changed:!0})),V(),this.emit("play"),this.emit("playing")}),W.on("fragmentchange",function(K,B){this.currentFragmentPDT=B.currentFragmentPDT,this.currentFragmentStart=B.currentFragmentStart}),W.on("destroy",W.destroy),typeof window<"u"&&typeof window.addEventListener=="function"&&typeof window.removeEventListener=="function"){var U=function(){var K=typeof W.data.view_start<"u";W.mux.WINDOW_HIDDEN=document.visibilityState==="hidden",K&&W.mux.WINDOW_HIDDEN&&(W.data.player_is_paused||W.emit("hb"))};window.addEventListener("visibilitychange",U,!1);var N=function(K){K.persisted||W.destroy()};window.addEventListener("pagehide",N,!1),W.on("destroy",function(){window.removeEventListener("visibilitychange",U),window.removeEventListener("pagehide",N)})}W.on("playerready",function(K,B){Object.assign(this.data,B)}),bG.forEach(function(K){W.on(K,function(B,R){K.indexOf("ad")!==0&&this._updateStateData(),Object.assign(this.data,R),this._sanitizeData()}),W.on("after"+K,function(){(K!=="error"||this.errorTracker.viewErrored)&&this.send(K)})}),W.on("viewend",function(K,B){Object.assign(W.data,B)});var j=function(K){var B=this.mux.utils.now();this.data.player_init_time&&(this.data.player_startup_time=B-this.data.player_init_time),this.pageLoadInitTime=this.data.page_load_init_time||this.pageLoadInitTime,this.pageLoadEndTime=this.data.page_load_end_time||this.pageLoadEndTime,!this.mux.PLAYER_TRACKED&&this.pageLoadInitTime&&(this.mux.PLAYER_TRACKED=!0,(this.data.player_init_time||this.pageLoadEndTime)&&(this.data.page_load_time=Math.min(this.data.player_init_time||1/0,this.pageLoadEndTime||1/0)-this.pageLoadInitTime)),this.send("playerready"),delete this.data.player_startup_time,delete this.data.page_load_time};return W.one("playerready",j),W.longResumeTracker=new BG(r(W)),W.errorTracker=new $W(r(W)),new cW(r(W)),W.seekingTracker=new yW(r(W)),W.playheadTime=new CW(r(W)),W.playbackHeartbeat=new AW(r(W)),new vW(r(W)),W.watchTimeTracker=new wW(r(W)),new _W(r(W)),new LG(r(W)),W.adTracker=new mW(r(W)),new xW(r(W)),new bW(r(W)),new TW(r(W)),new jG(r(W)),new AG(r(W)),new MG(r(W)),new PG(r(W)),z.hlsjs&&W.addHLSJS(z),z.dashjs&&W.addDashJS(z),W.emit("viewinit",z.data),W}return r0(J,[{key:"emit",value:function(X,Q){var z,W=Object.assign({viewer_time:this.mux.utils.now()},Q),H=[X,W];if(this.emitTranslator)try{H=this.emitTranslator(X,W)}catch(G){this.mux.log.warn("Exception in emit translator callback.",G)}H!=null&&H.length&&(z=V7(G9(J.prototype),"emit",this)).call.apply(z,[this].concat(J8(H)))}},{key:"destroy",value:function(){this._destroyed||(this._destroyed=!0,typeof this.data.view_start<"u"&&(this.emit("viewend"),this.send("viewend")),this.playbackEventDispatcher.destroy(),this.removeHLSJS(),this.removeDashJS(),window.clearTimeout(this._heartBeatTimeout))}},{key:"send",value:function(X){if(this.data.view_id){var Q=Object.assign({},this.data),z=["player_program_time","player_manifest_newest_program_time","player_live_edge_program_time","player_program_time","video_holdback","video_part_holdback","video_target_duration","video_part_target_duration"];if(Q.video_source_is_live===void 0&&(Q.player_source_duration===1/0||Q.video_source_duration===1/0?Q.video_source_is_live=!0:(Q.player_source_duration>0||Q.video_source_duration>0)&&(Q.video_source_is_live=!1)),Q.video_source_is_live||z.forEach(function(q){Q[q]=void 0}),Q.video_source_url=Q.video_source_url||Q.player_source_url,Q.video_source_url){var W=O8(g9(Q.video_source_url),2),H=W[0],G=W[1];Q.video_source_domain=G,Q.video_source_hostname=H}delete Q.ad_request_id,Q.video_playback_ranges&&(Q.video_playback_range=JSON.stringify(Q.video_playback_ranges.filter(function(q){return q[0]!==q[1]}).map(function(q){return"".concat(q[0],":").concat(q[1])})),delete Q.video_playback_ranges),this.playbackEventDispatcher.send(X,Q),this.data.view_sequence_number++,this.data.player_sequence_number++,IG.has(X)||this._restartHeartBeat(),X==="viewend"&&delete this.data.view_id}}},{key:"_resetView",value:function(X){this.emit("viewend"),this.send("viewend"),this.emit("viewinit",X)}},{key:"_updateStateData",value:function(){var X,Q=this.getStateData();if(typeof this.stateDataTranslator=="function")try{Q=this.stateDataTranslator(Q)}catch(H){this.mux.log.warn("Exception in stateDataTranslator translator callback.",H)}if(!((X=this.data)===null||X===void 0)&&X.video_cdn&&(Q!=null&&Q.video_cdn)){var z=Q.video_cdn,W=ZW(Q,["video_cdn"]);Q=W}Object.assign(this.data,Q),this.playheadTime._updatePlayheadTime(),this._sanitizeData()}},{key:"_sanitizeData",value:function(){var X=this,Q=["player_width","player_height","video_source_width","video_source_height","player_playhead_time","video_source_bitrate"];Q.forEach(function(W){var H=parseInt(X.data[W],10);X.data[W]=isNaN(H)?void 0:H});var z=["player_source_url","video_source_url"];z.forEach(function(W){if(X.data[W]){var H=X.data[W].toLowerCase();(H.indexOf("data:")===0||H.indexOf("blob:")===0)&&(X.data[W]="MSE style URL")}})}},{key:"_resetVideoData",value:function(){var X=this;Object.keys(this.data).forEach(function(Q){Q.indexOf("video_")===0&&delete X.data[Q]})}},{key:"_resetViewData",value:function(){var X=this;Object.keys(this.data).forEach(function(Q){Q.indexOf("view_")===0&&delete X.data[Q]}),this.data.view_sequence_number=1}},{key:"_resetErrorData",value:function(){delete this.data.player_error_code,delete this.data.player_error_message,delete this.data.player_error_context,delete this.data.player_error_severity,delete this.data.player_error_business_exception}},{key:"_initializeViewData",value:function(){var X=this,Q=this.data.view_id=v9(),z=function(){Q===X.data.view_id&&D0(X.data,"player_view_count",1)};this.data.player_is_paused?this.one("play",z):z()}},{key:"_restartHeartBeat",value:function(){var X=this;window.clearTimeout(this._heartBeatTimeout),this._heartBeatTimeout=window.setTimeout(function(){X.data.player_is_paused||X.emit("hb")},1e4)}},{key:"addHLSJS",value:function(X){if(!X.hlsjs){this.mux.log.warn("You must pass a valid hlsjs instance in order to track it.");return}if(this.hlsjs){this.mux.log.warn("An instance of HLS.js is already being monitored for this player.");return}this.hlsjs=X.hlsjs,qW(this.mux,this.id,X.hlsjs,{},X.Hls||window.Hls)}},{key:"removeHLSJS",value:function(){this.hlsjs&&(VW(this.hlsjs),this.hlsjs=void 0)}},{key:"addDashJS",value:function(X){if(!X.dashjs){this.mux.log.warn("You must pass a valid dashjs instance in order to track it.");return}if(this.dashjs){this.mux.log.warn("An instance of Dash.js is already being monitored for this player.");return}this.dashjs=X.dashjs,KW(this.mux,this.id,X.dashjs)}},{key:"removeDashJS",value:function(){this.dashjs&&(BW(this.dashjs),this.dashjs=void 0)}}]),J}(FW),SG=xG,S9=i0(RY());function p1(){return S9.default&&!!(S9.default.fullscreenElement||S9.default.webkitFullscreenElement||S9.default.mozFullScreenElement||S9.default.msFullscreenElement)}var TG=["loadstart","pause","play","playing","seeking","seeked","timeupdate","ratechange","stalled","waiting","error","ended"],hG={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"};function vG(Z,Y,J){var X=O8(U7(Y),3),Q=X[0],z=X[1],W=X[2],H=Z.log,G=Z.utils.getComputedStyle,q=Z.utils.secondsToMs,V={automaticErrorTracking:!0};if(Q){if(W!=="video"&&W!=="audio")return H.error("The element of `"+z+"` was not a media element.")}else return H.error("No element was found with the `"+z+"` query selector.");Q.mux&&(Q.mux.destroy(),delete Q.mux,H.warn("Already monitoring this video element, replacing existing event listeners"));var U={getPlayheadTime:function(){return q(Q.currentTime)},getStateData:function(){var j,K,B,R=((j=(K=this).getPlayheadTime)===null||j===void 0?void 0:j.call(K))||q(Q.currentTime),E=this.hlsjs&&this.hlsjs.url,O=this.dashjs&&typeof this.dashjs.getSource=="function"&&this.dashjs.getSource(),A={player_is_paused:Q.paused,player_width:parseInt(G(Q,"width")),player_height:parseInt(G(Q,"height")),player_autoplay_on:Q.autoplay,player_preload_on:Q.preload,player_language_code:Q.lang,player_is_fullscreen:p1(),video_poster_url:Q.poster,video_source_url:E||O||Q.currentSrc,video_source_duration:q(Q.duration),video_source_height:Q.videoHeight,video_source_width:Q.videoWidth,view_dropped_frame_count:Q==null||(B=Q.getVideoPlaybackQuality)===null||B===void 0?void 0:B.call(Q).droppedVideoFrames};if(Q.getStartDate&&R>0){var $=Q.getStartDate();if($&&typeof $.getTime=="function"&&$.getTime()){var L=$.getTime();if(A.player_program_time=L+R,Q.seekable.length>0){var M=L+Q.seekable.end(Q.seekable.length-1);A.player_live_edge_program_time=M}}}return A}};J=Object.assign(V,J,U),J.data=Object.assign({player_software:"HTML5 Video Element",player_mux_plugin_name:"VideoElementMonitor",player_mux_plugin_version:Z.VERSION},J.data),Q.mux=Q.mux||{},Q.mux.deleted=!1,Q.mux.emit=function(j,K){Z.emit(z,j,K)},Q.mux.updateData=function(j){Q.mux.emit("hb",j)};var N=function(){H.error("The monitor for this video element has already been destroyed.")};Q.mux.destroy=function(){Object.keys(Q.mux.listeners).forEach(function(j){Q.removeEventListener(j,Q.mux.listeners[j],!1)}),delete Q.mux.listeners,Q.mux.fullscreenChangeListener&&(document.removeEventListener("fullscreenchange",Q.mux.fullscreenChangeListener,!1),delete Q.mux.fullscreenChangeListener),Q.mux.destroy=N,Q.mux.swapElement=N,Q.mux.emit=N,Q.mux.addHLSJS=N,Q.mux.addDashJS=N,Q.mux.removeHLSJS=N,Q.mux.removeDashJS=N,Q.mux.updateData=N,Q.mux.setEmitTranslator=N,Q.mux.setStateDataTranslator=N,Q.mux.setGetPlayheadTime=N,Q.mux.deleted=!0,Z.emit(z,"destroy")},Q.mux.swapElement=function(j){var K=O8(U7(j),3),B=K[0],R=K[1],E=K[2];if(B){if(E!=="video"&&E!=="audio")return Z.log.error("The element of `"+R+"` was not a media element.")}else return Z.log.error("No element was found with the `"+R+"` query selector.");B.muxId=Q.muxId,delete Q.muxId,B.mux=B.mux||{},B.mux.listeners=Object.assign({},Q.mux.listeners),delete Q.mux.listeners,Object.keys(B.mux.listeners).forEach(function(O){Q.removeEventListener(O,B.mux.listeners[O],!1),B.addEventListener(O,B.mux.listeners[O],!1)}),B.mux.fullscreenChangeListener=Q.mux.fullscreenChangeListener,delete Q.mux.fullscreenChangeListener,B.mux.swapElement=Q.mux.swapElement,B.mux.destroy=Q.mux.destroy,delete Q.mux,Q=B},Q.mux.addHLSJS=function(j){Z.addHLSJS(z,j)},Q.mux.addDashJS=function(j){Z.addDashJS(z,j)},Q.mux.removeHLSJS=function(){Z.removeHLSJS(z)},Q.mux.removeDashJS=function(){Z.removeDashJS(z)},Q.mux.setEmitTranslator=function(j){Z.setEmitTranslator(z,j)},Q.mux.setStateDataTranslator=function(j){Z.setStateDataTranslator(z,j)},Q.mux.setGetPlayheadTime=function(j){j||(j=J.getPlayheadTime),Z.setGetPlayheadTime(z,j)},Z.init(z,J),Z.emit(z,"playerready"),Q.paused||(Z.emit(z,"play"),Q.readyState>2&&Z.emit(z,"playing")),Q.mux.listeners={},TG.forEach(function(j){j==="error"&&!J.automaticErrorTracking||(Q.mux.listeners[j]=function(){var K={};if(j==="error"){if(!Q.error||Q.error.code===1)return;K.player_error_code=Q.error.code,K.player_error_message=hG[Q.error.code]||Q.error.message}Z.emit(z,j,K)},Q.addEventListener(j,Q.mux.listeners[j],!1))}),Q.mux.listeners.enterpictureinpicture=function(){Z.emit(z,"playbackmodechange",{player_playback_mode:"pip",player_playback_mode_data:"{}"})},Q.mux.listeners.leavepictureinpicture=function(){var j=p1()?"fullscreen":"standard";Z.emit(z,"playbackmodechange",{player_playback_mode:j,player_playback_mode_data:"{}"})},Q.addEventListener("enterpictureinpicture",Q.mux.listeners.enterpictureinpicture,!1),Q.addEventListener("leavepictureinpicture",Q.mux.listeners.leavepictureinpicture,!1),Q.mux.fullscreenChangeListener=function(){var j=p1(),K=document.fullscreenElement;if(j&&(K===Q||K!=null&&K.contains(Q)))Z.emit(z,"playbackmodechange",{player_playback_mode:"fullscreen",player_playback_mode_data:"{}"});else if(!j){var B=document.pictureInPictureElement===Q,R=B?"pip":"standard";Z.emit(z,"playbackmodechange",{player_playback_mode:R,player_playback_mode_data:"{}"})}},document.addEventListener("fullscreenchange",Q.mux.fullscreenChangeListener,!1)}function gG(Z,Y,J,X){var Q=X;if(Z&&typeof Z[Y]=="function")try{Q=Z[Y].apply(Z,J)}catch(z){j0.info("safeCall error",z)}return Q}var h9=i0(q8()),W9;h9.default&&h9.default.WeakMap&&(W9=new WeakMap);function kG(Z,Y){if(!Z||!Y||!h9.default||typeof h9.default.getComputedStyle!="function")return"";var J;return W9&&W9.has(Z)&&(J=W9.get(Z)),J||(J=h9.default.getComputedStyle(Z,null),W9&&W9.set(Z,J)),J.getPropertyValue(Y)}function yG(Z){return Math.floor(Z*1000)}var l8={TARGET_DURATION:"#EXT-X-TARGETDURATION",PART_INF:"#EXT-X-PART-INF",SERVER_CONTROL:"#EXT-X-SERVER-CONTROL",INF:"#EXTINF",PROGRAM_DATE_TIME:"#EXT-X-PROGRAM-DATE-TIME",VERSION:"#EXT-X-VERSION",SESSION_DATA:"#EXT-X-SESSION-DATA"},K7=function(Z){return this.buffer="",this.manifest={segments:[],serverControl:{},sessionData:{}},this.currentUri={},this.process(Z),this.manifest};K7.prototype.process=function(Z){var Y;for(this.buffer+=Z,Y=this.buffer.indexOf(` `);Y>-1;Y=this.buffer.indexOf(` `))this.processLine(this.buffer.substring(0,Y)),this.buffer=this.buffer.substring(Y+1)};K7.prototype.processLine=function(Z){var Y=Z.indexOf(":"),J=uG(Z,Y),X=J[0],Q=J.length===2?s1(J[1]):void 0;if(X[0]!=="#")this.currentUri.uri=X,this.manifest.segments.push(this.currentUri),this.manifest.targetDuration&&!("duration"in this.currentUri)&&(this.currentUri.duration=this.manifest.targetDuration),this.currentUri={};else switch(X){case l8.TARGET_DURATION:{if(!isFinite(Q)||Q<0)return;this.manifest.targetDuration=Q,this.setHoldBack();break}case l8.PART_INF:{m1(this.manifest,J),this.manifest.partInf.partTarget&&(this.manifest.partTargetDuration=this.manifest.partInf.partTarget),this.setHoldBack();break}case l8.SERVER_CONTROL:{m1(this.manifest,J),this.setHoldBack();break}case l8.INF:{Q===0?this.currentUri.duration=0.01:Q>0&&(this.currentUri.duration=Q);break}case l8.PROGRAM_DATE_TIME:{var z=Q,W=new Date(z);this.manifest.dateTimeString||(this.manifest.dateTimeString=z,this.manifest.dateTimeObject=W),this.currentUri.dateTimeString=z,this.currentUri.dateTimeObject=W;break}case l8.VERSION:{m1(this.manifest,J);break}case l8.SESSION_DATA:{var H=cG(J[1]),G=OY(H);Object.assign(this.manifest.sessionData,G)}}};K7.prototype.setHoldBack=function(){var Z=this.manifest,Y=Z.serverControl,J=Z.targetDuration,X=Z.partTargetDuration;if(Y){var Q="holdBack",z="partHoldBack",W=J&&J*3,H=X&&X*2;J&&!Y.hasOwnProperty(Q)&&(Y[Q]=W),W&&Y[Q]1){var X=CY(J[0]);Y[X]=s1(J[1])}return Y},pG=function(Z){for(var Y=Z.split(","),J={},X=0;Y.length>X;X++){var Q=Y[X],z=fG(Q);J=Object.assign(z,J)}return J},mG=function(Z){return Z.indexOf("=")>-1},uG=function(Z,Y){return Y===-1?[Z]:[Z.substring(0,Y),Z.substring(Y+1)]},cG=function(Z){var Y={};if(Z){var J=Z.search(","),X=Z.slice(0,J),Q=Z.slice(J+1),z=[X,Q];return z.forEach(function(W,H){for(var G=W.replace(/['"]+/g,"").split("="),q=0;q=this.minWeight_}getEstimate(){if(this.canEstimate())return Math.min(this.fast_.getEstimate(),this.slow_.getEstimate());else return this.defaultEstimate_}getEstimateTTFB(){if(this.ttfb_.getTotalWeight()>=this.minWeight_)return this.ttfb_.getEstimate();else return this.defaultTTFB_}get defaultEstimate(){return this.defaultEstimate_}destroy(){}}function YH(Z,Y,J){return(Y=XH(Y))in Z?Object.defineProperty(Z,Y,{value:J,enumerable:!0,configurable:!0,writable:!0}):Z[Y]=J,Z}function U0(){return U0=Object.assign?Object.assign.bind():function(Z){for(var Y=1;Y`):h8}function bY(Z,Y,J){return Y[Z]?Y[Z].bind(Y):zH(Z,J)}var EZ=FZ();function WH(Z,Y,J){let X=FZ();if(typeof console==="object"&&Z===!0||typeof Z==="object"){let Q=["debug","log","info","warn","error"];Q.forEach((z)=>{X[z]=bY(z,Z,J)});try{X.log(`Debug logs enabled for "${Y}" in hls.js version 1.6.16`)}catch(z){return FZ()}Q.forEach((z)=>{EZ[z]=bY(z,Z)})}else U0(EZ,X);return X}var q0=EZ;function k8(Z=!0){if(typeof self>"u")return;return(Z||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}function GH(Z){return typeof self<"u"&&Z===self.ManagedMediaSource}function mJ(Z,Y){let J=Object.keys(Z),X=Object.keys(Y),Q=J.length,z=X.length;return!Q||!z||Q===z&&!J.some((W)=>X.indexOf(W)===-1)}function o0(Z,Y=!1){if(typeof TextDecoder<"u"){let q=new TextDecoder("utf-8").decode(Z);if(Y){let V=q.indexOf("\x00");return V!==-1?q.substring(0,V):q}return q.replace(/\0/g,"")}let J=Z.length,X,Q,z,W="",H=0;while(H>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:W+=String.fromCharCode(X);break;case 12:case 13:Q=Z[H++],W+=String.fromCharCode((X&31)<<6|Q&63);break;case 14:Q=Z[H++],z=Z[H++],W+=String.fromCharCode((X&15)<<12|(Q&63)<<6|(z&63)<<0);break}}return W}function T0(Z){let Y="";for(let J=0;J1||X===1&&(Y=this.levelkeys[J[0]])!=null&&Y.encrypted)return!0}return!1}get programDateTime(){if(this._programDateTime===null&&this.rawProgramDateTime)this.programDateTime=Date.parse(this.rawProgramDateTime);return this._programDateTime}set programDateTime(Z){if(!m(Z)){this._programDateTime=this.rawProgramDateTime=null;return}this._programDateTime=Z}get ref(){if(!$0(this))return null;if(!this._ref)this._ref={base:this.base,start:this.start,duration:this.duration,sn:this.sn,programDateTime:this.programDateTime};return this._ref}addStart(Z){this.setStart(this.start+Z)}setStart(Z){if(this.start=Z,this._ref)this._ref.start=Z}setDuration(Z){if(this.duration=Z,this._ref)this._ref.duration=Z}setKeyFormat(Z){let Y=this.levelkeys;if(Y){var J;let X=Y[Z];if(X&&!((J=this._decryptdata)!=null&&J.keyId))this._decryptdata=X.getDecryptData(this.sn,Y)}}abortRequests(){var Z,Y;(Z=this.loader)==null||Z.abort(),(Y=this.keyLoader)==null||Y.abort()}setElementaryStreamInfo(Z,Y,J,X,Q,z=!1){let{elementaryStreams:W}=this,H=W[Z];if(!H){W[Z]={startPTS:Y,endPTS:J,startDTS:X,endDTS:Q,partial:z};return}H.startPTS=Math.min(H.startPTS,Y),H.endPTS=Math.max(H.endPTS,J),H.startDTS=Math.min(H.startDTS,X),H.endDTS=Math.max(H.endDTS,Q)}}class cJ extends uZ{constructor(Z,Y,J,X,Q){super(J);this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.duration=Z.decimalFloatingPoint("DURATION"),this.gap=Z.bool("GAP"),this.independent=Z.bool("INDEPENDENT"),this.relurl=Z.enumeratedString("URI"),this.fragment=Y,this.index=X;let z=Z.enumeratedString("BYTERANGE");if(z)this.setByteRange(z,Q);if(Q)this.fragOffset=Q.fragOffset+Q.duration}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){let{elementaryStreams:Z}=this;return!!(Z.audio||Z.video||Z.audiovideo)}}function dJ(Z,Y){let J=Object.getPrototypeOf(Z);if(J){let X=Object.getOwnPropertyDescriptor(J,Y);if(X)return X;return dJ(J,Y)}}function VH(Z,Y){let J=dJ(Z,Y);if(J)J.enumerable=!0,Object.defineProperty(Z,Y,J)}var xY=Math.pow(2,32)-1,UH=[].push,oJ={video:1,audio:2,id3:3,text:4};function C0(Z){return String.fromCharCode.apply(null,Z)}function lJ(Z,Y){let J=Z[Y]<<8|Z[Y+1];return J<0?65536+J:J}function a(Z,Y){let J=nJ(Z,Y);return J<0?4294967296+J:J}function SY(Z,Y){let J=a(Z,Y);return J*=Math.pow(2,32),J+=a(Z,Y+4),J}function nJ(Z,Y){return Z[Y]<<24|Z[Y+1]<<16|Z[Y+2]<<8|Z[Y+3]}function jH(Z){let Y=Z.byteLength;for(let J=0;J8&&Z[J+4]===109&&Z[J+5]===111&&Z[J+6]===111&&Z[J+7]===102)return!0;J=X>1?J+X:Y}return!1}function Y0(Z,Y){let J=[];if(!Y.length)return J;let X=Z.byteLength;for(let Q=0;Q1?Q+z:X;if(W===Y[0])if(Y.length===1)J.push(Z.subarray(Q+8,H));else{let G=Y0(Z.subarray(Q+8,H),Y.slice(1));if(G.length)UH.apply(J,G)}Q=H}return J}function NH(Z){let Y=[],J=Z[0],X=8,Q=a(Z,X);X+=4;let z=0,W=0;if(J===0)z=a(Z,X),W=a(Z,X+4),X+=8;else z=SY(Z,X),W=SY(Z,X+8),X+=16;X+=2;let H=Z.length+W,G=lJ(Z,X);X+=2;for(let q=0;q>>31===1)return q0.warn("SIDX has hierarchical references (not supported)"),null;let K=a(Z,V);V+=4,Y.push({referenceSize:N,subsegmentDuration:K,info:{duration:K/Q,start:H,end:H+N-1}}),H+=N,V+=4,X=V}return{earliestPresentationTime:z,timescale:Q,version:J,referencesCount:G,references:Y}}function sJ(Z){let Y=[],J=Y0(Z,["moov","trak"]);for(let Q=0;Q{let z=a(Q,4),W=Y[z];if(W)W.default={duration:a(Q,12),flags:a(Q,20)}}),Y}function KH(Z){let Y=Z.subarray(8),J=Y.subarray(86),X=C0(Y.subarray(4,8)),Q=X,z,W=X==="enca"||X==="encv";if(W){let q=Y0(Y,[X])[0].subarray(X==="enca"?28:78);Y0(q,["sinf"]).forEach((U)=>{let N=Y0(U,["schm"])[0];if(N){let j=C0(N.subarray(4,8));if(j==="cbcs"||j==="cenc"){let K=Y0(U,["frma"])[0];if(K)Q=C0(K)}}})}let H=Q;switch(Q){case"avc1":case"avc2":case"avc3":case"avc4":{let G=Y0(J,["avcC"])[0];if(G&&G.length>3)Q+="."+F7(G[1])+F7(G[2])+F7(G[3]),z=R7(H==="avc1"?"dva1":"dvav",J);break}case"mp4a":{let G=Y0(Y,[X])[0],q=Y0(G.subarray(28),["esds"])[0];if(q&&q.length>7){let V=4;if(q[V++]!==3)break;V=r1(q,V),V+=2;let U=q[V++];if(U&128)V+=2;if(U&64)V+=q[V++];if(q[V++]!==4)break;V=r1(q,V);let N=q[V++];if(N===64)Q+="."+F7(N);else break;if(V+=12,q[V++]!==5)break;V=r1(q,V);let j=q[V++],K=(j&248)>>3;if(K===31)K+=1+((j&7)<<3)+((q[V]&224)>>5);Q+="."+K}break}case"hvc1":case"hev1":{let G=Y0(J,["hvcC"])[0];if(G&&G.length>12){let q=G[1],V=["","A","B","C"][q>>6],U=q&31,N=a(G,2),j=(q&32)>>5?"H":"L",K=G[12],B=G.subarray(6,12);Q+="."+V+U,Q+="."+BH(N).toString(16).toUpperCase(),Q+="."+j+K;let R="";for(let E=B.length;E--;){let O=B[E];if(O||R)R="."+O.toString(16).toUpperCase()+R}Q+=R}z=R7(H=="hev1"?"dvhe":"dvh1",J);break}case"dvh1":case"dvhe":case"dvav":case"dva1":case"dav1":{Q=R7(Q,J)||Q;break}case"vp09":{let G=Y0(J,["vpcC"])[0];if(G&&G.length>6){let q=G[4],V=G[5],U=G[6]>>4&15;Q+="."+j8(q)+"."+j8(V)+"."+j8(U)}break}case"av01":{let G=Y0(J,["av1C"])[0];if(G&&G.length>2){let q=G[1]>>>5,V=G[1]&31,U=G[2]>>>7?"H":"M",N=(G[2]&64)>>6,j=(G[2]&32)>>5,K=q===2&&N?j?12:10:N?10:8,B=(G[2]&16)>>4,R=(G[2]&8)>>3,E=(G[2]&4)>>2,O=G[2]&3,A=1,$=1,L=1,M=0;Q+="."+q+"."+j8(V)+U+"."+j8(K)+"."+B+"."+R+E+O+"."+j8(1)+"."+j8(1)+"."+j8(1)+".0",z=R7("dav1",J)}break}}return{codec:Q,encrypted:W,supplemental:z}}function R7(Z,Y){let J=Y0(Y,["dvvC"]),X=J.length?J[0]:Y0(Y,["dvcC"])[0];if(X){let Q=X[2]>>1&127,z=X[2]<<5&32|X[3]>>3&31;return Z+"."+j8(Q)+"."+j8(z)}}function BH(Z){let Y=0;for(let J=0;J<32;J++)Y|=(Z>>J&1)<<31-J;return Y>>>0}function r1(Z,Y){let J=Y+5;while(Z[Y++]&128&&Y{let z=X.subarray(8,24);if(!z.some((W)=>W!==0))q0.log(`[eme] Patching keyId in 'enc${Q?"a":"v"}>sinf>>tenc' box: ${T0(z)} -> ${T0(J)}`),X.set(J,8)})}function FH(Z){let Y=[];return iJ(Z,(J)=>Y.push(J.subarray(8,24))),Y}function iJ(Z,Y){Y0(Z,["moov","trak"]).forEach((X)=>{let Q=Y0(X,["mdia","minf","stbl","stsd"])[0];if(!Q)return;let z=Q.subarray(8),W=Y0(z,["enca"]),H=W.length>0;if(!H)W=Y0(z,["encv"]);W.forEach((G)=>{let q=H?G.subarray(28):G.subarray(78);Y0(q,["sinf"]).forEach((U)=>{let N=rJ(U);if(N)Y(N,H)})})})}function rJ(Z){let Y=Y0(Z,["schm"])[0];if(Y){let J=C0(Y.subarray(4,8));if(J==="cbcs"||J==="cenc"){let X=Y0(Z,["schi","tenc"])[0];if(X)return X}}}function EH(Z,Y,J){let X={},Q=Y0(Z,["moof","traf"]);for(let z=0;zX[z].duration)){let z=1/0,W=0,H=Y0(Z,["sidx"]);for(let G=0;GU+N.info.duration||0,0);W=Math.max(W,V+q.earliestPresentationTime/q.timescale)}}if(W&&m(W))Object.keys(X).forEach((G)=>{if(!X[G].duration)X[G].duration=W*X[G].timescale-X[G].start})}return X}function AH(Z){let Y={valid:null,remainder:null},J=Y0(Z,["moof"]);if(J.length<2)return Y.remainder=Z,Y;let X=J[J.length-1];return Y.valid=Z.slice(0,X.byteOffset-8),Y.remainder=Z.slice(X.byteOffset-8),Y}function a0(Z,Y){let J=new Uint8Array(Z.length+Y.length);return J.set(Z),J.set(Y,Z.length),J}function TY(Z,Y){let J=[],X=Y.samples,Q=Y.timescale,z=Y.id,W=!1;return Y0(X,["moof"]).map((G)=>{let q=G.byteOffset-8;Y0(G,["traf"]).map((U)=>{let N=Y0(U,["tfdt"]).map((j)=>{let K=j[0],B=a(j,4);if(K===1)B*=Math.pow(2,32),B+=a(j,8);return B/Q})[0];if(N!==void 0)Z=N;return Y0(U,["tfhd"]).map((j)=>{let K=a(j,4),B=a(j,0)&16777215,R=(B&1)!==0,E=(B&2)!==0,O=(B&8)!==0,A=0,$=(B&16)!==0,L=0,M=(B&32)!==0,w=8;if(K===z){if(R)w+=8;if(E)w+=4;if(O)A=a(j,w),w+=4;if($)L=a(j,w),w+=4;if(M)w+=4;if(Y.type==="video")W=r7(Y.codec);Y0(U,["trun"]).map((_)=>{let C=_[0],D=a(_,0)&16777215,I=(D&1)!==0,h=0,y=(D&4)!==0,c=(D&256)!==0,T=0,p=(D&512)!==0,k=0,l=(D&1024)!==0,i=(D&2048)!==0,g=0,f=a(_,4),s=8;if(I)h=a(_,s),s+=4;if(y)s+=4;let Q0=h+q;for(let e=0;e>1&63;return J===39||J===40}else return(Y&31)===6}function cZ(Z,Y,J,X){let Q=aJ(Z),z=0;z+=Y;let W=0,H=0,G=0;while(z=Q.length)break;G=Q[z++],W+=G}while(G===255);H=0;do{if(z>=Q.length)break;G=Q[z++],H+=G}while(G===255);let q=Q.length-z,V=z;if(Hq){q0.error(`Malformed SEI payload. ${H} is too small, only ${q} bytes left to parse.`);break}if(W===4){if(Q[V++]===181){let N=lJ(Q,V);if(V+=2,N===49){let j=a(Q,V);if(V+=4,j===1195456820){let K=Q[V++];if(K===3){let B=Q[V++],R=31&B,E=64&B,O=E?2+R*3:0,A=new Uint8Array(O);if(E){A[0]=B;for(let $=1;$16){let U=[];for(let K=0;K<16;K++){let B=Q[V++].toString(16);if(U.push(B.length==1?"0"+B:B),K===3||K===5||K===7||K===9)U.push("-")}let N=H-16,j=new Uint8Array(N);for(let K=0;K>24&255,z[1]=X>>16&255,z[2]=X>>8&255,z[3]=X&255,z.set(Z,4);for(Q=0,X=8;Q0){if(z=new Uint8Array(4),Y.length>0)new DataView(z.buffer).setUint32(0,Y.length,!1)}else z=new Uint8Array;let W=new Uint8Array(4);if(J.byteLength>0)new DataView(W.buffer).setUint32(0,J.byteLength,!1);return MH([112,115,115,104],new Uint8Array([X,0,0,0]),Z,z,Q,W,J)}function LH(Z){let Y=[];if(Z instanceof ArrayBuffer){let J=Z.byteLength,X=0;while(X+32>>24;if(z!==0&&z!==1)return{offset:J,size:Y};let W=Z.buffer,H=T0(new Uint8Array(W,J+12,16)),G=null,q=null,V=0;if(z===0)V=28;else{let N=Z.getUint32(28);if(!N||X<32+N*16)return{offset:J,size:Y};G=[];for(let j=0;j{return/\(Windows.+Firefox\//i.test(navigator.userAgent)},O9={audio:{a3ds:1,"ac-3":0.95,"ac-4":1,alac:0.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":0.9,enca:1,fLaC:0.9,flac:0.9,FLAC:0.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:0.8,dav1:0.8,drac:1,dva1:1,dvav:1,dvh1:0.7,dvhe:0.7,encv:1,hev1:0.75,hvc1:0.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:0.9},text:{stpp:1,wvtt:1}};function dZ(Z,Y){let J=O9[Y];return!!J&&!!J[Z.slice(0,4)]}function d9(Z,Y,J=!0){return!Z.split(",").some((X)=>!oZ(X,Y,J))}function oZ(Z,Y,J=!0){var X;let Q=k8(J);return(X=Q==null?void 0:Q.isTypeSupported(o9(Z,Y)))!=null?X:!1}function o9(Z,Y){return`${Y}/mp4;codecs=${Z}`}function hY(Z){if(Z){let Y=Z.substring(0,4);return O9.video[Y]}return 2}function y7(Z){let Y=tJ();return Z.split(",").reduce((J,X)=>{let z=Y&&r7(X)?9:O9.video[X];if(z)return(z*2+J)/(J?3:2);return(O9.audio[X]+J)/(J?2:1)},0)}var a1={};function DH(Z,Y=!0){if(a1[Z])return a1[Z];let J={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[Z];for(let Q=0;QDH(J.toLowerCase(),Y))}function PH(Z,Y){let J=[];if(Z){let X=Z.split(",");for(let Q=0;Q4||["ac-3","ec-3","alac","fLaC","Opus"].indexOf(Z)!==-1)){if(vY(Z,"audio")||vY(Z,"video"))return Z}if(Y){let J=Y.split(",");if(J.length>1){if(Z){for(let X=J.length;X--;)if(J[X].substring(0,4)===Z.substring(0,4))return J[X]}return J[0]}}return Y||Z}function vY(Z,Y){return dZ(Z,Y)&&oZ(Z,Y)}function bH(Z){let Y=Z.split(",");for(let J=0;J2&&X[0]==="avc1")Y[J]=`avc1.${parseInt(X[1]).toString(16)}${("000"+parseInt(X[2]).toString(16)).slice(-4)}`}return Y.join(",")}function IH(Z){if(Z.startsWith("av01.")){let Y=Z.split("."),J=["0","111","01","01","01","0"];for(let X=Y.length;X>4&&X<10;X++)Y[X]=J[X-4];return Y.join(".")}return Z}function gY(Z){let Y=k8(Z)||{isTypeSupported:()=>!1};return{mpeg:Y.isTypeSupported("audio/mpeg"),mp3:Y.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:Y.isTypeSupported('audio/mp4; codecs="ac-3"')}}function AZ(Z){return Z.replace(/^.+codecs=["']?([^"']+).*$/,"$1")}var xH={supported:!0,powerEfficient:!0,smooth:!0},SH={supported:!1,smooth:!1,powerEfficient:!1},eJ={supported:!0,configurations:[],decodingInfoResults:[xH]};function ZX(Z,Y){return{supported:!1,configurations:Y,decodingInfoResults:[SH],error:Z}}function TH(Z,Y,J,X,Q,z){let W=Z.videoCodec,H=Z.audioCodec?Z.audioGroups:null,G=z==null?void 0:z.audioCodec,q=z==null?void 0:z.channels,V=q?parseInt(q):G?1/0:2,U=null;if(H!=null&&H.length)try{if(H.length===1&&H[0])U=Y.groups[H[0]].channels;else U=H.reduce((N,j)=>{if(j){let K=Y.groups[j];if(!K)throw Error(`Audio track group ${j} not found`);Object.keys(K.channels).forEach((B)=>{N[B]=(N[B]||0)+K.channels[B]})}return N},{2:0})}catch(N){return!0}return W!==void 0&&(W.split(",").some((N)=>r7(N))||Z.width>1920&&Z.height>1088||Z.height>1920&&Z.width>1088||Z.frameRate>Math.max(X,30)||Z.videoRange!=="SDR"&&Z.videoRange!==J||Z.bitrate>Math.max(Q,8000000))||!!U&&m(V)&&Object.keys(U).some((N)=>parseInt(N)>V)}function YX(Z,Y,J,X={}){let Q=Z.videoCodec;if(!Q&&!Z.audioCodec||!J)return Promise.resolve(eJ);let z=[],W=hH(Z),H=W.length,G=vH(Z,Y,H>0),q=G.length;for(let V=H||1*q||1;V--;){let U={type:"media-source"};if(H)U.video=W[V%H];if(q){U.audio=G[V%q];let N=U.audio.bitrate;if(U.video&&N)U.video.bitrate-=N}z.push(U)}if(Q){let V=navigator.userAgent;if(Q.split(",").some((U)=>r7(U))&&tJ())return Promise.resolve(ZX(Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent string: (${V})`),z))}return Promise.all(z.map((V)=>{let U=kH(V);return X[U]||(X[U]=J.decodingInfo(V))})).then((V)=>({supported:!V.some((U)=>!U.supported),configurations:z,decodingInfoResults:V})).catch((V)=>({supported:!1,configurations:z,decodingInfoResults:[],error:V}))}function hH(Z){var Y;let J=(Y=Z.videoCodec)==null?void 0:Y.split(","),X=JX(Z),Q=Z.width||640,z=Z.height||480,W=Z.frameRate||30,H=Z.videoRange.toLowerCase();return J?J.map((G)=>{let q={contentType:o9(IH(G),"video"),width:Q,height:z,bitrate:X,framerate:W};if(H!=="sdr")q.transferFunction=H;return q}):[]}function vH(Z,Y,J){var X;let Q=(X=Z.audioCodec)==null?void 0:X.split(","),z=JX(Z);if(Q&&Z.audioGroups)return Z.audioGroups.reduce((W,H)=>{var G;let q=H?(G=Y.groups[H])==null?void 0:G.tracks:null;if(q)return q.reduce((V,U)=>{if(U.groupId===H){let N=parseFloat(U.channels||"");Q.forEach((j)=>{let K={contentType:o9(j,"audio"),bitrate:J?gH(j,z):z};if(N)K.channels=""+N;V.push(K)})}return V},W);return W},[]);return[]}function gH(Z,Y){if(Y<=1)return 1;let J=128000;if(Z==="ec-3")J=768000;else if(Z==="ac-3")J=640000;return Math.min(Y/2,J)}function JX(Z){return Math.ceil(Math.max(Z.bitrate*0.9,Z.averageBitrate)/1000)*1000||1}function kH(Z){let Y="",{audio:J,video:X}=Z;if(X){let Q=AZ(X.contentType);Y+=`${Q}_r${X.height}x${X.width}f${Math.ceil(X.framerate)}${X.transferFunction||"sd"}_${Math.ceil(X.bitrate/1e5)}`}if(J){let Q=AZ(J.contentType);Y+=`${X?"_":""}${Q}_c${J.channels}`}return Y}var OZ=["NONE","TYPE-0","TYPE-1",null];function yH(Z){return OZ.indexOf(Z)>-1}var p7=["SDR","PQ","HLG"];function fH(Z){return!!Z&&p7.indexOf(Z)>-1}var x7={No:"",Yes:"YES",v2:"v2"};function kY(Z){let{canSkipUntil:Y,canSkipDateRanges:J,age:X}=Z,Q=X!!J).map((J)=>J.substring(0,4)).join(","),"supplemental"in Z){var Y;this.supplemental=Z.supplemental;let J=(Y=Z.supplemental)==null?void 0:Y.videoCodec;if(J&&J!==Z.videoCodec)this.codecSet+=`,${J.substring(0,4)}`}this.addGroupId("audio",Z.attrs.AUDIO),this.addGroupId("text",Z.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(Z){return yY(this._audioGroups,Z)}hasSubtitleGroup(Z){return yY(this._subtitleGroups,Z)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(Z,Y){if(!Y)return;if(Z==="audio"){let J=this._audioGroups;if(!J)J=this._audioGroups=[];if(J.indexOf(Y)===-1)J.push(Y)}else if(Z==="text"){let J=this._subtitleGroups;if(!J)J=this._subtitleGroups=[];if(J.indexOf(Y)===-1)J.push(Y)}}get urlId(){return 0}set urlId(Z){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var Z;return(Z=this.audioGroups)==null?void 0:Z[0]}get textGroupId(){var Z;return(Z=this.subtitleGroups)==null?void 0:Z[0]}addFallback(){}}function yY(Z,Y){if(!Y||!Z)return!1;return Z.indexOf(Y)!==-1}function pH(){if(typeof matchMedia==="function"){let Z=matchMedia("(dynamic-range: high)"),Y=matchMedia("bad query");if(Z.media!==Y.media)return Z.matches===!0}return!1}function mH(Z,Y){let J=!1,X=[];if(Z)J=Z!=="SDR",X=[Z];if(Y){X=Y.allowedVideoRanges||p7.slice(0);let Q=X.join("")!=="SDR"&&!Y.videoCodec;if(J=Y.preferHDR!==void 0?Y.preferHDR:Q&&pH(),!J)X=["SDR"]}return{preferHDR:J,allowedVideoRanges:X}}var uH=(Z)=>{let Y=new WeakSet;return(J,X)=>{if(Z)X=Z(J,X);if(typeof X==="object"&&X!==null){if(Y.has(X))return;Y.add(X)}return X}},K0=(Z,Y)=>JSON.stringify(Z,uH(Y));function cH(Z,Y,J,X,Q){let z=Object.keys(Z),W=X==null?void 0:X.channels,H=X==null?void 0:X.audioCodec,G=Q==null?void 0:Q.videoCodec,q=W&&parseInt(W)===2,V=!1,U=!1,N=1/0,j=1/0,K=1/0,B=1/0,R=0,E=[],{preferHDR:O,allowedVideoRanges:A}=mH(Y,Q);for(let _=z.length;_--;){let C=Z[z[_]];if(V||(V=C.channels[2]>0),N=Math.min(N,C.minHeight),j=Math.min(j,C.minFramerate),K=Math.min(K,C.minBitrate),A.filter((I)=>C.videoRanges[I]>0).length>0)U=!0}N=m(N)?N:0,j=m(j)?j:0;let $=Math.max(1080,N),L=Math.max(30,j);if(K=m(K)?K:J,J=Math.max(K,J),!U)Y=void 0;let M=z.length>1;return{codecSet:z.reduce((_,C)=>{let D=Z[C];if(C===_)return _;if(E=U?A.filter((I)=>D.videoRanges[I]>0):[],M){if(D.minBitrate>J)return V8(C,`min bitrate of ${D.minBitrate} > current estimate of ${J}`),_;if(!D.hasDefaultAudio)return V8(C,"no renditions with default or auto-select sound found"),_;if(H&&C.indexOf(H.substring(0,4))%5!==0)return V8(C,`audio codec preference "${H}" not found`),_;if(W&&!q){if(!D.channels[W])return V8(C,`no renditions with ${W} channel sound found (channels options: ${Object.keys(D.channels)})`),_}else if((!H||q)&&V&&D.channels["2"]===0)return V8(C,"no renditions with stereo sound found"),_;if(D.minHeight>$)return V8(C,`min resolution of ${D.minHeight} > maximum of ${$}`),_;if(D.minFramerate>L)return V8(C,`min framerate of ${D.minFramerate} > maximum of ${L}`),_;if(!E.some((I)=>D.videoRanges[I]>0))return V8(C,`no variants with VIDEO-RANGE of ${K0(E)} found`),_;if(G&&C.indexOf(G.substring(0,4))%5!==0)return V8(C,`video codec preference "${G}" not found`),_;if(D.maxScore=y7(_)||D.fragmentError>Z[_].fragmentError))return _;return B=D.minIndex,R=D.maxScore,C},void 0),videoRanges:E,preferHDR:O,minFramerate:j,minBitrate:K,minIndex:B}}function V8(Z,Y){q0.log(`[abr] start candidates with "${Z}" ignored because ${Y}`)}function XX(Z){return Z.reduce((Y,J)=>{let X=Y.groups[J.groupId];if(!X)X=Y.groups[J.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1};X.tracks.push(J);let Q=J.channels||"2";if(X.channels[Q]=(X.channels[Q]||0)+1,X.hasDefault=X.hasDefault||J.default,X.hasAutoSelect=X.hasAutoSelect||J.autoselect,X.hasDefault)Y.hasDefaultAudio=!0;if(X.hasAutoSelect)Y.hasAutoSelectAudio=!0;return Y},{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function dH(Z,Y,J,X){return Z.slice(J,X+1).reduce((Q,z,W)=>{if(!z.codecSet)return Q;let H=z.audioGroups,G=Q[z.codecSet];if(!G)Q[z.codecSet]=G={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,minIndex:W,maxScore:0,videoRanges:{SDR:0},channels:{"2":0},hasDefaultAudio:!H,fragmentError:0};G.minBitrate=Math.min(G.minBitrate,z.bitrate);let q=Math.min(z.height,z.width);if(G.minHeight=Math.min(G.minHeight,q),G.minFramerate=Math.min(G.minFramerate,z.frameRate),G.minIndex=Math.min(G.minIndex,W),G.maxScore=Math.max(G.maxScore,z.score),G.fragmentError+=z.fragmentError,G.videoRanges[z.videoRange]=(G.videoRanges[z.videoRange]||0)+1,H)H.forEach((V)=>{if(!V)return;let U=Y.groups[V];if(!U)return;G.hasDefaultAudio=G.hasDefaultAudio||Y.hasDefaultAudio?U.hasDefault:U.hasAutoSelect||!Y.hasDefaultAudio&&!Y.hasAutoSelectAudio,Object.keys(U.channels).forEach((N)=>{G.channels[N]=(G.channels[N]||0)+U.channels[N]})});return Q},{})}function fY(Z){if(!Z)return Z;let{lang:Y,assocLang:J,characteristics:X,channels:Q,audioCodec:z}=Z;return{lang:Y,assocLang:J,characteristics:X,channels:Q,audioCodec:z}}function B8(Z,Y,J){if("attrs"in Z){let X=Y.indexOf(Z);if(X!==-1)return X}for(let X=0;XX.indexOf(Q)===-1)}function Z9(Z,Y){let{audioCodec:J,channels:X}=Z;return(J===void 0||(Y.audioCodec||"").substring(0,4)===J.substring(0,4))&&(X===void 0||X===(Y.channels||"2"))}function nH(Z,Y,J,X,Q){let z=Y[X],H=Y.reduce((N,j,K)=>{let B=j.uri;return(N[B]||(N[B]=[])).push(K),N},{})[z.uri];if(H.length>1)X=Math.max.apply(Math,H);let{videoRange:G,frameRate:q}=z,V=z.codecSet.substring(0,4),U=pY(Y,X,(N)=>{if(N.videoRange!==G||N.frameRate!==q||N.codecSet.substring(0,4)!==V)return!1;let j=N.audioGroups,K=J.filter((B)=>!j||j.indexOf(B.groupId)!==-1);return B8(Z,K,Q)>-1});if(U>-1)return U;return pY(Y,X,(N)=>{let j=N.audioGroups,K=J.filter((B)=>!j||j.indexOf(B.groupId)!==-1);return B8(Z,K,Q)>-1})}function pY(Z,Y,J){for(let X=Y;X>-1;X--)if(J(Z[X]))return X;for(let X=Y+1;X{var J;let{fragCurrent:X,partCurrent:Q,hls:z}=this,{autoLevelEnabled:W,media:H}=z;if(!X||!H)return;let G=performance.now(),q=Q?Q.stats:X.stats,V=Q?Q.duration:X.duration,U=G-q.loading.start,N=z.minAutoLevel,j=X.level,K=this._nextAutoLevel;if(q.aborted||q.loaded&&q.loaded===q.total||j<=N){this.clearTimer(),this._nextAutoLevel=-1;return}if(!W)return;let B=K>-1&&K!==j,R=!!Y||B;if(!R&&(H.paused||!H.playbackRate||!H.readyState))return;let E=z.mainForwardBufferInfo;if(!R&&E===null)return;let O=this.bwEstimator.getEstimateTTFB(),A=Math.abs(H.playbackRate);if(U<=Math.max(O,1000*(V/(A*2))))return;let $=E?E.len/A:0,L=q.loading.first?q.loading.first-q.loading.start:-1,M=q.loaded&&L>-1,w=this.getBwEstimate(),_=z.levels,C=_[j],D=Math.max(q.loaded,Math.round(V*(X.bitrate||C.averageBitrate)/8)),I=M?U-L:U;if(I<1&&M)I=Math.min(U,q.loaded*8/w);let h=M?q.loaded*1000/I:0,y=O/1000,c=h?(D-q.loaded)/h:D*8/w+y;if(c<=$)return;let T=h?h*8:w,p=((J=(Y==null?void 0:Y.details)||this.hls.latestLevelDetails)==null?void 0:J.live)===!0,k=this.hls.config.abrBandWidthUpFactor,l=Number.POSITIVE_INFINITY,i;for(i=j-1;i>N;i--){let Q0=_[i].maxBitrate,e=!_[i].details||p;if(l=this.getTimeToLoadFrag(y,T,V*Q0,e),l=c)return;if(l>V*10)return;if(M)this.bwEstimator.sample(U-Math.min(O,L),q.loaded);else this.bwEstimator.sampleTTFB(U);let g=_[i].maxBitrate;if(this.getBwEstimate()*k>g)this.resetEstimator(g);let f=this.findBestLevel(g,N,i,0,$,1,1);if(f>-1)i=f;this.warn(`Fragment ${X.sn}${Q?" part "+Q.index:""} of level ${j} is loading too slowly; Fragment duration: ${X.duration.toFixed(3)} Time to underbuffer: ${$.toFixed(3)} s Estimated load time for current fragment: ${c.toFixed(3)} s Estimated load time for down switch fragment: ${l.toFixed(3)} s TTFB estimate: ${L|0} ms Current BW estimate: ${m(w)?w|0:"Unknown"} bps New BW estimate: ${this.getBwEstimate()|0} bps Switching to level ${i} @ ${g|0} bps`),z.nextLoadLevel=z.nextAutoLevel=i,this.clearTimer();let s=()=>{if(this.clearTimer(),this.fragCurrent===X&&this.hls.loadLevel===i&&i>0){let Q0=this.getStarvationDelay();if(this.warn(`Aborting inflight request ${i>0?"and switching down":""} Fragment duration: ${X.duration.toFixed(3)} s Time to underbuffer: ${Q0.toFixed(3)} s`),X.abortRequests(),this.fragCurrent=this.partCurrent=null,i>N){let e=this.findBestLevel(this.hls.levels[N].bitrate,N,i,0,Q0,1,1);if(e===-1)e=N;this.hls.nextLoadLevel=this.hls.nextAutoLevel=e,this.resetEstimator(this.hls.levels[e].bitrate)}}};if(B||c>l*2)s();else this.timer=self.setInterval(s,l*1000);z.trigger(F.FRAG_LOAD_EMERGENCY_ABORTED,{frag:X,part:Q,stats:q})},this.hls=Z,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(Z){if(Z)this.log(`setting initial bwe to ${Z}`),this.hls.config.abrEwmaDefaultEstimate=Z;this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){let Z=this.hls.config;return new pJ(Z.abrEwmaSlowVoD,Z.abrEwmaFastVoD,Z.abrEwmaDefaultEstimate)}registerListeners(){let{hls:Z}=this;Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.FRAG_LOADING,this.onFragLoading,this),Z.on(F.FRAG_LOADED,this.onFragLoaded,this),Z.on(F.FRAG_BUFFERED,this.onFragBuffered,this),Z.on(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.on(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.on(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.on(F.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;if(!Z)return;Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.FRAG_LOADING,this.onFragLoading,this),Z.off(F.FRAG_LOADED,this.onFragLoaded,this),Z.off(F.FRAG_BUFFERED,this.onFragBuffered,this),Z.off(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.off(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.off(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.off(F.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),Z.off(F.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=this.supportedCache=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(Z,Y){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.supportedCache={},this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){if(this.lastLoadedFragLevel>-1&&this.fragCurrent)this.lastLoadedFragLevel=this.fragCurrent.level;this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(Z,Y){let J=Y.frag;if(this.ignoreFragment(J))return;if(!J.bitrateTest){var X;this.fragCurrent=J,this.partCurrent=(X=Y.part)!=null?X:null}this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}onLevelSwitching(Z,Y){this.clearTimer()}onError(Z,Y){if(Y.fatal)return;switch(Y.details){case b.BUFFER_ADD_CODEC_ERROR:case b.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case b.FRAG_LOAD_TIMEOUT:{let J=Y.frag,{fragCurrent:X,partCurrent:Q}=this;if(J&&X&&J.sn===X.sn&&J.level===X.level){let z=performance.now(),W=Q?Q.stats:J.stats,H=z-W.loading.start,G=W.loading.first?W.loading.first-W.loading.start:-1;if(W.loaded&&G>-1){let V=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(H-Math.min(V,G),W.loaded)}else this.bwEstimator.sampleTTFB(H)}break}}}getTimeToLoadFrag(Z,Y,J,X){let Q=Z+J/Y,z=X?Z+this.lastLevelLoadSec:0;return Q+z}onLevelLoaded(Z,Y){let J=this.hls.config,{loading:X}=Y.stats,Q=X.end-X.first;if(m(Q))this.lastLevelLoadSec=Q/1000;if(Y.details.live)this.bwEstimator.update(J.abrEwmaSlowLive,J.abrEwmaFastLive);else this.bwEstimator.update(J.abrEwmaSlowVoD,J.abrEwmaFastVoD);if(this.timer>-1)this._abandonRulesCheck(Y.levelInfo)}onFragLoaded(Z,{frag:Y,part:J}){let X=J?J.stats:Y.stats;if(Y.type===o.MAIN)this.bwEstimator.sampleTTFB(X.loading.first-X.loading.start);if(this.ignoreFragment(Y))return;if(this.clearTimer(),Y.level===this._nextAutoLevel)this._nextAutoLevel=-1;if(this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){let Q=J?J.duration:Y.duration,z=this.hls.levels[Y.level],W=(z.loaded?z.loaded.bytes:0)+X.loaded,H=(z.loaded?z.loaded.duration:0)+Q;z.loaded={bytes:W,duration:H},z.realBitrate=Math.round(8*W/H)}if(Y.bitrateTest){let Q={stats:X,frag:Y,part:J,id:Y.type};this.onFragBuffered(F.FRAG_BUFFERED,Q),Y.bitrateTest=!1}else this.lastLoadedFragLevel=Y.level}onFragBuffered(Z,Y){let{frag:J,part:X}=Y,Q=X!=null&&X.stats.loaded?X.stats:J.stats;if(Q.aborted)return;if(this.ignoreFragment(J))return;let z=Q.parsing.end-Q.loading.start-Math.min(Q.loading.first-Q.loading.start,this.bwEstimator.getEstimateTTFB());if(this.bwEstimator.sample(z,Q.loaded),Q.bwEstimate=this.getBwEstimate(),J.bitrateTest)this.bitrateTestDelay=z/1000;else this.bitrateTestDelay=0}ignoreFragment(Z){return Z.type!==o.MAIN||Z.sn==="initSegment"}clearTimer(){if(this.timer>-1)self.clearInterval(this.timer),this.timer=-1}get firstAutoLevel(){let{maxAutoLevel:Z,minAutoLevel:Y}=this.hls,J=this.getBwEstimate(),X=this.hls.config.maxStarvationDelay,Q=this.findBestLevel(J,Y,Z,0,X,1,1);if(Q>-1)return Q;let z=this.hls.firstLevel,W=Math.min(Math.max(z,Y),Z);return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${z} clamped to ${W}`),W}get forcedAutoLevel(){if(this.nextAutoLevelKey)return-1;return this._nextAutoLevel}get nextAutoLevel(){let Z=this.forcedAutoLevel,J=this.bwEstimator.canEstimate(),X=this.lastLoadedFragLevel>-1;if(Z!==-1&&(!J||!X||this.nextAutoLevelKey===this.getAutoLevelKey()))return Z;let Q=J&&X?this.getNextABRAutoLevel():this.firstAutoLevel;if(Z!==-1){let z=this.hls.levels;if(z.length>Math.max(Z,Q)&&z[Z].loadError<=z[Q].loadError)return Z}return this._nextAutoLevel=Q,this.nextAutoLevelKey=this.getAutoLevelKey(),Q}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){let{fragCurrent:Z,partCurrent:Y,hls:J}=this;if(J.levels.length<=1)return J.loadLevel;let{maxAutoLevel:X,config:Q,minAutoLevel:z}=J,W=Y?Y.duration:Z?Z.duration:0,H=this.getBwEstimate(),G=this.getStarvationDelay(),q=Q.abrBandWidthFactor,V=Q.abrBandWidthUpFactor;if(G){let B=this.findBestLevel(H,z,X,G,0,q,V);if(B>=0)return this.rebufferNotice=-1,B}let U=W?Math.min(W,Q.maxStarvationDelay):Q.maxStarvationDelay;if(!G){let B=this.bitrateTestDelay;if(B)U=(W?Math.min(W,Q.maxLoadingDelay):Q.maxLoadingDelay)-B,this.info(`bitrate test took ${Math.round(1000*B)}ms, set first fragment max fetchDuration to ${Math.round(1000*U)} ms`),q=V=1}let N=this.findBestLevel(H,z,X,G,U,q,V);if(this.rebufferNotice!==N)this.rebufferNotice=N,this.info(`${G?"rebuffering expected":"buffer is empty"}, optimal quality level ${N}`);if(N>-1)return N;let j=J.levels[z],K=J.loadLevelObj;if(K&&(j==null?void 0:j.bitrate)=Y;T--){var c;let p=j[T],k=T>V;if(!p)continue;if(R.useMediaCapabilities&&!p.supportedResult&&!p.supportedPromise){let e=navigator.mediaCapabilities;if(typeof(e==null?void 0:e.decodingInfo)==="function"&&TH(p,C,L,M,Z,w))p.supportedPromise=YX(p,C,e,this.supportedCache),p.supportedPromise.then((z0)=>{if(!this.hls)return;p.supportedResult=z0;let M0=this.hls.levels,_0=M0.indexOf(p);if(z0.error)this.warn(`MediaCapabilities decodingInfo error: "${z0.error}" for level ${_0} ${K0(z0)}`);else if(!z0.supported){if(this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${_0} ${K0(z0)}`),_0>-1&&M0.length>1){if(this.log(`Removing unsupported level ${_0}`),this.hls.removeLevel(_0),this.hls.loadLevel===-1)this.hls.nextLoadLevel=0}}else if(z0.decodingInfoResults.some((n0)=>n0.smooth===!1||n0.powerEfficient===!1))this.log(`MediaCapabilities decodingInfo for level ${_0} not smooth or powerEfficient: ${K0(z0)}`)}).catch((z0)=>{this.warn(`Error handling MediaCapabilities decodingInfo: ${z0}`)});else p.supportedResult=eJ}if($&&p.codecSet!==$||L&&p.videoRange!==L||k&&M>p.frameRate||!k&&M>0&&Me.smooth===!1)){if(!A||T!==D){y.push(T);continue}}let l=p.details,i=(N?l==null?void 0:l.partTarget:l==null?void 0:l.averagetargetduration)||I,g;if(!k)g=z*Z;else g=W*Z;let f=I&&X>=I*2&&Q===0?p.averageBitrate:p.maxBitrate,s=this.getTimeToLoadFrag(h,g,f*i,l===void 0);if(g>=f&&(T===q||p.loadError===0&&p.fragmentError===0)&&(s<=h||!m(s)||O&&!this.bitrateTestDelay||s${T} adjustedbw(${Math.round(g)})-bitrate=${Math.round(g-f)} ttfb:${h.toFixed(1)} avgDuration:${i.toFixed(1)} maxFetchDuration:${G.toFixed(1)} fetchDuration:${s.toFixed(1)} firstSelection:${A} codecSet:${p.codecSet} videoRange:${p.videoRange} hls.loadLevel:${B}`)}if(A)this.firstSelection=T;return T}}return-1}set nextAutoLevel(Z){let Y=this.deriveNextAutoLevel(Z);if(this._nextAutoLevel!==Y)this.nextAutoLevelKey="",this._nextAutoLevel=Y}deriveNextAutoLevel(Z){let{maxAutoLevel:Y,minAutoLevel:J}=this.hls;return Math.min(Math.max(Z,J),Y)}}var zX={search:function(Z,Y){let J=0,X=Z.length-1,Q=null,z=null;while(J<=X){Q=(J+X)/2|0,z=Z[Q];let W=Y(z);if(W>0)J=Q+1;else if(W<0)X=Q-1;else return z}return null}};function sH(Z,Y,J){if(Y===null||!Array.isArray(Z)||!Z.length||!m(Y))return null;let X=Z[0].programDateTime;if(Y<(X||0))return null;let Q=Z[Z.length-1].endProgramDateTime;if(Y>=(Q||0))return null;for(let z=0;z0&&H<0.0000015)J+=0.0000015;if(z&&Z.level!==z.level&&z.end<=Z.end)z=Y[2+Z.sn-Y[0].sn]||null}else if(J===0&&Y[0].start===0)z=Y[0];if(z&&((!Z||Z.level===z.level)&&mY(J,X,z)===0||iH(z,Z,Math.min(Q,X))))return z;let W=zX.search(Y,mY.bind(null,J,X));if(W&&(W!==Z||!z))return W;return z}function iH(Z,Y,J){if(Y&&Y.start===0&&Y.level0){let X=Y.tagList.reduce((Q,z)=>{if(z[0]==="INF")Q+=parseFloat(z[1]);return Q},J);return Z.start<=X}return!1}function mY(Z=0,Y=0,J){if(J.start<=Z&&J.start+J.duration>Z)return 0;let X=Math.min(Y,J.duration+(J.deltaPTS?J.deltaPTS:0));if(J.start+J.duration-X<=Z)return 1;else if(J.start-X>Z&&J.start)return-1;return 0}function rH(Z,Y,J){let X=Math.min(Y,J.duration+(J.deltaPTS?J.deltaPTS:0))*1000;return(J.endProgramDateTime||0)-X>Z}function WX(Z,Y,J){if(Z){if(Z.startCC<=Y&&Z.endCC>=Y){let X=Z.fragments,{fragmentHint:Q}=Z;if(Q)X=X.concat(Q);let z;return zX.search(X,(W)=>{if(W.ccY)return-1;if(z=W,W.end<=J)return 1;if(W.start>J)return-1;return 0}),z||null}}return null}function u7(Z){switch(Z.details){case b.FRAG_LOAD_TIMEOUT:case b.KEY_LOAD_TIMEOUT:case b.LEVEL_LOAD_TIMEOUT:case b.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function GX(Z){return Z.details.startsWith("key")}function HX(Z){return GX(Z)&&!!Z.frag&&!Z.frag.decryptdata}function uY(Z,Y){let J=u7(Y);return Z.default[`${J?"timeout":"error"}Retry`]}function lZ(Z,Y){let J=Z.backoff==="linear"?1:Math.pow(2,Y);return Math.min(J*Z.retryDelayMs,Z.maxRetryDelayMs)}function cY(Z){return H0(H0({},Z),{errorRetry:null,timeoutRetry:null})}function c7(Z,Y,J,X){if(!Z)return!1;let Q=X==null?void 0:X.code,z=Y499)}function MZ(Z){return Z===0&&navigator.onLine===!1}var S0={DoNothing:0,SendEndCallback:1,SendAlternateToPenaltyBox:2,RemoveAlternatePermanently:3,InsertDiscontinuity:4,RetryRequest:5},u0={None:0,MoveAllAlternatesMatchingHost:1,MoveAllAlternatesMatchingHDCP:2,MoveAllAlternatesMatchingKey:4,SwitchToSDR:8};class qX extends l0{constructor(Z){super("error-controller",Z.logger);this.hls=void 0,this.playlistError=0,this.hls=Z,this.registerListeners()}registerListeners(){let Z=this.hls;Z.on(F.ERROR,this.onError,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){let Z=this.hls;if(!Z)return;Z.off(F.ERROR,this.onError,this),Z.off(F.ERROR,this.onErrorOut,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.LEVEL_UPDATED,this.onLevelUpdated,this)}destroy(){this.unregisterListeners(),this.hls=null}startLoad(Z){}stopLoad(){this.playlistError=0}getVariantLevelIndex(Z){if((Z==null?void 0:Z.type)===o.MAIN)return Z.level;return this.getVariantIndex()}getVariantIndex(){var Z;let Y=this.hls,J=Y.currentLevel;if((Z=Y.loadLevelObj)!=null&&Z.details||J===-1)return Y.loadLevel;return J}variantHasKey(Z,Y){if(Z){var J;if((J=Z.details)!=null&&J.hasKey(Y))return!0;let X=Z.audioGroups;if(X)return this.hls.allAudioTracks.filter((z)=>X.indexOf(z.groupId)>=0).some((z)=>{var W;return(W=z.details)==null?void 0:W.hasKey(Y)})}return!1}onManifestLoading(){this.playlistError=0}onLevelUpdated(){this.playlistError=0}onError(Z,Y){var J;if(Y.fatal)return;let X=this.hls,Q=Y.context;switch(Y.details){case b.FRAG_LOAD_ERROR:case b.FRAG_LOAD_TIMEOUT:case b.KEY_LOAD_ERROR:case b.KEY_LOAD_TIMEOUT:Y.errorAction=this.getFragRetryOrSwitchAction(Y);return;case b.FRAG_PARSING_ERROR:if((J=Y.frag)!=null&&J.gap){Y.errorAction=B9();return}case b.FRAG_GAP:case b.FRAG_DECRYPT_ERROR:{Y.errorAction=this.getFragRetryOrSwitchAction(Y),Y.errorAction.action=S0.SendAlternateToPenaltyBox;return}case b.LEVEL_EMPTY_ERROR:case b.LEVEL_PARSING_ERROR:{var z;let H=Y.parent===o.MAIN?Y.level:X.loadLevel;if(Y.details===b.LEVEL_EMPTY_ERROR&&!!((z=Y.context)!=null&&(z=z.levelDetails)!=null&&z.live))Y.errorAction=this.getPlaylistRetryOrSwitchAction(Y,H);else Y.levelRetry=!1,Y.errorAction=this.getLevelSwitchAction(Y,H)}return;case b.LEVEL_LOAD_ERROR:case b.LEVEL_LOAD_TIMEOUT:if(typeof(Q==null?void 0:Q.level)==="number")Y.errorAction=this.getPlaylistRetryOrSwitchAction(Y,Q.level);return;case b.AUDIO_TRACK_LOAD_ERROR:case b.AUDIO_TRACK_LOAD_TIMEOUT:case b.SUBTITLE_LOAD_ERROR:case b.SUBTITLE_TRACK_LOAD_TIMEOUT:if(Q){let H=X.loadLevelObj;if(H&&(Q.type===J0.AUDIO_TRACK&&H.hasAudioGroup(Q.groupId)||Q.type===J0.SUBTITLE_TRACK&&H.hasSubtitleGroup(Q.groupId))){Y.errorAction=this.getPlaylistRetryOrSwitchAction(Y,X.loadLevel),Y.errorAction.action=S0.SendAlternateToPenaltyBox,Y.errorAction.flags=u0.MoveAllAlternatesMatchingHost;return}}return;case b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:Y.errorAction={action:S0.SendAlternateToPenaltyBox,flags:u0.MoveAllAlternatesMatchingHDCP};return;case b.KEY_SYSTEM_SESSION_UPDATE_FAILED:case b.KEY_SYSTEM_STATUS_INTERNAL_ERROR:case b.KEY_SYSTEM_NO_SESSION:Y.errorAction={action:S0.SendAlternateToPenaltyBox,flags:u0.MoveAllAlternatesMatchingKey};return;case b.BUFFER_ADD_CODEC_ERROR:case b.REMUX_ALLOC_ERROR:case b.BUFFER_APPEND_ERROR:if(!Y.errorAction){var W;Y.errorAction=this.getLevelSwitchAction(Y,(W=Y.level)!=null?W:X.loadLevel)}return;case b.INTERNAL_EXCEPTION:case b.BUFFER_APPENDING_ERROR:case b.BUFFER_FULL_ERROR:case b.LEVEL_SWITCH_ERROR:case b.BUFFER_STALLED_ERROR:case b.BUFFER_SEEK_OVER_HOLE:case b.BUFFER_NUDGE_ON_STALL:Y.errorAction=B9();return}if(Y.type===n.KEY_SYSTEM_ERROR)Y.levelRetry=!1,Y.errorAction=B9()}getPlaylistRetryOrSwitchAction(Z,Y){let J=this.hls,X=uY(J.config.playlistLoadPolicy,Z),Q=this.playlistError++;if(c7(X,Q,u7(Z),Z.response))return{action:S0.RetryRequest,flags:u0.None,retryConfig:X,retryCount:Q};let W=this.getLevelSwitchAction(Z,Y);if(X)W.retryConfig=X,W.retryCount=Q;return W}getFragRetryOrSwitchAction(Z){let Y=this.hls,J=this.getVariantLevelIndex(Z.frag),X=Y.levels[J],{fragLoadPolicy:Q,keyLoadPolicy:z}=Y.config,W=uY(GX(Z)?z:Q,Z),H=Y.levels.reduce((q,V)=>q+V.fragmentError,0);if(X){if(Z.details!==b.FRAG_GAP)X.fragmentError++;if(!HX(Z)){if(c7(W,H,u7(Z),Z.response))return{action:S0.RetryRequest,flags:u0.None,retryConfig:W,retryCount:H}}}let G=this.getLevelSwitchAction(Z,J);if(W)G.retryConfig=W,G.retryCount=H;return G}getLevelSwitchAction(Z,Y){let J=this.hls;if(Y===null||Y===void 0)Y=J.loadLevel;let X=this.hls.levels[Y];if(X){var Q,z;let G=Z.details;if(X.loadError++,G===b.BUFFER_APPEND_ERROR)X.fragmentError++;let q=-1,{levels:V,loadLevel:U,minAutoLevel:N,maxAutoLevel:j}=J;if(!J.autoLevelEnabled&&!J.config.preserveManualLevelOnError)J.loadLevel=-1;let K=(Q=Z.frag)==null?void 0:Q.type,R=(K===o.AUDIO&&G===b.FRAG_PARSING_ERROR||Z.sourceBufferName==="audio"&&(G===b.BUFFER_ADD_CODEC_ERROR||G===b.BUFFER_APPEND_ERROR))&&V.some(({audioCodec:L})=>X.audioCodec!==L),O=Z.sourceBufferName==="video"&&(G===b.BUFFER_ADD_CODEC_ERROR||G===b.BUFFER_APPEND_ERROR)&&V.some(({codecSet:L,audioCodec:M})=>X.codecSet!==L&&X.audioCodec===M),{type:A,groupId:$}=(z=Z.context)!=null?z:{};for(let L=V.length;L--;){let M=(L+U)%V.length;if(M!==U&&M>=N&&M<=j&&V[M].loadError===0){var W,H;let w=V[M];if(G===b.FRAG_GAP&&K===o.MAIN&&Z.frag){let _=V[M].details;if(_){let C=J9(Z.frag,_.fragments,Z.frag.start);if(C!=null&&C.gap)continue}}else if(A===J0.AUDIO_TRACK&&w.hasAudioGroup($)||A===J0.SUBTITLE_TRACK&&w.hasSubtitleGroup($))continue;else if(K===o.AUDIO&&(W=X.audioGroups)!=null&&W.some((_)=>w.hasAudioGroup(_))||K===o.SUBTITLE&&(H=X.subtitleGroups)!=null&&H.some((_)=>w.hasSubtitleGroup(_))||R&&X.audioCodec===w.audioCodec||O&&X.codecSet===w.codecSet||!R&&X.codecSet!==w.codecSet)continue;q=M;break}}if(q>-1&&J.loadLevel!==q)return Z.levelRetry=!0,this.playlistError=0,{action:S0.SendAlternateToPenaltyBox,flags:u0.None,nextAutoLevel:q}}return{action:S0.SendAlternateToPenaltyBox,flags:u0.MoveAllAlternatesMatchingHost}}onErrorOut(Z,Y){var J;switch((J=Y.errorAction)==null?void 0:J.action){case S0.DoNothing:break;case S0.SendAlternateToPenaltyBox:if(this.sendAlternateToPenaltyBox(Y),!Y.errorAction.resolved&&Y.details!==b.FRAG_GAP)Y.fatal=!0;else if(/MediaSource readyState: ended/.test(Y.error.message))this.warn(`MediaSource ended after "${Y.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError();break;case S0.RetryRequest:break}if(Y.fatal){this.hls.stopLoad();return}}sendAlternateToPenaltyBox(Z){let Y=this.hls,J=Z.errorAction;if(!J)return;let{flags:X}=J,Q=J.nextAutoLevel;switch(X){case u0.None:this.switchLevel(Z,Q);break;case u0.MoveAllAlternatesMatchingHDCP:{let H=this.getVariantLevelIndex(Z.frag),G=Y.levels[H],q=G==null?void 0:G.attrs["HDCP-LEVEL"];if(J.hdcpLevel=q,q==="NONE")this.warn("HDCP policy resticted output with HDCP-LEVEL=NONE");else if(q){Y.maxHdcpLevel=OZ[OZ.indexOf(q)-1],J.resolved=!0,this.warn(`Restricting playback to HDCP-LEVEL of "${Y.maxHdcpLevel}" or lower`);break}}case u0.MoveAllAlternatesMatchingKey:{let H=Z.decryptdata;if(H){let G=this.hls.levels,q=G.length;for(let U=q;U--;)if(this.variantHasKey(G[U],H)){var z,W;this.log(`Banned key found in level ${U} (${G[U].bitrate}bps) or audio group "${(z=G[U].audioGroups)==null?void 0:z.join(",")}" (${(W=Z.frag)==null?void 0:W.type} fragment) ${T0(H.keyId||[])}`),G[U].fragmentError++,G[U].loadError++,this.log(`Removing level ${U} with key error (${Z.error})`),this.hls.removeLevel(U)}let V=Z.frag;if(this.hls.levels.length{let H=this.fragments[W];if(!H)return;if(z>=H.body.sn)return;if(!H.buffered&&(!H.loaded||Q)){if(H.body.type===J)this.removeFragment(H.body);return}let G=H.range[Z];if(!G)return;if(G.time.length===0){this.removeFragment(H.body);return}G.time.some((q)=>{let V=!this.isTimeBuffered(q.startPTS,q.endPTS,Y);if(V)this.removeFragment(H.body);return V})})}detectPartialFragments(Z){let Y=this.timeRanges;if(!Y||Z.frag.sn==="initSegment")return;let J=Z.frag,X=H9(J),Q=this.fragments[X];if(!Q||Q.buffered&&J.gap)return;let z=!J.relurl;if(Object.keys(Y).forEach((W)=>{let H=J.elementaryStreams[W];if(!H)return;let G=Y[W],q=z||H.partial===!0;Q.range[W]=this.getBufferedTimes(J,Z.part,q,G)}),Q.loaded=null,Object.keys(Q.range).length){if(this.bufferedEnd(Q,J),!E7(Q))this.removeParts(J.sn-1,J.type)}else this.removeFragment(Q.body)}bufferedEnd(Z,Y){if(Z.buffered=!0,Z.body.endList=Y.endList||Z.body.endList)this.endListFragments[Z.body.type]=Z}removeParts(Z,Y){let J=this.activePartLists[Y];if(!J)return;this.activePartLists[Y]=dY(J,(X)=>X.fragment.sn>=Z)}fragBuffered(Z,Y){let J=H9(Z),X=this.fragments[J];if(!X&&Y){if(X=this.fragments[J]={body:Z,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},Z.gap)this.hasGaps=!0}if(X)X.loaded=null,this.bufferedEnd(X,Z)}getBufferedTimes(Z,Y,J,X){let Q={time:[],partial:J},z=Z.start,W=Z.end,H=Z.minEndPTS||W,G=Z.maxStartPTS||z;for(let q=0;q=V&&H<=U){Q.time.push({startPTS:Math.max(z,X.start(q)),endPTS:Math.min(W,X.end(q))});break}else if(zV){let N=Math.max(z,X.start(q)),j=Math.min(W,X.end(q));if(j>N)Q.partial=!0,Q.time.push({startPTS:N,endPTS:j})}else if(W<=V)break}return Q}getPartialFragment(Z){let Y=null,J,X,Q,z=0,{bufferPadding:W,fragments:H}=this;return Object.keys(H).forEach((G)=>{let q=H[G];if(!q)return;if(E7(q)){if(X=q.body.start-W,Q=q.body.end+W,Z>=X&&Z<=Q){if(J=Math.min(Z-X,Q-Z),z<=J)Y=q.body,z=J}}}),Y}isEndListAppended(Z){let Y=this.endListFragments[Z];return Y!==void 0&&(Y.buffered||E7(Y))}getState(Z){let Y=H9(Z),J=this.fragments[Y];if(J)if(!J.buffered)return P0.APPENDING;else if(E7(J))return P0.PARTIAL;else return P0.OK;return P0.NOT_LOADED}isTimeBuffered(Z,Y,J){let X,Q;for(let z=0;z=X&&Y<=Q)return!0;if(Y<=X)return!1}return!1}onManifestLoading(){this.removeAllFragments()}onFragLoaded(Z,Y){if(Y.frag.sn==="initSegment"||Y.frag.bitrateTest)return;let J=Y.frag,X=Y.part?null:Y,Q=H9(J);this.fragments[Q]={body:J,appendedPTS:null,loaded:X,buffered:!1,range:Object.create(null)}}onBufferAppended(Z,Y){let{frag:J,part:X,timeRanges:Q,type:z}=Y;if(J.sn==="initSegment")return;let W=J.type;if(X){let G=this.activePartLists[W];if(!G)this.activePartLists[W]=G=[];G.push(X)}this.timeRanges=Q;let H=Q[z];this.detectEvictedFragments(z,H,W,X)}onFragBuffered(Z,Y){this.detectPartialFragments(Y)}hasFragment(Z){let Y=H9(Z);return!!this.fragments[Y]}hasFragments(Z){let{fragments:Y}=this,J=Object.keys(Y);if(!Z)return J.length>0;for(let X=J.length;X--;){let Q=Y[J[X]];if((Q==null?void 0:Q.body.type)===Z)return!0}return!1}hasParts(Z){var Y;return!!((Y=this.activePartLists[Z])!=null&&Y.length)}removeFragmentsInRange(Z,Y,J,X,Q){if(X&&!this.hasGaps)return;Object.keys(this.fragments).forEach((z)=>{let W=this.fragments[z];if(!W)return;let H=W.body;if(H.type!==J||X&&!H.gap)return;if(H.startZ&&(W.buffered||Q))this.removeFragment(H)})}removeFragment(Z){let Y=H9(Z);Z.clearElementaryStreamInfo();let J=this.activePartLists[Z.type];if(J){let X=Z.sn;this.activePartLists[Z.type]=dY(J,(Q)=>Q.fragment.sn!==X)}if(delete this.fragments[Y],Z.endList)delete this.endListFragments[Z.type]}removeAllFragments(){var Z;this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1;let Y=(Z=this.hls)==null||(Z=Z.latestLevelDetails)==null?void 0:Z.partList;if(Y)Y.forEach((J)=>J.clearElementaryStreamInfo())}}function E7(Z){var Y,J,X;return Z.buffered&&!!(Z.body.gap||(Y=Z.range.video)!=null&&Y.partial||(J=Z.range.audio)!=null&&J.partial||(X=Z.range.audiovideo)!=null&&X.partial)}function H9(Z){return`${Z.type}_${Z.level}_${Z.sn}`}function dY(Z,Y){return Z.filter((J)=>{let X=Y(J);if(!X)J.clearElementaryStreamInfo();return X})}var y8={cbc:0,ctr:1};class UX{constructor(Z,Y,J){this.subtle=void 0,this.aesIV=void 0,this.aesMode=void 0,this.subtle=Z,this.aesIV=Y,this.aesMode=J}decrypt(Z,Y){switch(this.aesMode){case y8.cbc:return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},Y,Z);case y8.ctr:return this.subtle.decrypt({name:"AES-CTR",counter:this.aesIV,length:64},Y,Z);default:throw Error(`[AESCrypto] invalid aes mode ${this.aesMode}`)}}}function tH(Z){let Y=Z.byteLength,J=Y&&new DataView(Z.buffer).getUint8(Y-1);if(J)return Z.slice(0,Y-J);return Z}class jX{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(Z){let Y=new DataView(Z),J=new Uint32Array(4);for(let X=0;X<4;X++)J[X]=Y.getUint32(X*4);return J}initTable(){let Z=this.sBox,Y=this.invSBox,J=this.subMix,X=J[0],Q=J[1],z=J[2],W=J[3],H=this.invSubMix,G=H[0],q=H[1],V=H[2],U=H[3],N=new Uint32Array(256),j=0,K=0,B=0;for(B=0;B<256;B++)if(B<128)N[B]=B<<1;else N[B]=B<<1^283;for(B=0;B<256;B++){let R=K^K<<1^K<<2^K<<3^K<<4;R=R>>>8^R&255^99,Z[j]=R,Y[R]=j;let E=N[j],O=N[E],A=N[O],$=N[R]*257^R*16843008;if(X[j]=$<<24|$>>>8,Q[j]=$<<16|$>>>16,z[j]=$<<8|$>>>24,W[j]=$,$=A*16843009^O*65537^E*257^j*16843008,G[R]=$<<24|$>>>8,q[R]=$<<16|$>>>16,V[R]=$<<8|$>>>24,U[R]=$,!j)j=K=1;else j=E^N[N[N[A^E]]],K^=N[N[K]]}}expandKey(Z){let Y=this.uint8ArrayToUint32Array_(Z),J=!0,X=0;while(X{let W=ArrayBuffer.isView(Z)?Z:new Uint8Array(Z);this.softwareDecrypt(W,Y,J,X);let H=this.flush();if(H)Q(H.buffer);else z(Error("[softwareDecrypt] Failed to decrypt data"))});return this.webCryptoDecrypt(new Uint8Array(Z),Y,J,X)}softwareDecrypt(Z,Y,J,X){let{currentIV:Q,currentResult:z,remainderData:W}=this;if(X!==y8.cbc||Y.byteLength!==16)return q0.warn("SoftwareDecrypt: can only handle AES-128-CBC"),null;if(this.logOnce("JS AES decrypt"),W)Z=a0(W,Z),this.remainderData=null;let H=this.getValidChunk(Z);if(!H.length)return null;if(Q)J=Q;let G=this.softwareDecrypter;if(!G)G=this.softwareDecrypter=new jX;G.expandKey(Y);let q=z;if(this.currentResult=G.decrypt(H.buffer,0,J),this.currentIV=H.slice(-16).buffer,!q)return null;return q}webCryptoDecrypt(Z,Y,J,X){if(this.key!==Y||!this.fastAesKey){if(!this.subtle)return Promise.resolve(this.onWebCryptoError(Z,Y,J,X));this.key=Y,this.fastAesKey=new NX(this.subtle,Y,X)}return this.fastAesKey.expandKey().then((Q)=>{if(!this.subtle)return Promise.reject(Error("web crypto not initialized"));return this.logOnce("WebCrypto AES decrypt"),new UX(this.subtle,new Uint8Array(J),X).decrypt(Z.buffer,Q)}).catch((Q)=>{return q0.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${Q.name}: ${Q.message}`),this.onWebCryptoError(Z,Y,J,X)})}onWebCryptoError(Z,Y,J,X){let Q=this.enableSoftwareAES;if(Q){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(Z,Y,J,X);let z=this.flush();if(z)return z.buffer}throw Error("WebCrypto"+(Q?" and softwareDecrypt":"")+": failed to decrypt data")}getValidChunk(Z){let Y=Z,J=Z.length-Z.length%Z3;if(J!==Z.length)Y=Z.slice(0,J),this.remainderData=Z.slice(J);return Y}logOnce(Z){if(!this.logEnabled)return;q0.log(`[decrypter]: ${Z}`),this.logEnabled=!1}}var oY=Math.pow(2,17);class KX{constructor(Z){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=Z}destroy(){if(this.loader)this.loader.destroy(),this.loader=null}abort(){if(this.loader)this.loader.abort()}load(Z,Y){let J=Z.url;if(!J)return Promise.reject(new N8({type:n.NETWORK_ERROR,details:b.FRAG_LOAD_ERROR,fatal:!1,frag:Z,error:Error(`Fragment does not have a ${J?"part list":"url"}`),networkDetails:null}));this.abort();let X=this.config,Q=X.fLoader,z=X.loader;return new Promise((W,H)=>{if(this.loader)this.loader.destroy();if(Z.gap)if(Z.tagList.some((j)=>j[0]==="GAP")){H(nY(Z));return}else Z.gap=!1;let G=this.loader=Q?new Q(X):new z(X),q=lY(Z);Z.loader=G;let V=cY(X.fragLoadPolicy.default),U={loadPolicy:V,timeout:V.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Z.sn==="initSegment"?1/0:oY};Z.stats=G.stats;let N={onSuccess:(j,K,B,R)=>{this.resetLoader(Z,G);let E=j.data;if(B.resetIV&&Z.decryptdata)Z.decryptdata.iv=new Uint8Array(E.slice(0,16)),E=E.slice(16);W({frag:Z,part:null,payload:E,networkDetails:R})},onError:(j,K,B,R)=>{this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.FRAG_LOAD_ERROR,fatal:!1,frag:Z,response:H0({url:J,data:void 0},j),error:Error(`HTTP Error ${j.code} ${j.text}`),networkDetails:B,stats:R}))},onAbort:(j,K,B)=>{this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.INTERNAL_ABORTED,fatal:!1,frag:Z,error:Error("Aborted"),networkDetails:B,stats:j}))},onTimeout:(j,K,B)=>{this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.FRAG_LOAD_TIMEOUT,fatal:!1,frag:Z,error:Error(`Timeout after ${U.timeout}ms`),networkDetails:B,stats:j}))}};if(Y)N.onProgress=(j,K,B,R)=>Y({frag:Z,part:null,payload:B,networkDetails:R});G.load(q,U,N)})}loadPart(Z,Y,J){this.abort();let X=this.config,Q=X.fLoader,z=X.loader;return new Promise((W,H)=>{if(this.loader)this.loader.destroy();if(Z.gap||Y.gap){H(nY(Z,Y));return}let G=this.loader=Q?new Q(X):new z(X),q=lY(Z,Y);Z.loader=G;let V=cY(X.fragLoadPolicy.default),U={loadPolicy:V,timeout:V.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:oY};Y.stats=G.stats,G.load(q,U,{onSuccess:(N,j,K,B)=>{this.resetLoader(Z,G),this.updateStatsFromPart(Z,Y);let R={frag:Z,part:Y,payload:N.data,networkDetails:B};J(R),W(R)},onError:(N,j,K,B)=>{this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.FRAG_LOAD_ERROR,fatal:!1,frag:Z,part:Y,response:H0({url:q.url,data:void 0},N),error:Error(`HTTP Error ${N.code} ${N.text}`),networkDetails:K,stats:B}))},onAbort:(N,j,K)=>{Z.stats.aborted=Y.stats.aborted,this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.INTERNAL_ABORTED,fatal:!1,frag:Z,part:Y,error:Error("Aborted"),networkDetails:K,stats:N}))},onTimeout:(N,j,K)=>{this.resetLoader(Z,G),H(new N8({type:n.NETWORK_ERROR,details:b.FRAG_LOAD_TIMEOUT,fatal:!1,frag:Z,part:Y,error:Error(`Timeout after ${U.timeout}ms`),networkDetails:K,stats:N}))}})})}updateStatsFromPart(Z,Y){let J=Z.stats,X=Y.stats,Q=X.total;if(J.loaded+=X.loaded,Q){let H=Math.round(Z.duration/Y.duration),G=Math.min(Math.round(J.loaded/Q),H),V=(H-G)*Math.round(J.loaded/G);J.total=J.loaded+V}else J.total=Math.max(J.loaded,J.total);let z=J.loading,W=X.loading;if(z.start)z.first+=W.first-W.start;else z.start=W.start,z.first=W.first;z.end=W.end}resetLoader(Z,Y){if(Z.loader=null,this.loader===Y)self.clearTimeout(this.partLoadTimeout),this.loader=null;Y.destroy()}}function lY(Z,Y=null){let J=Y||Z,X={frag:Z,part:Y,responseType:"arraybuffer",url:J.url,headers:{},rangeStart:0,rangeEnd:0},Q=J.byteRangeStartOffset,z=J.byteRangeEndOffset;if(m(Q)&&m(z)){var W;let H=Q,G=z;if(Z.sn==="initSegment"&&Y3((W=Z.decryptdata)==null?void 0:W.method)){let q=z-Q;if(q%16)G=z+(16-q%16);if(Q!==0)X.resetIV=!0,H=Q-16}X.rangeStart=H,X.rangeEnd=G}return X}function nY(Z,Y){let J=Error(`GAP ${Z.gap?"tag":"attribute"} found`),X={type:n.MEDIA_ERROR,details:b.FRAG_GAP,fatal:!1,frag:Z,error:J,networkDetails:null};if(Y)X.part=Y;return(Y?Y:Z).stats.aborted=!0,new N8(X)}function Y3(Z){return Z==="AES-128"||Z==="AES-256"}class N8 extends Error{constructor(Z){super(Z.error.message);this.data=void 0,this.data=Z}}class nZ extends l0{constructor(Z,Y){super(Z,Y);this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}destroy(){this.onHandlerDestroying(),this.onHandlerDestroyed()}onHandlerDestroying(){this.clearNextTick(),this.clearInterval()}onHandlerDestroyed(){}hasInterval(){return!!this._tickInterval}hasNextTick(){return!!this._tickTimer}setInterval(Z){if(!this._tickInterval)return this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,Z),!0;return!1}clearInterval(){if(this._tickInterval)return self.clearInterval(this._tickInterval),this._tickInterval=null,!0;return!1}clearNextTick(){if(this._tickTimer)return self.clearTimeout(this._tickTimer),this._tickTimer=null,!0;return!1}tick(){if(this._tickCallCount++,this._tickCallCount===1){if(this.doTick(),this._tickCallCount>1)this.tickImmediate();this._tickCallCount=0}}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}class t7{constructor(Z,Y,J,X=0,Q=-1,z=!1){this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.transmuxing=A7(),this.buffering={audio:A7(),video:A7(),audiovideo:A7()},this.level=Z,this.sn=Y,this.id=J,this.size=X,this.part=Q,this.partial=z}}function A7(){return{start:0,executeStart:0,executeEnd:0,end:0}}var sY={length:0,start:()=>0,end:()=>0};class t{static isBuffered(Z,Y){if(Z){let J=t.getBuffered(Z);for(let X=J.length;X--;)if(Y>=J.start(X)&&Y<=J.end(X))return!0}return!1}static bufferedRanges(Z){if(Z){let Y=t.getBuffered(Z);return t.timeRangesToArray(Y)}return[]}static timeRangesToArray(Z){let Y=[];for(let J=0;J1)Z.sort((q,V)=>q.start-V.start||V.end-q.end);let X=-1,Q=[];if(J)for(let q=0;q=Z[q].start&&Y<=Z[q].end)X=q;let V=Q.length;if(V){let U=Q[V-1].end;if(Z[q].start-UU)Q[V-1].end=Z[q].end}else Q.push(Z[q])}else Q.push(Z[q])}else Q=Z;let z=0,W,H=Y,G=Y;for(let q=0;q=V&&Y<=U)X=q;if(Y+J>=V&&Y{let Q=X.substring(2,X.length-1),z=J==null?void 0:J[Q];if(z===void 0)return Z.playlistParsingError||(Z.playlistParsingError=Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${Q}"`)),X;return z})}return Y}function rY(Z,Y,J){let X=Z.variableList;if(!X)Z.variableList=X={};let Q,z;if("QUERYPARAM"in Y){Q=Y.QUERYPARAM;try{let W=new self.URL(J).searchParams;if(W.has(Q))z=W.get(Q);else throw Error(`"${Q}" does not match any query parameter in URI: "${J}"`)}catch(W){Z.playlistParsingError||(Z.playlistParsingError=Error(`EXT-X-DEFINE QUERYPARAM: ${W.message}`))}}else Q=Y.NAME,z=Y.VALUE;if(Q in X)Z.playlistParsingError||(Z.playlistParsingError=Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${Q}"`));else X[Q]=z||""}function J3(Z,Y,J){let X=Y.IMPORT;if(J&&X in J){let Q=Z.variableList;if(!Q)Z.variableList=Q={};Q[X]=J[X]}else Z.playlistParsingError||(Z.playlistParsingError=Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${X}"`))}var X3=/^(\d+)x(\d+)$/,aY=/(.+?)=(".*?"|.*?)(?:,|$)/g;class R0{constructor(Z,Y){if(typeof Z==="string")Z=R0.parseAttrList(Z,Y);U0(this,Z)}get clientAttrs(){return Object.keys(this).filter((Z)=>Z.substring(0,2)==="X-")}decimalInteger(Z){let Y=parseInt(this[Z],10);if(Y>Number.MAX_SAFE_INTEGER)return 1/0;return Y}hexadecimalInteger(Z){if(this[Z]){let Y=(this[Z]||"0x").slice(2);Y=(Y.length&1?"0":"")+Y;let J=new Uint8Array(Y.length/2);for(let X=0;XNumber.MAX_SAFE_INTEGER)return 1/0;return Y}decimalFloatingPoint(Z){return parseFloat(this[Z])}optionalFloat(Z,Y){let J=this[Z];return J?parseFloat(J):Y}enumeratedString(Z){return this[Z]}enumeratedStringList(Z,Y){let J=this[Z];return(J?J.split(/[ ,]+/):[]).reduce((X,Q)=>{return X[Q.toLowerCase()]=!0,X},Y)}bool(Z){return this[Z]==="YES"}decimalResolution(Z){let Y=X3.exec(this[Z]);if(Y===null)return;return{width:parseInt(Y[1],10),height:parseInt(Y[2],10)}}static parseAttrList(Z,Y){let J,X={},Q='"';aY.lastIndex=0;while((J=aY.exec(Z))!==null){let z=J[1].trim(),W=J[2],H=W.indexOf('"')===0&&W.lastIndexOf('"')===W.length-1,G=!1;if(H)W=W.slice(1,-1);else switch(z){case"IV":case"SCTE35-CMD":case"SCTE35-IN":case"SCTE35-OUT":G=!0}if(Y&&(H||G))W=wZ(Y,W);else if(!G&&!H)switch(z){case"CLOSED-CAPTIONS":if(W==="NONE")break;case"ALLOWED-CPC":case"CLASS":case"ASSOC-LANGUAGE":case"AUDIO":case"BYTERANGE":case"CHANNELS":case"CHARACTERISTICS":case"CODECS":case"DATA-ID":case"END-DATE":case"GROUP-ID":case"ID":case"IMPORT":case"INSTREAM-ID":case"KEYFORMAT":case"KEYFORMATVERSIONS":case"LANGUAGE":case"NAME":case"PATHWAY-ID":case"QUERYPARAM":case"RECENTLY-REMOVED-DATERANGES":case"SERVER-URI":case"STABLE-RENDITION-ID":case"STABLE-VARIANT-ID":case"START-DATE":case"SUBTITLES":case"SUPPLEMENTAL-CODECS":case"URI":case"VALUE":case"VIDEO":case"X-ASSET-LIST":case"X-ASSET-URI":q0.warn(`${Z}: attribute ${z} is missing quotes`)}X[z]=W}return X}}var Q3="com.apple.hls.interstitial";function z3(Z){return Z!=="ID"&&Z!=="CLASS"&&Z!=="CUE"&&Z!=="START-DATE"&&Z!=="DURATION"&&Z!=="END-DATE"&&Z!=="END-ON-NEXT"}function W3(Z){return Z==="SCTE35-OUT"||Z==="SCTE35-IN"||Z==="SCTE35-CMD"}class sZ{constructor(Z,Y,J=0){var X;if(this.attr=void 0,this.tagAnchor=void 0,this.tagOrder=void 0,this._startDate=void 0,this._endDate=void 0,this._dateAtEnd=void 0,this._cue=void 0,this._badValueForSameId=void 0,this.tagAnchor=(Y==null?void 0:Y.tagAnchor)||null,this.tagOrder=(X=Y==null?void 0:Y.tagOrder)!=null?X:J,Y){let Q=Y.attr;for(let z in Q)if(Object.prototype.hasOwnProperty.call(Z,z)&&Z[z]!==Q[z]){q0.warn(`DATERANGE tag attribute: "${z}" does not match for tags with ID: "${Z.ID}"`),this._badValueForSameId=z;break}Z=U0(new R0({}),Q,Z)}if(this.attr=Z,Y)this._startDate=Y._startDate,this._cue=Y._cue,this._endDate=Y._endDate,this._dateAtEnd=Y._dateAtEnd;else this._startDate=new Date(Z["START-DATE"]);if("END-DATE"in this.attr){let Q=(Y==null?void 0:Y.endDate)||new Date(this.attr["END-DATE"]);if(m(Q.getTime()))this._endDate=Q}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get cue(){let Z=this._cue;if(Z===void 0)return this._cue=this.attr.enumeratedStringList(this.attr.CUE?"CUE":"X-CUE",{pre:!1,post:!1,once:!1});return Z}get startTime(){let{tagAnchor:Z}=this;if(Z===null||Z.programDateTime===null)return q0.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${Z}`),NaN;return Z.start+(this.startDate.getTime()-Z.programDateTime)/1000}get startDate(){return this._startDate}get endDate(){let Z=this._endDate||this._dateAtEnd;if(Z)return Z;let Y=this.duration;if(Y!==null)return this._dateAtEnd=new Date(this._startDate.getTime()+Y*1000);return null}get duration(){if("DURATION"in this.attr){let Z=this.attr.decimalFloatingPoint("DURATION");if(m(Z))return Z}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1000;return null}get plannedDuration(){if("PLANNED-DURATION"in this.attr)return this.attr.decimalFloatingPoint("PLANNED-DURATION");return null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isInterstitial(){return this.class===Q3}get isValid(){return!!this.id&&!this._badValueForSameId&&m(this.startDate.getTime())&&(this.duration===null||this.duration>=0)&&(!this.endOnNext||!!this.class)&&(!this.attr.CUE||!this.cue.pre&&!this.cue.post||this.cue.pre!==this.cue.post)&&(!this.isInterstitial||("X-ASSET-URI"in this.attr)||("X-ASSET-LIST"in this.attr))}}var G3=10;class RX{constructor(Z){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.dateRangeTagCount=0,this.live=!0,this.requestScheduled=-1,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.appliedTimelineOffset=void 0,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=Z}reloaded(Z){if(!Z){this.advanced=!0,this.updated=!0;return}let Y=this.lastPartSn-Z.lastPartSn,J=this.lastPartIndex-Z.lastPartIndex;if(this.updated=this.endSN!==Z.endSN||!!J||!!Y||!this.live,this.advanced=this.endSN>Z.endSN||Y>0||Y===0&&J>0,this.updated||this.advanced)this.misses=Math.floor(Z.misses*0.6);else this.misses=Z.misses+1}hasKey(Z){return this.encryptedFragments.some((Y)=>{let J=Y.decryptdata;if(!J)Y.setKeyFormat(Z.keyFormat),J=Y.decryptdata;return!!J&&Z.matches(J)})}get hasProgramDateTime(){if(this.fragments.length)return m(this.fragments[this.fragments.length-1].programDateTime);return!1}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||G3}get drift(){let Z=this.driftEndTime-this.driftStartTime;if(Z>0)return(this.driftEnd-this.driftStart)*1000/Z;return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var Z;if((Z=this.partList)!=null&&Z.length)return this.partList[this.partList.length-1].end;return this.fragmentEnd}get fragmentEnd(){if(this.fragments.length)return this.fragments[this.fragments.length-1].end;return 0}get fragmentStart(){if(this.fragments.length)return this.fragments[0].start;return 0}get age(){if(this.advancedDateTime)return Math.max(Date.now()-this.advancedDateTime,0)/1000;return 0}get lastPartIndex(){var Z;if((Z=this.partList)!=null&&Z.length)return this.partList[this.partList.length-1].index;return-1}get maxPartIndex(){let Z=this.partList;if(Z){let Y=this.lastPartIndex;if(Y!==-1){for(let J=Z.length;J--;)if(Z[J].index>Y)return Z[J].index;return Y}}return 0}get lastPartSn(){var Z;if((Z=this.partList)!=null&&Z.length)return this.partList[this.partList.length-1].fragment.sn;return this.endSN}get expired(){if(this.live&&this.age&&this.misses<3){let Z=this.partEnd-this.fragmentStart;return this.age>Math.max(Z,this.totalduration)+this.levelTargetDuration}return!1}}function d7(Z,Y){if(Z.length===Y.length)return!Z.some((J,X)=>J!==Y[X]);return!1}function tY(Z,Y){if(!Z&&!Y)return!0;if(!Z||!Y)return!1;return d7(Z,Y)}function R9(Z){return Z==="AES-128"||Z==="AES-256"||Z==="AES-256-CTR"}function iZ(Z){switch(Z){case"AES-128":case"AES-256":return y8.cbc;case"AES-256-CTR":return y8.ctr;default:throw Error(`invalid full segment method ${Z}`)}}function rZ(Z){return Uint8Array.from(atob(Z),(Y)=>Y.charCodeAt(0))}function LZ(Z){return Uint8Array.from(unescape(encodeURIComponent(Z)),(Y)=>Y.charCodeAt(0))}function H3(Z){let Y=LZ(Z).subarray(0,16),J=new Uint8Array(16);return J.set(Y,16-Y.length),J}function FX(Z){let Y=function(X,Q,z){let W=X[Q];X[Q]=X[z],X[z]=W};Y(Z,0,3),Y(Z,1,2),Y(Z,4,5),Y(Z,6,7)}function EX(Z){let Y=Z.split(":"),J=null;if(Y[0]==="data"&&Y.length===2){let X=Y[1].split(";"),Q=X[X.length-1].split(",");if(Q.length===2){let z=Q[0]==="base64",W=Q[1];if(z)X.splice(-1,1),J=rZ(W);else J=H3(W)}}return J}var o7=typeof self<"u"?self:void 0,F0={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},h0={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.streamingkeydelivery",PLAYREADY:"com.microsoft.playready",WIDEVINE:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"};function S7(Z){switch(Z){case h0.FAIRPLAY:return F0.FAIRPLAY;case h0.PLAYREADY:return F0.PLAYREADY;case h0.WIDEVINE:return F0.WIDEVINE;case h0.CLEARKEY:return F0.CLEARKEY}}function t1(Z){switch(Z){case F0.FAIRPLAY:return h0.FAIRPLAY;case F0.PLAYREADY:return h0.PLAYREADY;case F0.WIDEVINE:return h0.WIDEVINE;case F0.CLEARKEY:return h0.CLEARKEY}}function f9(Z){let{drmSystems:Y,widevineLicenseUrl:J}=Z,X=Y?[F0.FAIRPLAY,F0.WIDEVINE,F0.PLAYREADY,F0.CLEARKEY].filter((Q)=>!!Y[Q]):[];if(!X[F0.WIDEVINE]&&J)X.push(F0.WIDEVINE);return X}var AX=function(Z){if(o7!=null&&(Z=o7.navigator)!=null&&Z.requestMediaKeySystemAccess)return self.navigator.requestMediaKeySystemAccess.bind(self.navigator);else return null}();function q3(Z,Y,J,X){let Q;switch(Z){case F0.FAIRPLAY:Q=["cenc","sinf"];break;case F0.WIDEVINE:case F0.PLAYREADY:Q=["cenc"];break;case F0.CLEARKEY:Q=["cenc","keyids"];break;default:throw Error(`Unknown key-system: ${Z}`)}return V3(Q,Y,J,X)}function V3(Z,Y,J,X){return[{initDataTypes:Z,persistentState:X.persistentState||"optional",distinctiveIdentifier:X.distinctiveIdentifier||"optional",sessionTypes:X.sessionTypes||[X.sessionType||"temporary"],audioCapabilities:Y.map((z)=>({contentType:`audio/mp4; codecs=${z}`,robustness:X.audioRobustness||"",encryptionScheme:X.audioEncryptionScheme||null})),videoCapabilities:J.map((z)=>({contentType:`video/mp4; codecs=${z}`,robustness:X.videoRobustness||"",encryptionScheme:X.videoEncryptionScheme||null}))}]}function U3(Z){var Y;return!!Z&&(Z.sessionType==="persistent-license"||!!((Y=Z.sessionTypes)!=null&&Y.some((J)=>J==="persistent-license")))}function OX(Z){let Y=new Uint16Array(Z.buffer,Z.byteOffset,Z.byteLength/2),J=String.fromCharCode.apply(null,Array.from(Y)),X=J.substring(J.indexOf("<"),J.length),W=new DOMParser().parseFromString(X,"text/xml").getElementsByTagName("KID")[0];if(W){let H=W.childNodes[0]?W.childNodes[0].nodeValue:W.getAttribute("VALUE");if(H){let G=rZ(H).subarray(0,16);return FX(G),G}}return null}var q9={};class g8{static clearKeyUriToKeyIdMap(){q9={}}static setKeyIdForUri(Z,Y){q9[Z]=Y}static addKeyIdForUri(Z){let Y=Object.keys(q9).length%Number.MAX_SAFE_INTEGER,J=new Uint8Array(16);return new DataView(J.buffer,12,4).setUint32(0,Y),q9[Z]=J,J}constructor(Z,Y,J,X=[1],Q=null,z){if(this.uri=void 0,this.method=void 0,this.keyFormat=void 0,this.keyFormatVersions=void 0,this.encrypted=void 0,this.isCommonEncryption=void 0,this.iv=null,this.key=null,this.keyId=null,this.pssh=null,this.method=Z,this.uri=Y,this.keyFormat=J,this.keyFormatVersions=X,this.iv=Q,this.encrypted=Z?Z!=="NONE":!1,this.isCommonEncryption=this.encrypted&&!R9(Z),z!=null&&z.startsWith("0x"))this.keyId=new Uint8Array(uJ(z))}matches(Z){return Z.uri===this.uri&&Z.method===this.method&&Z.encrypted===this.encrypted&&Z.keyFormat===this.keyFormat&&d7(Z.keyFormatVersions,this.keyFormatVersions)&&tY(Z.iv,this.iv)&&tY(Z.keyId,this.keyId)}isSupported(){if(this.method){if(R9(this.method)||this.method==="NONE")return!0;if(this.keyFormat==="identity")return this.method==="SAMPLE-AES";else switch(this.keyFormat){case h0.FAIRPLAY:case h0.WIDEVINE:case h0.PLAYREADY:case h0.CLEARKEY:return["SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)!==-1}}return!1}getDecryptData(Z,Y){if(!this.encrypted||!this.uri)return null;if(R9(this.method)){let Q=this.iv;if(!Q){if(typeof Z!=="number")q0.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`),Z=0;Q=N3(Z)}return new g8(this.method,this.uri,"identity",this.keyFormatVersions,Q)}if(this.keyId){let Q=q9[this.uri];if(Q&&!d7(this.keyId,Q))g8.setKeyIdForUri(this.uri,this.keyId);if(this.pssh)return this}let J=EX(this.uri);if(J)switch(this.keyFormat){case h0.WIDEVINE:if(this.pssh=J,!this.keyId){let Q=LH(J.buffer);if(Q.length){var X;let z=Q[0];this.keyId=(X=z.kids)!=null&&X.length?z.kids[0]:null}}if(!this.keyId)this.keyId=eY(Y);break;case h0.PLAYREADY:{let Q=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=wH(Q,null,J),this.keyId=OX(J);break}default:{let Q=J.subarray(0,16);if(Q.length!==16){let z=new Uint8Array(16);z.set(Q,16-Q.length),Q=z}this.keyId=Q;break}}if(!this.keyId||this.keyId.byteLength!==16){let Q;if(Q=j3(Y),!Q){if(Q=eY(Y),!Q)Q=q9[this.uri]}if(Q)this.keyId=Q,g8.setKeyIdForUri(this.uri,Q)}return this}}function j3(Z){let Y=Z==null?void 0:Z[h0.WIDEVINE];if(Y)return Y.keyId;return null}function eY(Z){let Y=Z==null?void 0:Z[h0.PLAYREADY];if(Y){let J=EX(Y.uri);if(J)return OX(J)}return null}function N3(Z){let Y=new Uint8Array(16);for(let J=12;J<16;J++)Y[J]=Z>>8*(15-J)&255;return Y}var ZJ=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)[\r\n]+/g,YJ=/#EXT-X-MEDIA:(.*)/g,K3=/^#EXT(?:INF|-X-TARGETDURATION):/m,e1=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/(?!#) *(\S[^\r\n]*)/.source,/#.*/.source].join("|"),"g"),B3=new RegExp([/#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)/.source,/#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\d+)/.source,/#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS)/.source,/(#)([^:]*):(.*)/.source,/(#)(.*)(?:.*)\r?\n?/.source].join("|"));class R8{static findGroup(Z,Y){for(let J=0;J0&&Q.length({id:G.attrs.AUDIO,audioCodec:G.audioCodec})),SUBTITLES:z.map((G)=>({id:G.attrs.SUBTITLES,textCodec:G.textCodec})),"CLOSED-CAPTIONS":[]},H=0;YJ.lastIndex=0;while((X=YJ.exec(Z))!==null){let G=new R0(X[1],J),q=G.TYPE;if(q){let V=W[q],U=Q[q]||[];Q[q]=U;let N=G.LANGUAGE,j=G["ASSOC-LANGUAGE"],K=G.CHANNELS,B=G.CHARACTERISTICS,R=G["INSTREAM-ID"],E={attrs:G,bitrate:0,id:H++,groupId:G["GROUP-ID"]||"",name:G.NAME||N||"",type:q,default:G.bool("DEFAULT"),autoselect:G.bool("AUTOSELECT"),forced:G.bool("FORCED"),lang:N,url:G.URI?R8.resolve(G.URI,Y):""};if(j)E.assocLang=j;if(K)E.channels=K;if(B)E.characteristics=B;if(R)E.instreamId=R;if(V!=null&&V.length){let O=R8.findGroup(V,E.groupId)||V[0];zJ(E,O,"audioCodec"),zJ(E,O,"textCodec")}U.push(E)}}return Q}static parseLevelPlaylist(Z,Y,J,X,Q,z){var W;let H={url:Y},G=new RX(Y),q=G.fragments,V=[],U=null,N=0,j=0,K=0,B=0,R=0,E=null,O=new b7(X,H),A,$,L,M=-1,w=!1,_=null,C;if(e1.lastIndex=0,G.m3u8=Z,G.hasVariableRefs=iY(Z),((W=e1.exec(Z))==null?void 0:W[0])!=="#EXTM3U")return G.playlistParsingError=Error("Missing format identifier #EXTM3U"),G;while((A=e1.exec(Z))!==null){if(w){if(w=!1,O=new b7(X,H),O.playlistOffset=K,O.setStart(K),O.sn=N,O.cc=B,R)O.bitrate=R;if(O.level=J,U){if(O.initSegment=U,U.rawProgramDateTime)O.rawProgramDateTime=U.rawProgramDateTime,U.rawProgramDateTime=null;if(_)O.setByteRange(_),_=null}}let y=A[1];if(y){O.duration=parseFloat(y);let c=(" "+A[2]).slice(1);O.title=c||null,O.tagList.push(c?["INF",y,c]:["INF",y])}else if(A[3]){if(m(O.duration)){if(O.playlistOffset=K,O.setStart(K),L)GJ(O,L,G);O.sn=N,O.level=J,O.cc=B,q.push(O);let c=(" "+A[3]).slice(1);O.relurl=wZ(G,c),_Z(O,E,V),E=O,K+=O.duration,N++,j=0,w=!0}}else{if(A=A[0].match(B3),!A){q0.warn("No matches on slow regex match for level playlist!");continue}for($=1;$0)HJ(G,c,A);N=G.startSN=parseInt(T);break;case"SKIP":{if(G.skippedSegments)M8(G,c,A);let k=new R0(T,G),l=k.decimalInteger("SKIPPED-SEGMENTS");if(m(l)){G.skippedSegments+=l;for(let g=l;g--;)q.push(null);N+=l}let i=k.enumeratedString("RECENTLY-REMOVED-DATERANGES");if(i)G.recentlyRemovedDateranges=(G.recentlyRemovedDateranges||[]).concat(i.split("\t"));break}case"TARGETDURATION":if(G.targetduration!==0)M8(G,c,A);G.targetduration=Math.max(parseInt(T),1);break;case"VERSION":if(G.version!==null)M8(G,c,A);G.version=parseInt(T);break;case"INDEPENDENT-SEGMENTS":break;case"ENDLIST":if(!G.live)M8(G,c,A);G.live=!1;break;case"#":if(T||p)O.tagList.push(p?[T,p]:[T]);break;case"DISCONTINUITY":B++,O.tagList.push(["DIS"]);break;case"GAP":O.gap=!0,O.tagList.push([c]);break;case"BITRATE":if(O.tagList.push([c,T]),R=parseInt(T)*1000,m(R))O.bitrate=R;else R=0;break;case"DATERANGE":{let k=new R0(T,G),l=new sZ(k,G.dateRanges[k.ID],G.dateRangeTagCount);if(G.dateRangeTagCount++,l.isValid||G.skippedSegments)G.dateRanges[l.id]=l;else q0.warn(`Ignoring invalid DATERANGE tag: "${T}"`);O.tagList.push(["EXT-X-DATERANGE",T]);break}case"DEFINE":{{let k=new R0(T,G);if("IMPORT"in k)J3(G,k,z);else rY(G,k,Y)}break}case"DISCONTINUITY-SEQUENCE":if(G.startCC!==0)M8(G,c,A);else if(q.length>0)HJ(G,c,A);G.startCC=B=parseInt(T);break;case"KEY":{let k=JJ(T,Y,G);if(k.isSupported()){if(k.method==="NONE"){L=void 0;break}if(!L)L={};let l=L[k.keyFormat];if(!(l!=null&&l.matches(k))){if(l)L=U0({},L);L[k.keyFormat]=k}}else q0.warn(`[Keys] Ignoring unsupported EXT-X-KEY tag: "${T}"`);break}case"START":G.startTimeOffset=XJ(T);break;case"MAP":{let k=new R0(T,G);if(O.duration){let l=new b7(X,H);if(WJ(l,k,J,L),U=l,O.initSegment=U,U.rawProgramDateTime&&!O.rawProgramDateTime)O.rawProgramDateTime=U.rawProgramDateTime}else{let l=O.byteRangeEndOffset;if(l){let i=O.byteRangeStartOffset;_=`${l-i}@${i}`}else _=null;WJ(O,k,J,L),U=O,w=!0}U.cc=B;break}case"SERVER-CONTROL":{if(C)M8(G,c,A);C=new R0(T),G.canBlockReload=C.bool("CAN-BLOCK-RELOAD"),G.canSkipUntil=C.optionalFloat("CAN-SKIP-UNTIL",0),G.canSkipDateRanges=G.canSkipUntil>0&&C.bool("CAN-SKIP-DATERANGES"),G.partHoldBack=C.optionalFloat("PART-HOLD-BACK",0),G.holdBack=C.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{if(G.partTarget)M8(G,c,A);let k=new R0(T);G.partTarget=k.decimalFloatingPoint("PART-TARGET");break}case"PART":{let k=G.partList;if(!k)k=G.partList=[];let l=j>0?k[k.length-1]:void 0,i=j++,g=new R0(T,G),f=new cJ(g,O,H,i,l);k.push(f),O.duration+=f.duration;break}case"PRELOAD-HINT":{let k=new R0(T,G);G.preloadHint=k;break}case"RENDITION-REPORT":{let k=new R0(T,G);G.renditionReports=G.renditionReports||[],G.renditionReports.push(k);break}default:q0.warn(`line parsed but not handled: ${A}`);break}}}if(E&&!E.relurl){if(q.pop(),K-=E.duration,G.partList)G.fragmentHint=E}else if(G.partList){if(_Z(O,E,V),O.cc=B,G.fragmentHint=O,L)GJ(O,L,G)}if(!G.targetduration)G.playlistParsingError=Error("Missing Target Duration");let D=q.length,I=q[0],h=q[D-1];if(K+=G.skippedSegments*G.targetduration,K>0&&D&&h){G.averagetargetduration=K/D;let y=h.sn;if(G.endSN=y!=="initSegment"?y:0,!G.live)h.endList=!0;if(M>0){if(F3(q,M),I)V.unshift(I)}}if(G.fragmentHint)K+=G.fragmentHint.duration;if(G.totalduration=K,V.length&&G.dateRangeTagCount&&I)$X(V,G);return G.endCC=B,G}}function $X(Z,Y){let J=Z.length;if(!J)if(Y.hasProgramDateTime){let H=Y.fragments[Y.fragments.length-1];Z.push(H),J++}else return;let X=Z[J-1],Q=Y.live?1/0:Y.totalduration,z=Object.keys(Y.dateRanges);for(let H=z.length;H--;){let G=Y.dateRanges[z[H]],q=G.startDate.getTime();G.tagAnchor=X.ref;for(let V=J;V--;){var W;if(((W=Z[V])==null?void 0:W.sn)=H||X===0){var W;let G=(((W=J[X+1])==null?void 0:W.start)||Q)-z.start;if(Y<=H+G*1000){let q=J[X].sn-Z.startSN;if(q<0)return-1;let V=Z.fragments;if(V.length>J.length){let N=(J[X+1]||V[V.length-1]).sn-Z.startSN;for(let j=N;j>q;j--){let K=V[j].programDateTime;if(Y>=K&&YX);["video","audio","text"].forEach((X)=>{let Q=J.filter((z)=>dZ(z,X));if(Q.length)Y[`${X}Codec`]=Q.map((z)=>z.split("/")[0]).join(","),J=J.filter((z)=>Q.indexOf(z)===-1)}),Y.unknownCodecs=J}function zJ(Z,Y,J){let X=Y[J];if(X)Z[J]=X}function F3(Z,Y){let J=Z[Y];for(let X=Y;X--;){let Q=Z[X];if(!Q)return;Q.programDateTime=J.programDateTime-Q.duration*1000,J=Q}}function _Z(Z,Y,J){if(Z.rawProgramDateTime)J.push(Z);else if(Y!=null&&Y.programDateTime)Z.programDateTime=Y.endProgramDateTime}function WJ(Z,Y,J,X){if(Z.relurl=Y.URI,Y.BYTERANGE)Z.setByteRange(Y.BYTERANGE);if(Z.level=J,Z.sn="initSegment",X)Z.levelkeys=X;Z.initSegment=null}function GJ(Z,Y,J){Z.levelkeys=Y;let{encryptedFragments:X}=J;if((!X.length||X[X.length-1].levelkeys!==Y)&&Object.keys(Y).some((Q)=>Y[Q].isCommonEncryption))X.push(Z)}function M8(Z,Y,J){Z.playlistParsingError=Error(`#EXT-X-${Y} must not appear more than once (${J[0]})`)}function HJ(Z,Y,J){Z.playlistParsingError=Error(`#EXT-X-${Y} must appear before the first Media Segment (${J[0]})`)}function ZZ(Z,Y){let J=Y.startPTS;if(m(J)){let X=0,Q;if(Y.sn>Z.sn)X=J-Z.start,Q=Z;else X=Z.start-J,Q=Y;if(Q.duration!==X)Q.setDuration(X)}else if(Y.sn>Z.sn)if(Z.cc===Y.cc&&Z.minEndPTS)Y.setStart(Z.start+(Z.minEndPTS-Z.start));else Y.setStart(Z.start+Z.duration);else Y.setStart(Math.max(Z.start-Y.duration,0))}function MX(Z,Y,J,X,Q,z,W){if(X-J<=0)W.warn("Fragment should have a positive duration",Y),X=J+Y.duration,z=Q+Y.duration;let G=J,q=X,V=Y.startPTS,U=Y.endPTS;if(m(V)){let E=Math.abs(V-J);if(Z&&E>Z.totalduration)W.warn(`media timestamps and playlist times differ by ${E}s for level ${Y.level} ${Z.url}`);else if(!m(Y.deltaPTS))Y.deltaPTS=E;else Y.deltaPTS=Math.max(E,Y.deltaPTS);G=Math.max(J,V),J=Math.min(J,V),Q=Y.startDTS!==void 0?Math.min(Q,Y.startDTS):Q,q=Math.min(X,U),X=Math.max(X,U),z=Y.endDTS!==void 0?Math.max(z,Y.endDTS):z}let N=J-Y.start;if(Y.start!==0)Y.setStart(J);Y.setDuration(X-Y.start),Y.startPTS=J,Y.maxStartPTS=G,Y.startDTS=Q,Y.endPTS=X,Y.minEndPTS=q,Y.endDTS=z;let j=Y.sn;if(!Z||jZ.endSN)return 0;let K,B=j-Z.startSN,R=Z.fragments;R[B]=Y;for(K=B;K>0;K--)ZZ(R[K],R[K-1]);for(K=B;K=0;V--){let U=Q[V].initSegment;if(U){X=U;break}}if(Z.fragmentHint)delete Z.fragmentHint.endPTS;let z;$3(Z,Y,(V,U,N,j)=>{if((!Y.startCC||Y.skippedSegments)&&U.cc!==V.cc){let K=V.cc-U.cc;for(let B=N;B{var U;if(V&&(!V.initSegment||V.initSegment.relurl===((U=X)==null?void 0:U.relurl)))V.initSegment=X});if(Y.skippedSegments){if(Y.deltaUpdateFailed=W.some((V)=>!V),Y.deltaUpdateFailed){J.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let V=Y.skippedSegments;V--;)W.shift();Y.startSN=W[0].sn}else{if(Y.canSkipDateRanges)Y.dateRanges=A3(Z.dateRanges,Y,J);let V=Z.fragments.filter((U)=>U.rawProgramDateTime);if(Z.hasProgramDateTime&&!Y.hasProgramDateTime){for(let U=1;U{U.elementaryStreams=V.elementaryStreams,U.stats=V.stats}),z)MX(Y,z,z.startPTS,z.endPTS,z.startDTS,z.endDTS,J);else wX(Z,Y);if(W.length)Y.totalduration=Y.edge-W[0].start;Y.driftStartTime=Z.driftStartTime,Y.driftStart=Z.driftStart;let q=Y.advancedDateTime;if(Y.advanced&&q){let V=Y.edge;if(!Y.driftStart)Y.driftStartTime=q,Y.driftStart=V;Y.driftEndTime=q,Y.driftEnd=V}else Y.driftEndTime=Z.driftEndTime,Y.driftEnd=Z.driftEnd,Y.advancedDateTime=Z.advancedDateTime;if(Y.requestScheduled===-1)Y.requestScheduled=Z.requestScheduled}function A3(Z,Y,J){let{dateRanges:X,recentlyRemovedDateranges:Q}=Y,z=U0({},Z);if(Q)Q.forEach((G)=>{delete z[G]});let H=Object.keys(z).length;if(!H)return X;return Object.keys(X).forEach((G)=>{let q=z[G],V=new sZ(X[G].attr,q);if(V.isValid){if(z[G]=V,!q)V.tagOrder+=H}else J.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${K0(X[G].attr)}"`)}),z}function O3(Z,Y,J){if(Z&&Y){let X=0;for(let Q=0,z=Z.length;Q<=z;Q++){let W=Z[Q],H=Y[Q+X];if(W&&H&&W.index===H.index&&W.fragment.sn===H.fragment.sn)J(W,H);else X--}}}function $3(Z,Y,J){let X=Y.skippedSegments,Q=Math.max(Z.startSN,Y.startSN)-Y.startSN,z=(Z.fragmentHint?1:0)+(X?Y.endSN:Math.min(Z.endSN,Y.endSN))-Y.startSN,W=Y.startSN-Z.startSN,H=Y.fragmentHint?Y.fragments.concat(Y.fragmentHint):Y.fragments,G=Z.fragmentHint?Z.fragments.concat(Z.fragmentHint):Z.fragments;for(let q=Q;q<=z;q++){let V=G[W+q],U=H[q];if(X&&!U&&V)U=Y.fragments[q]=V;if(V&&U){J(V,U,q,H);let N=V.relurl,j=U.relurl;if(N&&M3(N,j)){Y.playlistParsingError=qJ(`media sequence mismatch ${U.sn}:`,Z,Y,V,U);return}else if(V.cc!==U.cc){Y.playlistParsingError=qJ(`discontinuity sequence mismatch (${V.cc}!=${U.cc})`,Z,Y,V,U);return}}}}function qJ(Z,Y,J,X,Q){return Error(`${Z} ${Q.url} Playlist starting @${Y.startSN} ${Y.m3u8} Playlist starting @${J.startSN} ${J.m3u8}`)}function wX(Z,Y,J=!0){let X=Y.startSN+Y.skippedSegments-Z.startSN,Q=Z.fragments,z=X>=0,W=0;if(z&&XY){let z=X[X.length-1].duration*1000;if(z{var X;(X=Y.details)==null||X.fragments.forEach((Q)=>{if(Q.level=J,Q.initSegment)Q.initSegment.level=J})})}function M3(Z,Y){if(Z!==Y&&Y)return UJ(Z)!==UJ(Y);return!1}function UJ(Z){return Z.replace(/\?[^?]*$/,"")}function m9(Z,Y){for(let X=0,Q=Z.length;XZ.startCC)return!0}return!1}function jJ(Z,Y){let J=Z.start+Y;Z.startPTS=J,Z.setStart(J),Z.endPTS=J+Z.duration}function PX(Z,Y){let J=Y.fragments;for(let X=0,Q=J.length;X{let{config:z,fragCurrent:W,media:H,mediaBuffer:G,state:q}=this,V=H?H.currentTime:0,U=t.bufferInfo(G?G:H,V,z.maxBufferHole),N=!U.len;if(this.log(`Media seeking to ${m(V)?V.toFixed(3):V}, state: ${q}, ${N?"out of":"in"} buffer`),this.state===S.ENDED)this.resetLoadingState();else if(W){let j=z.maxFragLookUpTolerance,K=W.start-j,B=W.start+W.duration+j;if(N||BU.end){let R=V>B;if(Vj)this.lastCurrentTime=V;if(!this.loadingParts){let K=Math.max(U.end,V),B=this.shouldLoadParts(this.getLevelDetails(),K);if(B)this.log(`LL-Part loading ON after seeking to ${V.toFixed(2)} with buffer @${K.toFixed(2)}`),this.loadingParts=B}}if(!this.hls.hasEnoughToStart){if(this.log(`Setting ${N?"startPosition":"nextLoadPosition"} to ${V} for seek without enough to start`),this.nextLoadPosition=V,N)this.startPosition=V}if(N&&this.state===S.IDLE)this.tickImmediate()},this.onMediaEnded=()=>{this.log("setting startPosition to 0 because media ended"),this.startPosition=this.lastCurrentTime=0},this.playlistType=Q,this.hls=Z,this.fragmentLoader=new KX(Z.config),this.keyLoader=J,this.fragmentTracker=Y,this.config=Z.config,this.decrypter=new a7(Z.config)}registerListeners(){let{hls:Z}=this;Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.off(F.ERROR,this.onError,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(Z){}stopLoad(){if(this.state===S.STOPPED)return;this.fragmentLoader.abort(),this.keyLoader.abort(this.playlistType);let Z=this.fragCurrent;if(Z!=null&&Z.loader)Z.abortRequests(),this.fragmentTracker.removeFragment(Z);this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=S.STOPPED}get startPositionValue(){let{nextLoadPosition:Z,startPosition:Y}=this;if(Y===-1&&Z)return Z;return Y}get bufferingEnabled(){return this.buffering}pauseBuffering(){this.buffering=!1}resumeBuffering(){this.buffering=!0}get inFlightFrag(){return{frag:this.fragCurrent,state:this.state}}_streamEnded(Z,Y){if(Y.live||!this.media)return!1;let J=Z.end||0,X=this.config.timelineOffset||0;if(J<=X)return!1;let Q=Z.buffered;if(this.config.maxBufferHole&&Q&&Q.length>1)Z=t.bufferedInfo(Q,Z.start,0);let z=Z.nextStart;if(z&&z>X&&z{let z=Q.frag;if(this.fragContextChanged(z)){this.warn(`${z.type} sn: ${z.sn}${Q.part?" part: "+Q.part.index:""} of ${this.fragInfo(z,!1,Q.part)}) was dropped during download.`),this.fragmentTracker.removeFragment(z);return}z.stats.chunkCount++,this._handleFragmentLoadProgress(Q)};this._doFragLoad(Z,Y,J,X).then((Q)=>{if(!Q)return;let z=this.state,W=Q.frag;if(this.fragContextChanged(W)){if(z===S.FRAG_LOADING||!this.fragCurrent&&z===S.PARSING)this.fragmentTracker.removeFragment(W),this.state=S.IDLE;return}if("payload"in Q)this.log(`Loaded ${W.type} sn: ${W.sn} of ${this.playlistLabel()} ${W.level}`),this.hls.trigger(F.FRAG_LOADED,Q);this._handleFragmentLoadComplete(Q)}).catch((Q)=>{if(this.state===S.STOPPED||this.state===S.ERROR)return;this.warn(`Frag error: ${(Q==null?void 0:Q.message)||Q}`),this.resetFragmentLoading(Z)})}clearTrackerIfNeeded(Z){var Y;let{fragmentTracker:J}=this;if(J.getState(Z)===P0.APPENDING){let Q=Z.type,z=this.getFwdBufferInfo(this.mediaBuffer,Q),W=Math.max(Z.duration,z?z.len:this.config.maxBufferLength),H=this.backtrackFragment;if((H?Z.sn-H.sn:0)===1||this.reduceMaxBufferLength(W,Z.duration))J.removeFragment(Z)}else if(((Y=this.mediaBuffer)==null?void 0:Y.buffered.length)===0)J.removeAllFragments();else if(J.hasParts(Z.type)){if(J.detectPartialFragments({frag:Z,part:null,stats:Z.stats,id:Z.type}),J.getState(Z)===P0.PARTIAL)J.removeFragment(Z)}}checkLiveUpdate(Z){if(Z.updated&&!Z.live){let Y=Z.fragments[Z.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:Y,part:null,stats:Y.stats,id:Y.type})}if(!Z.fragments[0])Z.deltaUpdateFailed=!0}waitForLive(Z){let Y=Z.details;return(Y==null?void 0:Y.live)&&Y.type!=="EVENT"&&(this.levelLastLoaded!==Z||Y.expired)}flushMainBuffer(Z,Y,J=null){if(!(Z-Y))return;let X={startOffset:Z,endOffset:Y,type:J};this.hls.trigger(F.BUFFER_FLUSHING,X)}_loadInitSegment(Z,Y){this._doFragLoad(Z,Y).then((J)=>{let X=J==null?void 0:J.frag;if(!X||this.fragContextChanged(X)||!this.levels)throw Error("init load aborted");return J}).then((J)=>{let{hls:X}=this,{frag:Q,payload:z}=J,W=Q.decryptdata;if(z&&z.byteLength>0&&W!=null&&W.key&&W.iv&&R9(W.method)){let H=self.performance.now();return this.decrypter.decrypt(new Uint8Array(z),W.key.buffer,W.iv.buffer,iZ(W.method)).catch((G)=>{throw X.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_DECRYPT_ERROR,fatal:!1,error:G,reason:G.message,frag:Q}),G}).then((G)=>{let q=self.performance.now();return X.trigger(F.FRAG_DECRYPTED,{frag:Q,payload:G,stats:{tstart:H,tdecrypt:q}}),J.payload=G,this.completeInitSegmentLoad(J)})}return this.completeInitSegmentLoad(J)}).catch((J)=>{if(this.state===S.STOPPED||this.state===S.ERROR)return;this.warn(J),this.resetFragmentLoading(Z)})}completeInitSegmentLoad(Z){let{levels:Y}=this;if(!Y)throw Error("init load aborted, missing levels");let J=Z.frag.stats;if(this.state!==S.STOPPED)this.state=S.IDLE;Z.frag.data=new Uint8Array(Z.payload),J.parsing.start=J.buffering.start=self.performance.now(),J.parsing.end=J.buffering.end=self.performance.now(),this.tick()}unhandledEncryptionError(Z,Y){var J,X;let Q=Z.tracks;if(Q&&!Y.encrypted&&((J=Q.audio)!=null&&J.encrypted||(X=Q.video)!=null&&X.encrypted)&&(!this.config.emeEnabled||!this.keyLoader.emeController)){let z=this.media,W=Error(`Encrypted track with no key in ${this.fragInfo(Y)} (media ${z?"attached mediaKeys: "+z.mediaKeys:"detached"})`);if(this.warn(W.message),!z||z.mediaKeys)return!1;return this.hls.trigger(F.ERROR,{type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_NO_KEYS,fatal:!1,error:W,frag:Y}),this.resetTransmuxer(),!0}return!1}fragContextChanged(Z){let{fragCurrent:Y}=this;return!Z||!Y||Z.sn!==Y.sn||Z.level!==Y.level}fragBufferedComplete(Z,Y){let J=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${Z.type} sn: ${Z.sn}${Y?" part: "+Y.index:""} of ${this.fragInfo(Z,!1,Y)} > buffer:${J?_3.toString(t.getBuffered(J)):"(detached)"})`),$0(Z)){var X;if(Z.type!==o.SUBTITLE){let z=Z.elementaryStreams;if(!Object.keys(z).some((W)=>!!z[W])){this.state=S.IDLE;return}}let Q=(X=this.levels)==null?void 0:X[Z.level];if(Q!=null&&Q.fragmentError)this.log(`Resetting level fragment error count of ${Q.fragmentError} on frag buffered`),Q.fragmentError=0}this.state=S.IDLE}_handleFragmentLoadComplete(Z){let{transmuxer:Y}=this;if(!Y)return;let{frag:J,part:X,partsLoaded:Q}=Z,z=!Q||Q.length===0||Q.some((H)=>!H),W=new t7(J.level,J.sn,J.stats.chunkCount+1,0,X?X.index:-1,!z);Y.flush(W)}_handleFragmentLoadProgress(Z){}_doFragLoad(Z,Y,J=null,X){var Q;this.fragCurrent=Z;let z=Y.details;if(!this.levels||!z)throw Error(`frag load aborted, missing level${z?"":" detail"}s`);let W=null;if(Z.encrypted&&!((Q=Z.decryptdata)!=null&&Q.key)){if(this.log(`Loading key for ${Z.sn} of [${z.startSN}-${z.endSN}], ${this.playlistLabel()} ${Z.level}`),this.state=S.KEY_LOADING,this.fragCurrent=Z,W=this.keyLoader.load(Z).then((U)=>{if(!this.fragContextChanged(U.frag)){if(this.hls.trigger(F.KEY_LOADED,U),this.state===S.KEY_LOADING)this.state=S.IDLE;return U}}),this.hls.trigger(F.KEY_LOADING,{frag:Z}),this.fragCurrent===null)return this.log("context changed in KEY_LOADING"),Promise.resolve(null)}else if(!Z.encrypted){if(W=this.keyLoader.loadClear(Z,z.encryptedFragments,this.startFragRequested),W)this.log("[eme] blocking frag load until media-keys acquired")}let H=this.fragPrevious;if($0(Z)&&(!H||Z.sn!==H.sn)){let U=this.shouldLoadParts(Y.details,Z.end);if(U!==this.loadingParts)this.log(`LL-Part loading ${U?"ON":"OFF"} loading sn ${H==null?void 0:H.sn}->${Z.sn}`),this.loadingParts=U}if(J=Math.max(Z.start,J||0),this.loadingParts&&$0(Z)){let U=z.partList;if(U&&X){if(J>z.fragmentEnd&&z.fragmentHint)Z=z.fragmentHint;let N=this.getNextPart(U,Z,J);if(N>-1){let j=U[N];Z=this.fragCurrent=j.fragment,this.log(`Loading ${Z.type} sn: ${Z.sn} part: ${j.index} (${N}/${U.length-1}) of ${this.fragInfo(Z,!1,j)}) cc: ${Z.cc} [${z.startSN}-${z.endSN}], target: ${parseFloat(J.toFixed(3))}`),this.nextLoadPosition=j.start+j.duration,this.state=S.FRAG_LOADING;let K;if(W)K=W.then((B)=>{if(!B||this.fragContextChanged(B.frag))return null;return this.doFragPartsLoad(Z,j,Y,X)}).catch((B)=>this.handleFragLoadError(B));else K=this.doFragPartsLoad(Z,j,Y,X).catch((B)=>this.handleFragLoadError(B));if(this.hls.trigger(F.FRAG_LOADING,{frag:Z,part:j,targetBufferTime:J}),this.fragCurrent===null)return Promise.reject(Error("frag load aborted, context changed in FRAG_LOADING parts"));return K}else if(!Z.url||this.loadedEndOfParts(U,J))return Promise.resolve(null)}}if($0(Z)&&this.loadingParts){var G;this.log(`LL-Part loading OFF after next part miss @${J.toFixed(2)} Check buffer at sn: ${Z.sn} loaded parts: ${(G=z.partList)==null?void 0:G.filter((U)=>U.loaded).map((U)=>`[${U.start}-${U.end}]`)}`),this.loadingParts=!1}else if(!Z.url)return Promise.resolve(null);if(this.log(`Loading ${Z.type} sn: ${Z.sn} of ${this.fragInfo(Z,!1)}) cc: ${Z.cc} ${"["+z.startSN+"-"+z.endSN+"]"}, target: ${parseFloat(J.toFixed(3))}`),m(Z.sn)&&!this.bitrateTest)this.nextLoadPosition=Z.start+Z.duration;this.state=S.FRAG_LOADING;let q=this.config.progressive&&Z.type!==o.SUBTITLE,V;if(q&&W)V=W.then((U)=>{if(!U||this.fragContextChanged(U.frag))return null;return this.fragmentLoader.load(Z,X)}).catch((U)=>this.handleFragLoadError(U));else V=Promise.all([this.fragmentLoader.load(Z,q?X:void 0),W]).then(([U])=>{if(!q&&X)X(U);return U}).catch((U)=>this.handleFragLoadError(U));if(this.hls.trigger(F.FRAG_LOADING,{frag:Z,targetBufferTime:J}),this.fragCurrent===null)return Promise.reject(Error("frag load aborted, context changed in FRAG_LOADING"));return V}doFragPartsLoad(Z,Y,J,X){return new Promise((Q,z)=>{var W;let H=[],G=(W=J.details)==null?void 0:W.partList,q=(V)=>{this.fragmentLoader.loadPart(Z,V,X).then((U)=>{H[V.index]=U;let N=U.part;this.hls.trigger(F.FRAG_LOADED,U);let j=VJ(J.details,Z.sn,V.index+1)||DX(G,Z.sn,V.index+1);if(j)q(j);else return Q({frag:Z,part:N,partsLoaded:H})}).catch(z)};q(Y)})}handleFragLoadError(Z){if("data"in Z){let Y=Z.data;if(Y.frag&&Y.details===b.INTERNAL_ABORTED)this.handleFragLoadAborted(Y.frag,Y.part);else if(Y.frag&&Y.type===n.KEY_SYSTEM_ERROR)Y.frag.abortRequests(),this.resetStartWhenNotLoaded(),this.resetFragmentLoading(Y.frag);else this.hls.trigger(F.ERROR,Y)}else this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.INTERNAL_EXCEPTION,err:Z,error:Z,fatal:!0});return null}_handleTransmuxerFlush(Z){let Y=this.getCurrentContext(Z);if(!Y||this.state!==S.PARSING){if(!this.fragCurrent&&this.state!==S.STOPPED&&this.state!==S.ERROR)this.state=S.IDLE;return}let{frag:J,part:X,level:Q}=Y,z=self.performance.now();if(J.stats.parsing.end=z,X)X.stats.parsing.end=z;let W=this.getLevelDetails(),G=W&&J.sn>W.endSN||this.shouldLoadParts(W,J.end);if(G!==this.loadingParts)this.log(`LL-Part loading ${G?"ON":"OFF"} after parsing segment ending @${J.end.toFixed(2)}`),this.loadingParts=G;this.updateLevelTiming(J,X,Q,Z.partial)}shouldLoadParts(Z,Y){if(this.config.lowLatencyMode){if(!Z)return this.loadingParts;if(Z.partList){var J;let Q=Z.partList[0];if(Q.fragment.type===o.SUBTITLE)return!1;let z=Q.end+(((J=Z.fragmentHint)==null?void 0:J.duration)||0);if(Y>=z){var X;if((this.hls.hasEnoughToStart?((X=this.media)==null?void 0:X.currentTime)||this.lastCurrentTime:this.getLoadPosition())>Q.start-Q.fragment.duration)return!0}}}return!1}getCurrentContext(Z){let{levels:Y,fragCurrent:J}=this,{level:X,sn:Q,part:z}=Z;if(!(Y!=null&&Y[X]))return this.warn(`Levels object was unset while buffering fragment ${Q} of ${this.playlistLabel()} ${X}. The current chunk will not be buffered.`),null;let W=Y[X],H=W.details,G=z>-1?VJ(H,Q,z):null,q=G?G.fragment:_X(H,Q,J);if(!q)return null;if(J&&J!==q)q.stats=J.stats;return{frag:q,part:G,level:W}}bufferFragmentData(Z,Y,J,X,Q){if(this.state!==S.PARSING)return;let{data1:z,data2:W}=Z,H=z;if(W)H=a0(z,W);if(!H.length)return;let G=this.initPTS[Y.cc],q=G?-G.baseTime/G.timescale:void 0,V={type:Z.type,frag:Y,part:J,chunkMeta:X,offset:q,parent:Y.type,data:H};if(this.hls.trigger(F.BUFFER_APPENDING,V),Z.dropped&&Z.independent&&!J){if(Q)return;this.flushBufferGap(Y)}}flushBufferGap(Z){let Y=this.media;if(!Y)return;if(!t.isBuffered(Y,Y.currentTime)){this.flushMainBuffer(0,Z.start);return}let J=Y.currentTime,X=t.bufferInfo(Y,J,0),Q=Z.duration,z=Math.min(this.config.maxFragLookUpTolerance*2,Q*0.25),W=Math.max(Math.min(Z.start-z,X.end-z),J+z);if(Z.start-W>z)this.flushMainBuffer(W,Z.start)}getFwdBufferInfo(Z,Y){var J;let X=this.getLoadPosition();if(!m(X))return null;let z=this.lastCurrentTime>X||(J=this.media)!=null&&J.paused?0:this.config.maxBufferHole;return this.getFwdBufferInfoAtPos(Z,X,Y,z)}getFwdBufferInfoAtPos(Z,Y,J,X){let Q=t.bufferInfo(Z,Y,X);if(Q.len===0&&Q.nextStart!==void 0){let z=this.fragmentTracker.getBufferedFrag(Y,J);if(z&&(Q.nextStart<=z.end||z.gap)){let W=Math.max(Math.min(Q.nextStart,z.end)-Y,X);return t.bufferInfo(Z,Y,W)}}return Q}getMaxBufferLength(Z){let{config:Y}=this,J;if(Z)J=Math.max(8*Y.maxBufferSize/Z,Y.maxBufferLength);else J=Y.maxBufferLength;return Math.min(J,Y.maxMaxBufferLength)}exceedsMaxBuffer(Z,Y,J){let X=Z.nextStart;if(X&&J.start>X){let Q=Z.buffered;if(Q){let{len:z,bufferedIndex:W}=Z;for(let H=Q.length-1;H>W;H--)if(Q[H].start=Y}}return!1}reduceMaxBufferLength(Z,Y){let J=this.config,X=Math.max(Math.min(Z-Y,J.maxBufferLength),Y),Q=Math.max(Z-Y*3,J.maxMaxBufferLength/2,X);if(Q>=X)return J.maxMaxBufferLength=Q,this.warn(`Reduce max buffer length to ${Q}s`),!0;return!1}getAppendedFrag(Z,Y=o.MAIN){let J=this.fragmentTracker?this.fragmentTracker.getAppendedFrag(Z,Y):null;if(J&&"fragment"in J)return J.fragment;return J}getNextFragment(Z,Y){let J=Y.fragments,X=J.length;if(!X)return null;let{config:Q}=this,z=Y.fragmentStart,W=Q.lowLatencyMode&&!!Y.partList,H=null;if(Y.live){let V=Q.initialLiveManifestSize;if(X=z)B=N,R=N===U?"config":"next load start";else if(j!==null)B=j,R="live edge";else B=Z,R="buffer pos";if(B=Q){let H=z.sn;if(this.loopSn!==H)this.log(`buffer full after gaps in "${X}" playlist starting at sn: ${H}`),this.loopSn=H;return null}}}return this.loopSn=void 0,z}get primaryPrefetch(){if(NJ(this.config)){var Z;if((Z=this.hls.interstitialsManager)==null||(Z=Z.playingItem)==null?void 0:Z.event)return!0}return!1}filterReplacedPrimary(Z,Y){if(!Z)return Z;if(NJ(this.config)&&Z.type!==o.SUBTITLE){let J=this.hls.interstitialsManager,X=J==null?void 0:J.bufferingItem;if(X){let z=X.event;if(z){if(z.appendInPlace||Math.abs(Z.start-X.start)>1||X.start===0)return null}else{if(Z.end<=X.start&&(Y==null?void 0:Y.live)===!1)return null;if(Z.start>X.end&&X.nextEvent){if(X.nextEvent.appendInPlace||Z.start-X.end>1)return null}}}let Q=J==null?void 0:J.playerQueue;if(Q)for(let z=Q.length;z--;){let W=Q[z].interstitial;if(W.appendInPlace&&Z.start>=W.startTime&&Z.end<=W.resumeTime)return null}}return Z}mapToInitFragWhenRequired(Z){if(Z!=null&&Z.initSegment&&!Z.initSegment.data&&!this.bitrateTest)return Z.initSegment;return Z}getNextPart(Z,Y,J){let X=-1,Q=!1,z=!0;for(let W=0,H=Z.length;W-1&&JJ.start)return!0}return!1}getInitialLiveFragment(Z){let Y=Z.fragments,J=this.fragPrevious,X=null;if(J){if(Z.hasProgramDateTime){if(X=sH(Y,J.endProgramDateTime,this.config.maxFragLookUpTolerance),X)this.log(`Live playlist, switching playlist, load frag with same PDT: ${J.programDateTime}`)}if(!X){let Q=J.sn+1;if(Q>=Z.startSN&&Q<=Z.endSN){let z=Y[Q-Z.startSN];if(J.cc===z.cc)X=z,this.log(`Live playlist, switching playlist, load frag with next SN: ${X.sn}`)}if(!X){if(X=WX(Z,J.cc,J.end),X)this.log(`Live playlist, switching playlist, load frag with same CC: ${X.sn}`)}}}else{let Q=this.hls.liveSyncPosition;if(Q!==null)X=this.getFragmentAtPosition(Q,this.bitrateTest?Z.fragmentEnd:Z.edge,Z)}return X}getFragmentAtPosition(Z,Y,J){let{config:X}=this,{fragPrevious:Q}=this,{fragments:z,endSN:W}=J,{fragmentHint:H}=J,{maxFragLookUpTolerance:G}=X,q=J.partList,V=!!(this.loadingParts&&q!=null&&q.length&&H);if(V&&!this.bitrateTest&&q[q.length-1].fragment.sn===H.sn)z=z.concat(H),W=H.sn;let U;if(ZY-G||(N=this.media)!=null&&N.paused||!this.startFragRequested?0:G;U=J9(Q,z,Z,K)}else U=z[z.length-1];if(U){let j=U.sn-J.startSN,K=this.fragmentTracker.getState(U);if(K===P0.OK||K===P0.PARTIAL&&U.gap)Q=U;if(Q&&U.sn===Q.sn&&(!V||q[0].fragment.sn>U.sn||!J.live)){if(U.level===Q.level){let R=z[j+1];if(U.sn${Z.startSN} fragments: ${X}`),H}return Q}waitForCdnTuneIn(Z){return Z.live&&Z.canBlockReload&&Z.partTarget&&Z.tuneInGoal>Math.max(Z.partHoldBack,Z.partTarget*3)}setStartPosition(Z,Y){let J=this.startPosition;if(J=0)J=this.nextLoadPosition;return J}handleFragLoadAborted(Z,Y){if(this.transmuxer&&Z.type===this.playlistType&&$0(Z)&&Z.stats.aborted)this.log(`Fragment ${Z.sn}${Y?" part "+Y.index:""} of ${this.playlistLabel()} ${Z.level} was aborted`),this.resetFragmentLoading(Z)}resetFragmentLoading(Z){if(!this.fragCurrent||!this.fragContextChanged(Z)&&this.state!==S.FRAG_LOADING_WAITING_RETRY)this.state=S.IDLE}onFragmentOrKeyLoadError(Z,Y){var J;if(Y.chunkMeta&&!Y.frag){let R=this.getCurrentContext(Y.chunkMeta);if(R)Y.frag=R.frag}let X=Y.frag;if(!X||X.type!==Z||!this.levels)return;if(this.fragContextChanged(X)){var Q;this.warn(`Frag load error must match current frag to retry ${X.url} > ${(Q=this.fragCurrent)==null?void 0:Q.url}`);return}let z=Y.details===b.FRAG_GAP;if(z)this.fragmentTracker.fragBuffered(X,!0);let W=Y.errorAction;if(!W){this.state=S.ERROR;return}let{action:H,flags:G,retryCount:q=0,retryConfig:V}=W,U=!!V,N=U&&H===S0.RetryRequest,j=U&&!W.resolved&&G===u0.MoveAllAlternatesMatchingHost,K=(J=this.hls.latestLevelDetails)==null?void 0:J.live;if(!N&&j&&$0(X)&&!X.endList&&K&&!HX(Y))this.resetFragmentErrors(Z),this.treatAsGap(X),W.resolved=!0;else if((N||j)&&q=Y||J&&!MZ(0)){if(J)this.log("Connection restored (online)");this.resetStartWhenNotLoaded(),this.state=S.IDLE}}reduceLengthAndFlushBuffer(Z){if(this.state===S.PARSING||this.state===S.PARSED){let{frag:Y,parent:J}=Z,X=this.getFwdBufferInfo(this.mediaBuffer,J),Q=X&&X.len>0.5;if(Q)this.reduceMaxBufferLength(X.len,(Y==null?void 0:Y.duration)||10);let z=!Q;if(z)this.warn(`Buffer full error while media.currentTime (${this.getLoadPosition()}) is not buffered, flush ${J} buffer`);if(Y)this.fragmentTracker.removeFragment(Y),this.nextLoadPosition=Y.start;return this.resetLoadingState(),z}return!1}resetFragmentErrors(Z){if(Z===o.AUDIO)this.fragCurrent=null;if(!this.hls.hasEnoughToStart)this.startFragRequested=!1;if(this.state!==S.STOPPED)this.state=S.IDLE}afterBufferFlushed(Z,Y,J){if(!Z)return;let X=t.getBuffered(Z);if(this.fragmentTracker.detectEvictedFragments(Y,X,J),this.state===S.ENDED)this.resetLoadingState()}resetLoadingState(){if(this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==S.STOPPED)this.state=S.IDLE}resetStartWhenNotLoaded(){if(!this.hls.hasEnoughToStart){this.startFragRequested=!1;let Z=this.levelLastLoaded,Y=Z?Z.details:null;if(Y!=null&&Y.live)this.log("resetting startPosition for live start"),this.startPosition=-1,this.setStartPosition(Y,Y.fragmentStart),this.resetLoadingState();else this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(Z){this.log(`Loading context changed while buffering sn ${Z.sn} of ${this.playlistLabel()} ${Z.level===-1?"":Z.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(),this.resetLoadingState()}removeUnbufferedFrags(Z=0){this.fragmentTracker.removeFragmentsInRange(Z,1/0,this.playlistType,!1,!0)}updateLevelTiming(Z,Y,J,X){let Q=J.details;if(!Q){this.warn("level.details undefined");return}if(!Object.keys(Z.elementaryStreams).reduce((H,G)=>{let q=Z.elementaryStreams[G];if(q){let V=q.endPTS-q.startPTS;if(V<=0)return this.warn(`Could not parse fragment ${Z.sn} ${G} duration reliably (${V})`),H||!1;let U=X?0:MX(Q,Z,q.startPTS,q.endPTS,q.startDTS,q.endDTS,this);return this.hls.trigger(F.LEVEL_PTS_UPDATED,{details:Q,level:J,drift:U,type:G,frag:Z,start:q.startPTS,end:q.endPTS}),!0}return H},!1)){var W;let H=((W=this.transmuxer)==null?void 0:W.error)===null;if(J.fragmentError===0||H&&(J.fragmentError<2||Z.endList))this.treatAsGap(Z,J);if(H){let G=Error(`Found no media in fragment ${Z.sn} of ${this.playlistLabel()} ${Z.level} resetting transmuxer to fallback to playlist timing`);if(this.warn(G.message),this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_PARSING_ERROR,fatal:!1,error:G,frag:Z,reason:`Found no media in msn ${Z.sn} of ${this.playlistLabel()} "${J.url}"`}),!this.hls)return;this.resetTransmuxer()}}this.state=S.PARSED,this.log(`Parsed ${Z.type} sn: ${Z.sn}${Y?" part: "+Y.index:""} of ${this.fragInfo(Z,!1,Y)})`),this.hls.trigger(F.FRAG_PARSED,{frag:Z,part:Y})}playlistLabel(){return this.playlistType===o.MAIN?"level":"track"}fragInfo(Z,Y=!0,J){var X,Q;return`${this.playlistLabel()} ${Z.level} (${J?"part":"frag"}:[${((X=Y&&!J?Z.startPTS:(J||Z).start)!=null?X:NaN).toFixed(3)}-${((Q=Y&&!J?Z.endPTS:(J||Z).end)!=null?Q:NaN).toFixed(3)}]${J&&Z.type==="main"?"INDEPENDENT="+(J.independent?"YES":"NO"):""}`}treatAsGap(Z,Y){if(Y)Y.fragmentError++;Z.gap=!0,this.fragmentTracker.removeFragment(Z),this.fragmentTracker.fragBuffered(Z,!0)}resetTransmuxer(){var Z;(Z=this.transmuxer)==null||Z.reset()}recoverWorkerError(Z){if(Z.event==="demuxerWorker"){if(this.fragmentTracker.removeAllFragments(),this.transmuxer)this.transmuxer.destroy(),this.transmuxer=null;this.resetStartWhenNotLoaded(),this.resetLoadingState()}}set state(Z){let Y=this._state;if(Y!==Z)this._state=Z,this.log(`${Y}->${Z}`)}get state(){return this._state}}function NJ(Z){return!!Z.interstitialsController&&Z.enableInterstitialPlayback!==!1}class aZ{constructor(){this.chunks=[],this.dataLength=0}push(Z){this.chunks.push(Z),this.dataLength+=Z.length}flush(){let{chunks:Z,dataLength:Y}=this,J;if(!Z.length)return new Uint8Array(0);else if(Z.length===1)J=Z[0];else J=D3(Z,Y);return this.reset(),J}reset(){this.chunks.length=0,this.dataLength=0}}function D3(Z,Y){let J=new Uint8Array(Y),X=0;for(let Q=0;Q0)return Z.subarray(J,J+X);return}function T3(Z,Y,J,X){let Q=[96000,88200,64000,48000,44100,32000,24000,22050,16000,12000,11025,8000,7350],z=Y[J+2],W=z>>2&15;if(W>12){let j=Error(`invalid ADTS sampling index:${W}`);Z.emit(F.ERROR,F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_PARSING_ERROR,fatal:!0,error:j,reason:j.message});return}let H=(z>>6&3)+1,G=Y[J+3]>>6&3|(z&1)<<2,q="mp4a.40."+H,V=Q[W],U=W;if(H===5||H===29)U-=3;let N=[H<<3|(U&14)>>1,(U&1)<<7|G<<3];return q0.log(`manifest codec:${X}, parsed codec:${q}, channels:${G}, rate:${V} (ADTS object type:${H} sampling index:${W})`),{config:N,samplerate:V,channelCount:G,codec:q,parsedCodec:q,manifestCodec:X}}function xX(Z,Y){return Z[Y]===255&&(Z[Y+1]&246)===240}function SX(Z,Y){return Z[Y+1]&1?7:9}function Z6(Z,Y){return(Z[Y+3]&3)<<11|Z[Y+4]<<3|(Z[Y+5]&224)>>>5}function h3(Z,Y){return Y+5=Z.length)return!1;let X=Z6(Z,Y);if(X<=J)return!1;let Q=Y+X;return Q===Z.length||n7(Z,Q)}return!1}function TX(Z,Y,J,X,Q){if(!Z.samplerate){let z=T3(Y,J,X,Q);if(!z)return;U0(Z,z)}}function hX(Z){return 92160000/Z}function k3(Z,Y){let J=SX(Z,Y);if(Y+J<=Z.length){let X=Z6(Z,Y)-J;if(X>0)return{headerLength:J,frameLength:X}}}function vX(Z,Y,J,X,Q){let z=hX(Z.samplerate),W=X+Q*z,H=k3(Y,J),G;if(H){let{frameLength:U,headerLength:N}=H,j=N+U,K=Math.max(0,J+j-Y.length);if(K)G=new Uint8Array(j-N),G.set(Y.subarray(J+N,Y.length),0);else G=Y.subarray(J+N,J+j);let B={unit:G,pts:W};if(!K)Z.samples.push(B);return{sample:B,length:j,missing:K}}let q=Y.length-J;return G=new Uint8Array(q),G.set(Y.subarray(J,Y.length),0),{sample:{unit:G,pts:W},length:q,missing:-1}}function y3(Z,Y){return eZ(Z,Y)&&Z1(Z,Y+6)+10<=Z.length-Y}function f3(Z){if(Z instanceof ArrayBuffer)return Z;else{if(Z.byteOffset==0&&Z.byteLength==Z.buffer.byteLength)return Z.buffer;return new Uint8Array(Z).buffer}}function JZ(Z,Y=0,J=1/0){return p3(Z,Y,J,Uint8Array)}function p3(Z,Y,J,X){let Q=m3(Z),z=1;if("BYTES_PER_ELEMENT"in X)z=X.BYTES_PER_ELEMENT;let W=u3(Z)?Z.byteOffset:0,H=(W+Z.byteLength)/z,G=(W+Y)/z,q=Math.floor(Math.max(0,Math.min(G,H))),V=Math.floor(Math.min(q+Math.max(J,0),H));return new X(Q,q,V-q)}function m3(Z){if(Z instanceof ArrayBuffer)return Z;else return Z.buffer}function u3(Z){return Z&&Z.buffer instanceof ArrayBuffer&&Z.byteLength!==void 0&&Z.byteOffset!==void 0}function c3(Z){let Y={key:Z.type,description:"",data:"",mimeType:null,pictureType:null},J=3;if(Z.size<2)return;if(Z.data[0]!==3){console.log("Ignore frame with unrecognized character encoding");return}let X=Z.data.subarray(1).indexOf(0);if(X===-1)return;let Q=o0(JZ(Z.data,1,X)),z=Z.data[2+X],W=Z.data.subarray(3+X).indexOf(0);if(W===-1)return;let H=o0(JZ(Z.data,3+X,W)),G;if(Q==="-->")G=o0(JZ(Z.data,4+X+W));else G=f3(Z.data.subarray(4+X+W));return Y.mimeType=Q,Y.pictureType=z,Y.description=H,Y.data=G,Y}function d3(Z){if(Z.size<2)return;let Y=o0(Z.data,!0),J=new Uint8Array(Z.data.subarray(Y.length+1));return{key:Z.type,info:Y,data:J.buffer}}function o3(Z){if(Z.size<2)return;if(Z.type==="TXXX"){let J=1,X=o0(Z.data.subarray(J),!0);J+=X.length+1;let Q=o0(Z.data.subarray(J));return{key:Z.type,info:X,data:Q}}let Y=o0(Z.data.subarray(1));return{key:Z.type,info:"",data:Y}}function l3(Z){if(Z.type==="WXXX"){if(Z.size<2)return;let J=1,X=o0(Z.data.subarray(J),!0);J+=X.length+1;let Q=o0(Z.data.subarray(J));return{key:Z.type,info:X,data:Q}}let Y=o0(Z.data);return{key:Z.type,info:"",data:Y}}function n3(Z){if(Z.type==="PRIV")return d3(Z);else if(Z.type[0]==="W")return l3(Z);else if(Z.type==="APIC")return c3(Z);return o3(Z)}function s3(Z){let Y=String.fromCharCode(Z[0],Z[1],Z[2],Z[3]),J=Z1(Z,4),X=10;return{type:Y,size:J,data:Z.subarray(10,10+J)}}var O7=10,i3=10;function gX(Z){let Y=0,J=[];while(eZ(Z,Y)){let X=Z1(Z,Y+6);if(Z[Y+5]>>6&1)Y+=O7;Y+=O7;let Q=Y+X;while(Y+i30)W.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:J,type:d0.audioId3,duration:Number.POSITIVE_INFINITY});while(X{if(m(Z))return Z*90;let X=J?J.baseTime*90000/J.timescale:0;return Y*90000+X},$7=null,t3=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],e3=[44100,48000,32000,22050,24000,16000,11025,12000,8000],Z4=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Y4=[0,1,1,4];function yX(Z,Y,J,X,Q){if(J+24>Y.length)return;let z=fX(Y,J);if(z&&J+z.frameLength<=Y.length){let W=z.samplesPerFrame*90000/z.sampleRate,H=X+Q*W,G={unit:Y.subarray(J,J+z.frameLength),pts:H,dts:H};return Z.config=[],Z.channelCount=z.channelCount,Z.samplerate=z.sampleRate,Z.samples.push(G),{sample:G,length:z.frameLength,missing:0}}}function fX(Z,Y){let J=Z[Y+1]>>3&3,X=Z[Y+1]>>1&3,Q=Z[Y+2]>>4&15,z=Z[Y+2]>>2&3;if(J!==1&&Q!==0&&Q!==15&&z!==3){let W=Z[Y+2]>>1&1,H=Z[Y+3]>>6,G=J===3?3-X:X===3?3:4,q=t3[G*14+Q-1]*1000,U=e3[(J===3?0:J===2?1:2)*3+z],N=H===3?1:2,j=Z4[J][X],K=Y4[X],B=j*8*K,R=Math.floor(j*q/U+W)*K;if($7===null){let A=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);$7=A?parseInt(A[1]):0}if(!!$7&&$7<=87&&X===2&&q>=224000&&H===0)Z[Y+3]=Z[Y+3]|128;return{sampleRate:U,channelCount:N,frameLength:R,samplesPerFrame:B}}}function J6(Z,Y){return Z[Y]===255&&(Z[Y+1]&224)===224&&(Z[Y+1]&6)!==0}function pX(Z,Y){return Y+1{let J=0,X=5;Y+=X;let Q=new Uint32Array(1),z=new Uint32Array(1),W=new Uint8Array(1);while(X>0){W[0]=Z[Y];let H=Math.min(X,8),G=8-H;z[0]=4278190080>>>24+G<>G,J=!J?Q[0]:J<Y.length)return-1;if(Y[J]!==11||Y[J+1]!==119)return-1;let z=Y[J+4]>>6;if(z>=3)return-1;let H=[48000,44100,32000][z],G=Y[J+4]&63,V=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][G*3+z]*2;if(J+V>Y.length)return-1;let U=Y[J+6]>>5,N=0;if(U===2)N+=2;else{if(U&1&&U!==1)N+=2;if(U&4)N+=2}let j=(Y[J+6]<<8|Y[J+7])>>12-N&1,B=[2,1,2,3,3,4,4,5][U]+j,R=Y[J+5]>>3,E=Y[J+5]&7,O=new Uint8Array([z<<6|R<<1|E>>2,(E&3)<<6|U<<3|j<<2|G>>4,G<<4&224]),A=1536/H*90000,$=X+Q*A,L=Y.subarray(J,J+V);return Z.config=O,Z.channelCount=B,Z.samplerate=H,Z.samples.push({unit:L,pts:$}),V}class lX extends Y1{resetInitSegment(Z,Y,J,X){super.resetInitSegment(Z,Y,J,X),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:Y,duration:X,inputTimeScale:90000,dropped:0}}static probe(Z){if(!Z)return!1;let Y=n9(Z,0),J=(Y==null?void 0:Y.length)||0;if(Y&&Z[J]===11&&Z[J+1]===119&&Y6(Y)!==void 0&&cX(Z,J)<=16)return!1;for(let X=Z.length;J{let z=$H(Q);if(X4.test(z.schemeIdUri)){let W=BJ(z,Y),H=z.eventDuration===4294967295?Number.POSITIVE_INFINITY:z.eventDuration/z.timeScale;if(H<=0.001)H=Number.POSITIVE_INFINITY;let G=z.payload;J.samples.push({data:G,len:G.byteLength,dts:W,pts:W,type:d0.emsg,duration:H})}else if(this.config.enableEmsgKLVMetadata&&z.schemeIdUri.startsWith("urn:misb:KLV:bin:1910.1")){let W=BJ(z,Y);J.samples.push({data:z.payload,len:z.payload.byteLength,dts:W,pts:W,type:d0.misbklv,duration:Number.POSITIVE_INFINITY})}})}return J}demuxSampleAes(Z,Y,J){return Promise.reject(Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){this.config=null,this.remainderData=null,this.videoTrack=this.audioTrack=this.id3Track=this.txtTrack=void 0}}function BJ(Z,Y){return m(Z.presentationTime)?Z.presentationTime/Z.timeScale:Y+Z.presentationTimeDelta/Z.timeScale}class sX{constructor(Z,Y,J){this.keyData=void 0,this.decrypter=void 0,this.keyData=J,this.decrypter=new a7(Y,{removePKCS7Padding:!1})}decryptBuffer(Z){return this.decrypter.decrypt(Z,this.keyData.key.buffer,this.keyData.iv.buffer,y8.cbc)}decryptAacSample(Z,Y,J){let X=Z[Y].unit;if(X.length<=16)return;let Q=X.subarray(16,X.length-X.length%16),z=Q.buffer.slice(Q.byteOffset,Q.byteOffset+Q.length);this.decryptBuffer(z).then((W)=>{let H=new Uint8Array(W);if(X.set(H,16),!this.decrypter.isSync())this.decryptAacSamples(Z,Y+1,J)}).catch(J)}decryptAacSamples(Z,Y,J){for(;;Y++){if(Y>=Z.length){J();return}if(Z[Y].unit.length<32)continue;if(this.decryptAacSample(Z,Y,J),!this.decrypter.isSync())return}}getAvcEncryptedData(Z){let Y=Math.floor((Z.length-48)/160)*16+16,J=new Int8Array(Y),X=0;for(let Q=32;Q{if(Q.data=this.getAvcDecryptedUnit(z,H),!this.decrypter.isSync())this.decryptAvcSamples(Z,Y,J+1,X)}).catch(X)}decryptAvcSamples(Z,Y,J,X){if(Z instanceof Uint8Array)throw Error("Cannot decrypt samples of type Uint8Array");for(;;Y++,J=0){if(Y>=Z.length){X();return}let Q=Z[Y].units;for(;;J++){if(J>=Q.length)break;let z=Q[J];if(z.data.length<=48||z.type!==1&&z.type!==5)continue;if(this.decryptAvcSample(Z,Y,J,X,z),!this.decrypter.isSync())return}}}}class X6{constructor(){this.VideoSample=null}createVideoSample(Z,Y,J){return{key:Z,frame:!1,pts:Y,dts:J,units:[],length:0}}getLastNalUnit(Z){var Y;let J=this.VideoSample,X;if(!J||J.units.length===0)J=Z[Z.length-1];if((Y=J)!=null&&Y.units){let Q=J.units;X=Q[Q.length-1]}return X}pushAccessUnit(Z,Y){if(Z.units.length&&Z.frame){if(Z.pts===void 0){let J=Y.samples,X=J.length;if(X){let Q=J[X-1];Z.pts=Q.pts,Z.dts=Q.dts}else{Y.dropped++;return}}Y.samples.push(Z)}}parseNALu(Z,Y,J){let X=Y.byteLength,Q=Z.naluState||0,z=Q,W=[],H=0,G,q,V,U=-1,N=0;if(Q===-1)U=0,N=this.getNALuType(Y,0),Q=0,H=1;while(H=0){let j={data:Y.subarray(U,q),type:N};W.push(j)}else{let j=this.getLastNalUnit(Z.samples);if(j){if(z&&H<=4-z){if(j.state)j.data=j.data.subarray(0,j.data.byteLength-z)}if(q>0)j.data=a0(j.data,Y.subarray(0,q)),j.state=0}}if(H=0&&Q>=0){let j={data:Y.subarray(U,X),type:N,state:Q};W.push(j)}if(W.length===0){let j=this.getLastNalUnit(Z.samples);if(j)j.data=a0(j.data,Y)}return Z.naluState=Q,W}}class F9{constructor(Z){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=Z,this.bytesAvailable=Z.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){let Z=this.data,Y=this.bytesAvailable,J=Z.byteLength-Y,X=new Uint8Array(4),Q=Math.min(4,Y);if(Q===0)throw Error("no bytes available");X.set(Z.subarray(J,J+Q)),this.word=new DataView(X.buffer).getUint32(0),this.bitsAvailable=Q*8,this.bytesAvailable-=Q}skipBits(Z){let Y;if(Z=Math.min(Z,this.bytesAvailable*8+this.bitsAvailable),this.bitsAvailable>Z)this.word<<=Z,this.bitsAvailable-=Z;else Z-=this.bitsAvailable,Y=Z>>3,Z-=Y<<3,this.bytesAvailable-=Y,this.loadWord(),this.word<<=Z,this.bitsAvailable-=Z}readBits(Z){let Y=Math.min(this.bitsAvailable,Z),J=this.word>>>32-Y;if(Z>32)q0.error("Cannot read more than 32 bits at a time");if(this.bitsAvailable-=Y,this.bitsAvailable>0)this.word<<=Y;else if(this.bytesAvailable>0)this.loadWord();else throw Error("no bits available");if(Y=Z-Y,Y>0&&this.bitsAvailable)return J<>>Z)!==0)return this.word<<=Z,this.bitsAvailable-=Z,Z;return this.loadWord(),Z+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){let Z=this.skipLZ();return this.readBits(Z+1)-1}readEG(){let Z=this.readUEG();if(1&Z)return 1+Z>>>1;else return-1*(Z>>>1)}readBoolean(){return this.readBits(1)===1}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}}class iX extends X6{parsePES(Z,Y,J,X){let Q=this.parseNALu(Z,J.data,X),z=this.VideoSample,W,H=!1;if(J.data=null,z&&Q.length&&!Z.audFound)this.pushAccessUnit(z,Z),z=this.VideoSample=this.createVideoSample(!1,J.pts,J.dts);if(Q.forEach((G)=>{var q,V;switch(G.type){case 1:{let K=!1;W=!0;let B=G.data;if(H&&B.length>4){let R=this.readSliceType(B);if(R===2||R===4||R===7||R===9)K=!0}if(K){var U;if((U=z)!=null&&U.frame&&!z.key)this.pushAccessUnit(z,Z),z=this.VideoSample=null}if(!z)z=this.VideoSample=this.createVideoSample(!0,J.pts,J.dts);z.frame=!0,z.key=K;break}case 5:if(W=!0,(q=z)!=null&&q.frame&&!z.key)this.pushAccessUnit(z,Z),z=this.VideoSample=null;if(!z)z=this.VideoSample=this.createVideoSample(!0,J.pts,J.dts);z.key=!0,z.frame=!0;break;case 6:{W=!0,cZ(G.data,1,J.pts,Y.samples);break}case 7:{var N,j;W=!0,H=!0;let K=G.data,B=this.readSPS(K);if(!Z.sps||Z.width!==B.width||Z.height!==B.height||((N=Z.pixelRatio)==null?void 0:N[0])!==B.pixelRatio[0]||((j=Z.pixelRatio)==null?void 0:j[1])!==B.pixelRatio[1]){Z.width=B.width,Z.height=B.height,Z.pixelRatio=B.pixelRatio,Z.sps=[K];let R=K.subarray(1,4),E="avc1.";for(let O=0;O<3;O++){let A=R[O].toString(16);if(A.length<2)A="0"+A;E+=A}Z.codec=E}break}case 8:W=!0,Z.pps=[G.data];break;case 9:if(W=!0,Z.audFound=!0,(V=z)!=null&&V.frame)this.pushAccessUnit(z,Z),z=null;if(!z)z=this.VideoSample=this.createVideoSample(!1,J.pts,J.dts);break;case 12:W=!0;break;default:W=!1;break}if(z&&W)z.units.push(G)}),X&&z)this.pushAccessUnit(z,Z),this.VideoSample=null}getNALuType(Z,Y){return Z[Y]&31}readSliceType(Z){let Y=new F9(Z);return Y.readUByte(),Y.readUEG(),Y.readUEG()}skipScalingList(Z,Y){let J=8,X=8,Q;for(let z=0;z{var q,V;switch(G.type){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:if(!z)z=this.VideoSample=this.createVideoSample(!1,J.pts,J.dts);z.frame=!0,W=!0;break;case 16:case 17:case 18:case 21:if(W=!0,H){var U;if((U=z)!=null&&U.frame&&!z.key)this.pushAccessUnit(z,Z),z=this.VideoSample=null}if(!z)z=this.VideoSample=this.createVideoSample(!0,J.pts,J.dts);z.key=!0,z.frame=!0;break;case 19:case 20:if(W=!0,(q=z)!=null&&q.frame&&!z.key)this.pushAccessUnit(z,Z),z=this.VideoSample=null;if(!z)z=this.VideoSample=this.createVideoSample(!0,J.pts,J.dts);z.key=!0,z.frame=!0;break;case 39:W=!0,cZ(G.data,2,J.pts,Y.samples);break;case 32:if(W=!0,!Z.vps){if(typeof Z.params!=="object")Z.params={};Z.params=U0(Z.params,this.readVPS(G.data)),this.initVPS=G.data}Z.vps=[G.data];break;case 33:if(W=!0,H=!0,Z.vps!==void 0&&Z.vps[0]!==this.initVPS&&Z.sps!==void 0&&!this.matchSPS(Z.sps[0],G.data))this.initVPS=Z.vps[0],Z.sps=Z.pps=void 0;if(!Z.sps){let N=this.readSPS(G.data);if(Z.width=N.width,Z.height=N.height,Z.pixelRatio=N.pixelRatio,Z.codec=N.codecString,Z.sps=[],typeof Z.params!=="object")Z.params={};for(let j in N.params)Z.params[j]=N.params[j]}if(this.pushParameterSet(Z.sps,G.data,Z.vps),!z)z=this.VideoSample=this.createVideoSample(!0,J.pts,J.dts);z.key=!0;break;case 34:if(W=!0,typeof Z.params==="object"){if(!Z.pps){Z.pps=[];let N=this.readPPS(G.data);for(let j in N)Z.params[j]=N[j]}this.pushParameterSet(Z.pps,G.data,Z.vps)}break;case 35:if(W=!0,Z.audFound=!0,(V=z)!=null&&V.frame)this.pushAccessUnit(z,Z),z=null;if(!z)z=this.VideoSample=this.createVideoSample(!1,J.pts,J.dts);break;default:W=!1;break}if(z&&W)z.units.push(G)}),X&&z)this.pushAccessUnit(z,Z),this.VideoSample=null}pushParameterSet(Z,Y,J){if(J&&J[0]===this.initVPS||!J&&!Z.length)Z.push(Y)}getNALuType(Z,Y){return(Z[Y]&126)>>>1}ebsp2rbsp(Z){let Y=new Uint8Array(Z.byteLength),J=0;for(let X=0;X=2){if(Z[X]===3&&Z[X-1]===0&&Z[X-2]===0)continue}Y[J]=Z[X],J++}return new Uint8Array(Y.buffer,0,J)}pushAccessUnit(Z,Y){if(super.pushAccessUnit(Z,Y),this.initVPS)this.initVPS=null}readVPS(Z){let Y=new F9(Z);Y.readUByte(),Y.readUByte(),Y.readBits(4),Y.skipBits(2),Y.readBits(6);let J=Y.readBits(3),X=Y.readBoolean();return{numTemporalLayers:J+1,temporalIdNested:X}}readSPS(Z){let Y=new F9(this.ebsp2rbsp(Z));Y.readUByte(),Y.readUByte(),Y.readBits(4);let J=Y.readBits(3);Y.readBoolean();let X=Y.readBits(2),Q=Y.readBoolean(),z=Y.readBits(5),W=Y.readUByte(),H=Y.readUByte(),G=Y.readUByte(),q=Y.readUByte(),V=Y.readUByte(),U=Y.readUByte(),N=Y.readUByte(),j=Y.readUByte(),K=Y.readUByte(),B=Y.readUByte(),R=Y.readUByte(),E=[],O=[];for(let G0=0;G00)for(let G0=J;G0<8;G0++)Y.readBits(2);for(let G0=0;G01)Y.readEG();for(let z9=0;z90&&d8<16)f=s6[d8-1],s=H7[d8-1];else if(d8===255)f=Y.readBits(16),s=Y.readBits(16)}if(Y.readBoolean())Y.readBoolean();if(Y.readBoolean()){if(Y.readBits(3),Y.readBoolean(),Y.readBoolean())Y.readUByte(),Y.readUByte(),Y.readUByte()}if(Y.readBoolean())Y.readUEG(),Y.readUEG();if(Y.readBoolean(),Y.readBoolean(),Y.readBoolean(),M0=Y.readBoolean(),M0)Y.skipUEG(),Y.skipUEG(),Y.skipUEG(),Y.skipUEG();if(Y.readBoolean()){if(e=Y.readBits(32),z0=Y.readBits(32),Y.readBoolean())Y.readUEG();if(Y.readBoolean()){let H7=Y.readBoolean(),i6=Y.readBoolean(),b9=!1;if(H7||i6){if(b9=Y.readBoolean(),b9)Y.readUByte(),Y.readBits(5),Y.readBoolean(),Y.readBits(5);if(Y.readBits(4),Y.readBits(4),b9)Y.readBits(4);Y.readBits(5),Y.readBits(5),Y.readBits(5)}for(let r6=0;r6<=J;r6++){Q0=Y.readBoolean();let Pz=Q0||Y.readBoolean(),a6=!1;if(Pz)Y.readEG();else a6=Y.readBoolean();let t6=a6?1:Y.readUEG()+1;if(H7)for(let I9=0;I9>G0&1)<<31-G0)>>>0;let v1=h1.toString(16);if(z===1&&v1==="2")v1="6";return{codecString:`hvc1.${u8}${z}.${v1}.${Q?"H":"L"}${R}.B0`,params:{general_tier_flag:Q,general_profile_idc:z,general_profile_space:X,general_profile_compatibility_flags:[W,H,G,q],general_constraint_indicator_flags:[V,U,N,j,K,B],general_level_idc:R,bit_depth:I+8,bit_depth_luma_minus8:I,bit_depth_chroma_minus8:h,min_spatial_segmentation_idc:g,chroma_format_idc:A,frame_rate:{fixed:Q0,fps:z0/e}},width:n0,height:G8,pixelRatio:[f,s]}}readPPS(Z){let Y=new F9(this.ebsp2rbsp(Z));if(Y.readUByte(),Y.readUByte(),Y.skipUEG(),Y.skipUEG(),Y.skipBits(2),Y.skipBits(3),Y.skipBits(2),Y.skipUEG(),Y.skipUEG(),Y.skipEG(),Y.skipBits(2),Y.readBoolean())Y.skipUEG();Y.skipEG(),Y.skipEG(),Y.skipBits(4);let X=Y.readBoolean(),Q=Y.readBoolean(),z=1;if(Q&&X)z=0;else if(Q)z=3;else if(X)z=2;return{parallelismType:z}}matchSPS(Z,Y){return String.fromCharCode.apply(null,Z).substr(3)===String.fromCharCode.apply(null,Y).substr(3)}}var x0=188;class v8{constructor(Z,Y,J,X){this.logger=void 0,this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=Z,this.config=Y,this.typeSupported=J,this.logger=X,this.videoParser=null}static probe(Z,Y){let J=v8.syncOffset(Z);if(J>0)Y.warn(`MPEG2-TS detected but first sync word found @ offset ${J}`);return J!==-1}static syncOffset(Z){let Y=Z.length,J=Math.min(x0*5,Y-x0)+1,X=0;while(X1&&(z===0&&W>2||H+x0>J))return z}else if(W)return-1;else break;X++}return-1}static createTrack(Z,Y){return{container:Z==="video"||Z==="audio"?"video/mp2t":void 0,type:Z,id:oJ[Z],pid:-1,inputTimeScale:90000,sequenceNumber:0,samples:[],dropped:0,duration:Z==="audio"?Y:void 0}}resetInitSegment(Z,Y,J,X){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=v8.createTrack("video"),this._videoTrack.duration=X,this._audioTrack=v8.createTrack("audio",X),this._id3Track=v8.createTrack("id3"),this._txtTrack=v8.createTrack("text"),this._audioTrack.segmentCodec="aac",this.videoParser=null,this.aacOverFlow=null,this.remainderData=null,this.audioCodec=Y,this.videoCodec=J}resetTimeStamp(){}resetContiguity(){let{_audioTrack:Z,_videoTrack:Y,_id3Track:J}=this;if(Z)Z.pesData=null;if(Y)Y.pesData=null;if(J)J.pesData=null;this.aacOverFlow=null,this.remainderData=null}demux(Z,Y,J=!1,X=!1){if(!J)this.sampleAes=null;let Q,z=this._videoTrack,W=this._audioTrack,H=this._id3Track,G=this._txtTrack,q=z.pid,V=z.pesData,U=W.pid,N=H.pid,j=W.pesData,K=H.pesData,B=null,R=this.pmtParsed,E=this._pmtId,O=Z.length;if(this.remainderData)Z=a0(this.remainderData,Z),O=Z.length,this.remainderData=null;if(O>4,D;if(C>1){if(D=M+5+Z[M+4],D===M+x0)continue}else D=M+4;switch(_){case q:if(w){if(V&&(Q=V9(V,this.logger))){if(this.readyVideoParser(z.segmentCodec),this.videoParser!==null)this.videoParser.parsePES(z,G,Q,!1)}V={data:[],size:0}}if(V)V.data.push(Z.subarray(D,M+x0)),V.size+=M+x0-D;break;case U:if(w){if(j&&(Q=V9(j,this.logger)))switch(W.segmentCodec){case"aac":this.parseAACPES(W,Q);break;case"mp3":this.parseMPEGPES(W,Q);break;case"ac3":this.parseAC3PES(W,Q);break}j={data:[],size:0}}if(j)j.data.push(Z.subarray(D,M+x0)),j.size+=M+x0-D;break;case N:if(w){if(K&&(Q=V9(K,this.logger)))this.parseID3PES(H,Q);K={data:[],size:0}}if(K)K.data.push(Z.subarray(D,M+x0)),K.size+=M+x0-D;break;case 0:if(w)D+=Z[D]+1;E=this._pmtId=Q4(Z,D);break;case E:{if(w)D+=Z[D]+1;let I=z4(Z,D,this.typeSupported,J,this.observer,this.logger);if(q=I.videoPid,q>0)z.pid=q,z.segmentCodec=I.segmentVideoCodec;if(U=I.audioPid,U>0)W.pid=U,W.segmentCodec=I.segmentAudioCodec;if(N=I.id3Pid,N>0)H.pid=N;if(B!==null&&!R)this.logger.warn(`MPEG-TS PMT found at ${M} after unknown PID '${B}'. Backtracking to sync byte @${A} to parse all TS packets.`),B=null,M=A-188;R=this.pmtParsed=!0;break}case 17:case 8191:break;default:B=_;break}}else $++;if($>0)PZ(this.observer,Error(`Found ${$} TS packet/s that do not start with 0x47`),void 0,this.logger);z.pesData=V,W.pesData=j,H.pesData=K;let L={audioTrack:W,videoTrack:z,id3Track:H,textTrack:G};if(X)this.extractRemainingSamples(L);return L}flush(){let{remainderData:Z}=this;this.remainderData=null;let Y;if(Z)Y=this.demux(Z,-1,!1,!0);else Y={videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack};if(this.extractRemainingSamples(Y),this.sampleAes)return this.decrypt(Y,this.sampleAes);return Y}extractRemainingSamples(Z){let{audioTrack:Y,videoTrack:J,id3Track:X,textTrack:Q}=Z,z=J.pesData,W=Y.pesData,H=X.pesData,G;if(z&&(G=V9(z,this.logger))){if(this.readyVideoParser(J.segmentCodec),this.videoParser!==null)this.videoParser.parsePES(J,Q,G,!0),J.pesData=null}else J.pesData=z;if(W&&(G=V9(W,this.logger))){switch(Y.segmentCodec){case"aac":this.parseAACPES(Y,G);break;case"mp3":this.parseMPEGPES(Y,G);break;case"ac3":this.parseAC3PES(Y,G);break}Y.pesData=null}else{if(W!=null&&W.size)this.logger.log("last AAC PES packet truncated,might overlap between fragments");Y.pesData=W}if(H&&(G=V9(H,this.logger)))this.parseID3PES(X,G),X.pesData=null;else X.pesData=H}demuxSampleAes(Z,Y,J){let X=this.demux(Z,J,!0,!this.config.progressive),Q=this.sampleAes=new sX(this.observer,this.config,Y);return this.decrypt(X,Q)}readyVideoParser(Z){if(this.videoParser===null){if(Z==="avc")this.videoParser=new iX;else if(Z==="hevc")this.videoParser=new rX}}decrypt(Z,Y){return new Promise((J)=>{let{audioTrack:X,videoTrack:Q}=Z;if(X.samples&&X.segmentCodec==="aac")Y.decryptAacSamples(X.samples,0,()=>{if(Q.samples)Y.decryptAvcSamples(Q.samples,0,0,()=>{J(Z)});else J(Z)});else if(Q.samples)Y.decryptAvcSamples(Q.samples,0,0,()=>{J(Z)})})}destroy(){if(this.observer)this.observer.removeAllListeners();this.config=this.logger=this.observer=null,this.aacOverFlow=this.videoParser=this.remainderData=this.sampleAes=null,this._videoTrack=this._audioTrack=this._id3Track=this._txtTrack=void 0}parseAACPES(Z,Y){let J=0,X=this.aacOverFlow,Q=Y.data;if(X){this.aacOverFlow=null;let V=X.missing,U=X.sample.unit.byteLength;if(V===-1)Q=a0(X.sample.unit,Q);else{let N=U-V;X.sample.unit.set(Q.subarray(0,V),N),Z.samples.push(X.sample),J=X.missing}}let z,W;for(z=J,W=Q.length;z0)W+=H}}parseID3PES(Z,Y){if(Y.pts===void 0){this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS");return}let J=U0({},Y,{type:this._videoTrack?d0.emsg:d0.audioId3,duration:Number.POSITIVE_INFINITY});Z.samples.push(J)}}function CZ(Z,Y){return((Z[Y+1]&31)<<8)+Z[Y+2]}function Q4(Z,Y){return(Z[Y+10]&31)<<8|Z[Y+11]}function z4(Z,Y,J,X,Q,z){let W={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},H=(Z[Y+1]&15)<<8|Z[Y+2],G=Y+3+H-4,q=(Z[Y+10]&15)<<8|Z[Y+11];Y+=12+q;while(Y0){let N=Y+5,j=U;while(j>2){switch(Z[N]){case 106:if(J.ac3!==!0)z.log("AC-3 audio found, not supported in this browser for now");else W.audioPid=V,W.segmentAudioCodec="ac3";break}let B=Z[N+1]+2;N+=B,j-=B}}break;case 194:case 135:return PZ(Q,Error("Unsupported EC-3 in M2TS found"),void 0,z),W;case 36:if(W.videoPid===-1)W.videoPid=V,W.segmentVideoCodec="hevc",z.log("HEVC in M2TS found");break}Y+=U+5}return W}function PZ(Z,Y,J,X){X.warn(`parsing error: ${Y.message}`),Z.emit(F.ERROR,F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_PARSING_ERROR,fatal:!1,levelRetry:J,error:Y,reason:Y.message})}function XZ(Z,Y){Y.log(`${Z} with AES-128-CBC encryption found in unencrypted stream`)}function V9(Z,Y){let J=0,X,Q,z,W,H,G=Z.data;if(!Z||Z.size===0)return null;while(G[0].length<19&&G.length>1)G[0]=a0(G[0],G[1]),G.splice(1,1);if(X=G[0],(X[0]<<16)+(X[1]<<8)+X[2]===1){if(Q=(X[4]<<8)+X[5],Q&&Q>Z.size-6)return null;let V=X[7];if(V&192)if(W=(X[9]&14)*536870912+(X[10]&255)*4194304+(X[11]&254)*16384+(X[12]&255)*128+(X[13]&254)/2,V&64){if(H=(X[14]&14)*536870912+(X[15]&255)*4194304+(X[16]&254)*16384+(X[17]&255)*128+(X[18]&254)/2,W-H>5400000)Y.warn(`${Math.round((W-H)/90000)}s delta between PTS and DTS, align them`),W=H}else H=W;z=X[8];let U=z+9;if(Z.size<=U)return null;Z.size-=U;let N=new Uint8Array(Z.size);for(let j=0,K=G.length;jB){U-=B;continue}else X=X.subarray(U),B-=U,U=0;N.set(X,J),J+=B}if(Q)Q-=z+3;return{data:N,pts:W,dts:H,len:Q}}return null}class aX{static getSilentFrame(Z,Y){switch(Z){case"mp4a.40.2":if(Y===1)return new Uint8Array([0,200,0,128,35,128]);else if(Y===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);else if(Y===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);else if(Y===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);else if(Y===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);else if(Y===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(Y===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);else if(Y===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);else if(Y===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}return}}var S8=Math.pow(2,32)-1;class P{static init(){P.types={avc1:[],avcC:[],hvc1:[],hvcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};let Z;for(Z in P.types)if(P.types.hasOwnProperty(Z))P.types[Z]=[Z.charCodeAt(0),Z.charCodeAt(1),Z.charCodeAt(2),Z.charCodeAt(3)];let Y=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),J=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);P.HDLR_TYPES={video:Y,audio:J};let X=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),Q=new Uint8Array([0,0,0,0,0,0,0,0]);P.STTS=P.STSC=P.STCO=Q,P.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),P.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),P.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),P.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);let z=new Uint8Array([105,115,111,109]),W=new Uint8Array([97,118,99,49]),H=new Uint8Array([0,0,0,1]);P.FTYP=P.box(P.types.ftyp,z,H,z,W),P.DINF=P.box(P.types.dinf,P.box(P.types.dref,X))}static box(Z,...Y){let J=8,X=Y.length,Q=X;while(X--)J+=Y[X].byteLength;let z=new Uint8Array(J);z[0]=J>>24&255,z[1]=J>>16&255,z[2]=J>>8&255,z[3]=J&255,z.set(Z,4);for(X=0,J=8;X>24&255,Z>>16&255,Z>>8&255,Z&255,J>>24,J>>16&255,J>>8&255,J&255,X>>24,X>>16&255,X>>8&255,X&255,85,196,0,0]))}static mdia(Z){return P.box(P.types.mdia,P.mdhd(Z.timescale||0,Z.duration||0),P.hdlr(Z.type),P.minf(Z))}static mfhd(Z){return P.box(P.types.mfhd,new Uint8Array([0,0,0,0,Z>>24,Z>>16&255,Z>>8&255,Z&255]))}static minf(Z){if(Z.type==="audio")return P.box(P.types.minf,P.box(P.types.smhd,P.SMHD),P.DINF,P.stbl(Z));else return P.box(P.types.minf,P.box(P.types.vmhd,P.VMHD),P.DINF,P.stbl(Z))}static moof(Z,Y,J){return P.box(P.types.moof,P.mfhd(Z),P.traf(J,Y))}static moov(Z){let Y=Z.length,J=[];while(Y--)J[Y]=P.trak(Z[Y]);return P.box.apply(null,[P.types.moov,P.mvhd(Z[0].timescale||0,Z[0].duration||0)].concat(J).concat(P.mvex(Z)))}static mvex(Z){let Y=Z.length,J=[];while(Y--)J[Y]=P.trex(Z[Y]);return P.box.apply(null,[P.types.mvex,...J])}static mvhd(Z,Y){Y*=Z;let J=Math.floor(Y/(S8+1)),X=Math.floor(Y%(S8+1)),Q=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,Z>>24&255,Z>>16&255,Z>>8&255,Z&255,J>>24,J>>16&255,J>>8&255,J&255,X>>24,X>>16&255,X>>8&255,X&255,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return P.box(P.types.mvhd,Q)}static sdtp(Z){let Y=Z.samples||[],J=new Uint8Array(4+Y.length),X,Q;for(X=0;X>>8&255),Y.push(z&255),Y=Y.concat(Array.prototype.slice.call(Q));for(X=0;X>>8&255),J.push(z&255),J=J.concat(Array.prototype.slice.call(Q));let W=P.box(P.types.avcC,new Uint8Array([1,Y[3],Y[4],Y[5],255,224|Z.sps.length].concat(Y).concat([Z.pps.length]).concat(J))),H=Z.width,G=Z.height,q=Z.pixelRatio[0],V=Z.pixelRatio[1];return P.box(P.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,H>>8&255,H&255,G>>8&255,G&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),W,P.box(P.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),P.box(P.types.pasp,new Uint8Array([q>>24,q>>16&255,q>>8&255,q&255,V>>24,V>>16&255,V>>8&255,V&255])))}static esds(Z){let Y=Z.config;return new Uint8Array([0,0,0,0,3,25,0,1,0,4,17,64,21,0,0,0,0,0,0,0,0,0,0,0,5,2,...Y,6,1,2])}static audioStsd(Z){let Y=Z.samplerate||0;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,Z.channelCount||0,0,16,0,0,0,0,Y>>8&255,Y&255,0,0])}static mp4a(Z){return P.box(P.types.mp4a,P.audioStsd(Z),P.box(P.types.esds,P.esds(Z)))}static mp3(Z){return P.box(P.types[".mp3"],P.audioStsd(Z))}static ac3(Z){return P.box(P.types["ac-3"],P.audioStsd(Z),P.box(P.types.dac3,Z.config))}static stsd(Z){let{segmentCodec:Y}=Z;if(Z.type==="audio"){if(Y==="aac")return P.box(P.types.stsd,P.STSD,P.mp4a(Z));if(Y==="ac3"&&Z.config)return P.box(P.types.stsd,P.STSD,P.ac3(Z));if(Y==="mp3"&&Z.codec==="mp3")return P.box(P.types.stsd,P.STSD,P.mp3(Z))}else if(Z.pps&&Z.sps){if(Y==="avc")return P.box(P.types.stsd,P.STSD,P.avc1(Z));if(Y==="hevc"&&Z.vps)return P.box(P.types.stsd,P.STSD,P.hvc1(Z))}else throw Error("video track missing pps or sps");throw Error(`unsupported ${Z.type} segment codec (${Y}/${Z.codec})`)}static tkhd(Z){let Y=Z.id,J=(Z.duration||0)*(Z.timescale||0),X=Z.width||0,Q=Z.height||0,z=Math.floor(J/(S8+1)),W=Math.floor(J%(S8+1));return P.box(P.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,Y>>24&255,Y>>16&255,Y>>8&255,Y&255,0,0,0,0,z>>24,z>>16&255,z>>8&255,z&255,W>>24,W>>16&255,W>>8&255,W&255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,X>>8&255,X&255,0,0,Q>>8&255,Q&255,0,0]))}static traf(Z,Y){let J=P.sdtp(Z),X=Z.id,Q=Math.floor(Y/(S8+1)),z=Math.floor(Y%(S8+1));return P.box(P.types.traf,P.box(P.types.tfhd,new Uint8Array([0,0,0,0,X>>24,X>>16&255,X>>8&255,X&255])),P.box(P.types.tfdt,new Uint8Array([1,0,0,0,Q>>24,Q>>16&255,Q>>8&255,Q&255,z>>24,z>>16&255,z>>8&255,z&255])),P.trun(Z,J.length+16+20+8+16+8+8),J)}static trak(Z){return Z.duration=Z.duration||4294967295,P.box(P.types.trak,P.tkhd(Z),P.mdia(Z))}static trex(Z){let Y=Z.id;return P.box(P.types.trex,new Uint8Array([0,0,0,0,Y>>24,Y>>16&255,Y>>8&255,Y&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(Z,Y){let J=Z.samples||[],X=J.length,Q=12+16*X,z=new Uint8Array(Q),W,H,G,q,V,U;Y+=8+Q,z.set([Z.type==="video"?1:0,0,15,1,X>>>24&255,X>>>16&255,X>>>8&255,X&255,Y>>>24&255,Y>>>16&255,Y>>>8&255,Y&255],0);for(W=0;W>>24&255,G>>>16&255,G>>>8&255,G&255,q>>>24&255,q>>>16&255,q>>>8&255,q&255,V.isLeading<<2|V.dependsOn,V.isDependedOn<<6|V.hasRedundancy<<4|V.paddingValue<<1|V.isNonSync,V.degradPrio&61440,V.degradPrio&15,U>>>24&255,U>>>16&255,U>>>8&255,U&255],12+16*W);return P.box(P.types.trun,z)}static initSegment(Z){if(!P.types)P.init();let Y=P.moov(Z);return a0(P.FTYP,Y)}static hvc1(Z){let Y=Z.params,J=[Z.vps,Z.sps,Z.pps],X=4,Q=new Uint8Array([1,Y.general_profile_space<<6|(Y.general_tier_flag?32:0)|Y.general_profile_idc,Y.general_profile_compatibility_flags[0],Y.general_profile_compatibility_flags[1],Y.general_profile_compatibility_flags[2],Y.general_profile_compatibility_flags[3],Y.general_constraint_indicator_flags[0],Y.general_constraint_indicator_flags[1],Y.general_constraint_indicator_flags[2],Y.general_constraint_indicator_flags[3],Y.general_constraint_indicator_flags[4],Y.general_constraint_indicator_flags[5],Y.general_level_idc,240|Y.min_spatial_segmentation_idc>>8,255&Y.min_spatial_segmentation_idc,252|Y.parallelismType,252|Y.chroma_format_idc,248|Y.bit_depth_luma_minus8,248|Y.bit_depth_chroma_minus8,0,parseInt(Y.frame_rate.fps),3|Y.temporal_id_nested<<2|Y.num_temporal_layers<<3|(Y.frame_rate.fixed?64:0),J.length]),z=Q.length;for(let j=0;j>8,J[j][K].length&255]),z),z+=2,W.set(J[j][K],z),z+=J[j][K].length}let G=P.box(P.types.hvcC,W),q=Z.width,V=Z.height,U=Z.pixelRatio[0],N=Z.pixelRatio[1];return P.box(P.types.hvc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,q>>8&255,q&255,V>>8&255,V&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),G,P.box(P.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),P.box(P.types.pasp,new Uint8Array([U>>24,U>>16&255,U>>8&255,U&255,N>>24,N>>16&255,N>>8&255,N&255])))}}P.types=void 0;P.HDLR_TYPES=void 0;P.STTS=void 0;P.STSC=void 0;P.STCO=void 0;P.STSZ=void 0;P.VMHD=void 0;P.SMHD=void 0;P.STSD=void 0;P.FTYP=void 0;P.DINF=void 0;var tX=90000;function Q6(Z,Y,J=1,X=!1){let Q=Z*Y*J;return X?Math.round(Q):Q}function W4(Z,Y,J=1,X=!1){return Q6(Z,Y,1/J,X)}function y9(Z,Y=!1){return Q6(Z,1000,1/tX,Y)}function G4(Z,Y=1){return Q6(Z,tX,1/Y)}function RJ(Z){let{baseTime:Y,timescale:J,trackId:X}=Z;return`${Y/J} (${Y}/${J}) trackId: ${X}`}var H4=1e4,q4=1024,V4=1152,U4=1536,U9=null,QZ=null;function FJ(Z,Y,J,X){return{duration:Y,size:J,cts:X,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:Z?2:1,isNonSync:Z?0:1}}}class u9 extends l0{constructor(Z,Y,J,X){super("mp4-remuxer",X);if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextVideoTs=null,this.nextAudioTs=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=Z,this.config=Y,this.typeSupported=J,this.ISGenerated=!1,U9===null){let z=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);U9=z?parseInt(z[1]):0}if(QZ===null){let Q=navigator.userAgent.match(/Safari\/(\d+)/i);QZ=Q?parseInt(Q[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(Z){let Y=this._initPTS;if(!Y||!Z||Z.trackId!==Y.trackId||Z.baseTime!==Y.baseTime||Z.timescale!==Y.timescale)this.log(`Reset initPTS: ${Y?RJ(Y):Y} > ${Z?RJ(Z):Z}`);this._initPTS=this._initDTS=Z}resetNextTimestamp(){this.log("reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){this.log("ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(Z){let Y=!1,J=Z[0].pts,X=Z.reduce((Q,z)=>{let W=z.pts,H=W-Q;if(H<-4294967296)Y=!0,W=c0(W,J),H=W-Q;if(H>0)return Q;return W},J);if(Y)this.debug("PTS rollover detected");return X}remux(Z,Y,J,X,Q,z,W,H){let G,q,V,U,N,j,K=Q,B=Q,R=Z.pid>-1,E=Y.pid>-1,O=Y.samples.length,A=Z.samples.length>0,$=W&&O>0||O>1;if((!R||A)&&(!E||$)||this.ISGenerated||W){if(this.ISGenerated){var M,w,_,C;let y=this.videoTrackConfig;if(y&&(Y.width!==y.width||Y.height!==y.height||((M=Y.pixelRatio)==null?void 0:M[0])!==((w=y.pixelRatio)==null?void 0:w[0])||((_=Y.pixelRatio)==null?void 0:_[1])!==((C=y.pixelRatio)==null?void 0:C[1]))||!y&&$||this.nextAudioTs===null&&A)this.resetInitSegment()}if(!this.ISGenerated)V=this.generateIS(Z,Y,Q,z);let D=this.isVideoContiguous,I=-1,h;if($){if(I=j4(Y.samples),!D&&this.config.forceKeyFrameOnDiscontinuity){if(j=!0,I>0){this.warn(`Dropped ${I} out of ${O} video samples due to a missing keyframe`);let y=this.getVideoStartPts(Y.samples);Y.samples=Y.samples.slice(I),Y.dropped+=I,B+=(Y.samples[0].pts-y)/Y.inputTimeScale,h=B}else if(I===-1)this.warn(`No keyframe found out of ${O} video samples`),j=!1}}if(this.ISGenerated){if(A&&$){let y=this.getVideoStartPts(Y.samples),T=(c0(Z.samples[0].pts,y)-y)/Y.inputTimeScale;K+=Math.max(0,T),B+=Math.max(0,-T)}if(A){if(!Z.samplerate)this.warn("regenerate InitSegment as audio detected"),V=this.generateIS(Z,Y,Q,z);if(q=this.remuxAudio(Z,K,this.isAudioContiguous,z,E||$||H===o.AUDIO?B:void 0),$){let y=q?q.endPTS-q.startPTS:0;if(!Y.inputTimeScale)this.warn("regenerate InitSegment as video detected"),V=this.generateIS(Z,Y,Q,z);G=this.remuxVideo(Y,B,D,y)}}else if($)G=this.remuxVideo(Y,B,D,0);if(G)G.firstKeyFrame=I,G.independent=I!==-1,G.firstKeyFramePTS=h}}if(this.ISGenerated&&this._initPTS&&this._initDTS){if(J.samples.length)N=eX(J,Q,this._initPTS,this._initDTS);if(X.samples.length)U=Z2(X,Q,this._initPTS)}return{audio:q,video:G,initSegment:V,independent:j,text:U,id3:N}}computeInitPts(Z,Y,J,X){let Q=Math.round(J*Y),z=c0(Z,Q);if(z0?g-1:g].dts)E=!0}if(E)z.sort(function(g,f){let s=g.dts-f.dts,Q0=g.pts-f.pts;return s||Q0});j=z[0].dts,K=z[z.length-1].dts;let A=K-j,$=A?Math.round(A/(H-1)):N||Z.inputTimeScale/30;if(J){let g=j-O,f=g>$,s=g<-1;if(f||s){if(f)this.warn(`${(Z.segmentCodec||"").toUpperCase()}: ${y9(g,!0)} ms (${g}dts) hole between fragments detected at ${Y.toFixed(3)}`);else this.warn(`${(Z.segmentCodec||"").toUpperCase()}: ${y9(-g,!0)} ms (${g}dts) overlapping between fragments detected at ${Y.toFixed(3)}`);if(!s||O>=z[0].pts||U9){j=O;let Q0=z[0].pts-g;if(f)z[0].dts=j,z[0].pts=Q0;else{let e=!0;for(let z0=0;z0Q0&&e)break;let M0=z[z0].pts;if(z[z0].dts-=g,z[z0].pts-=g,z00?f.dts-z[g-1].dts:$;if(e=g>0?f.pts-z[g-1].pts:$,M0.stretchShortVideoTrack&&this.nextAudioTs!==null){let n0=Math.floor(M0.maxBufferHole*Q),G8=(X?B+X*Q:this.nextAudioTs+q)-f.pts;if(G8>n0){if(N=G8-_0,N<0)N=_0;else I=!0;this.log(`It is approximately ${G8/90} ms to the next segment; using duration ${N/90} ms for the last video frame.`)}else N=_0}else N=_0}let z0=Math.round(f.pts-f.dts);h=Math.min(h,N),c=Math.max(c,N),y=Math.min(y,e),T=Math.max(T,e),W.push(FJ(f.key,N,Q0,z0))}if(W.length){if(U9){if(U9<70){let g=W[0].flags;g.dependsOn=2,g.isNonSync=0}}else if(QZ){if(T-y0&&(X&&Math.abs(O-(R+E))<9000||Math.abs(c0(K[0].pts,O)-(R+E))<20*q),K.forEach(function(T){T.pts=c0(T.pts,O)}),!J||R<0){let T=K.length;if(K=K.filter((p)=>p.pts>=0),T!==K.length)this.warn(`Removed ${K.length-T} of ${T} samples (initPTS ${E} / ${z})`);if(!K.length)return;if(Q===0)R=0;else if(X&&!j)R=Math.max(0,O-E);else R=K[0].pts-E}if(Z.segmentCodec==="aac"){let T=this.config.maxAudioFramesDrift;for(let p=0,k=R+E;p=T*q&&f0){M+=B;try{L=new Uint8Array(M)}catch(f){this.observer.emit(F.ERROR,F.ERROR,{type:n.MUX_ERROR,details:b.REMUX_ALLOC_ERROR,fatal:!1,error:f,bytes:M,reason:`fail allocating audio mdat ${M}`});return}if(!U)new DataView(L.buffer).setUint32(0,M),L.set(P.types.mdat,4)}else return}L.set(l,B);let g=l.byteLength;B+=g,N.push(FJ(!0,G,g,0)),$=i}let _=N.length;if(!_)return;let C=N[N.length-1];R=$-E,this.nextAudioTs=R+H*C.duration;let D=U?new Uint8Array(0):P.moof(Z.sequenceNumber++,A/H,U0({},Z,{samples:N}));Z.samples=[];let I=(A-E)/z,h=this.nextAudioTs/z,c={data1:D,data2:L,startPTS:I,endPTS:h,startDTS:I,endDTS:h,type:"audio",hasAudio:!0,hasVideo:!1,nb:_};return this.isAudioContiguous=!0,c}}function c0(Z,Y){let J;if(Y===null)return Z;if(Y4294967296)Z+=J;return Z}function j4(Z){for(let Y=0;YW.pts-H.pts);let z=Z.samples;return Z.samples=[],{samples:z}}class Y2 extends l0{constructor(Z,Y,J,X){super("passthrough-remuxer",X);this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null,this.isVideoContiguous=!1}destroy(){}resetTimeStamp(Z){this.lastEndTime=null;let Y=this.initPTS;if(Y&&Z){if(Y.baseTime===Z.baseTime&&Y.timescale===Z.timescale)return}this.initPTS=Z}resetNextTimestamp(){this.isVideoContiguous=!1,this.lastEndTime=null}resetInitSegment(Z,Y,J,X){this.audioCodec=Y,this.videoCodec=J,this.generateInitSegment(Z,X),this.emitInitSegment=!0}generateInitSegment(Z,Y){let{audioCodec:J,videoCodec:X}=this;if(!(Z!=null&&Z.byteLength)){this.initTracks=void 0,this.initData=void 0;return}let{audio:Q,video:z}=this.initData=sJ(Z);if(Y)RH(Z,Y);else{let H=Q||z;if(H!=null&&H.encrypted)this.warn(`Init segment with encrypted track with has no key ("${H.codec}")!`)}if(Q)J=EJ(Q,N0.AUDIO,this);if(z)X=EJ(z,N0.VIDEO,this);let W={};if(Q&&z)W.audiovideo={container:"video/mp4",codec:J+","+X,supplemental:z.supplemental,encrypted:z.encrypted,initSegment:Z,id:"main"};else if(Q)W.audio={container:"audio/mp4",codec:J,encrypted:Q.encrypted,initSegment:Z,id:"audio"};else if(z)W.video={container:"video/mp4",codec:X,supplemental:z.supplemental,encrypted:z.encrypted,initSegment:Z,id:"main"};else this.warn("initSegment does not contain moov or trak boxes.");this.initTracks=W}remux(Z,Y,J,X,Q,z){var W,H;let{initPTS:G,lastEndTime:q}=this,V={audio:void 0,video:void 0,text:X,id3:J,initSegment:void 0};if(!m(q))q=this.lastEndTime=Q||0;let U=Y.samples;if(!U.length)return V;let N={initPTS:void 0,timescale:void 0,trackId:void 0},j=this.initData;if(!((W=j)!=null&&W.length))this.generateInitSegment(U),j=this.initData;if(!((H=j)!=null&&H.length))return this.warn("Failed to generate initSegment."),V;if(this.emitInitSegment)N.tracks=this.initTracks,this.emitInitSegment=!1;let K=EH(U,j,this),B=j.audio?K[j.audio.id]:null,R=j.video?K[j.video.id]:null,E=M7(R,1/0),O=M7(B,1/0),A=M7(R,0,!0),$=M7(B,0,!0),L=Q,M=0,w=B&&(!R||!G&&O0)this.lastEndTime=D;else this.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp();let I=!!j.audio,h=!!j.video,y="";if(I)y+="audio";if(h)y+="video";let c=(j.audio?j.audio.encrypted:!1)||(j.video?j.video.encrypted:!1),T={data1:U,startPTS:C,startDTS:C,endPTS:D,endDTS:D,type:y,hasAudio:I,hasVideo:h,nb:1,dropped:0,encrypted:c};V.audio=I&&!h?T:void 0,V.video=h?T:void 0;let p=R==null?void 0:R.sampleCount;if(p){let k=R.keyFrameIndex,l=k!==-1;if(T.nb=p,T.dropped=k===0||this.isVideoContiguous?0:l?k:p,T.independent=l,T.firstKeyFrame=k,l&&R.keyFrameStart)T.firstKeyFramePTS=(R.keyFrameStart-G.baseTime)/G.timescale;if(!this.isVideoContiguous)V.independent=l;if(this.isVideoContiguous||(this.isVideoContiguous=l),T.dropped)this.warn(`fmp4 does not start with IDR: firstIDR ${k}/${p} dropped: ${T.dropped} start: ${T.firstKeyFramePTS||"NA"}`)}if(V.initSegment=N,V.id3=eX(J,Q,G,G),X.samples.length)V.text=Z2(X,Q,G);return V}}function M7(Z,Y,J=!1){return(Z==null?void 0:Z.start)!==void 0?(Z.start+(J?Z.duration:0))/Z.timescale:Y}function N4(Z,Y,J,X){if(Z===null)return!0;let Q=Math.max(X,1),z=Y-Z.baseTime/Z.timescale;return Math.abs(z-J)>Q}function EJ(Z,Y,J){let X=Z.codec;if(X&&X.length>4)return X;if(Y===N0.AUDIO){if(X==="ec-3"||X==="ac-3"||X==="alac")return X;if(X==="fLaC"||X==="Opus")return f7(X,!1);return J.warn(`Unhandled audio codec "${X}" in mp4 MAP`),X||"mp4a"}return J.warn(`Unhandled video codec "${X}" in mp4 MAP`),X||"avc1"}var L8;try{L8=self.performance.now.bind(self.performance)}catch(Z){L8=Date.now}var T7=[{demux:nX,remux:Y2},{demux:v8,remux:u9},{demux:uX,remux:u9},{demux:lX,remux:u9}];T7.splice(2,0,{demux:dX,remux:u9});class bZ{constructor(Z,Y,J,X,Q,z){this.asyncResult=!1,this.logger=void 0,this.observer=void 0,this.typeSupported=void 0,this.config=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=Z,this.typeSupported=Y,this.config=J,this.id=Q,this.logger=z}configure(Z){if(this.transmuxConfig=Z,this.decrypter)this.decrypter.reset()}push(Z,Y,J,X){let Q=J.transmuxing;Q.executeStart=L8();let z=new Uint8Array(Z),{currentTransmuxState:W,transmuxConfig:H}=this;if(X)this.currentTransmuxState=X;let{contiguous:G,discontinuity:q,trackSwitch:V,accurateTimeOffset:U,timeOffset:N,initSegmentChange:j}=X||W,{audioCodec:K,videoCodec:B,defaultInitPts:R,duration:E,initSegmentData:O}=H,A=K4(z,Y);if(A&&R9(A.method)){let w=this.getDecrypter(),_=iZ(A.method);if(w.isSync()){let C=w.softwareDecrypt(z,A.key.buffer,A.iv.buffer,_);if(J.part>-1){let I=w.flush();C=I?I.buffer:I}if(!C)return Q.executeEnd=L8(),zZ(J);z=new Uint8Array(C)}else return this.asyncResult=!0,this.decryptionPromise=w.webCryptoDecrypt(z,A.key.buffer,A.iv.buffer,_).then((C)=>{let D=this.push(C,null,J);return this.decryptionPromise=null,D}),this.decryptionPromise}let $=this.needsProbing(q,V);if($){let w=this.configureTransmuxer(z);if(w)return this.logger.warn(`[transmuxer] ${w.message}`),this.observer.emit(F.ERROR,F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_PARSING_ERROR,fatal:!1,error:w,reason:w.message}),Q.executeEnd=L8(),zZ(J)}if(q||V||j||$)this.resetInitSegment(O,K,B,E,Y);if(q||j||$)this.resetInitialTimestamp(R);if(!G)this.resetContiguity();let L=this.transmux(z,A,N,U,J);this.asyncResult=s9(L);let M=this.currentTransmuxState;return M.contiguous=!0,M.discontinuity=!1,M.trackSwitch=!1,Q.executeEnd=L8(),L}flush(Z){let Y=Z.transmuxing;Y.executeStart=L8();let{decrypter:J,currentTransmuxState:X,decryptionPromise:Q}=this;if(Q)return this.asyncResult=!0,Q.then(()=>{return this.flush(Z)});let z=[],{timeOffset:W}=X;if(J){let V=J.flush();if(V)z.push(this.push(V.buffer,null,Z))}let{demuxer:H,remuxer:G}=this;if(!H||!G){Y.executeEnd=L8();let V=[zZ(Z)];if(this.asyncResult)return Promise.resolve(V);return V}let q=H.flush(W);if(s9(q))return this.asyncResult=!0,q.then((V)=>{return this.flushRemux(z,V,Z),z});if(this.flushRemux(z,q,Z),this.asyncResult)return Promise.resolve(z);return z}flushRemux(Z,Y,J){let{audioTrack:X,videoTrack:Q,id3Track:z,textTrack:W}=Y,{accurateTimeOffset:H,timeOffset:G}=this.currentTransmuxState;this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${J.sn}${J.part>-1?" part: "+J.part:""} of ${this.id===o.MAIN?"level":"track"} ${J.level}`);let q=this.remuxer.remux(X,Q,z,W,G,H,!0,this.id);Z.push({remuxResult:q,chunkMeta:J}),J.transmuxing.executeEnd=L8()}resetInitialTimestamp(Z){let{demuxer:Y,remuxer:J}=this;if(!Y||!J)return;Y.resetTimeStamp(Z),J.resetTimeStamp(Z)}resetContiguity(){let{demuxer:Z,remuxer:Y}=this;if(!Z||!Y)return;Z.resetContiguity(),Y.resetNextTimestamp()}resetInitSegment(Z,Y,J,X,Q){let{demuxer:z,remuxer:W}=this;if(!z||!W)return;z.resetInitSegment(Z,Y,J,X),W.resetInitSegment(Z,Y,J,Q)}destroy(){if(this.demuxer)this.demuxer.destroy(),this.demuxer=void 0;if(this.remuxer)this.remuxer.destroy(),this.remuxer=void 0}transmux(Z,Y,J,X,Q){let z;if(Y&&Y.method==="SAMPLE-AES")z=this.transmuxSampleAes(Z,Y,J,X,Q);else z=this.transmuxUnencrypted(Z,J,X,Q);return z}transmuxUnencrypted(Z,Y,J,X){let{audioTrack:Q,videoTrack:z,id3Track:W,textTrack:H}=this.demuxer.demux(Z,Y,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(Q,z,W,H,Y,J,!1,this.id),chunkMeta:X}}transmuxSampleAes(Z,Y,J,X,Q){return this.demuxer.demuxSampleAes(Z,Y,J).then((z)=>{return{remuxResult:this.remuxer.remux(z.audioTrack,z.videoTrack,z.id3Track,z.textTrack,J,X,!1,this.id),chunkMeta:Q}})}configureTransmuxer(Z){let{config:Y,observer:J,typeSupported:X}=this,Q;for(let V=0,U=T7.length;V0&&(Y==null?void 0:Y.key)!=null&&Y.iv!==null&&Y.method!=null)J=Y;return J}var zZ=(Z)=>({remuxResult:{},chunkMeta:Z});function s9(Z){return"then"in Z&&Z.then instanceof Function}class J2{constructor(Z,Y,J,X,Q){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=Z,this.videoCodec=Y,this.initSegmentData=J,this.duration=X,this.defaultInitPts=Q||null}}class X2{constructor(Z,Y,J,X,Q,z){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=Z,this.contiguous=Y,this.accurateTimeOffset=J,this.trackSwitch=X,this.timeOffset=Q,this.initSegmentChange=z}}var AJ=0;class z6{constructor(Z,Y,J,X){this.error=null,this.hls=void 0,this.id=void 0,this.instanceNo=AJ++,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.workerContext=null,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.onWorkerMessage=(H)=>{let G=H.data,q=this.hls;if(!q||!(G!=null&&G.event)||G.instanceNo!==this.instanceNo)return;switch(G.event){case"init":{var V;let U=(V=this.workerContext)==null?void 0:V.objectURL;if(U)self.URL.revokeObjectURL(U);break}case"transmuxComplete":{this.handleTransmuxComplete(G.data);break}case"flush":{this.onFlush(G.data);break}case"workerLog":{if(q.logger[G.data.logType])q.logger[G.data.logType](G.data.message);break}default:{G.data=G.data||{},G.data.frag=this.frag,G.data.part=this.part,G.data.id=this.id,q.trigger(G.event,G.data);break}}},this.onWorkerError=(H)=>{if(!this.hls)return;let G=Error(`${H.message} (${H.filename}:${H.lineno})`);this.hls.config.enableWorker=!1,this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`),this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:G})};let Q=Z.config;this.hls=Z,this.id=Y,this.useWorker=!!Q.enableWorker,this.onTransmuxComplete=J,this.onFlush=X;let z=(H,G)=>{if(G=G||{},G.frag=this.frag||void 0,H===F.ERROR)G=G,G.parent=this.id,G.part=this.part,this.error=G.error;this.hls.trigger(H,G)};this.observer=new tZ,this.observer.on(F.FRAG_DECRYPTED,z),this.observer.on(F.ERROR,z);let W=gY(Q.preferManagedMediaSource);if(this.useWorker&&typeof Worker<"u"){let H=this.hls.logger;if(Q.workerPath||b3()){try{if(Q.workerPath)H.log(`loading Web Worker ${Q.workerPath} for "${Y}"`),this.workerContext=x3(Q.workerPath);else H.log(`injecting Web Worker for "${Y}"`),this.workerContext=I3();let{worker:q}=this.workerContext;q.addEventListener("message",this.onWorkerMessage),q.addEventListener("error",this.onWorkerError),q.postMessage({instanceNo:this.instanceNo,cmd:"init",typeSupported:W,id:Y,config:K0(Q)})}catch(q){H.warn(`Error setting up "${Y}" Web Worker, fallback to inline`,q),this.terminateWorker(),this.error=null,this.transmuxer=new bZ(this.observer,W,Q,"",Y,Z.logger)}return}}this.transmuxer=new bZ(this.observer,W,Q,"",Y,Z.logger)}reset(){if(this.frag=null,this.part=null,this.workerContext){let Z=this.instanceNo;this.instanceNo=AJ++;let Y=this.hls.config,J=gY(Y.preferManagedMediaSource);this.workerContext.worker.postMessage({instanceNo:this.instanceNo,cmd:"reset",resetNo:Z,typeSupported:J,id:this.id,config:K0(Y)})}}terminateWorker(){if(this.workerContext){let{worker:Z}=this.workerContext;this.workerContext=null,Z.removeEventListener("message",this.onWorkerMessage),Z.removeEventListener("error",this.onWorkerError),S3(this.hls.config.workerPath)}}destroy(){if(this.workerContext)this.terminateWorker(),this.onWorkerMessage=this.onWorkerError=null;else{let Y=this.transmuxer;if(Y)Y.destroy(),this.transmuxer=null}let Z=this.observer;if(Z)Z.removeAllListeners();this.frag=null,this.part=null,this.observer=null,this.hls=null}push(Z,Y,J,X,Q,z,W,H,G,q){var V,U;G.transmuxing.start=self.performance.now();let{instanceNo:N,transmuxer:j}=this,K=z?z.start:Q.start,B=Q.decryptdata,R=this.frag,E=!(R&&Q.cc===R.cc),O=!(R&&G.level===R.level),A=R?G.sn-R.sn:-1,$=this.part?G.part-this.part.index:-1,L=A===0&&G.id>1&&G.id===(R==null?void 0:R.stats.chunkCount),M=!O&&(A===1||A===0&&($===1||L&&$<=0)),w=self.performance.now();if(O||A||Q.stats.parsing.start===0)Q.stats.parsing.start=w;if(z&&($||!M))z.stats.parsing.start=w;let _=!(R&&((V=Q.initSegment)==null?void 0:V.url)===((U=R.initSegment)==null?void 0:U.url)),C=new X2(E,M,H,O,K,_);if(!M||E||_){this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${Q.type} sn: ${G.sn}${G.part>-1?" part: "+G.part:""} ${this.id===o.MAIN?"level":"track"}: ${G.level} id: ${G.id} discontinuity: ${E} trackSwitch: ${O} contiguous: ${M} accurateTimeOffset: ${H} timeOffset: ${K} initSegmentChange: ${_}`);let D=new J2(J,X,Y,W,q);this.configureTransmuxer(D)}if(this.frag=Q,this.part=z,this.workerContext)this.workerContext.worker.postMessage({instanceNo:N,cmd:"demux",data:Z,decryptdata:B,chunkMeta:G,state:C},Z instanceof ArrayBuffer?[Z]:[]);else if(j){let D=j.push(Z,B,G,C);if(s9(D))D.then((I)=>{this.handleTransmuxComplete(I)}).catch((I)=>{this.transmuxerError(I,G,"transmuxer-interface push error")});else this.handleTransmuxComplete(D)}}flush(Z){Z.transmuxing.start=self.performance.now();let{instanceNo:Y,transmuxer:J}=this;if(this.workerContext)this.workerContext.worker.postMessage({instanceNo:Y,cmd:"flush",chunkMeta:Z});else if(J){let X=J.flush(Z);if(s9(X))X.then((Q)=>{this.handleFlushResult(Q,Z)}).catch((Q)=>{this.transmuxerError(Q,Z,"transmuxer-interface flush error")});else this.handleFlushResult(X,Z)}}transmuxerError(Z,Y,J){if(!this.hls)return;this.error=Z,this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_PARSING_ERROR,chunkMeta:Y,frag:this.frag||void 0,part:this.part||void 0,fatal:!1,error:Z,err:Z,reason:J})}handleFlushResult(Z,Y){Z.forEach((J)=>{this.handleTransmuxComplete(J)}),this.onFlush(Y)}configureTransmuxer(Z){let{instanceNo:Y,transmuxer:J}=this;if(this.workerContext)this.workerContext.worker.postMessage({instanceNo:Y,cmd:"configure",config:Z});else if(J)J.configure(Z)}handleTransmuxComplete(Z){Z.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(Z)}}var OJ=100;class Q2 extends e7{constructor(Z,Y,J){super(Z,Y,J,"audio-stream-controller",o.AUDIO);this.mainAnchor=null,this.mainFragLoading=null,this.audioOnly=!1,this.bufferedTrack=null,this.switchingTrack=null,this.trackId=-1,this.waitingData=null,this.mainDetails=null,this.flushing=!1,this.bufferFlushed=!1,this.cachedTrackLoadedData=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.resetItem()}resetItem(){this.mainDetails=this.mainAnchor=this.mainFragLoading=this.bufferedTrack=this.switchingTrack=this.waitingData=this.cachedTrackLoadedData=null}registerListeners(){super.registerListeners();let{hls:Z}=this;Z.on(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.on(F.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),Z.on(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.on(F.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),Z.on(F.BUFFER_RESET,this.onBufferReset,this),Z.on(F.BUFFER_CREATED,this.onBufferCreated,this),Z.on(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.on(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.on(F.INIT_PTS_FOUND,this.onInitPtsFound,this),Z.on(F.FRAG_LOADING,this.onFragLoading,this),Z.on(F.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){let{hls:Z}=this;if(!Z)return;super.unregisterListeners(),Z.off(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.off(F.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),Z.off(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.off(F.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),Z.off(F.BUFFER_RESET,this.onBufferReset,this),Z.off(F.BUFFER_CREATED,this.onBufferCreated,this),Z.off(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.off(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.off(F.INIT_PTS_FOUND,this.onInitPtsFound,this),Z.off(F.FRAG_LOADING,this.onFragLoading,this),Z.off(F.FRAG_BUFFERED,this.onFragBuffered,this)}onInitPtsFound(Z,{frag:Y,id:J,initPTS:X,timescale:Q,trackId:z}){if(J===o.MAIN){let W=Y.cc,H=this.fragCurrent;if(this.initPTS[W]={baseTime:X,timescale:Q,trackId:z},this.log(`InitPTS for cc: ${W} found from main: ${X/Q} (${X}/${Q}) trackId: ${z}`),this.mainAnchor=Y,this.state===S.WAITING_INIT_PTS){let G=this.waitingData;if(!G&&!this.loadingParts||G&&G.frag.cc!==W)this.syncWithAnchor(Y,G==null?void 0:G.frag)}else if(!this.hls.hasEnoughToStart&&H&&H.cc!==W)H.abortRequests(),this.syncWithAnchor(Y,H);else if(this.state===S.IDLE)this.tick()}}getLoadPosition(){if(!this.startFragRequested&&this.nextLoadPosition>=0)return this.nextLoadPosition;return super.getLoadPosition()}syncWithAnchor(Z,Y){var J;let X=((J=this.mainFragLoading)==null?void 0:J.frag)||null;if(Y){if((X==null?void 0:X.cc)===Y.cc)return}let Q=(X||Z).cc,z=this.getLevelDetails(),W=this.getLoadPosition(),H=WX(z,Q,W);if(H){if(this.log(`Syncing with main frag at ${H.start} cc ${H.cc}`),this.startFragRequested=!1,this.nextLoadPosition=H.start,this.resetLoadingState(),this.state===S.IDLE)this.doTickIdle()}}startLoad(Z,Y){if(!this.levels){this.startPosition=Z,this.state=S.STOPPED;return}let J=this.lastCurrentTime;if(this.stopLoad(),this.setInterval(OJ),J>0&&Z===-1)this.log(`Override startPosition with lastCurrentTime @${J.toFixed(3)}`),Z=J,this.state=S.IDLE;else this.state=S.WAITING_TRACK;this.nextLoadPosition=this.lastCurrentTime=Z+this.timelineOffset,this.startPosition=Y?-1:Z,this.tick()}doTick(){switch(this.state){case S.IDLE:this.doTickIdle();break;case S.WAITING_TRACK:{let{levels:Z,trackId:Y}=this,J=Z==null?void 0:Z[Y],X=J==null?void 0:J.details;if(X&&!this.waitForLive(J)){if(this.waitForCdnTuneIn(X))break;this.state=S.WAITING_INIT_PTS}break}case S.FRAG_LOADING_WAITING_RETRY:{this.checkRetryDate();break}case S.WAITING_INIT_PTS:{let Z=this.waitingData;if(Z){let{frag:Y,part:J,cache:X,complete:Q}=Z,z=this.mainAnchor;if(this.initPTS[Y.cc]!==void 0){this.waitingData=null,this.state=S.FRAG_LOADING;let W=X.flush().buffer,H={frag:Y,part:J,payload:W,networkDetails:null};if(this._handleFragmentLoadProgress(H),Q)super._handleFragmentLoadComplete(H)}else if(z&&z.cc!==Z.frag.cc)this.syncWithAnchor(z,Z.frag)}else this.state=S.IDLE}}this.onTickEnd()}resetLoadingState(){let Z=this.waitingData;if(Z)this.fragmentTracker.removeFragment(Z.frag),this.waitingData=null;super.resetLoadingState()}onTickEnd(){let{media:Z}=this;if(!(Z!=null&&Z.readyState))return;this.lastCurrentTime=Z.currentTime}doTickIdle(){var Z;let{hls:Y,levels:J,media:X,trackId:Q}=this,z=Y.config;if(!this.buffering||!X&&!this.primaryPrefetch&&(this.startFragRequested||!z.startFragPrefetch)||!(J!=null&&J[Q]))return;let W=J[Q],H=W.details;if(!H||this.waitForLive(W)||this.waitForCdnTuneIn(H)){this.state=S.WAITING_TRACK,this.startFragRequested=!1;return}let G=this.mediaBuffer?this.mediaBuffer:this.media;if(this.bufferFlushed&&G)this.bufferFlushed=!1,this.afterBufferFlushed(G,N0.AUDIO,o.AUDIO);let q=this.getFwdBufferInfo(G,o.AUDIO);if(q===null)return;if(!this.switchingTrack&&this._streamEnded(q,H)){Y.trigger(F.BUFFER_EOS,{type:"audio"}),this.state=S.ENDED;return}let V=q.len,U=Y.maxBufferLength,N=H.fragments,j=N[0].start,K=this.getLoadPosition(),B=this.flushing?K:q.end;if(this.switchingTrack&&X){let O=K;if(H.PTSKnown&&Oj||q.nextStart)this.log("Alt audio track ahead of main track, seek to start of alt audio track"),X.currentTime=j+0.05}}if(V>=U&&!this.switchingTrack&&BE.end){let A=this.fragmentTracker.getFragAtPos(B,o.MAIN);if(A&&A.end>E.end)E=A,this.mainFragLoading={frag:A,targetBufferTime:null}}if(R.start>E.end)return}}this.loadFragment(R,W,B)}onMediaDetaching(Z,Y){this.bufferFlushed=this.flushing=!1,super.onMediaDetaching(Z,Y)}onAudioTracksUpdated(Z,{audioTracks:Y}){this.resetTransmuxer(),this.levels=Y.map((J)=>new $9(J))}onAudioTrackSwitching(Z,Y){let J=!!Y.url;this.trackId=Y.id;let{fragCurrent:X}=this;if(X)X.abortRequests(),this.removeUnbufferedFrags(X.start);if(this.resetLoadingState(),J){if(this.switchingTrack=Y,this.flushAudioIfNeeded(Y),this.state!==S.STOPPED)this.setInterval(OJ),this.state=S.IDLE,this.tick()}else this.resetTransmuxer(),this.switchingTrack=null,this.bufferedTrack=Y,this.clearInterval()}onManifestLoading(){super.onManifestLoading(),this.bufferFlushed=this.flushing=this.audioOnly=!1,this.resetItem(),this.trackId=-1}onLevelLoaded(Z,Y){this.mainDetails=Y.details;let J=this.cachedTrackLoadedData;if(J)this.cachedTrackLoadedData=null,this.onAudioTrackLoaded(F.AUDIO_TRACK_LOADED,J)}onAudioTrackLoaded(Z,Y){var J;let{levels:X}=this,{details:Q,id:z,groupId:W,track:H}=Y;if(!X){this.warn(`Audio tracks reset while loading track ${z} "${H.name}" of "${W}"`);return}let G=this.mainDetails;if(!G||Q.endCC>G.endCC||G.expired){if(this.cachedTrackLoadedData=Y,this.state!==S.STOPPED)this.state=S.WAITING_TRACK;return}this.cachedTrackLoadedData=null,this.log(`Audio track ${z} "${H.name}" of "${W}" loaded [${Q.startSN},${Q.endSN}]${Q.lastPartSn?`[part-${Q.lastPartSn}-${Q.lastPartIndex}]`:""},duration:${Q.totalduration}`);let q=X[z],V=0;if(Q.live||(J=q.details)!=null&&J.live){if(this.checkLiveUpdate(Q),Q.deltaUpdateFailed)return;if(q.details){var U;V=this.alignPlaylists(Q,q.details,(U=this.levelLastLoaded)==null?void 0:U.details)}if(!Q.alignedSliding){if(bX(Q,G),!Q.alignedSliding)l7(Q,G);V=Q.fragmentStart}}if(q.details=Q,this.levelLastLoaded=q,!this.startFragRequested)this.setStartPosition(G,V);if(this.hls.trigger(F.AUDIO_TRACK_UPDATED,{details:Q,id:z,groupId:Y.groupId}),this.state===S.WAITING_TRACK&&!this.waitForCdnTuneIn(Q))this.state=S.IDLE;this.tick()}_handleFragmentLoadProgress(Z){var Y;let J=Z.frag,{part:X,payload:Q}=Z,{config:z,trackId:W,levels:H}=this;if(!H){this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${J.sn} of level ${J.level} will not be buffered`);return}let G=H[W];if(!G){this.warn("Audio track is undefined on fragment load progress");return}let q=G.details;if(!q){this.warn("Audio track details undefined on fragment load progress"),this.removeUnbufferedFrags(J.start);return}let V=z.defaultAudioCodec||G.audioCodec||"mp4a.40.2",U=this.transmuxer;if(!U)U=this.transmuxer=new z6(this.hls,o.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this));let N=this.initPTS[J.cc],j=(Y=J.initSegment)==null?void 0:Y.data;if(N!==void 0){let B=X?X.index:-1,R=B!==-1,E=new t7(J.level,J.sn,J.stats.chunkCount,Q.byteLength,B,R);U.push(Q,j,V,"",J,X,q.totalduration,!1,E,N)}else{this.log(`Unknown video PTS for cc ${J.cc}, waiting for video PTS before demuxing audio frag ${J.sn} of [${q.startSN} ,${q.endSN}],track ${W}`);let{cache:K}=this.waitingData=this.waitingData||{frag:J,part:X,cache:new aZ,complete:!1};if(K.push(new Uint8Array(Q)),this.state!==S.STOPPED)this.state=S.WAITING_INIT_PTS}}_handleFragmentLoadComplete(Z){if(this.waitingData){this.waitingData.complete=!0;return}super._handleFragmentLoadComplete(Z)}onBufferReset(){this.mediaBuffer=null}onBufferCreated(Z,Y){this.bufferFlushed=this.flushing=!1;let J=Y.tracks.audio;if(J)this.mediaBuffer=J.buffer||null}onFragLoading(Z,Y){if(!this.audioOnly&&Y.frag.type===o.MAIN&&$0(Y.frag)){if(this.mainFragLoading=Y,this.state===S.IDLE)this.tick()}}onFragBuffered(Z,Y){let{frag:J,part:X}=Y;if(J.type!==o.AUDIO){if(!this.audioOnly&&J.type===o.MAIN&&!J.elementaryStreams.video&&!J.elementaryStreams.audiovideo)this.audioOnly=!0,this.mainFragLoading=null;return}if(this.fragContextChanged(J)){this.warn(`Fragment ${J.sn}${X?" p: "+X.index:""} of level ${J.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);return}if($0(J)){this.fragPrevious=J;let Q=this.switchingTrack;if(Q)this.bufferedTrack=Q,this.switchingTrack=null,this.hls.trigger(F.AUDIO_TRACK_SWITCHED,H0({},Q))}if(this.fragBufferedComplete(J,X),this.media)this.tick()}onError(Z,Y){var J;if(Y.fatal){this.state=S.ERROR;return}switch(Y.details){case b.FRAG_GAP:case b.FRAG_PARSING_ERROR:case b.FRAG_DECRYPT_ERROR:case b.FRAG_LOAD_ERROR:case b.FRAG_LOAD_TIMEOUT:case b.KEY_LOAD_ERROR:case b.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(o.AUDIO,Y);break;case b.AUDIO_TRACK_LOAD_ERROR:case b.AUDIO_TRACK_LOAD_TIMEOUT:case b.LEVEL_PARSING_ERROR:if(!Y.levelRetry&&this.state===S.WAITING_TRACK&&((J=Y.context)==null?void 0:J.type)===J0.AUDIO_TRACK)this.state=S.IDLE;break;case b.BUFFER_ADD_CODEC_ERROR:case b.BUFFER_APPEND_ERROR:if(Y.parent!=="audio")return;if(!this.reduceLengthAndFlushBuffer(Y))this.resetLoadingState();break;case b.BUFFER_FULL_ERROR:if(Y.parent!=="audio")return;if(this.reduceLengthAndFlushBuffer(Y))this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio");break;case b.INTERNAL_EXCEPTION:this.recoverWorkerError(Y);break}}onBufferFlushing(Z,{type:Y}){if(Y!==N0.VIDEO)this.flushing=!0}onBufferFlushed(Z,{type:Y}){if(Y!==N0.VIDEO){if(this.flushing=!1,this.bufferFlushed=!0,this.state===S.ENDED)this.state=S.IDLE;let J=this.mediaBuffer||this.media;if(J)this.afterBufferFlushed(J,Y,o.AUDIO),this.tick()}}_handleTransmuxComplete(Z){var Y;let J="audio",{hls:X}=this,{remuxResult:Q,chunkMeta:z}=Z,W=this.getCurrentContext(z);if(!W){this.resetWhenMissingContext(z);return}let{frag:H,part:G,level:q}=W,{details:V}=q,{audio:U,text:N,id3:j,initSegment:K}=Q;if(this.fragContextChanged(H)||!V){this.fragmentTracker.removeFragment(H);return}if(this.state=S.PARSING,this.switchingTrack&&U)this.completeAudioSwitch(this.switchingTrack);if(K!=null&&K.tracks){let B=H.initSegment||H;if(this.unhandledEncryptionError(K,H))return;this._bufferInitSegment(q,K.tracks,B,z),X.trigger(F.FRAG_PARSING_INIT_SEGMENT,{frag:B,id:"audio",tracks:K.tracks})}if(U){let{startPTS:B,endPTS:R,startDTS:E,endDTS:O}=U;if(G)G.elementaryStreams[N0.AUDIO]={startPTS:B,endPTS:R,startDTS:E,endDTS:O};H.setElementaryStreamInfo(N0.AUDIO,B,R,E,O),this.bufferFragmentData(U,H,G,z)}if(j!=null&&(Y=j.samples)!=null&&Y.length){let B=U0({id:"audio",frag:H,details:V},j);X.trigger(F.FRAG_PARSING_METADATA,B)}if(N){let B=U0({id:"audio",frag:H,details:V},N);X.trigger(F.FRAG_PARSING_USERDATA,B)}}_bufferInitSegment(Z,Y,J,X){if(this.state!==S.PARSING)return;if(Y.video)delete Y.video;if(Y.audiovideo)delete Y.audiovideo;if(!Y.audio)return;let Q=Y.audio;Q.id=o.AUDIO;let z=Z.audioCodec;if(this.log(`Init audio buffer, container:${Q.container}, codecs[level/parsed]=[${z}/${Q.codec}]`),z&&z.split(",").length===1)Q.levelCodec=z;this.hls.trigger(F.BUFFER_CODECS,Y);let W=Q.initSegment;if(W!=null&&W.byteLength){let H={type:"audio",frag:J,part:null,chunkMeta:X,parent:J.type,data:W};this.hls.trigger(F.BUFFER_APPENDING,H)}this.tickImmediate()}loadFragment(Z,Y,J){let X=this.fragmentTracker.getState(Z);if(this.switchingTrack||X===P0.NOT_LOADED||X===P0.PARTIAL){var Q;if(!$0(Z))this._loadInitSegment(Z,Y);else if((Q=Y.details)!=null&&Q.live&&!this.initPTS[Z.cc]){this.log(`Waiting for video PTS in continuity counter ${Z.cc} of live stream before loading audio fragment ${Z.sn} of level ${this.trackId}`),this.state=S.WAITING_INIT_PTS;let z=this.mainDetails;if(z&&z.fragmentStart!==Y.details.fragmentStart)l7(Y.details,z)}else super.loadFragment(Z,Y,J)}else this.clearTrackerIfNeeded(Z)}flushAudioIfNeeded(Z){if(this.media&&this.bufferedTrack){let{name:Y,lang:J,assocLang:X,characteristics:Q,audioCodec:z,channels:W}=this.bufferedTrack;if(!Y9({name:Y,lang:J,assocLang:X,characteristics:Q,audioCodec:z,channels:W},Z,Z9))if(m7(Z.url,this.hls))this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null;else this.bufferedTrack=Z}}completeAudioSwitch(Z){let{hls:Y}=this;this.flushAudioIfNeeded(Z),this.bufferedTrack=Z,this.switchingTrack=null,Y.trigger(F.AUDIO_TRACK_SWITCHED,H0({},Z))}}class J1 extends l0{constructor(Z,Y){super(Y,Z.logger);this.hls=void 0,this.canLoad=!1,this.timer=-1,this.hls=Z}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){if(this.timer!==-1)self.clearTimeout(this.timer),this.timer=-1}startLoad(){this.canLoad=!0,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(Z,Y,J){let X=Y==null?void 0:Y.renditionReports;if(X){let Q=-1;for(let z=0;z=0&&q>Y.partTarget)H+=1}let G=J&&kY(J);return new $Z(W,H>=0?H:void 0,G)}}}loadPlaylist(Z){this.clearTimer()}loadingPlaylist(Z,Y){this.clearTimer()}shouldLoadPlaylist(Z){return this.canLoad&&!!Z&&!!Z.url&&(!Z.details||Z.details.live)}getUrlWithDirectives(Z,Y){if(Y)try{return Y.addDirectives(Z)}catch(J){this.warn(`Could not construct new URL with HLS Delivery Directives: ${J}`)}return Z}playlistLoaded(Z,Y,J){let{details:X,stats:Q}=Y,z=self.performance.now(),W=Q.loading.first?Math.max(0,z-Q.loading.first):0;X.advancedDateTime=Date.now()-W;let H=this.hls.config.timelineOffset;if(H!==X.appliedTimelineOffset){let q=Math.max(H||0,0);X.appliedTimelineOffset=q,X.fragments.forEach((V)=>{V.setStart(V.playlistOffset+q)})}if(X.live||J!=null&&J.live){let q="levelInfo"in Y?Y.levelInfo:Y.track;if(X.reloaded(J),J&&X.fragments.length>0){E3(J,X,this);let E=X.playlistParsingError;if(E){this.warn(E);let O=this.hls;if(!O.config.ignorePlaylistParsingErrors){var G;let{networkDetails:A}=Y;O.trigger(F.ERROR,{type:n.NETWORK_ERROR,details:b.LEVEL_PARSING_ERROR,fatal:!1,url:X.url,error:E,reason:E.message,level:Y.level||void 0,parent:(G=X.fragments[0])==null?void 0:G.type,networkDetails:A,stats:Q});return}X.playlistParsingError=null}}if(X.requestScheduled===-1)X.requestScheduled=Q.loading.start;let V=this.hls.mainForwardBufferInfo,U=V?V.end-V.len:0,N=(X.edge-U)*1000,j=LX(X,N);if(X.requestScheduled+j0){if(_>X.targetduration*3)this.log(`Playlist last advanced ${w.toFixed(2)}s ago. Omitting segment and part directives.`),B=void 0,R=void 0;else if(J!=null&&J.tuneInGoal&&_-X.partTarget>J.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${J.tuneInGoal} to: ${C} with playlist age: ${X.age}`),C=0;else{let D=Math.floor(C/X.targetduration);if(B+=D,R!==void 0){let I=Math.round(C%X.targetduration/X.partTarget);R+=I}this.log(`CDN Tune-in age: ${X.ageHeader}s last advanced ${w.toFixed(2)}s goal: ${C} skip sn ${D} to part ${R}`)}X.tuneInGoal=C}if(K=this.getDeliveryDirectives(X,Y.deliveryDirectives,B,R),E||!M){X.requestScheduled=z,this.loadingPlaylist(q,K);return}}else if(X.canBlockReload||X.canSkipUntil)K=this.getDeliveryDirectives(X,Y.deliveryDirectives,B,R);if(K&&B!==void 0&&X.canBlockReload)X.requestScheduled=Q.loading.first+Math.max(j-W*2,j/2);this.scheduleLoading(q,K,X)}else this.clearTimer()}scheduleLoading(Z,Y,J){let X=J||Z.details;if(!X){this.loadingPlaylist(Z,Y);return}let Q=self.performance.now(),z=X.requestScheduled;if(Q>=z){this.loadingPlaylist(Z,Y);return}let W=z-Q;this.log(`reload live playlist ${Z.name||Z.bitrate+"bps"} in ${Math.round(W)} ms`),this.clearTimer(),this.timer=self.setTimeout(()=>this.loadingPlaylist(Z,Y),W)}getDeliveryDirectives(Z,Y,J,X){let Q=kY(Z);if(Y!=null&&Y.skip&&Z.deltaUpdateFailed)J=Y.msn,X=Y.part,Q=x7.No;return new $Z(J,X,Q)}checkRetry(Z){let Y=Z.details,J=u7(Z),X=Z.errorAction,{action:Q,retryCount:z=0,retryConfig:W}=X||{},H=!!X&&!!W&&(Q===S0.RetryRequest||!X.resolved&&Q===S0.SendAlternateToPenaltyBox);if(H){var G;if(z>=W.maxNumRetry)return!1;if(J&&(G=Z.context)!=null&&G.deliveryDirectives)this.warn(`Retrying playlist loading ${z+1}/${W.maxNumRetry} after "${Y}" without delivery-directives`),this.loadPlaylist();else{let q=lZ(W,z);this.clearTimer(),this.timer=self.setTimeout(()=>this.loadPlaylist(),q),this.warn(`Retrying playlist loading ${z+1}/${W.maxNumRetry} after "${Y}" in ${q}ms`)}Z.levelRetry=!0,X.resolved=!0}return H}}function z2(Z,Y){if(Z.length!==Y.length)return!1;for(let J=0;JZ[Q]!==Y[Q])}function IZ(Z,Y){return Y.label.toLowerCase()===Z.name.toLowerCase()&&(!Y.language||Y.language.toLowerCase()===(Z.lang||"").toLowerCase())}class W2 extends J1{constructor(Z){super(Z,"audio-track-controller");this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){let{hls:Z}=this;Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.LEVEL_LOADING,this.onLevelLoading,this),Z.on(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.on(F.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.LEVEL_LOADING,this.onLevelLoading,this),Z.off(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.off(F.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),Z.off(F.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(Z,Y){this.tracks=Y.audioTracks||[]}onAudioTrackLoaded(Z,Y){let{id:J,groupId:X,details:Q}=Y,z=this.tracksInGroup[J];if(!z||z.groupId!==X){this.warn(`Audio track with id:${J} and group:${X} not found in active group ${z==null?void 0:z.groupId}`);return}let W=z.details;if(z.details=Y.details,this.log(`Audio track ${J} "${z.name}" lang:${z.lang} group:${X} loaded [${Q.startSN}-${Q.endSN}]`),J===this.trackId)this.playlistLoaded(J,Y,W)}onLevelLoading(Z,Y){this.switchLevel(Y.level)}onLevelSwitching(Z,Y){this.switchLevel(Y.level)}switchLevel(Z){let Y=this.hls.levels[Z];if(!Y)return;let J=Y.audioGroups||null,X=this.groupIds,Q=this.currentTrack;if(!J||(X==null?void 0:X.length)!==(J==null?void 0:J.length)||J!=null&&J.some((W)=>(X==null?void 0:X.indexOf(W))===-1)){this.groupIds=J,this.trackId=-1,this.currentTrack=null;let W=this.tracks.filter((U)=>!J||J.indexOf(U.groupId)!==-1);if(W.length){if(this.selectDefaultTrack&&!W.some((U)=>U.default))this.selectDefaultTrack=!1;W.forEach((U,N)=>{U.id=N})}else if(!Q&&!this.tracksInGroup.length)return;this.tracksInGroup=W;let H=this.hls.config.audioPreference;if(!Q&&H){let U=B8(H,W,Z9);if(U>-1)Q=W[U];else{let N=B8(H,this.tracks);Q=this.tracks[N]}}let G=this.findTrackId(Q);if(G===-1&&Q)G=this.findTrackId(null);let q={audioTracks:W};this.log(`Updating audio tracks, ${W.length} track(s) found in group(s): ${J==null?void 0:J.join(",")}`),this.hls.trigger(F.AUDIO_TRACKS_UPDATED,q);let V=this.trackId;if(G!==-1&&V===-1)this.setAudioTrack(G);else if(W.length&&V===-1){var z;let U=Error(`No audio track selected for current audio group-ID(s): ${(z=this.groupIds)==null?void 0:z.join(",")} track count: ${W.length}`);this.warn(U.message),this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:U})}}}onError(Z,Y){if(Y.fatal||!Y.context)return;if(Y.context.type===J0.AUDIO_TRACK&&Y.context.id===this.trackId&&(!this.groupIds||this.groupIds.indexOf(Y.context.groupId)!==-1))this.checkRetry(Y)}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(Z){this.selectDefaultTrack=!1,this.setAudioTrack(Z)}setAudioOption(Z){let Y=this.hls;if(Y.config.audioPreference=Z,Z){let J=this.allAudioTracks;if(this.selectDefaultTrack=!1,J.length){let X=this.currentTrack;if(X&&Y9(Z,X,Z9))return X;let Q=B8(Z,this.tracksInGroup,Z9);if(Q>-1){let z=this.tracksInGroup[Q];return this.setAudioTrack(Q),z}else if(X){let z=Y.loadLevel;if(z===-1)z=Y.firstAutoLevel;let W=nH(Z,Y.levels,J,z,Z9);if(W===-1)return null;Y.nextLoadLevel=W}if(Z.channels||Z.audioCodec){let z=B8(Z,J);if(z>-1)return J[z]}}}return null}setAudioTrack(Z){let Y=this.tracksInGroup;if(Z<0||Z>=Y.length){this.warn(`Invalid audio track id: ${Z}`);return}this.selectDefaultTrack=!1;let J=this.currentTrack,X=Y[Z],Q=X.details&&!X.details.live;if(Z===this.trackId&&X===J&&Q)return;if(this.log(`Switching to audio-track ${Z} "${X.name}" lang:${X.lang} group:${X.groupId} channels:${X.channels}`),this.trackId=Z,this.currentTrack=X,this.hls.trigger(F.AUDIO_TRACK_SWITCHING,H0({},X)),Q)return;let z=this.switchParams(X.url,J==null?void 0:J.details,X.details);this.loadPlaylist(z)}findTrackId(Z){let Y=this.tracksInGroup;for(let J=0;J{let J={label:"async-blocker",execute:Y,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.append(J,Z)})}prependBlocker(Z){return new Promise((Y)=>{if(this.queues){let J={label:"async-blocker-prepend",execute:Y,onStart:()=>{},onComplete:()=>{},onError:()=>{}};this.queues[Z].unshift(J)}})}removeBlockers(){if(this.queues===null)return;[this.queues.video,this.queues.audio,this.queues.audiovideo].forEach((Z)=>{var Y;let J=(Y=Z[0])==null?void 0:Y.label;if(J==="async-blocker"||J==="async-blocker-prepend")Z[0].execute(),Z.splice(0,1)})}unblockAudio(Z){if(this.queues===null)return;if(this.queues.audio[0]===Z)this.shiftAndExecuteNext("audio")}executeNext(Z){if(this.queues===null||this.tracks===null)return;let Y=this.queues[Z];if(Y.length){let X=Y[0];try{X.execute()}catch(Q){var J;if(X.onError(Q),this.queues===null||this.tracks===null)return;let z=(J=this.tracks[Z])==null?void 0:J.buffer;if(!(z!=null&&z.updating))this.shiftAndExecuteNext(Z)}}}shiftAndExecuteNext(Z){if(this.queues===null)return;this.queues[Z].shift(),this.executeNext(Z)}current(Z){var Y;return((Y=this.queues)==null?void 0:Y[Z][0])||null}toString(){let{queues:Z,tracks:Y}=this;if(Z===null||Y===null)return"";return` ${this.list("video")} ${this.list("audio")} ${this.list("audiovideo")}}`}list(Z){var Y,J;return(Y=this.queues)!=null&&Y[Z]||(J=this.tracks)!=null&&J[Z]?`${Z}: (${this.listSbInfo(Z)}) ${this.listOps(Z)}`:""}listSbInfo(Z){var Y;let J=(Y=this.tracks)==null?void 0:Y[Z],X=J==null?void 0:J.buffer;if(!X)return"none";return`SourceBuffer${X.updating?" updating":""}${J.ended?" ended":""}${J.ending?" ending":""}`}listOps(Z){var Y;return((Y=this.queues)==null?void 0:Y[Z].map((J)=>J.label).join(", "))||""}}var $J=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,H2="HlsJsTrackRemovedError";class q2 extends Error{constructor(Z){super(Z);this.name=H2}}class V2 extends l0{constructor(Z,Y){super("buffer-controller",Z.logger);this.hls=void 0,this.fragmentTracker=void 0,this.details=null,this._objectUrl=null,this.operationQueue=null,this.bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.blockedAudioAppend=null,this.lastVideoAppendEnd=0,this.appendSource=void 0,this.transferData=void 0,this.overrides=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.sourceBuffers=[[null,null],[null,null]],this._onEndStreaming=(J)=>{var X;if(!this.hls)return;if(((X=this.mediaSource)==null?void 0:X.readyState)!=="open")return;this.hls.pauseBuffering()},this._onStartStreaming=(J)=>{if(!this.hls)return;this.hls.resumeBuffering()},this._onMediaSourceOpen=(J)=>{let{media:X,mediaSource:Q}=this;if(J)this.log("Media source opened");if(!X||!Q)return;if(Q.removeEventListener("sourceopen",this._onMediaSourceOpen),X.removeEventListener("emptied",this._onMediaEmptied),this.updateDuration(),this.hls.trigger(F.MEDIA_ATTACHED,{media:X,mediaSource:Q}),this.mediaSource!==null)this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{let{mediaSrc:J,_objectUrl:X}=this;if(J!==X)this.error(`Media element src was set while attaching MediaSource (${X} > ${J})`)},this.hls=Z,this.fragmentTracker=Y,this.appendSource=GH(k8(Z.config.preferManagedMediaSource)),this.initTracks(),this.registerListeners()}hasSourceTypes(){return Object.keys(this.tracks).length>0}destroy(){if(this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.transferData=this.overrides=void 0,this.operationQueue)this.operationQueue.destroy(),this.operationQueue=null;this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null}registerListeners(){let{hls:Z}=this;Z.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.BUFFER_RESET,this.onBufferReset,this),Z.on(F.BUFFER_APPENDING,this.onBufferAppending,this),Z.on(F.BUFFER_CODECS,this.onBufferCodecs,this),Z.on(F.BUFFER_EOS,this.onBufferEos,this),Z.on(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.on(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.on(F.FRAG_PARSED,this.onFragParsed,this),Z.on(F.FRAG_CHANGED,this.onFragChanged,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;Z.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.BUFFER_RESET,this.onBufferReset,this),Z.off(F.BUFFER_APPENDING,this.onBufferAppending,this),Z.off(F.BUFFER_CODECS,this.onBufferCodecs,this),Z.off(F.BUFFER_EOS,this.onBufferEos,this),Z.off(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.off(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.off(F.FRAG_PARSED,this.onFragParsed,this),Z.off(F.FRAG_CHANGED,this.onFragChanged,this),Z.off(F.ERROR,this.onError,this)}transferMedia(){let{media:Z,mediaSource:Y}=this;if(!Z)return null;let J={};if(this.operationQueue){let Q=this.isUpdating();if(!Q)this.operationQueue.removeBlockers();let z=this.isQueued();if(Q||z)this.warn(`Transfering MediaSource with${z?" operations in queue":""}${Q?" updating SourceBuffer(s)":""} ${this.operationQueue}`);this.operationQueue.destroy()}let X=this.transferData;if(!this.sourceBufferCount&&X&&X.mediaSource===Y)U0(J,X.tracks);else this.sourceBuffers.forEach((Q)=>{let[z]=Q;if(z)J[z]=U0({},this.tracks[z]),this.removeBuffer(z);Q[0]=Q[1]=null});return{media:Z,mediaSource:Y,tracks:J}}initTracks(){let Z={};this.sourceBuffers=[[null,null],[null,null]],this.tracks=Z,this.resetQueue(),this.resetAppendErrors(),this.lastMpegAudioChunk=this.blockedAudioAppend=null,this.lastVideoAppendEnd=0}onManifestLoading(){this.bufferCodecEventsTotal=0,this.details=null}onManifestParsed(Z,Y){var J;let X=2;if(Y.audio&&!Y.video||!Y.altAudio)X=1;if(this.bufferCodecEventsTotal=X,this.log(`${X} bufferCodec event(s) expected.`),(J=this.transferData)!=null&&J.mediaSource&&this.sourceBufferCount&&X)this.bufferCreated()}onMediaAttaching(Z,Y){let J=this.media=Y.media;this.transferData=this.overrides=void 0;let X=k8(this.appendSource);if(X){let Q=!!Y.mediaSource;if(Q||Y.overrides)this.transferData=Y,this.overrides=Y.overrides;let z=this.mediaSource=Y.mediaSource||new X;if(this.assignMediaSource(z),Q)this._objectUrl=J.src,this.attachTransferred();else{let W=this._objectUrl=self.URL.createObjectURL(z);if(this.appendSource)try{J.removeAttribute("src");let H=self.ManagedMediaSource;J.disableRemotePlayback=J.disableRemotePlayback||H&&z instanceof H,MJ(J),B4(J,W),J.load()}catch(H){J.src=W}else J.src=W}J.addEventListener("emptied",this._onMediaEmptied)}}assignMediaSource(Z){var Y,J;if(this.log(`${((Y=this.transferData)==null?void 0:Y.mediaSource)===Z?"transferred":"created"} media source: ${(J=Z.constructor)==null?void 0:J.name}`),Z.addEventListener("sourceopen",this._onMediaSourceOpen),Z.addEventListener("sourceended",this._onMediaSourceEnded),Z.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource)Z.addEventListener("startstreaming",this._onStartStreaming),Z.addEventListener("endstreaming",this._onEndStreaming)}attachTransferred(){let Z=this.media,Y=this.transferData;if(!Y||!Z)return;let J=this.tracks,X=Y.tracks,Q=X?Object.keys(X):null,z=Q?Q.length:0,W=()=>{Promise.resolve().then(()=>{if(this.media&&this.mediaSourceOpenOrEnded)this._onMediaSourceOpen()})};if(X&&Q&&z){if(!this.tracksReady){this.hls.config.startFragPrefetch=!0,this.log("attachTransferred: waiting for SourceBuffer track info");return}if(this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal}) required tracks: ${K0(J,(H,G)=>H==="initSegment"?void 0:G)}; transfer tracks: ${K0(X,(H,G)=>H==="initSegment"?void 0:G)}}`),!mJ(X,J)){Y.mediaSource=null,Y.tracks=void 0;let H=Z.currentTime,G=this.details,q=Math.max(H,(G==null?void 0:G.fragments[0].start)||0);if(q-H>1){this.log(`attachTransferred: waiting for playback to reach new tracks start time ${H} -> ${q}`);return}this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(X)}"->"${Object.keys(J)}") start time: ${q} currentTime: ${H}`),this.onMediaDetaching(F.MEDIA_DETACHING,{}),this.onMediaAttaching(F.MEDIA_ATTACHING,Y),Z.currentTime=q;return}this.transferData=void 0,Q.forEach((H)=>{let G=H,q=X[G];if(q){let V=q.buffer;if(V){let U=this.fragmentTracker,N=q.id;if(U.hasFragments(N)||U.hasParts(N)){let B=t.getBuffered(V);U.detectEvictedFragments(G,B,N,null,!0)}let j=WZ(G),K=[G,V];if(this.sourceBuffers[j]=K,V.updating&&this.operationQueue)this.operationQueue.prependBlocker(G);this.trackSourceBuffer(G,q)}}}),W(),this.bufferCreated()}else this.log("attachTransferred: MediaSource w/o SourceBuffers"),W()}get mediaSourceOpenOrEnded(){var Z;let Y=(Z=this.mediaSource)==null?void 0:Z.readyState;return Y==="open"||Y==="ended"}onMediaDetaching(Z,Y){let J=!!Y.transferMedia;this.transferData=this.overrides=void 0;let{media:X,mediaSource:Q,_objectUrl:z}=this;if(Q){if(this.log(`media source ${J?"transferring":"detaching"}`),J)this.sourceBuffers.forEach(([W])=>{if(W)this.removeBuffer(W)}),this.resetQueue();else{if(this.mediaSourceOpenOrEnded){let W=Q.readyState==="open";try{let H=Q.sourceBuffers;for(let G=H.length;G--;){if(W)H[G].abort();Q.removeSourceBuffer(H[G])}if(W)Q.endOfStream()}catch(H){this.warn(`onMediaDetaching: ${H.message} while calling endOfStream`)}}if(this.sourceBufferCount)this.onBufferReset()}if(Q.removeEventListener("sourceopen",this._onMediaSourceOpen),Q.removeEventListener("sourceended",this._onMediaSourceEnded),Q.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource)Q.removeEventListener("startstreaming",this._onStartStreaming),Q.removeEventListener("endstreaming",this._onEndStreaming);this.mediaSource=null,this._objectUrl=null}if(X){if(X.removeEventListener("emptied",this._onMediaEmptied),!J){if(z)self.URL.revokeObjectURL(z);if(this.mediaSrc===z){if(X.removeAttribute("src"),this.appendSource)MJ(X);X.load()}else this.warn("media|source.src was changed by a third party - skip cleanup")}this.media=null}this.hls.trigger(F.MEDIA_DETACHED,Y)}onBufferReset(){this.sourceBuffers.forEach(([Z])=>{if(Z)this.resetBuffer(Z)}),this.initTracks()}resetBuffer(Z){var Y;let J=(Y=this.tracks[Z])==null?void 0:Y.buffer;if(this.removeBuffer(Z),J)try{var X;if((X=this.mediaSource)!=null&&X.sourceBuffers.length)this.mediaSource.removeSourceBuffer(J)}catch(Q){this.warn(`onBufferReset ${Z}`,Q)}delete this.tracks[Z]}removeBuffer(Z){this.removeBufferListeners(Z),this.sourceBuffers[WZ(Z)]=[null,null];let Y=this.tracks[Z];if(Y)Y.buffer=void 0}resetQueue(){if(this.operationQueue)this.operationQueue.destroy();this.operationQueue=new G2(this.tracks)}onBufferCodecs(Z,Y){var J;let X=this.tracks,Q=Object.keys(Y);this.log(`BUFFER_CODECS: "${Q}" (current SB count ${this.sourceBufferCount})`);let z="audiovideo"in Y&&(X.audio||X.video)||X.audiovideo&&(("audio"in Y)||("video"in Y)),W=!z&&this.sourceBufferCount&&this.media&&Q.some((H)=>!X[H]);if(z||W){this.warn(`Unsupported transition between "${Object.keys(X)}" and "${Q}" SourceBuffers`);return}if(Q.forEach((H)=>{var G,q;let V=Y[H],{id:U,codec:N,levelCodec:j,container:K,metadata:B,supplemental:R}=V,E=X[H],O=(G=this.transferData)==null||(G=G.tracks)==null?void 0:G[H],A=O!=null&&O.buffer?O:E,$=(A==null?void 0:A.pendingCodec)||(A==null?void 0:A.codec),L=A==null?void 0:A.levelCodec;if(!E)E=X[H]={buffer:void 0,listeners:[],codec:N,supplemental:R,container:K,levelCodec:j,metadata:B,id:U};let M=I7($,L),w=M==null?void 0:M.replace($J,"$1"),_=I7(N,j),C=(q=_)==null?void 0:q.replace($J,"$1");if(_&&M&&w!==C){if(H.slice(0,5)==="audio")_=f7(_,this.appendSource);if(this.log(`switching codec ${$} to ${_}`),_!==(E.pendingCodec||E.codec))E.pendingCodec=_;E.container=K,this.appendChangeType(H,K,_)}}),this.tracksReady||this.sourceBufferCount)Y.tracks=this.sourceBufferTracks;if(this.sourceBufferCount)return;if(this.bufferCodecEventsTotal>1&&!this.tracks.video&&!Y.video&&((J=Y.audio)==null?void 0:J.id)==="main")this.log("Main audio-only"),this.bufferCodecEventsTotal=1;if(this.mediaSourceOpenOrEnded)this.checkPendingTracks()}get sourceBufferTracks(){return Object.keys(this.tracks).reduce((Z,Y)=>{let J=this.tracks[Y];return Z[Y]={id:J.id,container:J.container,codec:J.codec,levelCodec:J.levelCodec},Z},{})}appendChangeType(Z,Y,J){let X=`${Y};codecs=${J}`,Q={label:`change-type=${X}`,execute:()=>{let z=this.tracks[Z];if(z){let W=z.buffer;if(W!=null&&W.changeType)this.log(`changing ${Z} sourceBuffer type to ${X}`),W.changeType(X),z.codec=J,z.container=Y}this.shiftAndExecuteNext(Z)},onStart:()=>{},onComplete:()=>{},onError:(z)=>{this.warn(`Failed to change ${Z} SourceBuffer type`,z)}};this.append(Q,Z,this.isPending(this.tracks[Z]))}blockAudio(Z){var Y;let J=Z.start,X=J+Z.duration*0.05;if(((Y=this.fragmentTracker.getAppendedFrag(J,o.MAIN))==null?void 0:Y.gap)===!0)return;let z={label:"block-audio",execute:()=>{var W;let H=this.tracks.video;if(this.lastVideoAppendEnd>X||H!=null&&H.buffer&&t.isBuffered(H.buffer,X)||((W=this.fragmentTracker.getAppendedFrag(X,o.MAIN))==null?void 0:W.gap)===!0)this.blockedAudioAppend=null,this.shiftAndExecuteNext("audio")},onStart:()=>{},onComplete:()=>{},onError:(W)=>{this.warn("Error executing block-audio operation",W)}};this.blockedAudioAppend={op:z,frag:Z},this.append(z,"audio",!0)}unblockAudio(){let{blockedAudioAppend:Z,operationQueue:Y}=this;if(Z&&Y)this.blockedAudioAppend=null,Y.unblockAudio(Z.op)}onBufferAppending(Z,Y){let{tracks:J}=this,{data:X,type:Q,parent:z,frag:W,part:H,chunkMeta:G,offset:q}=Y,V=G.buffering[Q],{sn:U,cc:N}=W,j=self.performance.now();V.start=j;let K=W.stats.buffering,B=H?H.stats.buffering:null;if(K.start===0)K.start=j;if(B&&B.start===0)B.start=j;let R=J.audio,E=!1;if(Q==="audio"&&(R==null?void 0:R.container)==="audio/mpeg")E=!this.lastMpegAudioChunk||G.id===1||this.lastMpegAudioChunk.sn!==G.sn,this.lastMpegAudioChunk=G;let O=J.video,A=O==null?void 0:O.buffer;if(A&&U!=="initSegment"){let M=H||W,w=this.blockedAudioAppend;if(Q==="audio"&&z!=="main"&&!this.blockedAudioAppend&&!(O.ending||O.ended)){let C=M.start+M.duration*0.05,D=A.buffered,I=this.currentOp("video");if(!D.length&&!I)this.blockAudio(M);else if(!I&&!t.isBuffered(A,C)&&this.lastVideoAppendEndC||_{var M;V.executeStart=self.performance.now();let w=(M=this.tracks[Q])==null?void 0:M.buffer;if(w){if(E)this.updateTimestampOffset(w,$,0.1,Q,U,N);else if(q!==void 0&&m(q))this.updateTimestampOffset(w,q,0.000001,Q,U,N)}this.appendExecutor(X,Q)},onStart:()=>{},onComplete:()=>{let M=self.performance.now();if(V.executeEnd=V.end=M,K.first===0)K.first=M;if(B&&B.first===0)B.first=M;let w={};if(this.sourceBuffers.forEach(([_,C])=>{if(_)w[_]=t.getBuffered(C)}),this.appendErrors[Q]=0,Q==="audio"||Q==="video")this.appendErrors.audiovideo=0;else this.appendErrors.audio=0,this.appendErrors.video=0;this.hls.trigger(F.BUFFER_APPENDED,{type:Q,frag:W,part:H,chunkMeta:G,parent:W.type,timeRanges:w})},onError:(M)=>{var w;let _={type:n.MEDIA_ERROR,parent:W.type,details:b.BUFFER_APPEND_ERROR,sourceBufferName:Q,frag:W,part:H,chunkMeta:G,error:M,err:M,fatal:!1},C=(w=this.media)==null?void 0:w.error;if(M.code===DOMException.QUOTA_EXCEEDED_ERR||M.name=="QuotaExceededError"||"quota"in M)_.details=b.BUFFER_FULL_ERROR;else if(M.code===DOMException.INVALID_STATE_ERR&&this.mediaSourceOpenOrEnded&&!C)_.errorAction=B9(!0);else if(M.name===H2&&this.sourceBufferCount===0)_.errorAction=B9(!0);else{let D=++this.appendErrors[Q];if(this.warn(`Failed ${D}/${this.hls.config.appendErrorMaxRetry} times to append segment in "${Q}" sourceBuffer (${C?C:"no media error"})`),D>=this.hls.config.appendErrorMaxRetry||!!C)_.fatal=!0}this.hls.trigger(F.ERROR,_)}};this.log(`queuing "${Q}" append sn: ${U}${H?" p: "+H.index:""} of ${W.type===o.MAIN?"level":"track"} ${W.level} cc: ${N}`),this.append(L,Q,this.isPending(this.tracks[Q]))}getFlushOp(Z,Y,J){return this.log(`queuing "${Z}" remove ${Y}-${J}`),{label:"remove",execute:()=>{this.removeExecutor(Z,Y,J)},onStart:()=>{},onComplete:()=>{this.hls.trigger(F.BUFFER_FLUSHED,{type:Z})},onError:(X)=>{this.warn(`Failed to remove ${Y}-${J} from "${Z}" SourceBuffer`,X)}}}onBufferFlushing(Z,Y){let{type:J,startOffset:X,endOffset:Q}=Y;if(J)this.append(this.getFlushOp(J,X,Q),J);else this.sourceBuffers.forEach(([z])=>{if(z)this.append(this.getFlushOp(z,X,Q),z)})}onFragParsed(Z,Y){let{frag:J,part:X}=Y,Q=[],z=X?X.elementaryStreams:J.elementaryStreams;if(z[N0.AUDIOVIDEO])Q.push("audiovideo");else{if(z[N0.AUDIO])Q.push("audio");if(z[N0.VIDEO])Q.push("video")}let W=()=>{let H=self.performance.now();if(J.stats.buffering.end=H,X)X.stats.buffering.end=H;let G=X?X.stats:J.stats;this.hls.trigger(F.FRAG_BUFFERED,{frag:J,part:X,stats:G,id:J.type})};if(Q.length===0)this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${J.type} level: ${J.level} sn: ${J.sn}`);this.blockBuffers(W,Q).catch((H)=>{this.warn(`Fragment buffered callback ${H}`),this.stepOperationQueue(this.sourceBufferTypes)})}onFragChanged(Z,Y){this.trimBuffers()}get bufferedToEnd(){return this.sourceBufferCount>0&&!this.sourceBuffers.some(([Z])=>{if(Z){let Y=this.tracks[Z];if(Y)return!Y.ended||Y.ending}return!1})}onBufferEos(Z,Y){var J;this.sourceBuffers.forEach(([z])=>{if(z){let W=this.tracks[z];if(!Y.type||Y.type===z){if(W.ending=!0,!W.ended)W.ended=!0,this.log(`${z} buffer reached EOS`)}}});let X=((J=this.overrides)==null?void 0:J.endOfStream)!==!1;if(this.sourceBufferCount>0&&!this.sourceBuffers.some(([z])=>{var W;return z&&!((W=this.tracks[z])!=null&&W.ended)}))if(X)this.log("Queueing EOS"),this.blockUntilOpen(()=>{this.tracksEnded();let{mediaSource:z}=this;if(!z||z.readyState!=="open"){if(z)this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${z.readyState}`);return}this.log("Calling mediaSource.endOfStream()"),z.endOfStream(),this.hls.trigger(F.BUFFERED_TO_END,void 0)});else this.tracksEnded(),this.hls.trigger(F.BUFFERED_TO_END,void 0);else if(Y.type==="video")this.unblockAudio()}tracksEnded(){this.sourceBuffers.forEach(([Z])=>{if(Z!==null){let Y=this.tracks[Z];if(Y)Y.ending=!1}})}onLevelUpdated(Z,{details:Y}){if(!Y.fragments.length)return;this.details=Y,this.updateDuration()}updateDuration(){this.blockUntilOpen(()=>{let Z=this.getDurationAndRange();if(!Z)return;this.updateMediaSource(Z)})}onError(Z,Y){if(Y.details===b.BUFFER_APPEND_ERROR&&Y.frag){var J;let X=(J=Y.errorAction)==null?void 0:J.nextAutoLevel;if(m(X)&&X!==Y.frag.level)this.resetAppendErrors()}}resetAppendErrors(){this.appendErrors={audio:0,video:0,audiovideo:0}}trimBuffers(){let{hls:Z,details:Y,media:J}=this;if(!J||Y===null)return;if(!this.sourceBufferCount)return;let X=Z.config,Q=J.currentTime,z=Y.levelTargetDuration,W=Y.live&&X.liveBackBufferLength!==null?X.liveBackBufferLength:X.backBufferLength;if(m(W)&&W>=0){let G=Math.max(W,z),q=Math.floor(Q/z)*z-G;this.flushBackBuffer(Q,z,q)}let H=X.frontBufferFlushThreshold;if(m(H)&&H>0){let G=Math.max(X.maxBufferLength,H),q=Math.max(G,z),V=Math.floor(Q/z)*z+q;this.flushFrontBuffer(Q,z,V)}}flushBackBuffer(Z,Y,J){this.sourceBuffers.forEach(([X,Q])=>{if(Q){let W=t.getBuffered(Q);if(W.length>0&&J>W.start(0)){var z;this.hls.trigger(F.BACK_BUFFER_REACHED,{bufferEnd:J});let H=this.tracks[X];if((z=this.details)!=null&&z.live)this.hls.trigger(F.LIVE_BACK_BUFFER_REACHED,{bufferEnd:J});else if(H!=null&&H.ended){this.log(`Cannot flush ${X} back buffer while SourceBuffer is in ended state`);return}this.hls.trigger(F.BUFFER_FLUSHING,{startOffset:0,endOffset:J,type:X})}}})}flushFrontBuffer(Z,Y,J){this.sourceBuffers.forEach(([X,Q])=>{if(Q){let z=t.getBuffered(Q),W=z.length;if(W<2)return;let H=z.start(W-1),G=z.end(W-1);if(J>H||Z>=H&&Z<=G)return;this.hls.trigger(F.BUFFER_FLUSHING,{startOffset:H,endOffset:1/0,type:X})}})}getDurationAndRange(){var Z;let{details:Y,mediaSource:J}=this;if(!Y||!this.media||(J==null?void 0:J.readyState)!=="open")return null;let X=Y.edge;if(Y.live&&this.hls.config.liveDurationInfinity){if(Y.fragments.length&&!!J.setLiveSeekableRange){let G=Math.max(0,Y.fragmentStart),q=Math.max(G,X);return{duration:1/0,start:G,end:q}}return{duration:1/0}}let Q=(Z=this.overrides)==null?void 0:Z.duration;if(Q){if(!m(Q))return null;return{duration:Q}}let z=this.media.duration,W=m(J.duration)?J.duration:0;if(X>W&&X>z||!m(z))return{duration:X};return null}updateMediaSource({duration:Z,start:Y,end:J}){let X=this.mediaSource;if(!this.media||!X||X.readyState!=="open")return;if(X.duration!==Z){if(m(Z))this.log(`Updating MediaSource duration to ${Z.toFixed(3)}`);X.duration=Z}if(Y!==void 0&&J!==void 0)this.log(`MediaSource duration is set to ${X.duration}. Setting seekable range to ${Y}-${J}.`),X.setLiveSeekableRange(Y,J)}get tracksReady(){let Z=this.pendingTrackCount;return Z>0&&(Z>=this.bufferCodecEventsTotal||this.isPending(this.tracks.audiovideo))}checkPendingTracks(){let{bufferCodecEventsTotal:Z,pendingTrackCount:Y,tracks:J}=this;if(this.log(`checkPendingTracks (pending: ${Y} codec events expected: ${Z}) ${K0(J)}`),this.tracksReady){var X;let Q=(X=this.transferData)==null?void 0:X.tracks;if(Q&&Object.keys(Q).length)this.attachTransferred();else this.createSourceBuffers()}}bufferCreated(){if(this.sourceBufferCount){let Z={};this.sourceBuffers.forEach(([Y,J])=>{if(Y){let X=this.tracks[Y];Z[Y]={buffer:J,container:X.container,codec:X.codec,supplemental:X.supplemental,levelCodec:X.levelCodec,id:X.id,metadata:X.metadata}}}),this.hls.trigger(F.BUFFER_CREATED,{tracks:Z}),this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`),this.sourceBuffers.forEach(([Y])=>{this.executeNext(Y)})}else{let Z=Error("could not create source buffer for media codec(s)");this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:Z,reason:Z.message})}}createSourceBuffers(){let{tracks:Z,sourceBuffers:Y,mediaSource:J}=this;if(!J)throw Error("createSourceBuffers called when mediaSource was null");for(let Q in Z){let z=Q,W=Z[z];if(this.isPending(W)){let H=this.getTrackCodec(W,z),G=`${W.container};codecs=${H}`;W.codec=H,this.log(`creating sourceBuffer(${G})${this.currentOp(z)?" Queued":""} ${K0(W)}`);try{let q=J.addSourceBuffer(G),V=WZ(z),U=[z,q];Y[V]=U,W.buffer=q}catch(q){var X;this.error(`error while trying to add sourceBuffer: ${q.message}`),this.shiftAndExecuteNext(z),(X=this.operationQueue)==null||X.removeBlockers(),delete this.tracks[z],this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:q,sourceBufferName:z,mimeType:G,parent:W.id});return}this.trackSourceBuffer(z,W)}}this.bufferCreated()}getTrackCodec(Z,Y){let{supplemental:J,codec:X}=Z;if(J&&(Y==="video"||Y==="audiovideo")&&d9(J,"video"))X=PH(X,J);let Q=I7(X,Z.levelCodec);if(Q){if(Y.slice(0,5)==="audio")return f7(Q,this.appendSource);return Q}return""}trackSourceBuffer(Z,Y){let J=Y.buffer;if(!J)return;let X=this.getTrackCodec(Y,Z);if(this.tracks[Z]={buffer:J,codec:X,container:Y.container,levelCodec:Y.levelCodec,supplemental:Y.supplemental,metadata:Y.metadata,id:Y.id,listeners:[]},this.removeBufferListeners(Z),this.addBufferListener(Z,"updatestart",this.onSBUpdateStart),this.addBufferListener(Z,"updateend",this.onSBUpdateEnd),this.addBufferListener(Z,"error",this.onSBUpdateError),this.appendSource)this.addBufferListener(Z,"bufferedchange",(Q,z)=>{let W=z.removedRanges;if(W!=null&&W.length)this.hls.trigger(F.BUFFER_FLUSHED,{type:Q})})}get mediaSrc(){var Z,Y;let J=((Z=this.media)==null||(Y=Z.querySelector)==null?void 0:Y.call(Z,"source"))||this.media;return J==null?void 0:J.src}onSBUpdateStart(Z){let Y=this.currentOp(Z);if(!Y)return;Y.onStart()}onSBUpdateEnd(Z){var Y;if(((Y=this.mediaSource)==null?void 0:Y.readyState)==="closed"){this.resetBuffer(Z);return}let J=this.currentOp(Z);if(!J)return;J.onComplete(),this.shiftAndExecuteNext(Z)}onSBUpdateError(Z,Y){var J;let X=Error(`${Z} SourceBuffer error. MediaSource readyState: ${(J=this.mediaSource)==null?void 0:J.readyState}`);this.error(`${X}`,Y),this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.BUFFER_APPENDING_ERROR,sourceBufferName:Z,error:X,fatal:!1});let Q=this.currentOp(Z);if(Q)Q.onError(X)}updateTimestampOffset(Z,Y,J,X,Q,z){let W=Y-Z.timestampOffset;if(Math.abs(W)>=J)this.log(`Updating ${X} SourceBuffer timestampOffset to ${Y} (sn: ${Q} cc: ${z})`),Z.timestampOffset=Y}removeExecutor(Z,Y,J){let{media:X,mediaSource:Q}=this,z=this.tracks[Z],W=z==null?void 0:z.buffer;if(!X||!Q||!W){this.warn(`Attempting to remove from the ${Z} SourceBuffer, but it does not exist`),this.shiftAndExecuteNext(Z);return}let H=m(X.duration)?X.duration:1/0,G=m(Q.duration)?Q.duration:1/0,q=Math.max(0,Y),V=Math.min(J,H,G);if(V>q&&(!z.ending||z.ended))z.ended=!1,this.log(`Removing [${q},${V}] from the ${Z} SourceBuffer`),W.remove(q,V);else this.shiftAndExecuteNext(Z)}appendExecutor(Z,Y){let J=this.tracks[Y],X=J==null?void 0:J.buffer;if(!X)throw new q2(`Attempting to append to the ${Y} SourceBuffer, but it does not exist`);J.ending=!1,J.ended=!1,X.appendBuffer(Z)}blockUntilOpen(Z){if(this.isUpdating()||this.isQueued())this.blockBuffers(Z).catch((Y)=>{this.warn(`SourceBuffer blocked callback ${Y}`),this.stepOperationQueue(this.sourceBufferTypes)});else try{Z()}catch(Y){this.warn(`Callback run without blocking ${this.operationQueue} ${Y}`)}}isUpdating(){return this.sourceBuffers.some(([Z,Y])=>Z&&Y.updating)}isQueued(){return this.sourceBuffers.some(([Z])=>Z&&!!this.currentOp(Z))}isPending(Z){return!!Z&&!Z.buffer}blockBuffers(Z,Y=this.sourceBufferTypes){if(!Y.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),Promise.resolve().then(Z);let{operationQueue:J}=this,X=Y.map((z)=>this.appendBlocker(z));if(Y.length>1&&!!this.blockedAudioAppend)this.unblockAudio();return Promise.all(X).then((z)=>{if(J!==this.operationQueue)return;Z(),this.stepOperationQueue(this.sourceBufferTypes)})}stepOperationQueue(Z){Z.forEach((Y)=>{var J;let X=(J=this.tracks[Y])==null?void 0:J.buffer;if(!X||X.updating)return;this.shiftAndExecuteNext(Y)})}append(Z,Y,J){if(this.operationQueue)this.operationQueue.append(Z,Y,J)}appendBlocker(Z){if(this.operationQueue)return this.operationQueue.appendBlocker(Z)}currentOp(Z){if(this.operationQueue)return this.operationQueue.current(Z);return null}executeNext(Z){if(Z&&this.operationQueue)this.operationQueue.executeNext(Z)}shiftAndExecuteNext(Z){if(this.operationQueue)this.operationQueue.shiftAndExecuteNext(Z)}get pendingTrackCount(){return Object.keys(this.tracks).reduce((Z,Y)=>Z+(this.isPending(this.tracks[Y])?1:0),0)}get sourceBufferCount(){return this.sourceBuffers.reduce((Z,[Y])=>Z+(Y?1:0),0)}get sourceBufferTypes(){return this.sourceBuffers.map(([Z])=>Z).filter((Z)=>!!Z)}addBufferListener(Z,Y,J){let X=this.tracks[Z];if(!X)return;let Q=X.buffer;if(!Q)return;let z=J.bind(this,Z);X.listeners.push({event:Y,listener:z}),Q.addEventListener(Y,z)}removeBufferListeners(Z){let Y=this.tracks[Z];if(!Y)return;let J=Y.buffer;if(!J)return;Y.listeners.forEach((X)=>{J.removeEventListener(X.event,X.listener)}),Y.listeners.length=0}}function MJ(Z){let Y=Z.querySelectorAll("source");[].slice.call(Y).forEach((J)=>{Z.removeChild(J)})}function B4(Z,Y){let J=self.document.createElement("source");J.type="video/mp4",J.src=Y,Z.appendChild(J)}function WZ(Z){return Z==="audio"?1:0}class r9{constructor(Z){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=Z,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(Z){this.streamController=Z}destroy(){if(this.hls)this.unregisterListener();if(this.timer)this.stopCapping();this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){let{hls:Z}=this;Z.on(F.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),Z.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.on(F.BUFFER_CODECS,this.onBufferCodecs,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){let{hls:Z}=this;Z.off(F.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),Z.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.off(F.BUFFER_CODECS,this.onBufferCodecs,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(Z,Y){let J=this.hls.levels[Y.droppedLevel];if(this.isLevelAllowed(J))this.restrictedLevels.push({bitrate:J.bitrate,height:J.height,width:J.width})}onMediaAttaching(Z,Y){if(this.media=Y.media instanceof HTMLVideoElement?Y.media:null,this.clientRect=null,this.timer&&this.hls.levels.length)this.detectPlayerSize()}onManifestParsed(Z,Y){let J=this.hls;if(this.restrictedLevels=[],this.firstLevel=Y.firstLevel,J.config.capLevelToPlayerSize&&Y.video)this.startCapping()}onLevelsUpdated(Z,Y){if(this.timer&&m(this.autoLevelCapping))this.detectPlayerSize()}onBufferCodecs(Z,Y){if(this.hls.config.capLevelToPlayerSize&&Y.video)this.startCapping()}onMediaDetaching(){this.stopCapping(),this.media=null}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0){this.clientRect=null;return}let Z=this.hls.levels;if(Z.length){let Y=this.hls,J=this.getMaxLevel(Z.length-1);if(J!==this.autoLevelCapping)Y.logger.log(`Setting autoLevelCapping to ${J}: ${Z[J].height}p@${Z[J].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`);if(Y.autoLevelCapping=J,Y.autoLevelEnabled&&Y.autoLevelCapping>this.autoLevelCapping&&this.streamController)this.streamController.nextLevelSwitch();this.autoLevelCapping=Y.autoLevelCapping}}}getMaxLevel(Z){let Y=this.hls.levels;if(!Y.length)return-1;let J=Y.filter((X,Q)=>this.isLevelAllowed(X)&&Q<=Z);return this.clientRect=null,r9.getMaxLevelByMediaSize(J,this.mediaWidth,this.mediaHeight)}startCapping(){if(this.timer)return;this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1000),this.detectPlayerSize()}stopCapping(){if(this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer)self.clearInterval(this.timer),this.timer=void 0}getDimensions(){if(this.clientRect)return this.clientRect;let Z=this.media,Y={width:0,height:0};if(Z){let J=Z.getBoundingClientRect();if(Y.width=J.width,Y.height=J.height,!Y.width&&!Y.height)Y.width=J.right-J.left||Z.width||0,Y.height=J.bottom-J.top||Z.height||0}return this.clientRect=Y,Y}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let Z=1;if(!this.hls.config.ignoreDevicePixelRatio)try{Z=self.devicePixelRatio}catch(Y){}return Math.min(Z,this.hls.config.maxDevicePixelRatio)}isLevelAllowed(Z){return!this.restrictedLevels.some((J)=>{return Z.bitrate===J.bitrate&&Z.width===J.width&&Z.height===J.height})}static getMaxLevelByMediaSize(Z,Y,J){if(!(Z!=null&&Z.length))return-1;let X=(W,H)=>{if(!H)return!0;return W.width!==H.width||W.height!==H.height},Q=Z.length-1,z=Math.max(Y,J);for(let W=0;W=z||H.height>=z)&&X(H,Z[W+1])){Q=W;break}}return Q}}var R4={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},f0=R4,F4={HLS:"h"},E4=F4;class F8{constructor(Z,Y){if(Array.isArray(Z))Z=Z.map((J)=>J instanceof F8?J:new F8(J));this.value=Z,this.params=Y}}var A4="Dict";function O4(Z){if(Array.isArray(Z))return JSON.stringify(Z);if(Z instanceof Map)return"Map{}";if(Z instanceof Set)return"Set{}";if(typeof Z==="object")return JSON.stringify(Z);return String(Z)}function $4(Z,Y,J,X){return Error(`failed to ${Z} "${O4(Y)}" as ${J}`,{cause:X})}function E8(Z,Y,J){return $4("serialize",Z,Y,J)}class W6{constructor(Z){this.description=Z}}var wJ="Bare Item",M4="Boolean";function w4(Z){if(typeof Z!=="boolean")throw E8(Z,M4);return Z?"?1":"?0"}function L4(Z){return btoa(String.fromCharCode(...Z))}var _4="Byte Sequence";function D4(Z){if(ArrayBuffer.isView(Z)===!1)throw E8(Z,_4);return`:${L4(Z)}:`}var C4="Integer";function P4(Z){return Z<-999999999999999||99999999999999912)throw E8(Z,I4);let J=Y.toString();return J.includes(".")?J:`${J}.0`}var S4="String",T4=/[\x00-\x1f\x7f]+/;function h4(Z){if(T4.test(Z))throw E8(Z,S4);return`"${Z.replace(/\\/g,"\\\\").replace(/"/g,"\\\"")}"`}function v4(Z){return Z.description||Z.toString().slice(7,-1)}var g4="Token";function LJ(Z){let Y=v4(Z);if(/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(Y)===!1)throw E8(Y,g4);return Y}function xZ(Z){switch(typeof Z){case"number":if(!m(Z))throw E8(Z,wJ);if(Number.isInteger(Z))return U2(Z);return x4(Z);case"string":return h4(Z);case"symbol":return LJ(Z);case"boolean":return w4(Z);case"object":if(Z instanceof Date)return b4(Z);if(Z instanceof Uint8Array)return D4(Z);if(Z instanceof W6)return LJ(Z);default:throw E8(Z,wJ)}}var k4="Key";function SZ(Z){if(/^[a-z*][a-z0-9\-_.*]*$/.test(Z)===!1)throw E8(Z,k4);return Z}function G6(Z){if(Z==null)return"";return Object.entries(Z).map(([Y,J])=>{if(J===!0)return`;${SZ(Y)}`;return`;${SZ(Y)}=${xZ(J)}`}).join("")}function N2(Z){if(Z instanceof F8)return`${xZ(Z.value)}${G6(Z.params)}`;else return xZ(Z)}function y4(Z){return`(${Z.value.map(N2).join(" ")})${G6(Z.params)}`}function f4(Z,Y={whitespace:!0}){if(typeof Z!=="object"||Z==null)throw E8(Z,A4);let J=Z instanceof Map?Z.entries():Object.entries(Z),X=(Y===null||Y===void 0?void 0:Y.whitespace)?" ":"";return Array.from(J).map(([Q,z])=>{if(z instanceof F8===!1)z=new F8(z);let W=SZ(Q);if(z.value===!0)W+=G6(z.params);else if(W+="=",Array.isArray(z.value))W+=y4(z);else W+=N2(z);return W}).join(`,${X}`)}function K2(Z,Y){return f4(Z,Y)}var U8="CMCD-Object",E0="CMCD-Request",a8="CMCD-Session",T8="CMCD-Status",p4={br:U8,ab:U8,d:U8,ot:U8,tb:U8,tpb:U8,lb:U8,tab:U8,lab:U8,url:U8,pb:E0,bl:E0,tbl:E0,dl:E0,ltc:E0,mtp:E0,nor:E0,nrr:E0,rc:E0,sn:E0,sta:E0,su:E0,ttfb:E0,ttfbb:E0,ttlb:E0,cmsdd:E0,cmsds:E0,smrt:E0,df:E0,cs:E0,ts:E0,cid:a8,pr:a8,sf:a8,sid:a8,st:a8,v:a8,msd:a8,bs:T8,bsd:T8,cdn:T8,rtp:T8,bg:T8,pt:T8,ec:T8,e:T8},m4={REQUEST:E0};function u4(Z){return Object.keys(Z).reduce((Y,J)=>{var X;return(X=Z[J])===null||X===void 0||X.forEach((Q)=>Y[Q]=J),Y},{})}function c4(Z,Y){let J={};if(!Z)return J;let X=Object.keys(Z),Q=Y?u4(Y):{};return X.reduce((z,W)=>{var H;let G=p4[W]||Q[W]||m4.REQUEST,q=(H=z[G])!==null&&H!==void 0?H:z[G]={};return q[W]=Z[W],z},J)}function d4(Z){return["ot","sf","st","e","sta"].includes(Z)}function o4(Z){if(typeof Z==="number")return m(Z);return Z!=null&&Z!==""&&Z!==!1}var B2="event";function l4(Z,Y){let J=new URL(Z),X=new URL(Y);if(J.origin!==X.origin)return Z;let Q=J.pathname.split("/").slice(1),z=X.pathname.split("/").slice(1,-1);while(Q[0]===z[0])Q.shift(),z.shift();while(z.length)z.shift(),Q.unshift("..");return Q.join("/")+J.search+J.hash}var h7=(Z)=>Math.round(Z),TZ=(Z,Y)=>{if(Array.isArray(Z))return Z.map((J)=>TZ(J,Y));if(Z instanceof F8&&typeof Z.value==="string")return new F8(TZ(Z.value,Y),Z.params);else{if(Y.baseUrl)Z=l4(Z,Y.baseUrl);return Y.version===1?encodeURIComponent(Z):Z}},w7=(Z)=>h7(Z/100)*100,n4=(Z,Y)=>{let J=Z;if(Y.version>=2){if(Z instanceof F8&&typeof Z.value==="string")J=new F8([Z]);else if(typeof Z==="string")J=[Z]}return TZ(J,Y)},s4={br:h7,d:h7,bl:w7,dl:w7,mtp:w7,nor:n4,rtp:w7,tb:h7},R2="request",F2="response",H6=["ab","bg","bl","br","bs","bsd","cdn","cid","cs","df","ec","lab","lb","ltc","msd","mtp","pb","pr","pt","sf","sid","sn","st","sta","tab","tb","tbl","tpb","ts","v"],i4=["e"],r4=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function X1(Z){return r4.test(Z)}function a4(Z){return H6.includes(Z)||i4.includes(Z)||X1(Z)}var E2=["d","dl","nor","ot","rtp","su"];function t4(Z){return H6.includes(Z)||E2.includes(Z)||X1(Z)}var e4=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"];function Zq(Z){return H6.includes(Z)||E2.includes(Z)||e4.includes(Z)||X1(Z)}var Yq=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"];function Jq(Z){return Yq.includes(Z)||X1(Z)}var Xq={[F2]:Zq,[B2]:a4,[R2]:t4};function A2(Z,Y={}){let J={};if(Z==null||typeof Z!=="object")return J;let X=Y.version||Z.v||1,Q=Y.reportingMode||R2,z=X===1?Jq:Xq[Q],W=Object.keys(Z).filter(z),H=Y.filter;if(typeof H==="function")W=W.filter(H);let G=Q===F2||Q===B2;if(G&&!W.includes("ts"))W.push("ts");if(X>1&&!W.includes("v"))W.push("v");let q=U0({},s4,Y.formatters),V={version:X,reportingMode:Q,baseUrl:Y.baseUrl};return W.sort().forEach((U)=>{let N=Z[U],j=q[U];if(typeof j==="function")N=j(N,V);if(U==="v")if(X===1)return;else N=X;if(U=="pr"&&N===1)return;if(G&&U==="ts"&&!m(N))N=Date.now();if(!o4(N))return;if(d4(U)&&typeof N==="string")N=new W6(N);J[U]=N}),J}function Qq(Z,Y={}){let J={};if(!Z)return J;let X=A2(Z,Y),Q=c4(X,Y===null||Y===void 0?void 0:Y.customHeaderMap);return Object.entries(Q).reduce((z,[W,H])=>{let G=K2(H,{whitespace:!1});if(G)z[W]=G;return z},J)}function zq(Z,Y,J){return U0(Z,Qq(Y,J))}var Wq="CMCD";function Gq(Z,Y={}){if(!Z)return"";return K2(A2(Z,Y),{whitespace:!1})}function Hq(Z,Y={}){if(!Z)return"";let J=Gq(Z,Y);return encodeURIComponent(J)}function qq(Z,Y={}){if(!Z)return"";let J=Hq(Z,Y);return`${Wq}=${J}`}var _J=/CMCD=[^&#]+/;function Vq(Z,Y,J){let X=qq(Y,J);if(!X)return Z;if(_J.test(Z))return Z.replace(_J,X);let Q=Z.includes("?")?"&":"?";return`${Z}${Q}${X}`}class O2{constructor(Z){this.hls=void 0,this.config=void 0,this.media=void 0,this.sid=void 0,this.cid=void 0,this.useHeaders=!1,this.includeKeys=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.audioBuffer=void 0,this.videoBuffer=void 0,this.onWaiting=()=>{if(this.initialized)this.starved=!0;this.buffering=!0},this.onPlaying=()=>{if(!this.initialized)this.initialized=!0;this.buffering=!1},this.applyPlaylistData=(X)=>{try{this.apply(X,{ot:f0.MANIFEST,su:!this.initialized})}catch(Q){this.hls.logger.warn("Could not generate manifest CMCD data.",Q)}},this.applyFragmentData=(X)=>{try{let{frag:Q,part:z}=X,W=this.hls.levels[Q.level],H=this.getObjectType(Q),G={d:(z||Q).duration*1000,ot:H};if(H===f0.VIDEO||H===f0.AUDIO||H==f0.MUXED)G.br=W.bitrate/1000,G.tb=this.getTopBandwidth(H)/1000,G.bl=this.getBufferLength(H);let q=z?this.getNextPart(z):this.getNextFrag(Q);if(q!=null&&q.url&&q.url!==Q.url)G.nor=q.url;this.apply(X,G)}catch(Q){this.hls.logger.warn("Could not generate segment CMCD data.",Q)}},this.hls=Z;let Y=this.config=Z.config,{cmcd:J}=Y;if(J!=null)Y.pLoader=this.createPlaylistLoader(),Y.fLoader=this.createFragmentLoader(),this.sid=J.sessionId||Z.sessionId,this.cid=J.contentId,this.useHeaders=J.useHeaders===!0,this.includeKeys=J.includeKeys,this.registerListeners()}registerListeners(){let Z=this.hls;Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHED,this.onMediaDetached,this),Z.on(F.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){let Z=this.hls;Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHED,this.onMediaDetached,this),Z.off(F.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=this.media=null}onMediaAttached(Z,Y){this.media=Y.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){if(!this.media)return;this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null}onBufferCreated(Z,Y){var J,X;this.audioBuffer=(J=Y.tracks.audio)==null?void 0:J.buffer,this.videoBuffer=(X=Y.tracks.video)==null?void 0:X.buffer}createData(){var Z;return{v:1,sf:E4.HLS,sid:this.sid,cid:this.cid,pr:(Z=this.media)==null?void 0:Z.playbackRate,mtp:this.hls.bandwidthEstimate/1000}}apply(Z,Y={}){U0(Y,this.createData());let J=Y.ot===f0.INIT||Y.ot===f0.VIDEO||Y.ot===f0.MUXED;if(this.starved&&J)Y.bs=!0,Y.su=!0,this.starved=!1;if(Y.su==null)Y.su=this.buffering;let{includeKeys:X}=this;if(X)Y=Object.keys(Y).reduce((z,W)=>{return X.includes(W)&&(z[W]=Y[W]),z},{});let Q={baseUrl:Z.url};if(this.useHeaders){if(!Z.headers)Z.headers={};zq(Z.headers,Y,Q)}else Z.url=Vq(Z.url,Y,Q)}getNextFrag(Z){var Y;let J=(Y=this.hls.levels[Z.level])==null?void 0:Y.details;if(J){let X=Z.sn-J.startSN;return J.fragments[X+1]}return}getNextPart(Z){var Y;let{index:J,fragment:X}=Z,Q=(Y=this.hls.levels[X.level])==null||(Y=Y.details)==null?void 0:Y.partList;if(Q){let{sn:z}=X;for(let W=Q.length-1;W>=0;W--){let H=Q[W];if(H.index===J&&H.fragment.sn===z)return Q[W+1]}}return}getObjectType(Z){let{type:Y}=Z;if(Y==="subtitle")return f0.TIMED_TEXT;if(Z.sn==="initSegment")return f0.INIT;if(Y==="audio")return f0.AUDIO;if(Y==="main"){if(!this.hls.audioTracks.length)return f0.MUXED;return f0.VIDEO}return}getTopBandwidth(Z){let Y=0,J,X=this.hls;if(Z===f0.AUDIO)J=X.audioTracks;else{let Q=X.maxAutoLevel,z=Q>-1?Q+1:X.levels.length;J=X.levels.slice(0,z)}return J.forEach((Q)=>{if(Q.bitrate>Y)Y=Q.bitrate}),Y>0?Y:NaN}getBufferLength(Z){let Y=this.media,J=Z===f0.AUDIO?this.audioBuffer:this.videoBuffer;if(!J||!Y)return NaN;return t.bufferInfo(J,Y.currentTime,this.config.maxBufferHole).len*1000}createPlaylistLoader(){let{pLoader:Z}=this.config,Y=this.applyPlaylistData,J=Z||this.config.loader;return class{constructor(Q){this.loader=void 0,this.loader=new J(Q)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(Q,z,W){Y(Q),this.loader.load(Q,z,W)}}}createFragmentLoader(){let{fLoader:Z}=this.config,Y=this.applyFragmentData,J=Z||this.config.loader;return class{constructor(Q){this.loader=void 0,this.loader=new J(Q)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(Q,z,W){Y(Q),this.loader.load(Q,z,W)}}}}var Uq=300000;class $2 extends l0{constructor(Z){super("content-steering",Z.logger);this.hls=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this._pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=Z,this.registerListeners()}registerListeners(){let Z=this.hls;Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let Z=this.hls;if(!Z)return;Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.ERROR,this.onError,this)}pathways(){return(this.levels||[]).reduce((Z,Y)=>{if(Z.indexOf(Y.pathwayId)===-1)Z.push(Y.pathwayId);return Z},[])}get pathwayPriority(){return this._pathwayPriority}set pathwayPriority(Z){this.updatePathwayPriority(Z)}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){let Z=this.timeToLoad*1000-(performance.now()-this.updated);if(Z>0){this.scheduleRefresh(this.uri,Z);return}}this.loadSteeringManifest(this.uri)}}stopLoad(){if(this.started=!1,this.loader)this.loader.destroy(),this.loader=null;this.clearTimeout()}clearTimeout(){if(this.reloadTimer!==-1)self.clearTimeout(this.reloadTimer),this.reloadTimer=-1}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(Z){let Y=this.levels;if(Y)this.levels=Y.filter((J)=>J!==Z)}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(Z,Y){let{contentSteering:J}=Y;if(J===null)return;if(this.pathwayId=J.pathwayId,this.uri=J.uri,this.started)this.startLoad()}onManifestParsed(Z,Y){this.audioTracks=Y.audioTracks,this.subtitleTracks=Y.subtitleTracks}onError(Z,Y){let{errorAction:J}=Y;if((J==null?void 0:J.action)===S0.SendAlternateToPenaltyBox&&J.flags===u0.MoveAllAlternatesMatchingHost){let X=this.levels,Q=this._pathwayPriority,z=this.pathwayId;if(Y.context){let{groupId:W,pathwayId:H,type:G}=Y.context;if(W&&X)z=this.getPathwayForGroupId(W,G,z);else if(H)z=H}if(!(z in this.penalizedPathways))this.penalizedPathways[z]=performance.now();if(!Q&&X)Q=this.pathways();if(Q&&Q.length>1)this.updatePathwayPriority(Q),J.resolved=this.pathwayId!==z;if(Y.details===b.BUFFER_APPEND_ERROR&&!Y.fatal)J.resolved=!0;else if(!J.resolved)this.warn(`Could not resolve ${Y.details} ("${Y.error.message}") with content-steering for Pathway: ${z} levels: ${X?X.length:X} priorities: ${K0(Q)} penalized: ${K0(this.penalizedPathways)}`)}}filterParsedLevels(Z){this.levels=Z;let Y=this.getLevelsForPathway(this.pathwayId);if(Y.length===0){let J=Z[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${J}"`),Y=this.getLevelsForPathway(J),this.pathwayId=J}if(Y.length!==Z.length)this.log(`Found ${Y.length}/${Z.length} levels in Pathway "${this.pathwayId}"`);return Y}getLevelsForPathway(Z){if(this.levels===null)return[];return this.levels.filter((Y)=>Z===Y.pathwayId)}updatePathwayPriority(Z){this._pathwayPriority=Z;let Y,J=this.penalizedPathways,X=performance.now();Object.keys(J).forEach((Q)=>{if(X-J[Q]>Uq)delete J[Q]});for(let Q=0;Q0){this.log(`Setting Pathway to "${z}"`),this.pathwayId=z,CX(Y),this.hls.trigger(F.LEVELS_UPDATED,{levels:Y});let G=this.hls.levels[W];if(H&&G&&this.levels){if(G.attrs["STABLE-VARIANT-ID"]!==H.attrs["STABLE-VARIANT-ID"]&&G.bitrate!==H.bitrate)this.log(`Unstable Pathways change from bitrate ${H.bitrate} to ${G.bitrate}`);this.hls.nextLoadLevel=W}break}}}getPathwayForGroupId(Z,Y,J){let X=this.getLevelsForPathway(J).concat(this.levels||[]);for(let Q=0;Q{let{ID:z,"BASE-ID":W,"URI-REPLACEMENT":H}=Q;if(Y.some((q)=>q.pathwayId===z))return;let G=this.getLevelsForPathway(W).map((q)=>{let V=new R0(q.attrs);V["PATHWAY-ID"]=z;let U=V.AUDIO&&`${V.AUDIO}_clone_${z}`,N=V.SUBTITLES&&`${V.SUBTITLES}_clone_${z}`;if(U)J[V.AUDIO]=U,V.AUDIO=U;if(N)X[V.SUBTITLES]=N,V.SUBTITLES=N;let j=M2(q.uri,V["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",H),K=new $9({attrs:V,audioCodec:q.audioCodec,bitrate:q.bitrate,height:q.height,name:q.name,url:j,videoCodec:q.videoCodec,width:q.width});if(q.audioGroups)for(let B=1;B{this.log(`Loaded steering manifest: "${X}"`);let j=q.data;if((j==null?void 0:j.VERSION)!==1){this.log(`Steering VERSION ${j.VERSION} not supported!`);return}this.updated=performance.now(),this.timeToLoad=j.TTL;let{"RELOAD-URI":K,"PATHWAY-CLONES":B,"PATHWAY-PRIORITY":R}=j;if(K)try{this.uri=new self.URL(K,X).href}catch(O){this.enabled=!1,this.log(`Failed to parse Steering Manifest RELOAD-URI: ${K}`);return}if(this.scheduleRefresh(this.uri||U.url),B)this.clonePathways(B);let E={steeringManifest:j,url:X.toString()};if(this.hls.trigger(F.STEERING_MANIFEST_LOADED,E),R)this.updatePathwayPriority(R)},onError:(q,V,U,N)=>{if(this.log(`Error loading steering manifest: ${q.code} ${q.text} (${V.url})`),this.stopLoad(),q.code===410){this.enabled=!1,this.log(`Steering manifest ${V.url} no longer available`);return}let j=this.timeToLoad*1000;if(q.code===429){let K=this.loader;if(typeof(K==null?void 0:K.getResponseHeader)==="function"){let B=K.getResponseHeader("Retry-After");if(B)j=parseFloat(B)*1000}this.log(`Steering manifest ${V.url} rate limited`);return}this.scheduleRefresh(this.uri||V.url,j)},onTimeout:(q,V,U)=>{this.log(`Timeout loading steering manifest (${V.url})`),this.scheduleRefresh(this.uri||V.url)}};this.log(`Requesting steering manifest: ${X}`),this.loader.load(Q,H,G)}scheduleRefresh(Z,Y=this.timeToLoad*1000){this.clearTimeout(),this.reloadTimer=self.setTimeout(()=>{var J;let X=(J=this.hls)==null?void 0:J.media;if(X&&!X.ended){this.loadSteeringManifest(Z);return}this.scheduleRefresh(Z,this.timeToLoad*1000)},Y)}}function DJ(Z,Y,J,X){if(!Z)return;Object.keys(Y).forEach((Q)=>{let z=Z.filter((W)=>W.groupId===Q).map((W)=>{let H=U0({},W);return H.details=void 0,H.attrs=new R0(H.attrs),H.url=H.attrs.URI=M2(W.url,W.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",J),H.groupId=H.attrs["GROUP-ID"]=Y[Q],H.attrs["PATHWAY-ID"]=X,H});Z.push(...z)})}function M2(Z,Y,J,X){let{HOST:Q,PARAMS:z,[J]:W}=X,H;if(Y){if(H=W==null?void 0:W[Y],H)Z=H}let G=new self.URL(Z);if(Q&&!H)G.host=Q;if(z)Object.keys(z).sort().forEach((q)=>{if(q)G.searchParams.set(q,z[q])});return G.href}class E9 extends l0{constructor(Z){super("eme",Z.logger);this.hls=void 0,this.config=void 0,this.media=null,this.mediaResolved=void 0,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.mediaKeys=null,this.setMediaKeysQueue=E9.CDMCleanupPromise?[E9.CDMCleanupPromise]:[],this.bannedKeyIds={},this.onMediaEncrypted=(Y)=>{let{initDataType:J,initData:X}=Y,Q=`"${Y.type}" event: init data type: "${J}"`;if(this.debug(Q),X===null)return;if(!this.keyFormatPromise){let z=Object.keys(this.keySystemAccessPromises);if(!z.length)z=f9(this.config);let W=z.map(t1).filter((H)=>!!H);this.keyFormatPromise=this.getKeyFormatPromise(W)}this.keyFormatPromise.then((z)=>{let W=S7(z);if(J!=="sinf"||W!==F0.FAIRPLAY){this.log(`Ignoring "${Y.type}" event with init data type: "${J}" for selected key-system ${W}`);return}let H;try{let N=C0(new Uint8Array(X)),j=rZ(JSON.parse(N).sinf),K=rJ(j);if(!K)throw Error("'schm' box missing or not cbcs/cenc with schi > tenc");H=new Uint8Array(K.subarray(8,24))}catch(N){this.warn(`${Q} Failed to parse sinf: ${N}`);return}let G=T0(H),{keyIdToKeySessionPromise:q,mediaKeySessions:V}=this,U=q[G];for(let N=0;N{return this.generateRequestWithPreferredKeySession(j,J,X,"encrypted-event-key-match")}),U.catch((R)=>this.handleError(R));break}}if(!U)this.handleError(Error(`Key ID ${G} not encountered in playlist. Key-system sessions ${V.length}.`))}).catch((z)=>this.handleError(z))},this.onWaitingForKey=(Y)=>{this.log(`"${Y.type}" event`)},this.hls=Z,this.config=Z.config,this.registerListeners()}destroy(){this.onDestroying(),this.onMediaDetached();let Z=this.config;Z.requestMediaKeySystemAccessFunc=null,Z.licenseXhrSetup=Z.licenseResponseCallback=void 0,Z.drmSystems=Z.drmSystemOptions={},this.hls=this.config=this.keyIdToKeySessionPromise=null,this.onMediaEncrypted=this.onWaitingForKey=null}registerListeners(){this.hls.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(F.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(F.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(F.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.on(F.DESTROYING,this.onDestroying,this)}unregisterListeners(){this.hls.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(F.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(F.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(F.MANIFEST_LOADED,this.onManifestLoaded,this),this.hls.off(F.DESTROYING,this.onDestroying,this)}getLicenseServerUrl(Z){let{drmSystems:Y,widevineLicenseUrl:J}=this.config,X=Y==null?void 0:Y[Z];if(X)return X.licenseUrl;if(Z===F0.WIDEVINE&&J)return J}getLicenseServerUrlOrThrow(Z){let Y=this.getLicenseServerUrl(Z);if(Y===void 0)throw Error(`no license server URL configured for key-system "${Z}"`);return Y}getServerCertificateUrl(Z){let{drmSystems:Y}=this.config,J=Y==null?void 0:Y[Z];if(J)return J.serverCertificateUrl;else this.log(`No Server Certificate in config.drmSystems["${Z}"]`)}attemptKeySystemAccess(Z){let Y=this.hls.levels,J=(z,W,H)=>!!z&&H.indexOf(z)===W,X=Y.map((z)=>z.audioCodec).filter(J),Q=Y.map((z)=>z.videoCodec).filter(J);if(X.length+Q.length===0)Q.push("avc1.42e01e");return new Promise((z,W)=>{let H=(G)=>{let q=G.shift();this.getMediaKeysPromise(q,X,Q).then((V)=>z({keySystem:q,mediaKeys:V})).catch((V)=>{if(G.length)H(G);else if(V instanceof p0)W(V);else W(new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_NO_ACCESS,error:V,fatal:!0},V.message))})};H(Z)})}requestMediaKeySystemAccess(Z,Y){let{requestMediaKeySystemAccessFunc:J}=this.config;if(typeof J!=="function"){let X=`Configured requestMediaKeySystemAccess is not a function ${J}`;if(AX===null&&self.location.protocol==="http:")X=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`;return Promise.reject(Error(X))}return J(Z,Y)}getMediaKeysPromise(Z,Y,J){var X;let Q=q3(Z,Y,J,this.config.drmSystemOptions||{}),z=this.keySystemAccessPromises[Z],W=(X=z)==null?void 0:X.keySystemAccess;if(!W){this.log(`Requesting encrypted media "${Z}" key-system access with config: ${K0(Q)}`),W=this.requestMediaKeySystemAccess(Z,Q);let H=z=this.keySystemAccessPromises[Z]={keySystemAccess:W};return W.catch((G)=>{this.log(`Failed to obtain access to key-system "${Z}": ${G}`)}),W.then((G)=>{this.log(`Access for key-system "${G.keySystem}" obtained`);let q=this.fetchServerCertificate(Z);this.log(`Create media-keys for "${Z}"`);let V=H.mediaKeys=G.createMediaKeys().then((U)=>{return this.log(`Media-keys created for "${Z}"`),H.hasMediaKeys=!0,q.then((N)=>{if(N)return this.setMediaKeysServerCertificate(U,Z,N);return U})});return V.catch((U)=>{this.error(`Failed to create media-keys for "${Z}"}: ${U}`)}),V})}return W.then(()=>z.mediaKeys)}createMediaKeySessionContext({decryptdata:Z,keySystem:Y,mediaKeys:J}){this.log(`Creating key-system session "${Y}" keyId: ${T0(Z.keyId||[])} keyUri: ${Z.uri}`);let X=J.createSession(),Q={decryptdata:Z,keySystem:Y,mediaKeys:J,mediaKeysSession:X,keyStatus:"status-pending"};return this.mediaKeySessions.push(Q),Q}renewKeySession(Z){let Y=Z.decryptdata;if(Y.pssh){let J=this.createMediaKeySessionContext(Z),X=L7(Y),Q="cenc";this.keyIdToKeySessionPromise[X]=this.generateRequestWithPreferredKeySession(J,"cenc",Y.pssh.buffer,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(Z)}updateKeySession(Z,Y){let J=Z.mediaKeysSession;return this.log(`Updating key-session "${J.sessionId}" for keyId ${T0(Z.decryptdata.keyId||[])} } (data length: ${Y.byteLength})`),J.update(Y)}getSelectedKeySystemFormats(){return Object.keys(this.keySystemAccessPromises).map((Z)=>({keySystem:Z,hasMediaKeys:this.keySystemAccessPromises[Z].hasMediaKeys})).filter(({hasMediaKeys:Z})=>!!Z).map(({keySystem:Z})=>t1(Z)).filter((Z)=>!!Z)}getKeySystemAccess(Z){return this.getKeySystemSelectionPromise(Z).then(({keySystem:Y,mediaKeys:J})=>{return this.attemptSetMediaKeys(Y,J)})}selectKeySystem(Z){return new Promise((Y,J)=>{this.getKeySystemSelectionPromise(Z).then(({keySystem:X})=>{let Q=t1(X);if(Q)Y(Q);else J(Error(`Unable to find format for key-system "${X}"`))}).catch(J)})}selectKeySystemFormat(Z){let Y=Object.keys(Z.levelkeys||{});if(!this.keyFormatPromise)this.log(`Selecting key-system from fragment (sn: ${Z.sn} ${Z.type}: ${Z.level}) key formats ${Y.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(Y);return this.keyFormatPromise}getKeyFormatPromise(Z){let Y=f9(this.config),J=Z.map(S7).filter((X)=>!!X&&Y.indexOf(X)!==-1);return this.selectKeySystem(J)}getKeyStatus(Z){let{mediaKeySessions:Y}=this;for(let J=0;J{return this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${Z.frag.sn} ${Z.frag.type}: ${Z.frag.level} using key ${Q}`),this.attemptSetMediaKeys(H,G).then(()=>{return this.throwIfDestroyed(),this.createMediaKeySessionContext({keySystem:H,mediaKeys:G,decryptdata:Y})})}).then((H)=>{let q=Y.pssh?Y.pssh.buffer:null;return this.generateRequestWithPreferredKeySession(H,"cenc",q,"playlist-key")});return W.catch((H)=>this.handleError(H,Z.frag)),this.keyIdToKeySessionPromise[J]=W,W}return z.catch((W)=>{if(W instanceof p0){let H=H0({},W.data);if(this.getKeyStatus(Y)==="internal-error")H.decryptdata=Y;let G=new p0(H,W.message);this.handleError(G,Z.frag)}}),z}throwIfDestroyed(Z="Invalid state"){if(!this.hls)throw Error("invalid state")}handleError(Z,Y){if(!this.hls)return;if(Z instanceof p0){if(Y)Z.data.frag=Y;let J=Z.data.decryptdata;this.error(`${Z.message}${J?` (${T0(J.keyId||[])})`:""}`),this.hls.trigger(F.ERROR,Z.data)}else this.error(Z.message),this.hls.trigger(F.ERROR,{type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_NO_KEYS,error:Z,fatal:!0})}getKeySystemForKeyPromise(Z){let Y=L7(Z),J=this.keyIdToKeySessionPromise[Y];if(!J){let X=S7(Z.keyFormat),Q=X?[X]:f9(this.config);return this.attemptKeySystemAccess(Q)}return J}getKeySystemSelectionPromise(Z){if(!Z.length)Z=f9(this.config);if(Z.length===0)throw new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${K0({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(Z)}attemptSetMediaKeys(Z,Y){if(this.mediaResolved=void 0,this.mediaKeys===Y)return Promise.resolve();let J=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${Z}"`);let X=Promise.all(J).then(()=>{if(!this.media)return new Promise((Q,z)=>{this.mediaResolved=()=>{if(this.mediaResolved=void 0,!this.media)return z(Error("Attempted to set mediaKeys without media element attached"));this.mediaKeys=Y,this.media.setMediaKeys(Y).then(Q).catch(z)}});return this.media.setMediaKeys(Y)});return this.mediaKeys=Y,this.setMediaKeysQueue.push(X),X.then(()=>{this.log(`Media-keys set for "${Z}"`),J.push(X),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((Q)=>J.indexOf(Q)===-1)})}generateRequestWithPreferredKeySession(Z,Y,J,X){var Q;let z=(Q=this.config.drmSystems)==null||(Q=Q[Z.keySystem])==null?void 0:Q.generateRequest;if(z)try{let j=z.call(this.hls,Y,J,Z);if(!j)throw Error("Invalid response from configured generateRequest filter");Y=j.initDataType,J=j.initData?j.initData:null,Z.decryptdata.pssh=J?new Uint8Array(J):null}catch(j){if(this.warn(j.message),this.hls&&this.hls.config.debug)throw j}if(J===null)return this.log(`Skipping key-session request for "${X}" (no initData)`),Promise.resolve(Z);let W=L7(Z.decryptdata),H=Z.decryptdata.uri;this.log(`Generating key-session request for "${X}" keyId: ${W} URI: ${H} (init data type: ${Y} length: ${J.byteLength})`);let G=new tZ,q=Z._onmessage=(j)=>{let K=Z.mediaKeysSession;if(!K){G.emit("error",Error("invalid state"));return}let{messageType:B,message:R}=j;if(this.log(`"${B}" message event for session "${K.sessionId}" message size: ${R.byteLength}`),B==="license-request"||B==="license-renewal")this.renewLicense(Z,R).catch((E)=>{if(G.eventNames().length)G.emit("error",E);else this.handleError(E)});else if(B==="license-release"){if(Z.keySystem===F0.FAIRPLAY)this.updateKeySession(Z,LZ("acknowledged")).then(()=>this.removeSession(Z)).catch((E)=>this.handleError(E))}else this.warn(`unhandled media key message type "${B}"`)},V=(j,K)=>{K.keyStatus=j;let B;if(j.startsWith("usable"))G.emit("resolved");else if(j==="internal-error"||j==="output-restricted"||j==="output-downscaled")B=CJ(j,K.decryptdata);else if(j==="expired")B=Error(`key expired (keyId: ${W})`);else if(j==="released")B=Error("key released");else if(j==="status-pending");else this.warn(`unhandled key status change "${j}" (keyId: ${W})`);if(B)if(G.eventNames().length)G.emit("error",B);else this.handleError(B)},U=Z._onkeystatuseschange=(j)=>{if(!Z.mediaKeysSession){G.emit("error",Error("invalid state"));return}let B=this.getKeyStatuses(Z);if(!Object.keys(B).some((A)=>B[A]!=="status-pending"))return;if(B[W]==="expired"){this.log(`Expired key ${K0(B)} in key-session "${Z.mediaKeysSession.sessionId}"`),this.renewKeySession(Z);return}let E=B[W];if(E)V(E,Z);else{var O;let A=1000;Z.keyStatusTimeouts||(Z.keyStatusTimeouts={}),(O=Z.keyStatusTimeouts)[W]||(O[W]=self.setTimeout(()=>{if(!Z.mediaKeysSession||!this.mediaKeys)return;let $=this.getKeyStatus(Z.decryptdata);if($&&$!=="status-pending")return this.log(`No status for keyId ${W} in key-session "${Z.mediaKeysSession.sessionId}". Using session key-status ${$} from other session.`),V($,Z);this.log(`key status for ${W} in key-session "${Z.mediaKeysSession.sessionId}" timed out after 1000ms`),E="internal-error",V(E,Z)},1000)),this.log(`No status for keyId ${W} (${K0(B)}).`)}};k0(Z.mediaKeysSession,"message",q),k0(Z.mediaKeysSession,"keystatuseschange",U);let N=new Promise((j,K)=>{G.on("error",K),G.on("resolved",j)});return Z.mediaKeysSession.generateRequest(Y,J).then(()=>{this.log(`Request generated for key-session "${Z.mediaKeysSession.sessionId}" keyId: ${W} URI: ${H}`)}).catch((j)=>{throw new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_NO_SESSION,error:j,decryptdata:Z.decryptdata,fatal:!1},`Error generating key-session request: ${j}`)}).then(()=>N).catch((j)=>{return G.removeAllListeners(),this.removeSession(Z).then(()=>{throw j})}).then(()=>{return G.removeAllListeners(),Z})}getKeyStatuses(Z){let Y={};return Z.mediaKeysSession.keyStatuses.forEach((J,X)=>{if(typeof X==="string"&&typeof J==="object"){let W=X;X=J,J=W}let Q="buffer"in X?new Uint8Array(X.buffer,X.byteOffset,X.byteLength):new Uint8Array(X);if(Z.keySystem===F0.PLAYREADY&&Q.length===16){let W=T0(Q);Y[W]=J,FX(Q)}let z=T0(Q);if(J==="internal-error")this.bannedKeyIds[z]=J;this.log(`key status change "${J}" for keyStatuses keyId: ${z} key-session "${Z.mediaKeysSession.sessionId}"`),Y[z]=J}),Y}fetchServerCertificate(Z){let Y=this.config,X=new Y.loader(Y),Q=this.getServerCertificateUrl(Z);if(!Q)return Promise.resolve();return this.log(`Fetching server certificate for "${Z}"`),new Promise((z,W)=>{let H={responseType:"arraybuffer",url:Q},G=Y.certLoadPolicy.default,q={loadPolicy:G,timeout:G.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},V={onSuccess:(U,N,j,K)=>{z(U.data)},onError:(U,N,j,K)=>{W(new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:j,response:H0({url:H.url,data:void 0},U)},`"${Z}" certificate request failed (${Q}). Status: ${U.code} (${U.text})`))},onTimeout:(U,N,j)=>{W(new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:j,response:{url:H.url,data:void 0}},`"${Z}" certificate request timed out (${Q})`))},onAbort:(U,N,j)=>{W(Error("aborted"))}};X.load(H,q,V)})}setMediaKeysServerCertificate(Z,Y,J){return new Promise((X,Q)=>{Z.setServerCertificate(J).then((z)=>{this.log(`setServerCertificate ${z?"success":"not supported by CDM"} (${J.byteLength}) on "${Y}"`),X(Z)}).catch((z)=>{Q(new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:z,fatal:!0},z.message))})})}renewLicense(Z,Y){return this.requestLicense(Z,new Uint8Array(Y)).then((J)=>{return this.updateKeySession(Z,new Uint8Array(J)).catch((X)=>{throw new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_SESSION_UPDATE_FAILED,decryptdata:Z.decryptdata,error:X,fatal:!1},X.message)})})}unpackPlayReadyKeyMessage(Z,Y){let J=String.fromCharCode.apply(null,new Uint16Array(Y.buffer));if(!J.includes("PlayReadyKeyMessage"))return Z.setRequestHeader("Content-Type","text/xml; charset=utf-8"),Y;let X=new DOMParser().parseFromString(J,"application/xml"),Q=X.querySelectorAll("HttpHeader");if(Q.length>0){let q;for(let V=0,U=Q.length;V in key message");return LZ(atob(G))}setupLicenseXHR(Z,Y,J,X){let Q=this.config.licenseXhrSetup;if(!Q)return Z.open("POST",Y,!0),Promise.resolve({xhr:Z,licenseChallenge:X});return Promise.resolve().then(()=>{if(!J.decryptdata)throw Error("Key removed");return Q.call(this.hls,Z,Y,J,X)}).catch((z)=>{if(!J.decryptdata)throw z;return Z.open("POST",Y,!0),Q.call(this.hls,Z,Y,J,X)}).then((z)=>{if(!Z.readyState)Z.open("POST",Y,!0);return{xhr:Z,licenseChallenge:z?z:X}})}requestLicense(Z,Y){let J=this.config.keyLoadPolicy.default;return new Promise((X,Q)=>{let z=this.getLicenseServerUrlOrThrow(Z.keySystem);this.log(`Sending license request to URL: ${z}`);let W=new XMLHttpRequest;if(W.responseType="arraybuffer",W.onreadystatechange=()=>{if(!this.hls||!Z.mediaKeysSession)return Q(Error("invalid state"));if(W.readyState===4)if(W.status===200){this._requestLicenseFailureCount=0;let H=W.response;this.log(`License received ${H instanceof ArrayBuffer?H.byteLength:H}`);let G=this.config.licenseResponseCallback;if(G)try{H=G.call(this.hls,W,z,Z)}catch(q){this.error(q)}X(H)}else{let H=J.errorRetry,G=H?H.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>G||W.status>=400&&W.status<500)Q(new p0({type:n.KEY_SYSTEM_ERROR,details:b.KEY_SYSTEM_LICENSE_REQUEST_FAILED,decryptdata:Z.decryptdata,fatal:!0,networkDetails:W,response:{url:z,data:void 0,code:W.status,text:W.statusText}},`License Request XHR failed (${z}). Status: ${W.status} (${W.statusText})`));else{let q=G-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${q} attempts left`),this.requestLicense(Z,Y).then(X,Q)}}},Z.licenseXhr&&Z.licenseXhr.readyState!==XMLHttpRequest.DONE)Z.licenseXhr.abort();Z.licenseXhr=W,this.setupLicenseXHR(W,z,Z,Y).then(({xhr:H,licenseChallenge:G})=>{if(Z.keySystem==F0.PLAYREADY)G=this.unpackPlayReadyKeyMessage(H,G);H.send(G)}).catch(Q)})}onDestroying(){this.unregisterListeners(),this._clear()}onMediaAttached(Z,Y){if(!this.config.emeEnabled)return;let J=Y.media;this.media=J,k0(J,"encrypted",this.onMediaEncrypted),k0(J,"waitingforkey",this.onWaitingForKey);let X=this.mediaResolved;if(X)X();else this.mediaKeys=J.mediaKeys}onMediaDetached(){let Z=this.media;if(Z)m0(Z,"encrypted",this.onMediaEncrypted),m0(Z,"waitingforkey",this.onWaitingForKey),this.media=null,this.mediaKeys=null}_clear(){var Z;this._requestLicenseFailureCount=0,this.keyIdToKeySessionPromise={},this.bannedKeyIds={};let Y=this.mediaResolved;if(Y)Y();if(!this.mediaKeys&&!this.mediaKeySessions.length)return;let J=this.media,X=this.mediaKeySessions.slice();this.mediaKeySessions=[],this.mediaKeys=null,g8.clearKeyUriToKeyIdMap();let Q=X.length;E9.CDMCleanupPromise=Promise.all(X.map((z)=>this.removeSession(z)).concat((J==null||(Z=J.setMediaKeys(null))==null?void 0:Z.catch((z)=>{if(this.log(`Could not clear media keys: ${z}`),!this.hls)return;this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,fatal:!1,error:Error(`Could not clear media keys: ${z}`)})}))||Promise.resolve())).catch((z)=>{if(this.log(`Could not close sessions and clear media keys: ${z}`),!this.hls)return;this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:Error(`Could not close sessions and clear media keys: ${z}`)})}).then(()=>{if(Q)this.log("finished closing key sessions and clearing media keys")})}onManifestLoading(){this._clear()}onManifestLoaded(Z,{sessionKeys:Y}){if(!Y||!this.config.emeEnabled)return;if(!this.keyFormatPromise){let J=Y.reduce((X,Q)=>{if(X.indexOf(Q.keyFormat)===-1)X.push(Q.keyFormat);return X},[]);this.log(`Selecting key-system from session-keys ${J.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(J)}}removeSession(Z){let{mediaKeysSession:Y,licenseXhr:J,decryptdata:X}=Z;if(Y){if(this.log(`Remove licenses and keys and close session "${Y.sessionId}" keyId: ${T0((X==null?void 0:X.keyId)||[])}`),Z._onmessage)Y.removeEventListener("message",Z._onmessage),Z._onmessage=void 0;if(Z._onkeystatuseschange)Y.removeEventListener("keystatuseschange",Z._onkeystatuseschange),Z._onkeystatuseschange=void 0;if(J&&J.readyState!==XMLHttpRequest.DONE)J.abort();Z.mediaKeysSession=Z.decryptdata=Z.licenseXhr=void 0;let Q=this.mediaKeySessions.indexOf(Z);if(Q>-1)this.mediaKeySessions.splice(Q,1);let{keyStatusTimeouts:z}=Z;if(z)Object.keys(z).forEach((G)=>self.clearTimeout(z[G]));let{drmSystemOptions:W}=this.config;return(U3(W)?new Promise((G,q)=>{self.setTimeout(()=>q(Error("MediaKeySession.remove() timeout")),8000),Y.remove().then(G).catch(q)}):Promise.resolve()).catch((G)=>{if(this.log(`Could not remove session: ${G}`),!this.hls)return;this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,fatal:!1,error:Error(`Could not remove session: ${G}`)})}).then(()=>{return Y.close()}).catch((G)=>{if(this.log(`Could not close session: ${G}`),!this.hls)return;this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:Error(`Could not close session: ${G}`)})})}return Promise.resolve()}}E9.CDMCleanupPromise=void 0;function L7(Z){if(!Z)throw Error("Could not read keyId of undefined decryptdata");if(Z.keyId===null)throw Error("keyId is null");return T0(Z.keyId)}function jq(Z,Y){if(Z.keyId&&Y.mediaKeysSession.keyStatuses.has(Z.keyId))return Y.mediaKeysSession.keyStatuses.get(Z.keyId);if(Z.matches(Y.decryptdata))return Y.keyStatus;return}class p0 extends Error{constructor(Z,Y){super(Y);this.data=void 0,Z.error||(Z.error=Error(Y)),this.data=Z,Z.err=Z.error}}function CJ(Z,Y){let J=Z==="output-restricted",X=J?b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:b.KEY_SYSTEM_STATUS_INTERNAL_ERROR;return new p0({type:n.KEY_SYSTEM_ERROR,details:X,fatal:!1,decryptdata:Y},J?"HDCP level output restricted":`key status changed to "${Z}"`)}class w2{constructor(Z){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=Z,this.registerListeners()}setStreamController(Z){this.streamController=Z}registerListeners(){this.hls.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(F.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListeners(){this.hls.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(F.MEDIA_DETACHING,this.onMediaDetaching,this)}destroy(){if(this.timer)clearInterval(this.timer);this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(Z,Y){let J=this.hls.config;if(J.capLevelOnFPSDrop){let X=Y.media instanceof self.HTMLVideoElement?Y.media:null;if(this.media=X,X&&typeof X.getVideoPlaybackQuality==="function")this.isVideoPlaybackQualityAvailable=!0;self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),J.fpsDroppedMonitoringPeriod)}}onMediaDetaching(){this.media=null}checkFPS(Z,Y,J){let X=performance.now();if(Y){if(this.lastTime){let Q=X-this.lastTime,z=J-this.lastDroppedFrames,W=Y-this.lastDecodedFrames,H=1000*z/Q,G=this.hls;if(G.trigger(F.FPS_DROP,{currentDropped:z,currentDecoded:W,totalDroppedFrames:J}),H>0){if(z>G.config.fpsDroppedMonitoringThreshold*W){let q=G.currentLevel;if(G.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+q),q>0&&(G.autoLevelCapping===-1||G.autoLevelCapping>=q))q=q-1,G.trigger(F.FPS_DROP_LEVEL_CAPPING,{level:q,droppedLevel:G.currentLevel}),G.autoLevelCapping=q,this.streamController.nextLevelSwitch()}}}this.lastTime=X,this.lastDroppedFrames=J,this.lastDecodedFrames=Y}}checkFPSInterval(){let Z=this.media;if(Z)if(this.isVideoPlaybackQualityAvailable){let Y=Z.getVideoPlaybackQuality();this.checkFPS(Z,Y.totalVideoFrames,Y.droppedVideoFrames)}else this.checkFPS(Z,Z.webkitDecodedFrameCount,Z.webkitDroppedFrameCount)}}function L2(Z,Y){let J;try{J=new Event("addtrack")}catch(X){J=document.createEvent("Event"),J.initEvent("addtrack",!1,!1)}J.track=Z,Y.dispatchEvent(J)}function _2(Z,Y){let J=Z.mode;if(J==="disabled")Z.mode="hidden";if(Z.cues&&!Z.cues.getCueById(Y.id))try{if(Z.addCue(Y),!Z.cues.getCueById(Y.id))throw Error(`addCue is failed for: ${Y}`)}catch(X){q0.debug(`[texttrack-utils]: ${X}`);try{let Q=new self.TextTrackCue(Y.startTime,Y.endTime,Y.text);Q.id=Y.id,Z.addCue(Q)}catch(Q){q0.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${Q}`)}}if(J==="disabled")Z.mode=J}function K9(Z,Y){let J=Z.mode;if(J==="disabled")Z.mode="hidden";if(Z.cues)for(let X=Z.cues.length;X--;){if(Y)Z.cues[X].removeEventListener("enter",Y);Z.removeCue(Z.cues[X])}if(J==="disabled")Z.mode=J}function hZ(Z,Y,J,X){let Q=Z.mode;if(Q==="disabled")Z.mode="hidden";if(Z.cues&&Z.cues.length>0){let z=Kq(Z.cues,Y,J);for(let W=0;WZ[J].endTime)return-1;let X=0,Q=J,z;while(X<=Q)if(z=Math.floor((Q+X)/2),YZ[z].startTime&&X-1)for(let z=Q,W=Z.length;z=Y&&H.endTime<=J)X.push(H);else if(H.startTime>J)return X}return X}function v7(Z){let Y=[];for(let J=0;Jthis.pollTrackChange(0),this.onTextTracksChanged=()=>{if(!this.useTextTrackPolling)self.clearInterval(this.subtitlePollingInterval);if(!this.media||!this.hls.config.renderTextTracksNatively)return;let Y=null,J=v7(this.media.textTracks);for(let Q=0;Q-1)this.toggleTrackModes()}registerListeners(){let{hls:Z}=this;Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.LEVEL_LOADING,this.onLevelLoading,this),Z.on(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.on(F.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.LEVEL_LOADING,this.onLevelLoading,this),Z.off(F.LEVEL_SWITCHING,this.onLevelSwitching,this),Z.off(F.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),Z.off(F.ERROR,this.onError,this)}onMediaAttached(Z,Y){if(this.media=Y.media,!this.media)return;if(this.queuedDefaultTrack>-1)this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1;if(this.useTextTrackPolling=!(this.media.textTracks&&("onchange"in this.media.textTracks)),this.useTextTrackPolling)this.pollTrackChange(500);else this.media.textTracks.addEventListener("change",this.asyncPollTrackChange)}pollTrackChange(Z){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,Z)}onMediaDetaching(Z,Y){let J=this.media;if(!J)return;let X=!!Y.transferMedia;if(self.clearInterval(this.subtitlePollingInterval),!this.useTextTrackPolling)J.textTracks.removeEventListener("change",this.asyncPollTrackChange);if(this.trackId>-1)this.queuedDefaultTrack=this.trackId;if(this.subtitleTrack=-1,this.media=null,X)return;v7(J.textTracks).forEach((z)=>{K9(z)})}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(Z,Y){this.tracks=Y.subtitleTracks}onSubtitleTrackLoaded(Z,Y){let{id:J,groupId:X,details:Q}=Y,z=this.tracksInGroup[J];if(!z||z.groupId!==X){this.warn(`Subtitle track with id:${J} and group:${X} not found in active group ${z==null?void 0:z.groupId}`);return}let W=z.details;if(z.details=Y.details,this.log(`Subtitle track ${J} "${z.name}" lang:${z.lang} group:${X} loaded [${Q.startSN}-${Q.endSN}]`),J===this.trackId)this.playlistLoaded(J,Y,W)}onLevelLoading(Z,Y){this.switchLevel(Y.level)}onLevelSwitching(Z,Y){this.switchLevel(Y.level)}switchLevel(Z){let Y=this.hls.levels[Z];if(!Y)return;let J=Y.subtitleGroups||null,X=this.groupIds,Q=this.currentTrack;if(!J||(X==null?void 0:X.length)!==(J==null?void 0:J.length)||J!=null&&J.some((z)=>(X==null?void 0:X.indexOf(z))===-1)){this.groupIds=J,this.trackId=-1,this.currentTrack=null;let z=this.tracks.filter((q)=>!J||J.indexOf(q.groupId)!==-1);if(z.length){if(this.selectDefaultTrack&&!z.some((q)=>q.default))this.selectDefaultTrack=!1;z.forEach((q,V)=>{q.id=V})}else if(!Q&&!this.tracksInGroup.length)return;this.tracksInGroup=z;let W=this.hls.config.subtitlePreference;if(!Q&&W){this.selectDefaultTrack=!1;let q=B8(W,z);if(q>-1)Q=z[q];else{let V=B8(W,this.tracks);Q=this.tracks[V]}}let H=this.findTrackId(Q);if(H===-1&&Q)H=this.findTrackId(null);let G={subtitleTracks:z};if(this.log(`Updating subtitle tracks, ${z.length} track(s) found in "${J==null?void 0:J.join(",")}" group-id`),this.hls.trigger(F.SUBTITLE_TRACKS_UPDATED,G),H!==-1&&this.trackId===-1)this.setSubtitleTrack(H)}}findTrackId(Z){let Y=this.tracksInGroup,J=this.selectDefaultTrack;for(let X=0;X-1){let Q=this.tracksInGroup[X];return this.setSubtitleTrack(X),Q}else if(J)return null;else{let Q=B8(Z,Y);if(Q>-1)return Y[Q]}}}return null}loadPlaylist(Z){if(super.loadPlaylist(),this.shouldLoadPlaylist(this.currentTrack))this.scheduleLoading(this.currentTrack,Z)}loadingPlaylist(Z,Y){super.loadingPlaylist(Z,Y);let{id:J,groupId:X}=Z,Q=this.getUrlWithDirectives(Z.url,Y),z=Z.details,W=z==null?void 0:z.age;this.log(`Loading subtitle ${J} "${Z.name}" lang:${Z.lang} group:${X}${(Y==null?void 0:Y.msn)!==void 0?" at sn "+Y.msn+" part "+Y.part:""}${W&&z.live?" age "+W.toFixed(1)+(z.type?" "+z.type||"":""):""} ${Q}`),this.hls.trigger(F.SUBTITLE_TRACK_LOADING,{url:Q,id:J,groupId:X,deliveryDirectives:Y||null,track:Z})}toggleTrackModes(){let{media:Z}=this;if(!Z)return;let Y=v7(Z.textTracks),J=this.currentTrack,X;if(J){if(X=Y.filter((Q)=>IZ(J,Q))[0],!X)this.warn(`Unable to find subtitle TextTrack with name "${J.name}" and language "${J.lang}"`)}if([].slice.call(Y).forEach((Q)=>{if(Q.mode!=="disabled"&&Q!==X)Q.mode="disabled"}),X){let Q=this.subtitleDisplay?"showing":"hidden";if(X.mode!==Q)X.mode=Q}}setSubtitleTrack(Z){let Y=this.tracksInGroup;if(!this.media){this.queuedDefaultTrack=Z;return}if(Z<-1||Z>=Y.length||!m(Z)){this.warn(`Invalid subtitle track id: ${Z}`);return}this.selectDefaultTrack=!1;let J=this.currentTrack,X=Y[Z]||null;if(this.trackId=Z,this.currentTrack=X,this.toggleTrackModes(),!X){this.hls.trigger(F.SUBTITLE_TRACK_SWITCH,{id:Z});return}let Q=!!X.details&&!X.details.live;if(Z===this.trackId&&X===J&&Q)return;this.log(`Switching to subtitle-track ${Z}`+(X?` "${X.name}" lang:${X.lang} group:${X.groupId}`:""));let{id:z,groupId:W="",name:H,type:G,url:q}=X;this.hls.trigger(F.SUBTITLE_TRACK_SWITCH,{id:z,groupId:W,name:H,type:G,url:q});let V=this.switchParams(X.url,J==null?void 0:J.details,X.details);this.loadPlaylist(V)}}function Bq(){try{return crypto.randomUUID()}catch(Z){try{let Y=URL.createObjectURL(new Blob),J=Y.toString();return URL.revokeObjectURL(Y),J.slice(J.lastIndexOf("/")+1)}catch(Y){let J=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(Q)=>{let z=(J+Math.random()*16)%16|0;return J=Math.floor(J/16),(Q=="x"?z:z&3|8).toString(16)})}}}function c9(Z){let Y=5381,J=Z.length;while(J)Y=Y*33^Z.charCodeAt(--J);return(Y>>>0).toString()}var A9=0.025,s7=function(Z){return Z[Z.Point=0]="Point",Z[Z.Range=1]="Range",Z}({});function Rq(Z,Y,J){return`${Z.identifier}-${J+1}-${c9(Y)}`}class C2{constructor(Z,Y){this.base=void 0,this._duration=null,this._timelineStart=null,this.appendInPlaceDisabled=void 0,this.appendInPlaceStarted=void 0,this.dateRange=void 0,this.hasPlayed=!1,this.cumulativeDuration=0,this.resumeOffset=NaN,this.playoutLimit=NaN,this.restrictions={skip:!1,jump:!1},this.snapOptions={out:!1,in:!1},this.assetList=[],this.assetListLoader=void 0,this.assetListResponse=null,this.resumeAnchor=void 0,this.error=void 0,this.resetOnResume=void 0,this.base=Y,this.dateRange=Z,this.setDateRange(Z)}setDateRange(Z){this.dateRange=Z,this.resumeOffset=Z.attr.optionalFloat("X-RESUME-OFFSET",this.resumeOffset),this.playoutLimit=Z.attr.optionalFloat("X-PLAYOUT-LIMIT",this.playoutLimit),this.restrictions=Z.attr.enumeratedStringList("X-RESTRICT",this.restrictions),this.snapOptions=Z.attr.enumeratedStringList("X-SNAP",this.snapOptions)}reset(){var Z;if(this.appendInPlaceStarted=!1,(Z=this.assetListLoader)==null||Z.destroy(),this.assetListLoader=void 0,!this.supplementsPrimary)this.assetListResponse=null,this.assetList=[],this._duration=null}isAssetPastPlayoutLimit(Z){var Y;if(Z>0&&Z>=this.assetList.length)return!0;let J=this.playoutLimit;if(Z<=0||isNaN(J))return!1;if(J===0)return!0;return(((Y=this.assetList[Z])==null?void 0:Y.startOffset)||0)>J}findAssetIndex(Z){return this.assetList.indexOf(Z)}get identifier(){return this.dateRange.id}get startDate(){return this.dateRange.startDate}get startTime(){let Z=this.dateRange.startTime;if(this.snapOptions.out){let Y=this.dateRange.tagAnchor;if(Y)return GZ(Z,Y)}return Z}get startOffset(){return this.cue.pre?0:this.startTime}get startIsAligned(){if(this.startTime===0||this.snapOptions.out)return!0;let Z=this.dateRange.tagAnchor;if(Z){let Y=this.dateRange.startTime,J=GZ(Y,Z);return Y-J<0.1}return!1}get resumptionOffset(){let Z=this.resumeOffset,Y=m(Z)?Z:this.duration;return this.cumulativeDuration+Y}get resumeTime(){let Z=this.startOffset+this.resumptionOffset;if(this.snapOptions.in){let Y=this.resumeAnchor;if(Y)return GZ(Z,Y)}return Z}get appendInPlace(){if(this.appendInPlaceStarted)return!0;if(this.appendInPlaceDisabled)return!1;if(!this.cue.once&&!this.cue.pre&&this.startIsAligned&&(isNaN(this.playoutLimit)&&isNaN(this.resumeOffset)||this.resumeOffset&&this.duration&&Math.abs(this.resumeOffset-this.duration)0||this.assetListResponse!==null}toString(){return Fq(this)}}function GZ(Z,Y){return Z-Y.start":Z.cue.post?"":""}${Z.timelineStart.toFixed(2)}-${Z.resumeTime.toFixed(2)}]`}function N9(Z){let Y=Z.timelineStart,J=Z.duration||0;return`["${Z.identifier}" ${Y.toFixed(2)}-${(Y+J).toFixed(2)}]`}class b2{constructor(Z,Y,J,X){this.hls=void 0,this.interstitial=void 0,this.assetItem=void 0,this.tracks=null,this.hasDetails=!1,this.mediaAttached=null,this._currentTime=void 0,this._bufferedEosTime=void 0,this.checkPlayout=()=>{if(this.reachedPlayout(this.currentTime)&&this.hls)this.hls.trigger(F.PLAYOUT_LIMIT_REACHED,{})};let Q=this.hls=new Z(Y);this.interstitial=J,this.assetItem=X;let z=()=>{this.hasDetails=!0};Q.once(F.LEVEL_LOADED,z),Q.once(F.AUDIO_TRACK_LOADED,z),Q.once(F.SUBTITLE_TRACK_LOADED,z),Q.on(F.MEDIA_ATTACHING,(W,{media:H})=>{if(this.removeMediaListeners(),this.mediaAttached=H,this.interstitial.playoutLimit){if(H.addEventListener("timeupdate",this.checkPlayout),this.appendInPlace)Q.on(F.BUFFER_APPENDED,()=>{let q=this.bufferedEnd;if(this.reachedPlayout(q))this._bufferedEosTime=q,Q.trigger(F.BUFFERED_TO_END,void 0)})}})}get appendInPlace(){return this.interstitial.appendInPlace}loadSource(){let Z=this.hls;if(!Z)return;if(!Z.url){let Y=this.assetItem.uri;try{Y=P2(Y,Z.config.primarySessionId||"").href}catch(J){}Z.loadSource(Y)}else if(Z.levels.length&&!Z.started)Z.startLoad(-1,!0)}bufferedInPlaceToEnd(Z){var Y;if(!this.appendInPlace)return!1;if((Y=this.hls)!=null&&Y.bufferedToEnd)return!0;if(!Z)return!1;let J=Math.min(this._bufferedEosTime||1/0,this.duration),X=this.timelineOffset,Q=t.bufferInfo(Z,X,0);return this.getAssetTime(Q.end)>=J-0.02}reachedPlayout(Z){let J=this.interstitial.playoutLimit;return this.startOffset+Z>=J}get destroyed(){var Z;return!((Z=this.hls)!=null&&Z.userConfig)}get assetId(){return this.assetItem.identifier}get interstitialId(){return this.assetItem.parentIdentifier}get media(){var Z;return((Z=this.hls)==null?void 0:Z.media)||null}get bufferedEnd(){let Z=this.media||this.mediaAttached;if(!Z){if(this._bufferedEosTime)return this._bufferedEosTime;return this.currentTime}let Y=t.bufferInfo(Z,Z.currentTime,0.001);return this.getAssetTime(Y.end)}get currentTime(){let Z=this.media||this.mediaAttached;if(!Z)return this._currentTime||0;return this.getAssetTime(Z.currentTime)}get duration(){let Z=this.assetItem.duration;if(!Z)return 0;let Y=this.interstitial.playoutLimit;if(Y){let J=Y-this.startOffset;if(J>0&&J0.000011111111111111112&&this.hls){if(this.hasDetails)throw Error("Cannot set timelineOffset after playlists are loaded");this.hls.config.timelineOffset=Z}}}getAssetTime(Z){let Y=this.timelineOffset,J=this.duration;return Math.min(Math.max(0,Z-Y),J)}removeMediaListeners(){let Z=this.mediaAttached;if(Z)this._currentTime=Z.currentTime,this.bufferSnapShot(),Z.removeEventListener("timeupdate",this.checkPlayout)}bufferSnapShot(){if(this.mediaAttached){var Z;if((Z=this.hls)!=null&&Z.bufferedToEnd)this._bufferedEosTime=this.bufferedEnd}}destroy(){if(this.removeMediaListeners(),this.hls)this.hls.destroy();this.hls=null,this.tracks=this.mediaAttached=this.checkPlayout=null}attachMedia(Z){var Y;this.loadSource(),(Y=this.hls)==null||Y.attachMedia(Z)}detachMedia(){var Z;this.removeMediaListeners(),this.mediaAttached=null,(Z=this.hls)==null||Z.detachMedia()}resumeBuffering(){var Z;(Z=this.hls)==null||Z.resumeBuffering()}pauseBuffering(){var Z;(Z=this.hls)==null||Z.pauseBuffering()}transferMedia(){var Z;return this.bufferSnapShot(),((Z=this.hls)==null?void 0:Z.transferMedia())||null}resetDetails(){let Z=this.hls;if(Z&&this.hasDetails){Z.stopLoad();let Y=(J)=>delete J.details;Z.levels.forEach(Y),Z.allAudioTracks.forEach(Y),Z.allSubtitleTracks.forEach(Y),this.hasDetails=!1}}on(Z,Y,J){var X;(X=this.hls)==null||X.on(Z,Y)}once(Z,Y,J){var X;(X=this.hls)==null||X.once(Z,Y)}off(Z,Y,J){var X;(X=this.hls)==null||X.off(Z,Y)}toString(){var Z;return`HlsAssetPlayer: ${N9(this.assetItem)} ${(Z=this.hls)==null?void 0:Z.sessionId} ${this.appendInPlace?"append-in-place":""}`}}var PJ=0.033;class I2 extends l0{constructor(Z,Y){super("interstitials-sched",Y);this.onScheduleUpdate=void 0,this.eventMap={},this.events=null,this.items=null,this.durations={primary:0,playout:0,integrated:0},this.onScheduleUpdate=Z}destroy(){this.reset(),this.onScheduleUpdate=null}reset(){if(this.eventMap={},this.setDurations(0,0,0),this.events)this.events.forEach((Z)=>Z.reset());this.events=this.items=null}resetErrorsInRange(Z,Y){if(this.events)return this.events.reduce((J,X)=>{if(Z<=X.startOffset&&Y>X.startOffset)return delete X.error,J+1;return J},0);return 0}get duration(){let Z=this.items;return Z?Z[Z.length-1].end:0}get length(){return this.items?this.items.length:0}getEvent(Z){return Z?this.eventMap[Z]||null:null}hasEvent(Z){return Z in this.eventMap}findItemIndex(Z,Y){if(Z.event)return this.findEventIndex(Z.event.identifier);let J=-1;if(Z.nextEvent)J=this.findEventIndex(Z.nextEvent.identifier)-1;else if(Z.previousEvent)J=this.findEventIndex(Z.previousEvent.identifier)+1;let X=this.items;if(X){if(!X[J]){if(Y===void 0)Y=Z.start;J=this.findItemIndexAtTime(Y)}while(J>=0&&(Q=X[J])!=null&&Q.event){var Q;J--}}return J}findItemIndexAtTime(Z,Y){let J=this.items;if(J)for(let X=0;XQ.start&&Z1)for(let Q=0;QW&&(Y!W.includes(G.identifier)):[];if(z.length)z.sort((G,q)=>{let V=G.cue.pre,U=G.cue.post,N=q.cue.pre,j=q.cue.post;if(V&&!N)return-1;if(N&&!V)return 1;if(U&&!j)return 1;if(j&&!U)return-1;if(!V&&!N&&!U&&!j){let K=G.startTime,B=q.startTime;if(K!==B)return K-B}return G.dateRange.tagOrder-q.dateRange.tagOrder});this.events=z,H.forEach((G)=>{this.removeEvent(G)}),this.updateSchedule(Z,H)}updateSchedule(Z,Y=[],J=!1){let X=this.events||[];if(X.length||Y.length||this.length<2){let Q=this.items,z=this.parseSchedule(X,Z);if(J||Y.length||(Q==null?void 0:Q.length)!==z.length||z.some((H,G)=>{return Math.abs(H.playout.start-Q[G].playout.start)>0.005||Math.abs(H.playout.end-Q[G].playout.end)>0.005}))this.items=z,this.onScheduleUpdate(Y,Q)}}parseDateRanges(Z,Y,J){let X=[],Q=Object.keys(Z);for(let z=0;z!H.error&&!(H.cue.once&&H.hasPlayed)),Z.length){this.resolveOffsets(Z,Y);let H=0,G=0;if(Z.forEach((q,V)=>{let U=q.cue.pre,N=q.cue.post,j=Z[V-1]||null,K=q.appendInPlace,B=N?Q:q.startOffset,R=q.duration,E=q.timelineOccupancy===s7.Range?R:0,O=q.resumptionOffset,A=(j==null?void 0:j.startTime)===B,$=B+q.cumulativeDuration,L=K?$+R:B+O;if(U||!N&&B<=0){let w=G;G+=E,q.timelineStart=$;let _=z;z+=R,J.push({event:q,start:$,end:L,playout:{start:_,end:z},integrated:{start:w,end:G}})}else if(B<=Q){if(!A){let C=B-H;if(C>PJ){let D=H,I=G;G+=C;let h=z;z+=C;let y={previousEvent:Z[V-1]||null,nextEvent:q,start:D,end:D+C,playout:{start:h,end:z},integrated:{start:I,end:G}};J.push(y)}else if(C>0&&j)j.cumulativeDuration+=C,J[J.length-1].end=B}if(N)L=$;q.timelineStart=$;let w=G;G+=E;let _=z;z+=R,J.push({event:q,start:$,end:L,playout:{start:_,end:z},integrated:{start:w,end:G}})}else return;let M=q.resumeTime;if(N||M>Q)H=Q;else H=M}),H{let G=W.cue.pre,q=W.cue.post,V=G?0:q?X:W.startTime;if(this.updateAssetDurations(W),z===V)W.cumulativeDuration=Q;else Q=0,z=V;if(!q&&W.snapOptions.in)W.resumeAnchor=J9(null,J.fragments,W.startOffset+W.resumptionOffset,0,0)||void 0;if(W.appendInPlace&&!W.appendInPlaceStarted){if(!this.primaryCanResumeInPlaceAt(W,Y))W.appendInPlace=!1}if(!W.appendInPlace&&H+1A9)return this.log(`"${Z.identifier}" resumption ${J} not aligned with estimated timeline end ${X}`),!1;return!Object.keys(Y).some((z)=>{let W=Y[z].details,H=W.edge;if(J>=H)return this.log(`"${Z.identifier}" resumption ${J} past ${z} playlist end ${H}`),!1;let G=J9(null,W.fragments,J);if(!G)return this.log(`"${Z.identifier}" resumption ${J} does not align with any fragments in ${z} playlist (${W.fragStart}-${W.fragmentEnd})`),!0;let q=z==="audio"?0.175:0;if(!(Math.abs(G.start-J){let B=U.data,R=B==null?void 0:B.ASSETS;if(!Array.isArray(R)){let E=this.assignAssetListError(Z,b.ASSET_LIST_PARSING_ERROR,Error("Invalid interstitial asset list"),j.url,N,K);this.hls.trigger(F.ERROR,E);return}Z.assetListResponse=B,this.hls.trigger(F.ASSET_LIST_LOADED,{event:Z,assetListResponse:B,networkDetails:K})},onError:(U,N,j,K)=>{let B=this.assignAssetListError(Z,b.ASSET_LIST_LOAD_ERROR,Error(`Error loading X-ASSET-LIST: HTTP status ${U.code} ${U.text} (${N.url})`),N.url,K,j);this.hls.trigger(F.ERROR,B)},onTimeout:(U,N,j)=>{let K=this.assignAssetListError(Z,b.ASSET_LIST_LOAD_TIMEOUT,Error(`Timeout loading X-ASSET-LIST (${N.url})`),N.url,U,j);this.hls.trigger(F.ERROR,K)}};return W.load(H,q,V),this.hls.trigger(F.ASSET_LIST_LOADING,{event:Z}),W}assignAssetListError(Z,Y,J,X,Q,z){return Z.error=J,{type:n.NETWORK_ERROR,details:Y,fatal:!1,interstitial:Z,url:X,error:J,networkDetails:z,stats:Q}}}function bJ(Z){var Y;Z==null||(Y=Z.play())==null||Y.catch(()=>{})}function j9(Z,Y){return`[${Z}] Advancing timeline position to ${Y}`}class S2 extends l0{constructor(Z,Y){super("interstitials",Z.logger);this.HlsPlayerClass=void 0,this.hls=void 0,this.assetListLoader=void 0,this.mediaSelection=null,this.altSelection=null,this.media=null,this.detachedData=null,this.requiredTracks=null,this.manager=null,this.playerQueue=[],this.bufferedPos=-1,this.timelinePos=-1,this.schedule=void 0,this.playingItem=null,this.bufferingItem=null,this.waitingItem=null,this.endedItem=null,this.playingAsset=null,this.endedAsset=null,this.bufferingAsset=null,this.shouldPlay=!1,this.onPlay=()=>{this.shouldPlay=!0},this.onPause=()=>{this.shouldPlay=!1},this.onSeeking=()=>{let J=this.currentTime;if(J===void 0||this.playbackDisabled||!this.schedule)return;let X=J-this.timelinePos;if(Math.abs(X)<0.0000000014172335600907028)return;let z=X<=-0.01;if(this.timelinePos===-1&&!this.effectivePlayingItem)this.checkStart();this.timelinePos=J,this.bufferedPos=J;let W=this.playingItem;if(!W){this.checkBuffer();return}if(z){if(this.schedule.resetErrorsInRange(J,J-X))this.updateSchedule(!0)}if(this.checkBuffer(),z&&J=W.end){var H;let N=this.findItemIndex(W),j=this.schedule.findItemIndexAtTime(J);if(j===-1)j=N+(z?-1:1),this.log(`seeked ${z?"back ":""}to position not covered by schedule ${J} (resolving from ${N} to ${j})`);if(!this.isInterstitial(W)&&(H=this.media)!=null&&H.paused)this.shouldPlay=!1;if(!z){if(j>N){let K=this.schedule.findJumpRestrictedIndex(N+1,j);if(K>N){this.setSchedulePosition(K);return}}}this.setSchedulePosition(j);return}let G=this.playingAsset;if(!G){if(this.playingLastItem&&this.isInterstitial(W)){let N=W.event.assetList[0];if(N)this.endedItem=this.playingItem,this.playingItem=null,this.setScheduleToAssetAtTime(J,N)}return}let q=G.timelineStart,V=G.duration||0;if(z&&J=q+V){var U;if((U=W.event)!=null&&U.appendInPlace)this.clearAssetPlayers(W.event,W),this.flushFrontBuffer(J);this.setScheduleToAssetAtTime(J,G)}},this.onTimeupdate=()=>{let J=this.currentTime;if(J===void 0||this.playbackDisabled)return;if(this.timelinePos===-1&&!this.effectivePlayingItem)this.checkStart();if(J>this.timelinePos){if(this.timelinePos=J,J>this.bufferedPos)this.checkBuffer()}else return;let X=this.playingItem;if(!X||this.playingLastItem)return;if(J>=X.end){this.timelinePos=X.end;let W=this.findItemIndex(X);this.setSchedulePosition(W+1)}let Q=this.playingAsset;if(!Q)return;let z=Q.timelineStart+(Q.duration||0);if(J>=z)this.setScheduleToAssetAtTime(J,Q)},this.onScheduleUpdate=(J,X)=>{let Q=this.schedule;if(!Q)return;let z=this.playingItem,W=Q.events||[],H=Q.items||[],G=Q.durations,q=J.map((K)=>K.identifier),V=!!(W.length||q.length);if(V||X)this.log(`INTERSTITIALS_UPDATED (${W.length}): ${W} Schedule: ${H.map((K)=>Q8(K))} pos: ${this.timelinePos}`);if(q.length)this.log(`Removed events ${q}`);let U=null,N=null;if(z)if(U=this.updateItem(z,this.timelinePos),this.itemsMatch(z,U))this.playingItem=U;else this.waitingItem=this.endedItem=null;this.waitingItem=this.updateItem(this.waitingItem),this.endedItem=this.updateItem(this.endedItem);let j=this.bufferingItem;if(j){if(N=this.updateItem(j,this.bufferedPos),this.itemsMatch(j,N))this.bufferingItem=N;else if(j.event)this.bufferingItem=this.playingItem,this.clearInterstitial(j.event,null)}if(J.forEach((K)=>{K.assetList.forEach((B)=>{this.clearAssetPlayer(B.identifier,null)})}),this.playerQueue.forEach((K)=>{if(K.interstitial.appendInPlace){let B=K.assetItem.timelineStart,R=K.timelineOffset-B;if(R)try{K.timelineOffset=B}catch(E){if(Math.abs(R)>A9)this.warn(`${E} ("${K.assetId}" ${K.timelineOffset}->${B})`)}}}),V||X){if(this.hls.trigger(F.INTERSTITIALS_UPDATED,{events:W.slice(0),schedule:H.slice(0),durations:G,removedIds:q}),this.isInterstitial(z)&&q.includes(z.event.identifier)){this.warn(`Interstitial "${z.event.identifier}" removed while playing`),this.primaryFallback(z.event);return}if(z)this.trimInPlace(U,z);if(j&&N!==U)this.trimInPlace(N,j);this.checkBuffer()}},this.hls=Z,this.HlsPlayerClass=Y,this.assetListLoader=new x2(Z),this.schedule=new I2(this.onScheduleUpdate,Z.logger),this.registerListeners()}registerListeners(){let Z=this.hls;if(Z)Z.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.on(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.on(F.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),Z.on(F.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),Z.on(F.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),Z.on(F.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),Z.on(F.ASSET_LIST_LOADED,this.onAssetListLoaded,this),Z.on(F.BUFFER_APPENDED,this.onBufferAppended,this),Z.on(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.on(F.BUFFERED_TO_END,this.onBufferedToEnd,this),Z.on(F.MEDIA_ENDED,this.onMediaEnded,this),Z.on(F.ERROR,this.onError,this),Z.on(F.DESTROYING,this.onDestroying,this)}unregisterListeners(){let Z=this.hls;if(Z)Z.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.off(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.off(F.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),Z.off(F.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),Z.off(F.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),Z.off(F.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),Z.off(F.ASSET_LIST_LOADED,this.onAssetListLoaded,this),Z.off(F.BUFFER_CODECS,this.onBufferCodecs,this),Z.off(F.BUFFER_APPENDED,this.onBufferAppended,this),Z.off(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.off(F.BUFFERED_TO_END,this.onBufferedToEnd,this),Z.off(F.MEDIA_ENDED,this.onMediaEnded,this),Z.off(F.ERROR,this.onError,this),Z.off(F.DESTROYING,this.onDestroying,this)}startLoad(){this.resumeBuffering()}stopLoad(){this.pauseBuffering()}resumeBuffering(){var Z;(Z=this.getBufferingPlayer())==null||Z.resumeBuffering()}pauseBuffering(){var Z;(Z=this.getBufferingPlayer())==null||Z.pauseBuffering()}destroy(){if(this.unregisterListeners(),this.stopLoad(),this.assetListLoader)this.assetListLoader.destroy();if(this.emptyPlayerQueue(),this.clearScheduleState(),this.schedule)this.schedule.destroy();this.media=this.detachedData=this.mediaSelection=this.requiredTracks=this.altSelection=this.schedule=this.manager=null,this.hls=this.HlsPlayerClass=this.log=null,this.assetListLoader=null,this.onPlay=this.onPause=this.onSeeking=this.onTimeupdate=null,this.onScheduleUpdate=null}onDestroying(){let Z=this.primaryMedia||this.media;if(Z)this.removeMediaListeners(Z)}removeMediaListeners(Z){m0(Z,"play",this.onPlay),m0(Z,"pause",this.onPause),m0(Z,"seeking",this.onSeeking),m0(Z,"timeupdate",this.onTimeupdate)}onMediaAttaching(Z,Y){let J=this.media=Y.media;k0(J,"seeking",this.onSeeking),k0(J,"timeupdate",this.onTimeupdate),k0(J,"play",this.onPlay),k0(J,"pause",this.onPause)}onMediaAttached(Z,Y){let J=this.effectivePlayingItem,X=this.detachedData;if(this.detachedData=null,J===null)this.checkStart();else if(!X){this.clearScheduleState();let Q=this.findItemIndex(J);this.setSchedulePosition(Q)}}clearScheduleState(){this.log("clear schedule state"),this.playingItem=this.bufferingItem=this.waitingItem=this.endedItem=this.playingAsset=this.endedAsset=this.bufferingAsset=null}onMediaDetaching(Z,Y){let J=!!Y.transferMedia,X=this.media;if(this.media=null,J)return;if(X)this.removeMediaListeners(X);if(this.detachedData){let Q=this.getBufferingPlayer();if(Q)this.log(`Removing schedule state for detachedData and ${Q}`),this.playingAsset=this.endedAsset=this.bufferingAsset=this.bufferingItem=this.waitingItem=this.detachedData=null,Q.detachMedia();this.shouldPlay=!1}}get interstitialsManager(){if(!this.hls)return null;if(this.manager)return this.manager;let Z=this,Y=()=>Z.bufferingItem||Z.waitingItem,J=(V)=>V?Z.getAssetPlayer(V.identifier):V,X=(V,U,N,j,K)=>{if(V){let B=V[U].start,R=V.event;if(R){if(U==="playout"||R.timelineOccupancy!==s7.Point){let E=J(N);if((E==null?void 0:E.interstitial)===R)B+=E.assetItem.startOffset+E[K]}}else{let E=j==="bufferedPos"?z():Z[j];B+=E-V.start}return B}return 0},Q=(V,U)=>{var N;if(V!==0&&U!=="primary"&&(N=Z.schedule)!=null&&N.length){var j;let K=Z.schedule.findItemIndexAtTime(V),B=(j=Z.schedule.items)==null?void 0:j[K];if(B){let R=B[U].start-B.start;return V+R}}return V},z=()=>{let V=Z.bufferedPos;if(V===Number.MAX_VALUE)return W("primary");return Math.max(V,0)},W=(V)=>{var U,N;if((U=Z.primaryDetails)!=null&&U.live)return Z.primaryDetails.edge;return((N=Z.schedule)==null?void 0:N.durations[V])||0},H=(V,U)=>{var N,j;let K=Z.effectivePlayingItem;if(K!=null&&(N=K.event)!=null&&N.restrictions.skip||!Z.schedule)return;Z.log(`seek to ${V} "${U}"`);let B=Z.effectivePlayingItem,R=Z.schedule.findItemIndexAtTime(V,U),E=(j=Z.schedule.items)==null?void 0:j[R],O=Z.getBufferingPlayer(),A=O==null?void 0:O.interstitial,$=A==null?void 0:A.appendInPlace,L=B&&Z.itemsMatch(B,E);if(B&&($||L)){let M=J(Z.playingAsset),w=(M==null?void 0:M.media)||Z.primaryMedia;if(w){let _=U==="primary"?w.currentTime:X(B,U,Z.playingAsset,"timelinePos","currentTime"),C=V-_,D=($?_:w.currentTime)+C;if(D>=0&&(!M||$||D<=M.duration)){w.currentTime=D;return}}}if(E){let M=V;if(U!=="primary"){let _=E[U].start,C=V-_;M=E.start+C}let w=!Z.isInterstitial(E);if((!Z.isInterstitial(B)||B.event.appendInPlace)&&(w||E.event.appendInPlace)){let _=Z.media||($?O==null?void 0:O.media:null);if(_)_.currentTime=M}else if(B){let _=Z.findItemIndex(B);if(R>_){let D=Z.schedule.findJumpRestrictedIndex(_+1,R);if(D>_){Z.setSchedulePosition(D);return}}let C=0;if(w)Z.timelinePos=M,Z.checkBuffer();else{let D=E.event.assetList,I=V-(E[U]||E).start;for(let h=D.length;h--;){let y=D[h];if(y.duration&&I>=y.startOffset&&I{let V=Z.effectivePlayingItem;if(Z.isInterstitial(V))return V;let U=Y();if(Z.isInterstitial(U))return U;return null},q={get bufferedEnd(){let V=Y(),U=Z.bufferingItem;if(U&&U===V){var N;return X(U,"playout",Z.bufferingAsset,"bufferedPos","bufferedEnd")-U.playout.start||((N=Z.bufferingAsset)==null?void 0:N.startOffset)||0}return 0},get currentTime(){let V=G(),U=Z.effectivePlayingItem;if(U&&U===V)return X(U,"playout",Z.effectivePlayingAsset,"timelinePos","currentTime")-U.playout.start;return 0},set currentTime(V){let U=G(),N=Z.effectivePlayingItem;if(N&&N===U)H(V+N.playout.start,"playout")},get duration(){let V=G();if(V)return V.playout.end-V.playout.start;return 0},get assetPlayers(){var V;let U=(V=G())==null?void 0:V.event.assetList;if(U)return U.map((N)=>Z.getAssetPlayer(N.identifier));return[]},get playingIndex(){var V;let U=(V=G())==null?void 0:V.event;if(U&&Z.effectivePlayingAsset)return U.findAssetIndex(Z.effectivePlayingAsset);return-1},get scheduleItem(){return G()}};return this.manager={get events(){var V;return((V=Z.schedule)==null||(V=V.events)==null?void 0:V.slice(0))||[]},get schedule(){var V;return((V=Z.schedule)==null||(V=V.items)==null?void 0:V.slice(0))||[]},get interstitialPlayer(){if(G())return q;return null},get playerQueue(){return Z.playerQueue.slice(0)},get bufferingAsset(){return Z.bufferingAsset},get bufferingItem(){return Y()},get bufferingIndex(){let V=Y();return Z.findItemIndex(V)},get playingAsset(){return Z.effectivePlayingAsset},get playingItem(){return Z.effectivePlayingItem},get playingIndex(){let V=Z.effectivePlayingItem;return Z.findItemIndex(V)},primary:{get bufferedEnd(){return z()},get currentTime(){let V=Z.timelinePos;return V>0?V:0},set currentTime(V){H(V,"primary")},get duration(){return W("primary")},get seekableStart(){var V;return((V=Z.primaryDetails)==null?void 0:V.fragmentStart)||0}},integrated:{get bufferedEnd(){return X(Y(),"integrated",Z.bufferingAsset,"bufferedPos","bufferedEnd")},get currentTime(){return X(Z.effectivePlayingItem,"integrated",Z.effectivePlayingAsset,"timelinePos","currentTime")},set currentTime(V){H(V,"integrated")},get duration(){return W("integrated")},get seekableStart(){var V;return Q(((V=Z.primaryDetails)==null?void 0:V.fragmentStart)||0,"integrated")}},skip:()=>{let V=Z.effectivePlayingItem,U=V==null?void 0:V.event;if(U&&!U.restrictions.skip){let N=Z.findItemIndex(V);if(U.appendInPlace){let j=V.playout.start+V.event.duration;H(j+0.001,"playout")}else Z.advanceAfterAssetEnded(U,N,1/0)}}}}get effectivePlayingItem(){return this.waitingItem||this.playingItem||this.endedItem}get effectivePlayingAsset(){return this.playingAsset||this.endedAsset}get playingLastItem(){var Z;let Y=this.playingItem,J=(Z=this.schedule)==null?void 0:Z.items;if(!this.playbackStarted||!Y||!J)return!1;return this.findItemIndex(Y)===J.length-1}get playbackStarted(){return this.effectivePlayingItem!==null}get currentTime(){var Z,Y;if(this.mediaSelection===null)return;let J=this.waitingItem||this.playingItem;if(this.isInterstitial(J)&&!J.event.appendInPlace)return;let X=this.media;if(!X&&(Z=this.bufferingItem)!=null&&(Z=Z.event)!=null&&Z.appendInPlace)X=this.primaryMedia;let Q=(Y=X)==null?void 0:Y.currentTime;if(Q===void 0||!m(Q))return;return Q}get primaryMedia(){var Z;return this.media||((Z=this.detachedData)==null?void 0:Z.media)||null}isInterstitial(Z){return!!(Z!=null&&Z.event)}retreiveMediaSource(Z,Y){let J=this.getAssetPlayer(Z);if(J)this.transferMediaFromPlayer(J,Y)}transferMediaFromPlayer(Z,Y){let J=Z.interstitial.appendInPlace,X=Z.media;if(J&&X===this.primaryMedia){if(this.bufferingAsset=null,!Y||this.isInterstitial(Y)&&!Y.event.appendInPlace){if(Y&&X){this.detachedData={media:X};return}}let Q=Z.transferMedia();this.log(`transfer MediaSource from ${Z} ${K0(Q)}`),this.detachedData=Q}else if(Y&&X)this.shouldPlay||(this.shouldPlay=!X.paused)}transferMediaTo(Z,Y){var J,X;if(Z.media===Y)return;let Q=null,z=this.hls,W=Z!==z,H=W&&Z.interstitial.appendInPlace,G=(J=this.detachedData)==null?void 0:J.mediaSource,q;if(z.media){if(H)Q=z.transferMedia(),this.detachedData=Q;q="Primary"}else if(G){let j=this.getBufferingPlayer();if(j)Q=j.transferMedia(),q=`${j}`;else q="detached MediaSource"}else q="detached media";if(!Q){if(G)Q=this.detachedData,this.log(`using detachedData: MediaSource ${K0(Q)}`);else if(!this.detachedData||z.media===Y){let j=this.playerQueue;if(j.length>1)j.forEach((K)=>{if(W&&K.interstitial.appendInPlace!==H){let B=K.interstitial;if(this.clearInterstitial(K.interstitial,null),B.appendInPlace=!1,B.appendInPlace)this.warn(`Could not change append strategy for queued assets ${B}`)}});this.hls.detachMedia(),this.detachedData={media:Y}}}let V=Q&&"mediaSource"in Q&&((X=Q.mediaSource)==null?void 0:X.readyState)!=="closed",U=V&&Q?Q:Y;this.log(`${V?"transfering MediaSource":"attaching media"} to ${W?Z:"Primary"} from ${q} (media.currentTime: ${Y.currentTime})`);let N=this.schedule;if(U===Q&&N){let j=W&&Z.assetId===N.assetIdAtEnd;U.overrides={duration:N.duration,endOfStream:!W||j,cueRemoval:!W}}Z.attachMedia(U)}onInterstitialCueEnter(){this.onTimeupdate()}checkStart(){let Z=this.schedule,Y=Z==null?void 0:Z.events;if(!Y||this.playbackDisabled||!this.media)return;if(this.bufferedPos===-1)this.bufferedPos=0;let J=this.timelinePos,X=this.effectivePlayingItem;if(J===-1){let Q=this.hls.startPosition;if(this.timelinePos=Q,Y.length===0)this.setSchedulePosition(0);else if(Y[0].cue.pre){this.log(j9("checkStart (preroll)",Q));let z=Z.findEventIndex(Y[0].identifier);this.setSchedulePosition(z)}else if(Q>=0||!this.primaryLive){this.log(j9("checkStart",Q));let z=this.timelinePos=Q>0?Q:0,W=Z.findItemIndexAtTime(z);this.setSchedulePosition(W)}else if(this.hls.liveSyncPosition===0)this.setSchedulePosition(0);else this.log("[checkStart] waiting for live start")}else if(X&&!this.playingItem){this.log(j9("checkStart (playing item)",X.start));let Q=Z.findItemIndex(X);this.setSchedulePosition(Q)}}advanceAssetBuffering(Z,Y){let J=Z.event,X=J.findAssetIndex(Y),Q=HZ(J,X);if(!J.isAssetPastPlayoutLimit(Q))this.bufferedToEvent(Z,Q);else if(this.schedule){var z;let W=(z=this.schedule.items)==null?void 0:z[this.findItemIndex(Z)+1];if(W)this.bufferedToItem(W)}}advanceAfterAssetEnded(Z,Y,J){let X=HZ(Z,J);if(!Z.isAssetPastPlayoutLimit(X)){if(Z.appendInPlace){let Q=Z.assetList[X];if(Q)this.advanceInPlace(Q.timelineStart)}this.setSchedulePosition(Y,X)}else if(this.schedule){let Q=this.schedule.items;if(Q){let z=Y+1,W=Q.length;if(z>=W){this.setSchedulePosition(-1);return}let H=Z.resumeTime;if(this.timelinePos=0?X[Z]:null;this.log(`setSchedulePosition ${Z}, ${Y} (${Q?Q8(Q):Q}) pos: ${this.timelinePos}`);let z=this.waitingItem||this.playingItem,W=this.playingLastItem;if(this.isInterstitial(z)){let q=z.event,V=this.playingAsset,U=V==null?void 0:V.identifier,N=U?this.getAssetPlayer(U):null;if(N&&U&&(!this.eventItemsMatch(z,Q)||Y!==void 0&&U!==q.assetList[Y].identifier)){var H;let j=q.findAssetIndex(V);if(this.log(`INTERSTITIAL_ASSET_ENDED ${j+1}/${q.assetList.length} ${N9(V)}`),this.endedAsset=V,this.playingAsset=null,this.hls.trigger(F.INTERSTITIAL_ASSET_ENDED,{asset:V,assetListIndex:j,event:q,schedule:X.slice(0),scheduleIndex:Z,player:N}),z!==this.playingItem){if(this.itemsMatch(z,this.playingItem)&&!this.playingAsset)this.advanceAfterAssetEnded(q,this.findItemIndex(this.playingItem),j);return}if(this.retreiveMediaSource(U,Q),N.media&&!((H=this.detachedData)!=null&&H.mediaSource))N.detachMedia()}if(!this.eventItemsMatch(z,Q)){if(this.endedItem=z,this.playingItem=null,this.log(`INTERSTITIAL_ENDED ${q} ${Q8(z)}`),q.hasPlayed=!0,this.hls.trigger(F.INTERSTITIAL_ENDED,{event:q,schedule:X.slice(0),scheduleIndex:Z}),q.cue.once){var G;this.updateSchedule();let j=(G=this.schedule)==null?void 0:G.items;if(Q&&j){let K=this.findItemIndex(Q);this.advanceSchedule(K,j,Y,z,W)}return}}}this.advanceSchedule(Z,X,Y,z,W)}advanceSchedule(Z,Y,J,X,Q){let z=this.schedule;if(!z)return;let W=Y[Z]||null,H=this.primaryMedia,G=this.playerQueue;if(G.length)G.forEach((q)=>{let V=q.interstitial,U=z.findEventIndex(V.identifier);if(UZ+1)this.clearInterstitial(V,W)});if(this.isInterstitial(W)){this.timelinePos=Math.min(Math.max(this.timelinePos,W.start),W.end);let q=W.event;if(J===void 0){J=z.findAssetIndex(q,this.timelinePos);let j=HZ(q,J-1);if(q.isAssetPastPlayoutLimit(j)||q.appendInPlace&&this.timelinePos===W.end){this.advanceAfterAssetEnded(q,Z,J);return}J=j}let V=this.waitingItem;if(!this.assetsBuffered(W,H))this.setBufferingItem(W);let U=this.preloadAssets(q,J);if(!this.eventItemsMatch(W,V||X))this.waitingItem=W,this.log(`INTERSTITIAL_STARTED ${Q8(W)} ${q.appendInPlace?"append in place":""}`),this.hls.trigger(F.INTERSTITIAL_STARTED,{event:q,schedule:Y.slice(0),scheduleIndex:Z});if(!q.assetListLoaded){this.log(`Waiting for ASSET-LIST to complete loading ${q}`);return}if(q.assetListLoader)q.assetListLoader.destroy(),q.assetListLoader=void 0;if(!H){this.log(`Waiting for attachMedia to start Interstitial ${q}`);return}this.waitingItem=this.endedItem=null,this.playingItem=W;let N=q.assetList[J];if(!N){this.advanceAfterAssetEnded(q,Z,J||0);return}if(!U)U=this.getAssetPlayer(N.identifier);if(U===null||U.destroyed){let j=q.assetList.length;this.warn(`asset ${J+1}/${j} player destroyed ${q}`),U=this.createAssetPlayer(q,N,J),U.loadSource()}if(!this.eventItemsMatch(W,this.bufferingItem)){if(q.appendInPlace&&this.isAssetBuffered(N))return}if(this.startAssetPlayer(U,J,Y,Z,H),this.shouldPlay)bJ(U.media)}else if(W){if(this.resumePrimary(W,Z,X),this.shouldPlay)bJ(this.hls.media)}else if(Q&&this.isInterstitial(X)){if(this.endedItem=null,this.playingItem=X,!X.event.appendInPlace)this.attachPrimary(z.durations.primary,null)}}get playbackDisabled(){return this.hls.config.enableInterstitialPlayback===!1}get primaryDetails(){var Z;return(Z=this.mediaSelection)==null?void 0:Z.main.details}get primaryLive(){var Z;return!!((Z=this.primaryDetails)!=null&&Z.live)}resumePrimary(Z,Y,J){var X,Q;if(this.playingItem=Z,this.playingAsset=this.endedAsset=null,this.waitingItem=this.endedItem=null,this.bufferedToItem(Z),this.log(`resuming ${Q8(Z)}`),!((X=this.detachedData)!=null&&X.mediaSource)){let W=this.timelinePos;if(W=Z.end)W=this.getPrimaryResumption(Z,Y),this.log(j9("resumePrimary",W)),this.timelinePos=W;this.attachPrimary(W,Z)}if(!J)return;let z=(Q=this.schedule)==null?void 0:Q.items;if(!z)return;this.log(`INTERSTITIALS_PRIMARY_RESUMED ${Q8(Z)}`),this.hls.trigger(F.INTERSTITIALS_PRIMARY_RESUMED,{schedule:z.slice(0),scheduleIndex:Y}),this.checkBuffer()}getPrimaryResumption(Z,Y){let J=Z.start;if(this.primaryLive){let X=this.primaryDetails;if(Y===0)return this.hls.startPosition;else if(X&&(JX.edge))return this.hls.liveSyncPosition||-1}return J}isAssetBuffered(Z){let Y=this.getAssetPlayer(Z.identifier);if(Y!=null&&Y.hls)return Y.hls.bufferedToEnd;return t.bufferInfo(this.primaryMedia,this.timelinePos,0).end+1>=Z.timelineStart+(Z.duration||0)}attachPrimary(Z,Y,J){if(Y)this.setBufferingItem(Y);else this.bufferingItem=this.playingItem;this.bufferingAsset=null;let X=this.primaryMedia;if(!X)return;let Q=this.hls;if(Q.media)this.checkBuffer();else if(this.transferMediaTo(Q,X),J)this.startLoadingPrimaryAt(Z,J);if(!J)this.log(j9("attachPrimary",Z)),this.timelinePos=Z,this.startLoadingPrimaryAt(Z,J)}startLoadingPrimaryAt(Z,Y){var J;let X=this.hls;if(!X.loadingEnabled||!X.media||Math.abs((((J=X.mainForwardBufferInfo)==null?void 0:J.start)||X.media.currentTime)-Z)>0.5)X.startLoad(Z,Y);else if(!X.bufferingEnabled)X.resumeBuffering()}onManifestLoading(){var Z;this.stopLoad(),(Z=this.schedule)==null||Z.reset(),this.emptyPlayerQueue(),this.clearScheduleState(),this.shouldPlay=!1,this.bufferedPos=this.timelinePos=-1,this.mediaSelection=this.altSelection=this.manager=this.requiredTracks=null,this.hls.off(F.BUFFER_CODECS,this.onBufferCodecs,this),this.hls.on(F.BUFFER_CODECS,this.onBufferCodecs,this)}onLevelUpdated(Z,Y){if(Y.level===-1||!this.schedule)return;let J=this.hls.levels[Y.level];if(!J.details)return;let X=H0(H0({},this.mediaSelection||this.altSelection),{},{main:J});if(this.mediaSelection=X,this.schedule.parseInterstitialDateRanges(X,this.hls.config.interstitialAppendInPlace),!this.effectivePlayingItem&&this.schedule.items)this.checkStart()}onAudioTrackUpdated(Z,Y){let J=this.hls.audioTracks[Y.id],X=this.mediaSelection;if(!X){this.altSelection=H0(H0({},this.altSelection),{},{audio:J});return}let Q=H0(H0({},X),{},{audio:J});this.mediaSelection=Q}onSubtitleTrackUpdated(Z,Y){let J=this.hls.subtitleTracks[Y.id],X=this.mediaSelection;if(!X){this.altSelection=H0(H0({},this.altSelection),{},{subtitles:J});return}let Q=H0(H0({},X),{},{subtitles:J});this.mediaSelection=Q}onAudioTrackSwitching(Z,Y){let J=fY(Y);this.playerQueue.forEach(({hls:X})=>X&&(X.setAudioOption(Y)||X.setAudioOption(J)))}onSubtitleTrackSwitch(Z,Y){let J=fY(Y);this.playerQueue.forEach(({hls:X})=>X&&(X.setSubtitleOption(Y)||Y.id!==-1&&X.setSubtitleOption(J)))}onBufferCodecs(Z,Y){let J=Y.tracks;if(J)this.requiredTracks=J}onBufferAppended(Z,Y){this.checkBuffer()}onBufferFlushed(Z,Y){let J=this.playingItem;if(J&&!this.itemsMatch(J,this.bufferingItem)&&!this.isInterstitial(J)){let X=this.timelinePos;this.bufferedPos=X,this.checkBuffer()}}onBufferedToEnd(Z){if(!this.schedule)return;let Y=this.schedule.events;if(this.bufferedPos0.25){Z.event.assetList.forEach((Q,z)=>{if(Z.event.isAssetPastPlayoutLimit(z))this.clearAssetPlayer(Q.identifier,null)});let J=Z.end+0.25,X=t.bufferInfo(this.primaryMedia,J,0);if(X.end>J||(X.nextStart||0)>J){this.log(`trim buffered interstitial ${Q8(Z)} (was ${Q8(Y)})`);let Q=!0;this.attachPrimary(J,null,Q),this.flushFrontBuffer(J)}}}itemsMatch(Z,Y){return!!Y&&(Z===Y||Z.event&&Y.event&&this.eventItemsMatch(Z,Y)||!Z.event&&!Y.event&&this.findItemIndex(Z)===this.findItemIndex(Y))}eventItemsMatch(Z,Y){var J;return!!Y&&(Z===Y||Z.event.identifier===((J=Y.event)==null?void 0:J.identifier))}findItemIndex(Z,Y){return Z&&this.schedule?this.schedule.findItemIndex(Z,Y):-1}updateSchedule(Z=!1){var Y;let J=this.mediaSelection;if(!J)return;(Y=this.schedule)==null||Y.updateSchedule(J,[],Z)}checkBuffer(Z){var Y;let J=(Y=this.schedule)==null?void 0:Y.items;if(!J)return;let X=t.bufferInfo(this.primaryMedia,this.timelinePos,0);if(Z)this.bufferedPos=this.timelinePos;Z||(Z=X.len<1),this.updateBufferedPos(X.end,J,Z)}updateBufferedPos(Z,Y,J){let X=this.schedule,Q=this.bufferingItem;if(this.bufferedPos>Z||!X)return;if(Y.length===1&&this.itemsMatch(Y[0],Q)){this.bufferedPos=Z;return}let z=this.playingItem,W=this.findItemIndex(z),H=X.findItemIndexAtTime(Z);if(this.bufferedPos=Q.end||(G=U.event)!=null&&G.appendInPlace&&Z+0.01>=U.start)H=V;if(this.isInterstitial(Q)){let N=Q.event;if(V-W>1&&N.appendInPlace===!1)return;if(N.assetList.length===0&&N.assetListLoader)return}if(this.bufferedPos=Z,H>q&&H>W)this.bufferedToItem(U);else{let N=this.primaryDetails;if(this.primaryLive&&N&&Z>N.edge-N.targetduration&&U.start{let Q=this.getAssetPlayer(X.identifier);return!(Q!=null&&Q.bufferedInPlaceToEnd(Y))})}setBufferingItem(Z){let Y=this.bufferingItem,J=this.schedule;if(!this.itemsMatch(Z,Y)&&J){let{items:X,events:Q}=J;if(!X||!Q)return Y;let z=this.isInterstitial(Z),W=this.getBufferingPlayer();this.bufferingItem=Z,this.bufferedPos=Math.max(Z.start,Math.min(Z.end,this.timelinePos));let H=W?W.remaining:Y?Y.end-this.timelinePos:0;if(this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${Q8(Z)}`+(Y?` (${H.toFixed(2)} remaining)`:"")),!this.playbackDisabled)if(z){let G=J.findAssetIndex(Z.event,this.bufferedPos);Z.event.assetList.forEach((q,V)=>{let U=this.getAssetPlayer(q.identifier);if(U){if(V===G)U.loadSource();U.resumeBuffering()}})}else this.hls.resumeBuffering(),this.playerQueue.forEach((G)=>G.pauseBuffering());this.hls.trigger(F.INTERSTITIALS_BUFFERED_TO_BOUNDARY,{events:Q.slice(0),schedule:X.slice(0),bufferingIndex:this.findItemIndex(Z),playingIndex:this.findItemIndex(this.playingItem)})}else if(this.bufferingItem!==Z)this.bufferingItem=Z;return Y}bufferedToItem(Z,Y=0){let J=this.setBufferingItem(Z);if(this.playbackDisabled)return;if(this.isInterstitial(Z))this.bufferedToEvent(Z,Y);else if(J!==null){this.bufferingAsset=null;let X=this.detachedData;if(X)if(X.mediaSource)this.attachPrimary(Z.start,Z,!0);else this.preloadPrimary(Z);else this.preloadPrimary(Z)}}preloadPrimary(Z){let Y=this.findItemIndex(Z),J=this.getPrimaryResumption(Z,Y);this.startLoadingPrimaryAt(J)}bufferedToEvent(Z,Y){let J=Z.event,X=J.assetList.length===0&&!J.assetListLoader,Q=J.cue.once;if(X||!Q){let z=this.preloadAssets(J,Y);if(z!=null&&z.interstitial.appendInPlace){let W=this.primaryMedia;if(W)this.bufferAssetPlayer(z,W)}}}preloadAssets(Z,Y){let J=Z.assetUrl,X=Z.assetList.length,Q=X===0&&!Z.assetListLoader,z=Z.cue.once;if(Q){let H=Z.timelineStart;if(Z.appendInPlace){var W;let U=this.playingItem;if(!this.isInterstitial(U)&&(U==null||(W=U.nextEvent)==null?void 0:W.identifier)===Z.identifier)this.flushFrontBuffer(H+0.25)}let G,q=0;if(!this.playingItem&&this.primaryLive){if(q=this.hls.startPosition,q===-1)q=this.hls.liveSyncPosition||0}if(q&&!(Z.cue.pre||Z.cue.post)){let U=q-H;if(U>0)G=Math.round(U*1000)/1000}if(this.log(`Load interstitial asset ${Y+1}/${J?1:X} ${Z}${G?` live-start: ${q} start-offset: ${G}`:""}`),J)return this.createAsset(Z,0,0,H,Z.duration,J);let V=this.assetListLoader.loadAssetList(Z,G);if(V)Z.assetListLoader=V}else if(!z&&X){for(let G=Y;G{this.hls.trigger(F.BUFFER_FLUSHING,{startOffset:Z,endOffset:1/0,type:X})})}getAssetPlayerQueueIndex(Z){let Y=this.playerQueue;for(let J=0;J1){let $=Y.duration;if($&&A<$)q=A}}let V=Y.identifier,U=H0(H0({},Q),{},{maxMaxBufferLength:Math.min(180,X.config.maxMaxBufferLength),autoStartLoad:!0,startFragPrefetch:!0,primarySessionId:X.sessionId,assetPlayerId:V,abrEwmaDefaultEstimate:X.bandwidthEstimate,interstitialsController:void 0,startPosition:q,liveDurationInfinity:!1,testBandwidth:!1,videoPreference:z,audioPreference:H||Q.audioPreference,subtitlePreference:G||Q.subtitlePreference});if(Z.appendInPlace){if(Z.appendInPlaceStarted=!0,Y.timelineStart)U.timelineOffset=Y.timelineStart}let N=U.cmcd;if(N!=null&&N.sessionId&&N.contentId)U.cmcd=U0({},N,{contentId:c9(Y.uri)});if(this.getAssetPlayer(V))this.warn(`Duplicate date range identifier ${Z} and asset ${V}`);let j=new b2(this.HlsPlayerClass,U,Z,Y);this.playerQueue.push(j),Z.assetList[J]=Y;let K=!0,B=(A)=>{if(A.live){var $;let w=Error(`Interstitials MUST be VOD assets ${Z}`),_={fatal:!0,type:n.OTHER_ERROR,details:b.INTERSTITIAL_ASSET_ITEM_ERROR,error:w},C=(($=this.schedule)==null?void 0:$.findEventIndex(Z.identifier))||-1;this.handleAssetItemError(_,Z,C,J,w.message);return}let L=A.edge-A.fragmentStart,M=Y.duration;if(K||M===null||L>M)K=!1,this.log(`Interstitial asset "${V}" duration change ${M} > ${L}`),Y.duration=L,this.updateSchedule()};j.on(F.LEVEL_UPDATED,(A,{details:$})=>B($)),j.on(F.LEVEL_PTS_UPDATED,(A,{details:$})=>B($)),j.on(F.EVENT_CUE_ENTER,()=>this.onInterstitialCueEnter());let R=(A,$)=>{let L=this.getAssetPlayer(V);if(L&&$.tracks){L.off(F.BUFFER_CODECS,R),L.tracks=$.tracks;let M=this.primaryMedia;if(this.bufferingAsset===L.assetItem&&M&&!L.media)this.bufferAssetPlayer(L,M)}};j.on(F.BUFFER_CODECS,R);let E=()=>{var A;let $=this.getAssetPlayer(V);if(this.log(`buffered to end of asset ${$}`),!$||!this.schedule)return;let L=this.schedule.findEventIndex(Z.identifier),M=(A=this.schedule.items)==null?void 0:A[L];if(this.isInterstitial(M))this.advanceAssetBuffering(M,Y)};j.on(F.BUFFERED_TO_END,E);let O=(A)=>{return()=>{if(!this.getAssetPlayer(V)||!this.schedule)return;this.shouldPlay=!0;let L=this.schedule.findEventIndex(Z.identifier);this.advanceAfterAssetEnded(Z,L,A)}};return j.once(F.MEDIA_ENDED,O(J)),j.once(F.PLAYOUT_LIMIT_REACHED,O(1/0)),j.on(F.ERROR,(A,$)=>{if(!this.schedule)return;let L=this.getAssetPlayer(V);if($.details===b.BUFFER_STALLED_ERROR){if(L!=null&&L.appendInPlace){this.handleInPlaceStall(Z);return}this.onTimeupdate(),this.checkBuffer(!0);return}this.handleAssetItemError($,Z,this.schedule.findEventIndex(Z.identifier),J,`Asset player error ${$.error} ${Z}`)}),j.on(F.DESTROYING,()=>{if(!this.getAssetPlayer(V)||!this.schedule)return;let $=Error(`Asset player destroyed unexpectedly ${V}`),L={fatal:!0,type:n.OTHER_ERROR,details:b.INTERSTITIAL_ASSET_ITEM_ERROR,error:$};this.handleAssetItemError(L,Z,this.schedule.findEventIndex(Z.identifier),J,$.message)}),this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${N9(Y)}`),this.hls.trigger(F.INTERSTITIAL_ASSET_PLAYER_CREATED,{asset:Y,assetListIndex:J,event:Z,player:j}),j}clearInterstitial(Z,Y){this.clearAssetPlayers(Z,Y),Z.reset()}clearAssetPlayers(Z,Y){Z.assetList.forEach((J)=>{this.clearAssetPlayer(J.identifier,Y)})}resetAssetPlayer(Z){let Y=this.getAssetPlayerQueueIndex(Z);if(Y!==-1){this.log(`reset asset player "${Z}" after error`);let J=this.playerQueue[Y];this.transferMediaFromPlayer(J,null),J.resetDetails()}}clearAssetPlayer(Z,Y){let J=this.getAssetPlayerQueueIndex(Z);if(J!==-1){let X=this.playerQueue[J];this.log(`clear ${X} toSegment: ${Y?Q8(Y):Y}`),this.transferMediaFromPlayer(X,Y),this.playerQueue.splice(J,1),X.destroy()}}emptyPlayerQueue(){let Z;while(Z=this.playerQueue.pop())Z.destroy();this.playerQueue=[]}startAssetPlayer(Z,Y,J,X,Q){let{interstitial:z,assetItem:W,assetId:H}=Z,G=z.assetList.length,q=this.playingAsset;if(this.endedAsset=null,this.playingAsset=W,!q||q.identifier!==H){if(q)this.clearAssetPlayer(q.identifier,J[X]),delete q.error;this.log(`INTERSTITIAL_ASSET_STARTED ${Y+1}/${G} ${N9(W)}`),this.hls.trigger(F.INTERSTITIAL_ASSET_STARTED,{asset:W,assetListIndex:Y,event:z,schedule:J.slice(0),scheduleIndex:X,player:Z})}this.bufferAssetPlayer(Z,Q)}bufferAssetPlayer(Z,Y){var J,X;if(!this.schedule)return;let{interstitial:Q,assetItem:z}=Z,W=this.schedule.findEventIndex(Q.identifier),H=(J=this.schedule.items)==null?void 0:J[W];if(!H)return;Z.loadSource(),this.setBufferingItem(H),this.bufferingAsset=z;let G=this.getBufferingPlayer();if(G===Z)return;let q=Q.appendInPlace;if(q&&(G==null?void 0:G.interstitial.appendInPlace)===!1)return;let V=(G==null?void 0:G.tracks)||((X=this.detachedData)==null?void 0:X.tracks)||this.requiredTracks;if(q&&z!==this.playingAsset){if(!Z.tracks){this.log(`Waiting for track info before buffering ${Z}`);return}if(V&&!mJ(V,Z.tracks)){let U=Error(`Asset ${N9(z)} SourceBuffer tracks ('${Object.keys(Z.tracks)}') are not compatible with primary content tracks ('${Object.keys(V)}')`),N={fatal:!0,type:n.OTHER_ERROR,details:b.INTERSTITIAL_ASSET_ITEM_ERROR,error:U},j=Q.findAssetIndex(z);this.handleAssetItemError(N,Q,W,j,U.message);return}}this.transferMediaTo(Z,Y)}handleInPlaceStall(Z){let Y=this.schedule,J=this.primaryMedia;if(!Y||!J)return;let X=J.currentTime,Q=Y.findAssetIndex(Z,X),z=Z.assetList[Q];if(z){let W=this.getAssetPlayer(z.identifier);if(W){let H=W.currentTime||X-z.timelineStart,G=W.duration-H;if(this.warn(`Stalled at ${H} of ${H+G} in ${W} ${Z} (media.currentTime: ${X})`),H&&(G/J.playbackRate<0.5||W.bufferedInPlaceToEnd(J))&&W.hls){let q=Y.findEventIndex(Z.identifier);this.advanceAfterAssetEnded(Z,q,Q)}}}}advanceInPlace(Z){let Y=this.primaryMedia;if(Y&&Y.currentTime!K.error))Y.error=j;else for(let K=X;K{let R=parseFloat(K.DURATION);this.createAsset(Q,B,q,H+q,R,K.URI),q+=R}),Q.duration=q,this.log(`Loaded asset-list with duration: ${q} (was: ${G}) ${Q}`);let V=this.waitingItem,U=(V==null?void 0:V.event.identifier)===z;this.updateSchedule();let N=(X=this.bufferingItem)==null?void 0:X.event;if(U){var j;let K=this.schedule.findEventIndex(z),B=(j=this.schedule.items)==null?void 0:j[K];if(B){if(!this.playingItem&&this.timelinePos>B.end){if(this.schedule.findItemIndexAtTime(this.timelinePos)!==K){Q.error=Error(`Interstitial ${W.length?"no longer within playback range":"asset-list is empty"} ${this.timelinePos} ${Q}`),this.log(Q.error.message),this.updateSchedule(!0),this.primaryFallback(Q);return}}this.setBufferingItem(B)}this.setSchedulePosition(K)}else if((N==null?void 0:N.identifier)===z){let K=Q.assetList[0];if(K){let B=this.getAssetPlayer(K.identifier);if(N.appendInPlace){let R=this.primaryMedia;if(B&&R)this.bufferAssetPlayer(B,R)}else if(B)B.loadSource()}}}onError(Z,Y){if(!this.schedule)return;switch(Y.details){case b.ASSET_LIST_PARSING_ERROR:case b.ASSET_LIST_LOAD_ERROR:case b.ASSET_LIST_LOAD_TIMEOUT:{let J=Y.interstitial;if(J)this.updateSchedule(!0),this.primaryFallback(J);break}case b.BUFFER_STALLED_ERROR:{let J=this.endedItem||this.waitingItem||this.playingItem;if(this.isInterstitial(J)&&J.event.appendInPlace){this.handleInPlaceStall(J.event);return}this.log(`Primary player stall @${this.timelinePos} bufferedPos: ${this.bufferedPos}`),this.onTimeupdate(),this.checkBuffer(!0);break}}}}var IJ=500;class T2 extends e7{constructor(Z,Y,J){super(Z,Y,J,"subtitle-stream-controller",o.SUBTITLE);this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}registerListeners(){super.registerListeners();let{hls:Z}=this;Z.on(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.on(F.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),Z.on(F.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),Z.on(F.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),Z.on(F.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),Z.on(F.BUFFER_FLUSHING,this.onBufferFlushing,this)}unregisterListeners(){super.unregisterListeners();let{hls:Z}=this;Z.off(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.off(F.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),Z.off(F.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),Z.off(F.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),Z.off(F.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),Z.off(F.BUFFER_FLUSHING,this.onBufferFlushing,this)}startLoad(Z,Y){this.stopLoad(),this.state=S.IDLE,this.setInterval(IJ),this.nextLoadPosition=this.lastCurrentTime=Z+this.timelineOffset,this.startPosition=Y?-1:Z,this.tick()}onManifestLoading(){super.onManifestLoading(),this.mainDetails=null}onMediaDetaching(Z,Y){this.tracksBuffered=[],super.onMediaDetaching(Z,Y)}onLevelLoaded(Z,Y){this.mainDetails=Y.details}onSubtitleFragProcessed(Z,Y){let{frag:J,success:X}=Y;if(!this.fragContextChanged(J)){if($0(J))this.fragPrevious=J;this.state=S.IDLE}if(!X)return;let Q=this.tracksBuffered[this.currentTrackId];if(!Q)return;let z,W=J.start;for(let G=0;G=Q[G].start&&W<=Q[G].end){z=Q[G];break}let H=J.start+J.duration;if(z)z.end=H;else z={start:W,end:H},Q.push(z);if(this.fragmentTracker.fragBuffered(J),this.fragBufferedComplete(J,null),this.media)this.tick()}onBufferFlushing(Z,Y){let{startOffset:J,endOffset:X}=Y;if(J===0&&X!==Number.POSITIVE_INFINITY){let Q=X-1;if(Q<=0)return;Y.endOffsetSubtitles=Math.max(0,Q),this.tracksBuffered.forEach((z)=>{for(let W=0;Wnew $9(J));return}this.tracksBuffered=[],this.levels=Y.map((J)=>{let X=new $9(J);return this.tracksBuffered[X.id]=[],X}),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,o.SUBTITLE),this.fragPrevious=null,this.mediaBuffer=null}onSubtitleTrackSwitch(Z,Y){var J;if(this.currentTrackId=Y.id,!((J=this.levels)!=null&&J.length)||this.currentTrackId===-1){this.clearInterval();return}let X=this.levels[this.currentTrackId];if(X!=null&&X.details)this.mediaBuffer=this.mediaBufferTimeRanges;else this.mediaBuffer=null;if(X&&this.state!==S.STOPPED)this.setInterval(IJ)}onSubtitleTrackLoaded(Z,Y){var J;let{currentTrackId:X,levels:Q}=this,{details:z,id:W}=Y;if(!Q){this.warn(`Subtitle tracks were reset while loading level ${W}`);return}let H=Q[W];if(W>=Q.length||!H)return;this.log(`Subtitle track ${W} loaded [${z.startSN},${z.endSN}]${z.lastPartSn?`[part-${z.lastPartSn}-${z.lastPartIndex}]`:""},duration:${z.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let G=0;if(z.live||(J=H.details)!=null&&J.live){if(z.deltaUpdateFailed)return;let V=this.mainDetails;if(!V){this.startFragRequested=!1;return}let U=V.fragments[0];if(!H.details){if(z.hasProgramDateTime&&V.hasProgramDateTime)l7(z,V),G=z.fragmentStart;else if(U)G=U.start,DZ(z,G)}else{var q;if(G=this.alignPlaylists(z,H.details,(q=this.levelLastLoaded)==null?void 0:q.details),G===0&&U)G=U.start,DZ(z,G)}if(V&&!this.startFragRequested)this.setStartPosition(V,G)}if(H.details=z,this.levelLastLoaded=H,W!==X)return;if(this.hls.trigger(F.SUBTITLE_TRACK_UPDATED,{details:z,id:W,groupId:Y.groupId}),this.tick(),z.live&&!this.fragCurrent&&this.media&&this.state===S.IDLE){if(!J9(null,z.fragments,this.media.currentTime,0))this.warn("Subtitle playlist not aligned with playback"),H.details=void 0}}_handleFragmentLoadComplete(Z){let{frag:Y,payload:J}=Z,X=Y.decryptdata,Q=this.hls;if(this.fragContextChanged(Y))return;if(J&&J.byteLength>0&&X!=null&&X.key&&X.iv&&R9(X.method)){let z=performance.now();this.decrypter.decrypt(new Uint8Array(J),X.key.buffer,X.iv.buffer,iZ(X.method)).catch((W)=>{throw Q.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.FRAG_DECRYPT_ERROR,fatal:!1,error:W,reason:W.message,frag:Y}),W}).then((W)=>{let H=performance.now();Q.trigger(F.FRAG_DECRYPTED,{frag:Y,payload:W,stats:{tstart:z,tdecrypt:H}})}).catch((W)=>{this.warn(`${W.name}: ${W.message}`),this.state=S.IDLE})}}doTick(){if(!this.media){this.state=S.IDLE;return}if(this.state===S.IDLE){let{currentTrackId:Z,levels:Y}=this,J=Y==null?void 0:Y[Z];if(!J||!Y.length||!J.details)return;if(this.waitForLive(J))return;let{config:X}=this,Q=this.getLoadPosition(),z=t.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],Q,X.maxBufferHole),{end:W,len:H}=z,G=J.details,q=this.hls.maxBufferLength+G.levelTargetDuration;if(H>q)return;let V=G.fragments,U=V.length,N=G.edge,j=null,K=this.fragPrevious;if(WN-E?0:E;if(j=J9(K,V,Math.max(V[0].start,W),O),!j&&K&&K.start{if(X=X>>>0,X>Q-1)throw new DOMException(`Failed to execute '${J}' on 'TimeRanges': The index provided (${X}) is greater than the maximum bound (${Q})`);return Z[X][J]};this.buffered={get length(){return Z.length},end(J){return Y("end",J,Z.length)},start(J){return Y("start",J,Z.length)}}}}var Eq={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},v2=(Z)=>String.fromCharCode(Eq[Z]||Z),z8=15,w8=100,Aq={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Oq={17:2,18:4,21:6,22:8,23:10,19:13,20:15},$q={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Mq={25:2,26:4,29:6,30:8,31:10,27:13,28:15},wq=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class g2{constructor(){this.time=null,this.verboseLevel=0}log(Z,Y){if(this.verboseLevel>=Z){let J=typeof Y==="function"?Y():Y;q0.log(`${this.time} [${Z}] ${J}`)}}}var t8=function(Y){let J=[];for(let X=0;Xw8)this.logger.log(3,"Too large cursor position "+this.pos),this.pos=w8}moveCursor(Z){let Y=this.pos+Z;if(Z>1)for(let J=this.pos+1;J=144)this.backSpace();let Y=v2(Z);if(this.pos>=w8){this.logger.log(0,()=>"Cannot insert "+Z.toString(16)+" ("+Y+") at position "+this.pos+". Skipping it!");return}this.chars[this.pos].setChar(Y,this.currPenState),this.moveCursor(1)}clearFromPos(Z){let Y;for(Y=Z;Y"pacData = "+K0(Z));let Y=Z.row-1;if(this.nrRollUpRows&&Y"bkgData = "+K0(Z)),this.backSpace(),this.setPen(Z),this.insertChar(32)}setRollUpRows(Z){this.nrRollUpRows=Z}rollUp(){if(this.nrRollUpRows===null){this.logger.log(3,"roll_up but nrRollUpRows not set yet");return}this.logger.log(1,()=>this.getDisplayText());let Z=this.currRow+1-this.nrRollUpRows,Y=this.rows.splice(Z,1)[0];Y.clear(),this.rows.splice(this.currRow,0,Y),this.logger.log(2,"Rolling up")}getDisplayText(Z){Z=Z||!1;let Y=[],J="",X=-1;for(let Q=0;Q0)if(Z)J="["+Y.join(" | ")+"]";else J=Y.join(` `);return J}getTextAndFormat(){return this.rows}}class vZ{constructor(Z,Y,J){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=Z,this.outputFilter=Y,this.mode=null,this.verbose=0,this.displayedMemory=new g7(J),this.nonDisplayedMemory=new g7(J),this.lastOutputScreen=new g7(J),this.currRollUpRow=this.displayedMemory.rows[z8-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=J}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[z8-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(Z){this.outputFilter=Z}setPAC(Z){this.writeScreen.setPAC(Z)}setBkgData(Z){this.writeScreen.setBkgData(Z)}setMode(Z){if(Z===this.mode)return;if(this.mode=Z,this.logger.log(2,()=>"MODE="+Z),this.mode==="MODE_POP-ON")this.writeScreen=this.nonDisplayedMemory;else this.writeScreen=this.displayedMemory,this.writeScreen.reset();if(this.mode!=="MODE_ROLL-UP")this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null;this.mode=Z}insertChars(Z){for(let J=0;JY+": "+this.writeScreen.getDisplayText(!0)),this.mode==="MODE_PAINT-ON"||this.mode==="MODE_ROLL-UP")this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate()}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){if(this.logger.log(2,"BS - BackSpace"),this.mode==="MODE_TEXT")return;if(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory)this.outputDataUpdate()}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(Z){this.logger.log(2,"RU("+Z+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(Z)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),this.mode==="MODE_POP-ON"){let Z=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=Z,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(Z){this.logger.log(2,"TO("+Z+") - Tab Offset"),this.writeScreen.moveCursor(Z)}ccMIDROW(Z){let Y={flash:!1};if(Y.underline=Z%2===1,Y.italics=Z>=46,!Y.italics){let J=Math.floor(Z/2)-16,X=["white","green","blue","cyan","red","yellow","magenta"];Y.foreground=X[J]}else Y.foreground="white";this.logger.log(2,"MIDROW: "+K0(Y)),this.writeScreen.setPen(Y)}outputDataUpdate(Z=!1){let Y=this.logger.time;if(Y===null)return;if(this.outputFilter){if(this.cueStartTime===null&&!this.displayedMemory.isEmpty())this.cueStartTime=Y;else if(!this.displayedMemory.equals(this.lastOutputScreen)){if(this.outputFilter.newCue(this.cueStartTime,Y,this.lastOutputScreen),Z&&this.outputFilter.dispatchCue)this.outputFilter.dispatchCue();this.cueStartTime=this.displayedMemory.isEmpty()?null:Y}this.lastOutputScreen.copy(this.displayedMemory)}}cueSplitAtTime(Z){if(this.outputFilter){if(!this.displayedMemory.isEmpty()){if(this.outputFilter.newCue)this.outputFilter.newCue(this.cueStartTime,Z,this.displayedMemory);this.cueStartTime=Z}}}}class gZ{constructor(Z,Y,J){this.channels=void 0,this.currentChannel=0,this.cmdHistory=_q(),this.logger=void 0;let X=this.logger=new g2;this.channels=[null,new vZ(Z,Y,X),new vZ(Z+1,J,X)]}getHandler(Z){return this.channels[Z].getHandler()}setHandler(Z,Y){this.channels[Z].setHandler(Y)}addData(Z,Y){this.logger.time=Z;for(let J=0;J"["+t8([Y[J],Y[J+1]])+"] -> ("+t8([X,Q])+")");let H=this.cmdHistory;if(X>=16&&X<=31){if(Lq(X,Q,H)){_7(null,null,H),this.logger.log(3,()=>"Repeated command ("+t8([X,Q])+") is dropped");continue}if(_7(X,Q,this.cmdHistory),z=this.parseCmd(X,Q),!z)z=this.parseMidrow(X,Q);if(!z)z=this.parsePAC(X,Q);if(!z)z=this.parseBackgroundAttributes(X,Q)}else _7(null,null,H);if(!z){if(W=this.parseChars(X,Q),W){let q=this.currentChannel;if(q&&q>0)this.channels[q].insertChars(W);else this.logger.log(2,"No channel found yet. TEXT-MODE?")}}if(!z&&!W)this.logger.log(2,()=>"Couldn't parse cleaned data "+t8([X,Q])+" orig: "+t8([Y[J],Y[J+1]]))}}parseCmd(Z,Y){let J=(Z===20||Z===28||Z===21||Z===29)&&Y>=32&&Y<=47,X=(Z===23||Z===31)&&Y>=33&&Y<=35;if(!(J||X))return!1;let Q=Z===20||Z===21||Z===23?1:2,z=this.channels[Q];if(Z===20||Z===21||Z===28||Z===29){if(Y===32)z.ccRCL();else if(Y===33)z.ccBS();else if(Y===34)z.ccAOF();else if(Y===35)z.ccAON();else if(Y===36)z.ccDER();else if(Y===37)z.ccRU(2);else if(Y===38)z.ccRU(3);else if(Y===39)z.ccRU(4);else if(Y===40)z.ccFON();else if(Y===41)z.ccRDC();else if(Y===42)z.ccTR();else if(Y===43)z.ccRTD();else if(Y===44)z.ccEDM();else if(Y===45)z.ccCR();else if(Y===46)z.ccENM();else if(Y===47)z.ccEOC()}else z.ccTO(Y-32);return this.currentChannel=Q,!0}parseMidrow(Z,Y){let J=0;if((Z===17||Z===25)&&Y>=32&&Y<=47){if(Z===17)J=1;else J=2;if(J!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;let X=this.channels[J];if(!X)return!1;return X.ccMIDROW(Y),this.logger.log(3,()=>"MIDROW ("+t8([Z,Y])+")"),!0}return!1}parsePAC(Z,Y){let J,X=(Z>=17&&Z<=23||Z>=25&&Z<=31)&&Y>=64&&Y<=127,Q=(Z===16||Z===24)&&Y>=64&&Y<=95;if(!(X||Q))return!1;let z=Z<=23?1:2;if(Y>=64&&Y<=95)J=z===1?Aq[Z]:$q[Z];else J=z===1?Oq[Z]:Mq[Z];let W=this.channels[z];if(!W)return!1;return W.setPAC(this.interpretPAC(J,Y)),this.currentChannel=z,!0}interpretPAC(Z,Y){let J,X={color:null,italics:!1,indent:null,underline:!1,row:Z};if(Y>95)J=Y-96;else J=Y-64;if(X.underline=(J&1)===1,J<=13)X.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(J/2)];else if(J<=15)X.italics=!0,X.color="white";else X.indent=Math.floor((J-16)/2)*4;return X}parseChars(Z,Y){let J,X=null,Q=null;if(Z>=25)J=2,Q=Z-8;else J=1,Q=Z;if(Q>=17&&Q<=19){let z;if(Q===17)z=Y+80;else if(Q===18)z=Y+112;else z=Y+144;this.logger.log(2,()=>"Special char '"+v2(z)+"' in channel "+J),X=[z]}else if(Z>=32&&Z<=127)X=Y===0?[Z]:[Z,Y];if(X)this.logger.log(3,()=>"Char codes = "+t8(X).join(","));return X}parseBackgroundAttributes(Z,Y){let J=(Z===16||Z===24)&&Y>=32&&Y<=47,X=(Z===23||Z===31)&&Y>=45&&Y<=47;if(!(J||X))return!1;let Q,z={};if(Z===16||Z===24){if(Q=Math.floor((Y-32)/2),z.background=wq[Q],Y%2===1)z.background=z.background+"_semi"}else if(Y===45)z.background="transparent";else if(z.foreground="black",Y===47)z.underline=!0;let W=Z<=23?1:2;return this.channels[W].setBkgData(z),!0}reset(){for(let Z=0;Z100)throw Error("Position must be between 0 and 100.");M=D,this.hasBeenReset=!0}})),Object.defineProperty(V,"positionAlign",z({},U,{get:function(){return w},set:function(D){let I=Q(D);if(!I)throw SyntaxError("An invalid or illegal string was specified.");w=I,this.hasBeenReset=!0}})),Object.defineProperty(V,"size",z({},U,{get:function(){return _},set:function(D){if(D<0||D>100)throw Error("Size must be between 0 and 100.");_=D,this.hasBeenReset=!0}})),Object.defineProperty(V,"align",z({},U,{get:function(){return C},set:function(D){let I=Q(D);if(!I)throw SyntaxError("An invalid or illegal string was specified.");C=I,this.hasBeenReset=!0}})),V.displayState=void 0}return W.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},W}();class f2{decode(Z,Y){if(!Z)return"";if(typeof Z!=="string")throw Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(Z))}}function p2(Z){function Y(X,Q,z,W){return(X|0)*3600+(Q|0)*60+(z|0)+parseFloat(W||0)}let J=Z.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);if(!J)return null;if(parseFloat(J[2])>59)return Y(J[2],J[3],0,J[4]);return Y(J[1],J[2],J[3],J[4])}class m2{constructor(){this.values=Object.create(null)}set(Z,Y){if(!this.get(Z)&&Y!=="")this.values[Z]=Y}get(Z,Y,J){if(J)return this.has(Z)?this.values[Z]:Y[J];return this.has(Z)?this.values[Z]:Y}has(Z){return Z in this.values}alt(Z,Y,J){for(let X=0;X=0&&J<=100)return this.set(Z,J),!0}return!1}}function u2(Z,Y,J,X){let Q=X?Z.split(X):[Z];for(let z in Q){if(typeof Q[z]!=="string")continue;let W=Q[z].split(J);if(W.length!==2)continue;let H=W[0],G=W[1];Y(H,G)}}var kZ=new V6(0,0,""),D7=kZ.align==="middle"?"middle":"center";function Dq(Z,Y,J){let X=Z;function Q(){let H=p2(Z);if(H===null)throw Error("Malformed timestamp: "+X);return Z=Z.replace(/^[^\sa-zA-Z-]+/,""),H}function z(H,G){let q=new m2;u2(H,function(N,j){let K;switch(N){case"region":for(let B=J.length-1;B>=0;B--)if(J[B].id===j){q.set(N,J[B].region);break}break;case"vertical":q.alt(N,j,["rl","lr"]);break;case"line":if(K=j.split(","),q.integer(N,K[0]),q.percent(N,K[0]))q.set("snapToLines",!1);if(q.alt(N,K[0],["auto"]),K.length===2)q.alt("lineAlign",K[1],["start",D7,"end"]);break;case"position":if(K=j.split(","),q.percent(N,K[0]),K.length===2)q.alt("positionAlign",K[1],["start",D7,"end","line-left","line-right","auto"]);break;case"size":q.percent(N,j);break;case"align":q.alt(N,j,["start",D7,"end","left","right"]);break}},/:/,/\s/),G.region=q.get("region",null),G.vertical=q.get("vertical","");let V=q.get("line","auto");if(V==="auto"&&kZ.line===-1)V=-1;G.line=V,G.lineAlign=q.get("lineAlign","start"),G.snapToLines=q.get("snapToLines",!0),G.size=q.get("size",100),G.align=q.get("align",D7);let U=q.get("position","auto");if(U==="auto"&&kZ.position===50)U=G.align==="start"||G.align==="left"?0:G.align==="end"||G.align==="right"?100:50;G.position=U}function W(){Z=Z.replace(/^\s+/,"")}if(W(),Y.startTime=Q(),W(),Z.slice(0,3)!=="-->")throw Error("Malformed time stamp (time stamps must be separated by '-->'): "+X);Z=Z.slice(3),W(),Y.endTime=Q(),W(),z(Z,Y)}function c2(Z){return Z.replace(//gi,` `)}class d2{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new f2,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(Z){let Y=this;if(Z)Y.buffer+=Y.decoder.decode(Z,{stream:!0});function J(){let Q=Y.buffer,z=0;Q=c2(Q);while(z")===-1){Y.cue.id=Q;continue}case"CUE":if(!Y.cue){Y.state="BADCUE";continue}try{Dq(Q,Y.cue,Y.regionList)}catch(W){Y.cue=null,Y.state="BADCUE";continue}Y.state="CUETEXT";continue;case"CUETEXT":{let W=Q.indexOf("-->")!==-1;if(!Q||W&&(z=!0)){if(Y.oncue&&Y.cue)Y.oncue(Y.cue);Y.cue=null,Y.state="ID";continue}if(Y.cue===null)continue;if(Y.cue.text)Y.cue.text+=` `;Y.cue.text+=Q}continue;case"BADCUE":if(!Q)Y.state="ID"}}}catch(Q){if(Y.state==="CUETEXT"&&Y.cue&&Y.oncue)Y.oncue(Y.cue);Y.cue=null,Y.state=Y.state==="INITIAL"?"BADWEBVTT":"BADCUE"}return this}flush(){let Z=this;try{if(Z.cue||Z.state==="HEADER")Z.buffer+=` `,Z.parse();if(Z.state==="INITIAL"||Z.state==="BADWEBVTT")throw Error("Malformed WebVTT signature.")}catch(Y){if(Z.onparsingerror)Z.onparsingerror(Y)}if(Z.onflush)Z.onflush();return this}}var Cq=/\r\n|\n\r|\n|\r/g,qZ=function(Y,J,X=0){return Y.slice(X,X+J.length)===J},Pq=function(Y){let J=parseInt(Y.slice(-3)),X=parseInt(Y.slice(-6,-4)),Q=parseInt(Y.slice(-9,-7)),z=Y.length>9?parseInt(Y.substring(0,Y.indexOf(":"))):0;if(!m(J)||!m(X)||!m(Q)||!m(z))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${Y}`);return J+=1000*X,J+=60000*Q,J+=3600000*z,J};function U6(Z,Y,J){return c9(Z.toString())+c9(Y.toString())+c9(J)}var bq=function(Y,J,X){let Q=Y[J],z=Y[Q.prevCC];if(!z||!z.new&&Q.new){Y.ccOffset=Y.presentationOffset=Q.start,Q.new=!1;return}while((W=z)!=null&&W.new){var W;Y.ccOffset+=Q.start-z.start,Q.new=!1,Q=z,z=Y[Q.prevCC]}Y.presentationOffset=X};function Iq(Z,Y,J,X,Q,z,W){let H=new d2,G=o0(new Uint8Array(Z)).trim().replace(Cq,` `).split(` `),q=[],V=Y?G4(Y.baseTime,Y.timescale):0,U="00:00.000",N=0,j=0,K,B=!0;H.oncue=function(R){let E=J[X],O=J.ccOffset,A=(N-V)/90000;if(E!=null&&E.new)if(j!==void 0)O=J.ccOffset=E.start;else bq(J,X,A);if(A){if(!Y){K=Error("Missing initPTS for VTT MPEGTS");return}O=A-J.presentationOffset}let $=R.endTime-R.startTime,L=c0((R.startTime+O-j)*90000,Q*90000)/90000;R.startTime=Math.max(L,0),R.endTime=Math.max(L+$,0);let M=R.text.trim();if(R.text=decodeURIComponent(encodeURIComponent(M)),!R.id)R.id=U6(R.startTime,R.endTime,M);if(R.endTime>0)q.push(R)},H.onparsingerror=function(R){K=R},H.onflush=function(){if(K){W(K);return}z(q)},G.forEach((R)=>{if(B){if(qZ(R,"X-TIMESTAMP-MAP=")){B=!1,R.slice(16).split(",").forEach((E)=>{if(qZ(E,"LOCAL:"))U=E.slice(6);else if(qZ(E,"MPEGTS:"))N=parseInt(E.slice(7))});try{j=Pq(U)/1000}catch(E){K=E}return}else if(R==="")B=!1}H.parse(R+` `)}),H.flush()}var VZ="stpp.ttml.im1t",o2=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,l2=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,xq={left:"start",center:"center",right:"end",start:"start",end:"end"};function xJ(Z,Y,J,X){let Q=Y0(new Uint8Array(Z),["mdat"]);if(Q.length===0){X(Error("Could not parse IMSC1 mdat"));return}let z=Q.map((H)=>o0(H)),W=W4(Y.baseTime,1,Y.timescale);try{z.forEach((H)=>J(Sq(H,W)))}catch(H){X(H)}}function Sq(Z,Y){let Q=new DOMParser().parseFromString(Z,"text/xml").getElementsByTagName("tt")[0];if(!Q)throw Error("Invalid ttml");let z={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},W=Object.keys(z).reduce((U,N)=>{return U[N]=Q.getAttribute(`ttp:${N}`)||z[N],U},{}),H=Q.getAttribute("xml:space")!=="preserve",G=SJ(UZ(Q,"styling","style")),q=SJ(UZ(Q,"layout","region")),V=UZ(Q,"body","[begin]");return[].map.call(V,(U)=>{let N=n2(U,H);if(!N||!U.hasAttribute("begin"))return null;let j=NZ(U.getAttribute("begin"),W),K=NZ(U.getAttribute("dur"),W),B=NZ(U.getAttribute("end"),W);if(j===null)throw TJ(U);if(B===null){if(K===null)throw TJ(U);B=j+K}let R=new V6(j-Y,B-Y,N);R.id=U6(R.startTime,R.endTime,R.text);let E=q[U.getAttribute("region")],O=G[U.getAttribute("style")],A=Tq(E,O,G),{textAlign:$}=A;if($){let L=xq[$];if(L)R.lineAlign=L;R.align=$}return U0(R,A),R}).filter((U)=>U!==null)}function UZ(Z,Y,J){let X=Z.getElementsByTagName(Y)[0];if(X)return[].slice.call(X.querySelectorAll(J));return[]}function SJ(Z){return Z.reduce((Y,J)=>{let X=J.getAttribute("xml:id");if(X)Y[X]=J;return Y},{})}function n2(Z,Y){return[].slice.call(Z.childNodes).reduce((J,X,Q)=>{var z;if(X.nodeName==="br"&&Q)return J+` `;if((z=X.childNodes)!=null&&z.length)return n2(X,Y);else if(Y)return J+X.textContent.trim().replace(/\s+/g," ");return J+X.textContent},"")}function Tq(Z,Y,J){let Q=null,z=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],W=Z!=null&&Z.hasAttribute("style")?Z.getAttribute("style"):null;if(W&&J.hasOwnProperty(W))Q=J[W];return z.reduce((H,G)=>{let q=jZ(Y,"http://www.w3.org/ns/ttml#styling",G)||jZ(Z,"http://www.w3.org/ns/ttml#styling",G)||jZ(Q,"http://www.w3.org/ns/ttml#styling",G);if(q)H[G]=q;return H},{})}function jZ(Z,Y,J){if(!Z)return null;return Z.hasAttributeNS(Y,J)?Z.getAttributeNS(Y,J):null}function TJ(Z){return Error(`Could not parse ttml timestamp ${Z}`)}function NZ(Z,Y){if(!Z)return null;let J=p2(Z);if(J===null){if(o2.test(Z))J=hq(Z,Y);else if(l2.test(Z))J=vq(Z,Y)}return J}function hq(Z,Y){let J=o2.exec(Z),X=(J[4]|0)+(J[5]|0)/Y.subFrameRate;return(J[1]|0)*3600+(J[2]|0)*60+(J[3]|0)+X/Y.frameRate}function vq(Z,Y){let J=l2.exec(Z),X=Number(J[1]);switch(J[2]){case"h":return X*3600;case"m":return X*60;case"ms":return X*1000;case"f":return X/Y.frameRate;case"t":return X/Y.tickRate}return X}class p9{constructor(Z,Y){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=Z,this.trackName=Y}dispatchCue(){if(this.startTime===null)return;this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null}newCue(Z,Y,J){if(this.startTime===null||this.startTime>Z)this.startTime=Z;this.endTime=Y,this.screen=J,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}class s2{constructor(Z){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=vJ(),this.captionsProperties=void 0,this.hls=Z,this.config=Z.config,this.Cues=Z.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},Z.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.on(F.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),Z.on(F.FRAG_LOADING,this.onFragLoading,this),Z.on(F.FRAG_LOADED,this.onFragLoaded,this),Z.on(F.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),Z.on(F.FRAG_DECRYPTED,this.onFragDecrypted,this),Z.on(F.INIT_PTS_FOUND,this.onInitPtsFound,this),Z.on(F.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),Z.on(F.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){let{hls:Z}=this;Z.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.off(F.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),Z.off(F.FRAG_LOADING,this.onFragLoading,this),Z.off(F.FRAG_LOADED,this.onFragLoaded,this),Z.off(F.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),Z.off(F.FRAG_DECRYPTED,this.onFragDecrypted,this),Z.off(F.INIT_PTS_FOUND,this.onInitPtsFound,this),Z.off(F.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),Z.off(F.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){let Z=new p9(this,"textTrack1"),Y=new p9(this,"textTrack2"),J=new p9(this,"textTrack3"),X=new p9(this,"textTrack4");this.cea608Parser1=new gZ(1,Z,Y),this.cea608Parser2=new gZ(3,J,X)}addCues(Z,Y,J,X,Q){let z=!1;for(let W=Q.length;W--;){let H=Q[W],G=gq(H[0],H[1],Y,J);if(G>=0){if(H[0]=Math.min(H[0],Y),H[1]=Math.max(H[1],J),z=!0,G/(J-Y)>0.5)return}}if(!z)Q.push([Y,J]);if(this.config.renderTextTracksNatively){let W=this.captionsTracks[Z];this.Cues.newCue(W,Y,J,X)}else{let W=this.Cues.newCue(null,Y,J,X);this.hls.trigger(F.CUES_PARSED,{type:"captions",cues:W,track:Z})}}onInitPtsFound(Z,{frag:Y,id:J,initPTS:X,timescale:Q,trackId:z}){let{unparsedVttFrags:W}=this;if(J===o.MAIN)this.initPTS[Y.cc]={baseTime:X,timescale:Q,trackId:z};if(W.length)this.unparsedVttFrags=[],W.forEach((H)=>{if(this.initPTS[H.frag.cc])this.onFragLoaded(F.FRAG_LOADED,H);else this.hls.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:H.frag,error:Error("Subtitle discontinuity domain does not match main")})})}getExistingTrack(Z,Y){let{media:J}=this;if(J)for(let X=0;X{K9(X[Q]),delete X[Q]}),this.nonNativeCaptionsTracks={}}onManifestLoading(){if(this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=vJ(),this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2)this.cea608Parser1.reset(),this.cea608Parser2.reset()}_cleanTracks(){let{media:Z}=this;if(!Z)return;let Y=Z.textTracks;if(Y)for(let J=0;JQ.textCodec===VZ);if(this.config.enableWebVTT||X&&this.config.enableIMSC1){if(z2(this.tracks,J)){this.tracks=J;return}if(this.textTracks=[],this.tracks=J,this.config.renderTextTracksNatively){let z=this.media,W=z?v7(z.textTracks):null;if(this.tracks.forEach((H,G)=>{let q;if(W){let V=null;for(let U=0;UG!==null).map((G)=>G.label);if(H.length)this.hls.logger.warn(`Media element contains unused subtitle tracks: ${H.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){let z=this.tracks.map((W)=>{return{label:W.name,kind:W.type.toLowerCase(),default:W.default,subtitleTrack:W}});this.hls.trigger(F.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:z})}}}onManifestLoaded(Z,Y){if(this.config.enableCEA708Captions&&Y.captions)Y.captions.forEach((J)=>{let X=/(?:CC|SERVICE)([1-4])/.exec(J.instreamId);if(!X)return;let Q=`textTrack${X[1]}`,z=this.captionsProperties[Q];if(!z)return;if(z.label=J.name,J.lang)z.languageCode=J.lang;z.media=J})}closedCaptionsForLevel(Z){let Y=this.hls.levels[Z.level];return Y==null?void 0:Y.attrs["CLOSED-CAPTIONS"]}onFragLoading(Z,Y){if(this.enabled&&Y.frag.type===o.MAIN){var J,X;let{cea608Parser1:Q,cea608Parser2:z,lastSn:W}=this,{cc:H,sn:G}=Y.frag,q=(J=(X=Y.part)==null?void 0:X.index)!=null?J:-1;if(Q&&z){if(G!==W+1||G===W&&q!==this.lastPartIndex+1||H!==this.lastCc)Q.reset(),z.reset()}this.lastCc=H,this.lastSn=G,this.lastPartIndex=q}}onFragLoaded(Z,Y){let{frag:J,payload:X}=Y;if(J.type===o.SUBTITLE)if(X.byteLength){let Q=J.decryptdata,z="stats"in Y;if(Q==null||!Q.encrypted||z){let W=this.tracks[J.level],H=this.vttCCs;if(!H[J.cc])H[J.cc]={start:J.start,prevCC:this.prevCC,new:!0},this.prevCC=J.cc;if(W&&W.textCodec===VZ)this._parseIMSC1(J,X);else this._parseVTTs(Y)}}else this.hls.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:J,error:Error("Empty subtitle payload")})}_parseIMSC1(Z,Y){let J=this.hls;xJ(Y,this.initPTS[Z.cc],(X)=>{this._appendCues(X,Z.level),J.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:Z})},(X)=>{J.logger.log(`Failed to parse IMSC1: ${X}`),J.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:Z,error:X})})}_parseVTTs(Z){var Y;let{frag:J,payload:X}=Z,{initPTS:Q,unparsedVttFrags:z}=this,W=Q.length-1;if(!Q[J.cc]&&W===-1){z.push(Z);return}let H=this.hls,G=(Y=J.initSegment)!=null&&Y.data?a0(J.initSegment.data,new Uint8Array(X)).buffer:X;Iq(G,this.initPTS[J.cc],this.vttCCs,J.cc,J.start,(q)=>{this._appendCues(q,J.level),H.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:J})},(q)=>{let V=q.message==="Missing initPTS for VTT MPEGTS";if(V)z.push(Z);else this._fallbackToIMSC1(J,X);if(H.logger.log(`Failed to parse VTT cue: ${q}`),V&&W>J.cc)return;H.trigger(F.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:J,error:q})})}_fallbackToIMSC1(Z,Y){let J=this.tracks[Z.level];if(!J.textCodec)xJ(Y,this.initPTS[Z.cc],()=>{J.textCodec=VZ,this._parseIMSC1(Z,Y)},()=>{J.textCodec="wvtt"})}_appendCues(Z,Y){let J=this.hls;if(this.config.renderTextTracksNatively){let X=this.textTracks[Y];if(!X||X.mode==="disabled")return;Z.forEach((Q)=>_2(X,Q))}else{let X=this.tracks[Y];if(!X)return;let Q=X.default?"default":"subtitles"+Y;J.trigger(F.CUES_PARSED,{type:"subtitles",cues:Z,track:Q})}}onFragDecrypted(Z,Y){let{frag:J}=Y;if(J.type===o.SUBTITLE)this.onFragLoaded(F.FRAG_LOADED,Y)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(Z,Y){if(!this.enabled||!this.config.enableCEA708Captions)return;let{frag:J,samples:X}=Y;if(J.type===o.MAIN&&this.closedCaptionsForLevel(J)==="NONE")return;for(let Q=0;QhZ(W[H],Y,J))}if(this.config.renderTextTracksNatively){if(Y===0&&X!==void 0){let{textTracks:W}=this;Object.keys(W).forEach((H)=>hZ(W[H],Y,X))}}}extractCea608Data(Z){let Y=[[],[]],J=Z[0]&31,X=2;for(let Q=0;Q=16)G--;else G++;let j=c2(q.trim()),K=U6(Y,J,j);if(!(Z!=null&&(U=Z.cues)!=null&&U.getCueById(K)))W=new V(Y,J,j),W.id=K,W.line=N+1,W.align="left",W.position=10+Math.min(80,Math.floor(G*8/32)*10),Q.push(W)}if(Z&&Q.length)Q.sort((N,j)=>{if(N.line==="auto"||j.line==="auto")return 0;if(N.line>8&&j.line>8)return j.line-N.line;return N.line-j.line}),Q.forEach((N)=>_2(Z,N));return Q}};function fq(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(Z){}return!1}var pq=/(\d+)-(\d+)\/(\d+)/;class yZ{constructor(Z){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=Z.fetchSetup||dq,this.controller=new self.AbortController,this.stats=new i7}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){if(this.controller&&!this.stats.loading.end)this.stats.aborted=!0,this.controller.abort()}abort(){var Z;if(this.abortInternal(),(Z=this.callbacks)!=null&&Z.onAbort)this.callbacks.onAbort(this.stats,this.context,this.response)}load(Z,Y,J){let X=this.stats;if(X.loading.start)throw Error("Loader can only be used once.");X.loading.start=self.performance.now();let Q=mq(Z,this.controller.signal),z=Z.responseType==="arraybuffer",W=z?"byteLength":"length",{maxTimeToFirstByteMs:H,maxLoadTimeMs:G}=Y.loadPolicy;this.context=Z,this.config=Y,this.callbacks=J,this.request=this.fetchSetup(Z,Q),self.clearTimeout(this.requestTimeout),Y.timeout=H&&m(H)?H:G,this.requestTimeout=self.setTimeout(()=>{if(this.callbacks)this.abortInternal(),this.callbacks.onTimeout(X,Z,this.response)},Y.timeout),(s9(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then((V)=>{var U;this.response=this.loader=V;let N=Math.max(self.performance.now(),X.loading.start);if(self.clearTimeout(this.requestTimeout),Y.timeout=G,this.requestTimeout=self.setTimeout(()=>{if(this.callbacks)this.abortInternal(),this.callbacks.onTimeout(X,Z,this.response)},G-(N-X.loading.start)),!V.ok){let{status:K,statusText:B}=V;throw new r2(B||"fetch, bad network response",K,V)}X.loading.first=N,X.total=cq(V.headers)||X.total;let j=(U=this.callbacks)==null?void 0:U.onProgress;if(j&&m(Y.highWaterMark))return this.loadProgressively(V,X,Z,Y.highWaterMark,j);if(z)return V.arrayBuffer();if(Z.responseType==="json")return V.json();return V.text()}).then((V)=>{var U,N;let j=this.response;if(!j)throw Error("loader destroyed");self.clearTimeout(this.requestTimeout),X.loading.end=Math.max(self.performance.now(),X.loading.first);let K=V[W];if(K)X.loaded=X.total=K;let B={url:j.url,data:V,code:j.status},R=(U=this.callbacks)==null?void 0:U.onProgress;if(R&&!m(Y.highWaterMark))R(X,Z,V,j);(N=this.callbacks)==null||N.onSuccess(B,X,Z,j)}).catch((V)=>{var U;if(self.clearTimeout(this.requestTimeout),X.aborted)return;let N=!V?0:V.code||0,j=!V?null:V.message;(U=this.callbacks)==null||U.onError({code:N,text:j},Z,V?V.details:null,X)})}getCacheAge(){let Z=null;if(this.response){let Y=this.response.headers.get("age");Z=Y?parseFloat(Y):null}return Z}getResponseHeader(Z){return this.response?this.response.headers.get(Z):null}loadProgressively(Z,Y,J,X=0,Q){let z=new aZ,W=Z.body.getReader(),H=()=>{return W.read().then((G)=>{if(G.done){if(z.dataLength)Q(Y,J,z.flush().buffer,Z);return Promise.resolve(new ArrayBuffer(0))}let q=G.value,V=q.length;if(Y.loaded+=V,V=X)Q(Y,J,z.flush().buffer,Z)}else Q(Y,J,q.buffer,Z);return H()}).catch(()=>{return Promise.reject()})};return H()}}function mq(Z,Y){let J={method:"GET",mode:"cors",credentials:"same-origin",signal:Y,headers:new self.Headers(U0({},Z.headers))};if(Z.rangeEnd)J.headers.set("Range","bytes="+Z.rangeStart+"-"+String(Z.rangeEnd-1));return J}function uq(Z){let Y=pq.exec(Z);if(Y)return parseInt(Y[2])-parseInt(Y[1])+1}function cq(Z){let Y=Z.get("Content-Range");if(Y){let X=uq(Y);if(m(X))return X}let J=Z.get("Content-Length");if(J)return parseInt(J)}function dq(Z,Y){return new self.Request(Z.url,Y)}class r2 extends Error{constructor(Z,Y,J){super(Z);this.code=void 0,this.details=void 0,this.code=Y,this.details=J}}var oq=/^age:\s*[\d.]+\s*$/im;class j6{constructor(Z){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=Z?Z.xhrSetup||null:null,this.stats=new i7,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){let Z=this.loader;if(self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),Z){if(Z.onreadystatechange=null,Z.onprogress=null,Z.readyState!==4)this.stats.aborted=!0,Z.abort()}}abort(){var Z;if(this.abortInternal(),(Z=this.callbacks)!=null&&Z.onAbort)this.callbacks.onAbort(this.stats,this.context,this.loader)}load(Z,Y,J){if(this.stats.loading.start)throw Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=Z,this.config=Y,this.callbacks=J,this.loadInternal()}loadInternal(){let{config:Z,context:Y}=this;if(!Z||!Y)return;let J=this.loader=new self.XMLHttpRequest,X=this.stats;X.loading.first=0,X.loaded=0,X.aborted=!1;let Q=this.xhrSetup;if(Q)Promise.resolve().then(()=>{if(this.loader!==J||this.stats.aborted)return;return Q(J,Y.url)}).catch((z)=>{if(this.loader!==J||this.stats.aborted)return;return J.open("GET",Y.url,!0),Q(J,Y.url)}).then(()=>{if(this.loader!==J||this.stats.aborted)return;this.openAndSendXhr(J,Y,Z)}).catch((z)=>{var W;(W=this.callbacks)==null||W.onError({code:J.status,text:z.message},Y,J,X);return});else this.openAndSendXhr(J,Y,Z)}openAndSendXhr(Z,Y,J){if(!Z.readyState)Z.open("GET",Y.url,!0);let X=Y.headers,{maxTimeToFirstByteMs:Q,maxLoadTimeMs:z}=J.loadPolicy;if(X)for(let W in X)Z.setRequestHeader(W,X[W]);if(Y.rangeEnd)Z.setRequestHeader("Range","bytes="+Y.rangeStart+"-"+(Y.rangeEnd-1));Z.onreadystatechange=this.readystatechange.bind(this),Z.onprogress=this.loadprogress.bind(this),Z.responseType=Y.responseType,self.clearTimeout(this.requestTimeout),J.timeout=Q&&m(Q)?Q:z,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),J.timeout),Z.send()}readystatechange(){let{context:Z,loader:Y,stats:J}=this;if(!Z||!Y)return;let X=Y.readyState,Q=this.config;if(J.aborted)return;if(X>=2){if(J.loading.first===0){if(J.loading.first=Math.max(self.performance.now(),J.loading.start),Q.timeout!==Q.loadPolicy.maxLoadTimeMs)self.clearTimeout(this.requestTimeout),Q.timeout=Q.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),Q.loadPolicy.maxLoadTimeMs-(J.loading.first-J.loading.start))}if(X===4){self.clearTimeout(this.requestTimeout),Y.onreadystatechange=null,Y.onprogress=null;let G=Y.status,q=Y.responseType==="text"?Y.responseText:null;if(G>=200&&G<300){let j=q!=null?q:Y.response;if(j!=null){var z,W;J.loading.end=Math.max(self.performance.now(),J.loading.first);let K=Y.responseType==="arraybuffer"?j.byteLength:j.length;J.loaded=J.total=K,J.bwEstimate=J.total*8000/(J.loading.end-J.loading.first);let B=(z=this.callbacks)==null?void 0:z.onProgress;if(B)B(J,Z,j,Y);let R={url:Y.responseURL,data:j,code:G};(W=this.callbacks)==null||W.onSuccess(R,J,Z,Y);return}}let V=Q.loadPolicy.errorRetry,U=J.retry,N={url:Z.url,data:void 0,code:G};if(c7(V,U,!1,N))this.retry(V);else{var H;q0.error(`${G} while loading ${Z.url}`),(H=this.callbacks)==null||H.onError({code:G,text:Y.statusText},Z,Y,J)}}}}loadtimeout(){if(!this.config)return;let Z=this.config.loadPolicy.timeoutRetry,Y=this.stats.retry;if(c7(Z,Y,!0))this.retry(Z);else{var J;q0.warn(`timeout while loading ${(J=this.context)==null?void 0:J.url}`);let X=this.callbacks;if(X)this.abortInternal(),X.onTimeout(this.stats,this.context,this.loader)}}retry(Z){let{context:Y,stats:J}=this;this.retryDelay=lZ(Z,J.retry),J.retry++,q0.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${Y==null?void 0:Y.url}, retrying ${J.retry}/${Z.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(Z){let Y=this.stats;if(Y.loaded=Z.loaded,Z.lengthComputable)Y.total=Z.total}getCacheAge(){let Z=null;if(this.loader&&oq.test(this.loader.getAllResponseHeaders())){let Y=this.loader.getResponseHeader("age");Z=Y?parseFloat(Y):null}return Z}getResponseHeader(Z){if(this.loader&&new RegExp(`^${Z}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders()))return this.loader.getResponseHeader(Z);return null}}var lq={maxTimeToFirstByteMs:8000,maxLoadTimeMs:20000,timeoutRetry:null,errorRetry:null},nq=H0(H0({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:Number.POSITIVE_INFINITY,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,startOnSegmentBoundary:!1,maxBufferSize:60000000,maxFragLookUpTolerance:0.25,maxBufferHole:0.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:0.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5000,fpsDroppedMonitoringThreshold:0.2,appendErrorMaxRetry:3,ignorePlaylistParsingErrors:!1,loader:j6,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:QX,bufferController:V2,capLevelController:r9,errorController:qX,fpsController:w2,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:500000,abrEwmaDefaultEstimateMax:5000000,abrBandWidthFactor:0.95,abrBandWidthUpFactor:0.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:AX,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,useMediaCapabilities:!0,preserveManualLevelOnError:!1,certLoadPolicy:{default:lq},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8000,maxLoadTimeMs:20000,timeoutRetry:{maxNumRetry:1,retryDelayMs:1000,maxRetryDelayMs:20000,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1000,maxRetryDelayMs:20000,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:20000,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1000,maxRetryDelayMs:8000}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:20000,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1000,maxRetryDelayMs:8000}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:120000,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1000,maxRetryDelayMs:8000}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:20000,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1000,maxRetryDelayMs:8000}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:30000,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1000,maxRetryDelayMs:8000}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1000,manifestLoadingMaxRetryTimeout:64000,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1000,levelLoadingMaxRetryTimeout:64000,fragLoadingTimeOut:20000,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1000,fragLoadingMaxRetryTimeout:64000},sq()),{},{subtitleStreamController:T2,subtitleTrackController:D2,timelineController:s2,audioStreamController:Q2,audioTrackController:W2,emeController:E9,cmcdController:O2,contentSteeringController:$2,interstitialsController:S2});function sq(){return{cueHandler:yq,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}}function iq(Z,Y,J){if((Y.liveSyncDurationCount||Y.liveMaxLatencyDurationCount)&&(Y.liveSyncDuration||Y.liveMaxLatencyDuration))throw Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(Y.liveMaxLatencyDurationCount!==void 0&&(Y.liveSyncDurationCount===void 0||Y.liveMaxLatencyDurationCount<=Y.liveSyncDurationCount))throw Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(Y.liveMaxLatencyDuration!==void 0&&(Y.liveSyncDuration===void 0||Y.liveMaxLatencyDuration<=Y.liveSyncDuration))throw Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');let X=fZ(Z),Q=["manifest","level","frag"],z=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return Q.forEach((W)=>{let H=`${W==="level"?"playlist":W}LoadPolicy`,G=Y[H]===void 0,q=[];if(z.forEach((V)=>{let U=`${W}Loading${V}`,N=Y[U];if(N!==void 0&&G){q.push(U);let j=X[H].default;switch(Y[H]={default:j},V){case"TimeOut":j.maxLoadTimeMs=N,j.maxTimeToFirstByteMs=N;break;case"MaxRetry":j.errorRetry.maxNumRetry=N,j.timeoutRetry.maxNumRetry=N;break;case"RetryDelay":j.errorRetry.retryDelayMs=N,j.timeoutRetry.retryDelayMs=N;break;case"MaxRetryTimeout":j.errorRetry.maxRetryDelayMs=N,j.timeoutRetry.maxRetryDelayMs=N;break}}}),q.length)J.warn(`hls.js config: "${q.join('", "')}" setting(s) are deprecated, use "${H}": ${K0(Y[H])}`)}),H0(H0({},X),Y)}function fZ(Z){if(Z&&typeof Z==="object"){if(Array.isArray(Z))return Z.map(fZ);return Object.keys(Z).reduce((Y,J)=>{return Y[J]=fZ(Z[J]),Y},{})}return Z}function rq(Z,Y){let J=Z.loader;if(J!==yZ&&J!==j6)Y.log("[config]: Custom loader detected, cannot enable progressive streaming"),Z.progressive=!1;else if(fq())Z.loader=yZ,Z.progressive=!0,Z.enableSoftwareAES=!0,Y.log("[config]: Progressive streaming enabled, using FetchLoader")}var k7=2,aq=0.1,tq=0.05,eq=100;class a2 extends nZ{constructor(Z,Y){super("gap-controller",Z.logger);this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var J;if((J=this.media)!=null&&J.seeking)return;this.waiting=self.performance.now(),this.tick()},this.onMediaEnded=()=>{if(this.hls){var J;this.ended=((J=this.media)==null?void 0:J.currentTime)||1,this.hls.trigger(F.MEDIA_ENDED,{stalled:!1})}},this.hls=Z,this.fragmentTracker=Y,this.registerListeners()}registerListeners(){let{hls:Z}=this;if(Z)Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.BUFFER_APPENDED,this.onBufferAppended,this)}unregisterListeners(){let{hls:Z}=this;if(Z)Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.BUFFER_APPENDED,this.onBufferAppended,this)}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(Z,Y){this.setInterval(eq),this.mediaSource=Y.mediaSource;let J=this.media=Y.media;k0(J,"playing",this.onMediaPlaying),k0(J,"waiting",this.onMediaWaiting),k0(J,"ended",this.onMediaEnded)}onMediaDetaching(Z,Y){this.clearInterval();let{media:J}=this;if(J)m0(J,"playing",this.onMediaPlaying),m0(J,"waiting",this.onMediaWaiting),m0(J,"ended",this.onMediaEnded),this.media=null;this.mediaSource=void 0}onBufferAppended(Z,Y){this.buffered=Y.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}tick(){var Z;if(!((Z=this.media)!=null&&Z.readyState)||!this.hasBuffered)return;let Y=this.media.currentTime;this.poll(Y,this.lastCurrentTime),this.lastCurrentTime=Y}poll(Z,Y){var J,X;let Q=(J=this.hls)==null?void 0:J.config;if(!Q)return;let z=this.media;if(!z)return;let{seeking:W}=z,H=this.seeking&&!W,G=!this.seeking&&W,q=z.paused&&!W||z.ended||z.playbackRate===0;if(this.seeking=W,Z!==Y){if(Y)this.ended=0;if(this.moved=!0,!W){if(this.nudgeRetry=0,Q.nudgeOnVideoHole&&!q&&Z>Y)this.nudgeOnVideoHole(Z,Y)}if(this.waiting===0)this.stallResolved(Z);return}if(G||H){if(H)this.stallResolved(Z);return}if(q){if(this.nudgeRetry=0,this.stallResolved(Z),!this.ended&&z.ended&&this.hls)this.ended=Z||1,this.hls.trigger(F.MEDIA_ENDED,{stalled:!1});return}if(!t.getBuffered(z).length){this.nudgeRetry=0;return}let V=t.bufferInfo(z,Z,0),U=V.nextStart||0,N=this.fragmentTracker;if(W&&N&&this.hls){let L=gJ(this.hls.inFlightFragments,Z),M=V.len>k7,w=!U||L||U-Z>k7&&!N.getPartialFragment(Z);if(M||w)return;this.moved=!1}let j=(X=this.hls)==null?void 0:X.latestLevelDetails;if(!this.moved&&this.stalled!==null&&N){if(!(V.len>0)&&!U)return;let M=Math.max(U,V.start||0)-Z,_=j!=null&&j.live?j.targetduration*2:k7,C=C7(Z,N);if(M>0&&(M<=_||C)){if(!z.paused)this._trySkipBufferHole(C);return}}let K=Q.detectStallWithCurrentTimeMs,B=self.performance.now(),R=this.waiting,E=this.stalled;if(E===null)if(R>0&&B-R=K||R)&&this.hls){var A;if(((A=this.mediaSource)==null?void 0:A.readyState)==="ended"&&!(j!=null&&j.live)&&Math.abs(Z-((j==null?void 0:j.edge)||0))<1){if(this.ended)return;this.ended=Z||1,this.hls.trigger(F.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(V),!this.media||!this.hls)return}let $=t.bufferInfo(z,Z,Q.maxBufferHole);this._tryFixBufferStall($,O,Z)}stallResolved(Z){let Y=this.stalled;if(Y&&this.hls){if(this.stalled=null,this.stallReported){let J=self.performance.now()-Y;this.log(`playback not stuck anymore @${Z}, after ${Math.round(J)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(F.STALL_RESOLVED,{})}}}nudgeOnVideoHole(Z,Y){var J;let X=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&(J=this.buffered.audio)!=null&&J.length&&X&&X.length>1&&Z>X.end(0)){let Q=t.bufferedInfo(t.timeRangesToArray(this.buffered.audio),Z,0);if(Q.len>1&&Y>=Q.start){let z=t.timeRangesToArray(X),W=t.bufferedInfo(z,Y,0).bufferedIndex;if(W>-1&&WW)&&q-G<1&&Z-G<2){let V=Error(`nudging playhead to flush pipeline after video hole. currentTime: ${Z} hole: ${G} -> ${q} buffered index: ${H}`);this.warn(V.message),this.media.currentTime+=0.000001;let U=C7(Z,this.fragmentTracker);if(U&&"fragment"in U)U=U.fragment;else if(!U)U=void 0;let N=t.bufferInfo(this.media,Z,0);this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:V,reason:V.message,frag:U,buffer:N.len,bufferInfo:N})}}}}}_tryFixBufferStall(Z,Y,J){var X,Q;let{fragmentTracker:z,media:W}=this,H=(X=this.hls)==null?void 0:X.config;if(!W||!z||!H)return;let G=(Q=this.hls)==null?void 0:Q.latestLevelDetails,q=C7(J,z);if(q||G!=null&&G.live&&J1&&Z.len>H.maxBufferHole||Z.nextStart&&(Z.nextStart-JH.highBufferWatchdogPeriod*1000||this.waiting))this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(Z)}adjacentTraversal(Z,Y){let J=this.fragmentTracker,X=Z.nextStart;if(J&&X){let Q=J.getFragAtPos(Y,o.MAIN),z=J.getFragAtPos(X,o.MAIN);if(Q&&z)return z.sn-Q.sn<2}return!1}_reportStall(Z){let{hls:Y,media:J,stallReported:X,stalled:Q}=this;if(!X&&Q!==null&&J&&Y){this.stallReported=!0;let z=Error(`Playback stalling at @${J.currentTime} due to low buffer (${K0(Z)})`);this.warn(z.message),Y.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.BUFFER_STALLED_ERROR,fatal:!1,error:z,buffer:Z.len,bufferInfo:Z,stalled:{start:Q}})}}_trySkipBufferHole(Z){var Y;let{fragmentTracker:J,media:X}=this,Q=(Y=this.hls)==null?void 0:Y.config;if(!X||!J||!Q)return 0;let z=X.currentTime,W=t.bufferInfo(X,z,0),H=z0&&W.len<1&&X.readyState<3,U=H-z;if(U>0&&(q||V)){if(U>Q.maxBufferHole){let j=!1;if(z===0){let K=J.getAppendedFrag(0,o.MAIN);if(K&&H"u")return;return self.VTTCue||self.TextTrackCue}function KZ(Z,Y,J,X,Q){let z=new Z(Y,J,"");try{if(z.value=X,Q)z.type=Q}catch(W){z=new Z(Y,J,K0(Q?H0({type:Q},X):X))}return z}var P7=(()=>{let Z=pZ();try{Z&&new Z(0,Number.POSITIVE_INFINITY,"")}catch(Y){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();class t2{constructor(Z){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{if(!this.hls)return;this.hls.trigger(F.EVENT_CUE_ENTER,{})},this.hls=Z,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){let{hls:Z}=this;if(Z)Z.on(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),Z.on(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.on(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.on(F.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this)}_unregisterListeners(){let{hls:Z}=this;if(Z)Z.off(F.MEDIA_ATTACHING,this.onMediaAttaching,this),Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),Z.off(F.BUFFER_FLUSHING,this.onBufferFlushing,this),Z.off(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.off(F.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this)}onMediaAttaching(Z,Y){var J;if(this.media=Y.media,((J=Y.overrides)==null?void 0:J.cueRemoval)===!1)this.removeCues=!1}onMediaAttached(){var Z;let Y=(Z=this.hls)==null?void 0:Z.latestLevelDetails;if(Y)this.updateDateRangeCues(Y)}onMediaDetaching(Z,Y){if(this.media=null,!!Y.transferMedia)return;if(this.id3Track){if(this.removeCues)K9(this.id3Track,this.onEventCueEnter);this.id3Track=null}this.dateRangeCuesAppended={}}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(Z){let Y=this.getID3Track(Z.textTracks);return Y.mode="hidden",Y}getID3Track(Z){if(!this.media)return;for(let Y=0;YP7)V=P7;if(V-q<=0)V=q+ZV;for(let N=0;Nq.type===d0.audioId3&&H;else if(X==="video")G=(q)=>q.type===d0.emsg&&W;else G=(q)=>q.type===d0.audioId3&&H||q.type===d0.emsg&&W;hZ(Q,Y,J,G)}}onLevelUpdated(Z,{details:Y}){this.updateDateRangeCues(Y,!0)}onLevelPtsUpdated(Z,Y){if(Math.abs(Y.drift)>0.01)this.updateDateRangeCues(Y.details)}updateDateRangeCues(Z,Y){if(!this.hls||!this.media)return;let{assetPlayerId:J,timelineOffset:X,enableDateRangeMetadataCues:Q,interstitialsController:z}=this.hls.config;if(!Q)return;let W=pZ();if(J&&X&&!z){let{fragmentStart:K,fragmentEnd:B}=Z,R=this.assetCue;if(R)R.startTime=K,R.endTime=B;else if(W){if(R=this.assetCue=KZ(W,K,B,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"),R)R.id=J,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.addCue(R),R.addEventListener("enter",this.onEventCueEnter)}}if(!Z.hasProgramDateTime)return;let{id3Track:H}=this,{dateRanges:G}=Z,q=Object.keys(G),V=this.dateRangeCuesAppended;if(H&&Y){var U;if((U=H.cues)!=null&&U.length){let K=Object.keys(V).filter((B)=>!q.includes(B));for(let B=K.length;B--;){var N;let R=K[B],E=(N=V[R])==null?void 0:N.cues;if(delete V[R],E)Object.keys(E).forEach((O)=>{let A=E[O];if(A){A.removeEventListener("enter",this.onEventCueEnter);try{H.removeCue(A)}catch($){}}})}}else V=this.dateRangeCuesAppended={}}let j=Z.fragments[Z.fragments.length-1];if(q.length===0||!m(j==null?void 0:j.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));for(let K=0;K{if(I!==R.id){let h=G[I];if(h.class===R.class&&h.startDate>R.startDate&&(!D||R.startDate0.01)I.startTime=E,I.endTime=L}else if(W){let h=R.attr[D];if(W3(D))h=uJ(h);let c=KZ(W,E,L,{key:D,data:h},d0.dateRange);if(c){if(c.id=B,this.id3Track.addCue(c),A[D]=c,z){if(D==="X-ASSET-LIST"||D==="X-ASSET-URL")c.addEventListener("enter",this.onEventCueEnter)}}}}V[B]={cues:A,dateRange:R,durationKnown:$}}}}class e2{constructor(Z){this.hls=void 0,this.config=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{let{media:Y}=this,J=this.levelDetails;if(!Y||!J)return;this.currentTime=Y.currentTime;let X=this.computeLatency();if(X===null)return;this._latency=X;let{lowLatencyMode:Q,maxLiveSyncPlaybackRate:z}=this.config;if(!Q||z===1||!J.live)return;let W=this.targetLatency;if(W===null)return;let H=X-W,G=Math.min(this.maxLatency,W+J.targetduration);if(H0.05&&this.forwardBufferLength>1){let V=Math.min(2,Math.max(1,z)),U=Math.round(2/(1+Math.exp(-0.75*H-this.edgeStalled))*20)/20,N=Math.min(V,Math.max(1,U));this.changeMediaPlaybackRate(Y,N)}else if(Y.playbackRate!==1&&Y.playbackRate!==0)this.changeMediaPlaybackRate(Y,1)},this.hls=Z,this.config=Z.config,this.registerListeners()}get levelDetails(){var Z;return((Z=this.hls)==null?void 0:Z.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){let{config:Z}=this;if(Z.liveMaxLatencyDuration!==void 0)return Z.liveMaxLatencyDuration;let Y=this.levelDetails;return Y?Z.liveMaxLatencyDurationCount*Y.targetduration:0}get targetLatency(){let Z=this.levelDetails;if(Z===null||this.hls===null)return null;let{holdBack:Y,partHoldBack:J,targetduration:X}=Z,{liveSyncDuration:Q,liveSyncDurationCount:z,lowLatencyMode:W}=this.config,H=this.hls.userConfig,G=W?J||Y:Y;if(this._targetLatencyUpdated||H.liveSyncDuration||H.liveSyncDurationCount||G===0)G=Q!==void 0?Q:z*X;let q=X;return G+Math.min(this.stallCount*this.config.liveSyncOnStallIncrease,q)}set targetLatency(Z){this.stallCount=0,this.config.liveSyncDuration=Z,this._targetLatencyUpdated=!0}get liveSyncPosition(){let Z=this.estimateLiveEdge(),Y=this.targetLatency;if(Z===null||Y===null)return null;let J=this.levelDetails;if(J===null)return null;let X=J.edge,Q=Z-Y-this.edgeStalled,z=X-J.totalduration,W=X-(this.config.lowLatencyMode&&J.partTarget||J.targetduration);return Math.min(Math.max(z,Q),W)}get drift(){let Z=this.levelDetails;if(Z===null)return 1;return Z.drift}get edgeStalled(){let Z=this.levelDetails;if(Z===null)return 0;let Y=(this.config.lowLatencyMode&&Z.partTarget||Z.targetduration)*3;return Math.max(Z.age-Y,0)}get forwardBufferLength(){let{media:Z}=this,Y=this.levelDetails;if(!Z||!Y)return 0;let J=Z.buffered.length;return(J?Z.buffered.end(J-1):Y.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){let{hls:Z}=this;if(!Z)return;Z.on(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.on(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.on(F.ERROR,this.onError,this)}unregisterListeners(){let{hls:Z}=this;if(!Z)return;Z.off(F.MEDIA_ATTACHED,this.onMediaAttached,this),Z.off(F.MEDIA_DETACHING,this.onMediaDetaching,this),Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.LEVEL_UPDATED,this.onLevelUpdated,this),Z.off(F.ERROR,this.onError,this)}onMediaAttached(Z,Y){this.media=Y.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){if(this.media)this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(Z,{details:Y}){if(Y.advanced)this.onTimeupdate();if(!Y.live&&this.media)this.media.removeEventListener("timeupdate",this.onTimeupdate)}onError(Z,Y){var J;if(Y.details!==b.BUFFER_STALLED_ERROR)return;if(this.stallCount++,this.hls&&(J=this.levelDetails)!=null&&J.live)this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency")}changeMediaPlaybackRate(Z,Y){var J,X;if(Z.playbackRate===Y)return;(J=this.hls)==null||J.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${(X=this.targetLatency)==null?void 0:X.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${Z.playbackRate} to ${Y}`),Z.playbackRate=Y}estimateLiveEdge(){let Z=this.levelDetails;if(Z===null)return null;return Z.edge+Z.age}computeLatency(){let Z=this.estimateLiveEdge();if(Z===null)return null;return Z-this.currentTime}}class ZQ extends J1{constructor(Z,Y){super(Z,"level-controller");this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=Y,this._registerListeners()}_registerListeners(){let{hls:Z}=this;Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.on(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.on(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.on(F.FRAG_BUFFERED,this.onFragBuffered,this),Z.on(F.ERROR,this.onError,this)}_unregisterListeners(){let{hls:Z}=this;Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.MANIFEST_LOADED,this.onManifestLoaded,this),Z.off(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.off(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.off(F.FRAG_BUFFERED,this.onFragBuffered,this),Z.off(F.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((Y)=>{Y.loadError=0,Y.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(Z,Y){this.resetLevels()}onManifestLoaded(Z,Y){let J=this.hls.config.preferManagedMediaSource,X=[],Q={},z={},W=!1,H=!1,G=!1;Y.levels.forEach((q)=>{let V=q.attrs,{audioCodec:U,videoCodec:N}=q;if(U)q.audioCodec=U=f7(U,J)||void 0;if(N)N=q.videoCodec=bH(N);let{width:j,height:K,unknownCodecs:B}=q,R=(B==null?void 0:B.length)||0;if(W||(W=!!(j&&K)),H||(H=!!N),G||(G=!!U),R||U&&!this.isAudioSupported(U)||N&&!this.isVideoSupported(N)){this.log(`Some or all CODECS not supported "${V.CODECS}"`);return}let{CODECS:E,"FRAME-RATE":O,"HDCP-LEVEL":A,"PATHWAY-ID":$,RESOLUTION:L,"VIDEO-RANGE":M}=V,_=`${`${$||"."}-`}${q.bitrate}-${L}-${O}-${E}-${M}-${A}`;if(!Q[_]){let C=this.createLevel(q);Q[_]=C,z[_]=1,X.push(C)}else if(Q[_].uri!==q.url&&!q.attrs["PATHWAY-ID"]){let C=z[_]+=1;q.attrs["PATHWAY-ID"]=Array(C+1).join(".");let D=this.createLevel(q);Q[_]=D,X.push(D)}else Q[_].addGroupId("audio",V.AUDIO),Q[_].addGroupId("text",V.SUBTITLES)}),this.filterAndSortMediaOptions(X,Y,W,H,G)}createLevel(Z){let Y=new $9(Z),J=Z.supplemental;if(J!=null&&J.videoCodec&&!this.isVideoSupported(J.videoCodec)){let X=Error(`SUPPLEMENTAL-CODECS not supported "${J.videoCodec}"`);this.log(X.message),Y.supportedResult=ZX(X,[])}return Y}isAudioSupported(Z){return d9(Z,"audio",this.hls.config.preferManagedMediaSource)}isVideoSupported(Z){return d9(Z,"video",this.hls.config.preferManagedMediaSource)}filterAndSortMediaOptions(Z,Y,J,X,Q){var z;let W=[],H=[],G=Z,q=((z=Y.stats)==null?void 0:z.parsing)||{};if((J||X)&&Q)G=G.filter(({videoCodec:E,videoRange:O,width:A,height:$})=>(!!E||!!(A&&$))&&fH(O));if(G.length===0){Promise.resolve().then(()=>{if(this.hls){let E="no level with compatible codecs found in manifest",O=E;if(Y.levels.length)O=`one or more CODECS in variant not supported: ${K0(Y.levels.map(($)=>$.attrs.CODECS).filter(($,L,M)=>M.indexOf($)===L))}`,this.warn(O),E+=` (${O})`;let A=Error(E);this.hls.trigger(F.ERROR,{type:n.MEDIA_ERROR,details:b.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:Y.url,error:A,reason:O})}}),q.end=performance.now();return}if(Y.audioTracks)W=Y.audioTracks.filter((E)=>!E.audioCodec||this.isAudioSupported(E.audioCodec)),yJ(W);if(Y.subtitles)H=Y.subtitles,yJ(H);let V=G.slice(0);G.sort((E,O)=>{if(E.attrs["HDCP-LEVEL"]!==O.attrs["HDCP-LEVEL"])return(E.attrs["HDCP-LEVEL"]||"")>(O.attrs["HDCP-LEVEL"]||"")?1:-1;if(J&&E.height!==O.height)return E.height-O.height;if(E.frameRate!==O.frameRate)return E.frameRate-O.frameRate;if(E.videoRange!==O.videoRange)return p7.indexOf(E.videoRange)-p7.indexOf(O.videoRange);if(E.videoCodec!==O.videoCodec){let A=hY(E.videoCodec),$=hY(O.videoCodec);if(A!==$)return $-A}if(E.uri===O.uri&&E.codecSet!==O.codecSet){let A=y7(E.codecSet),$=y7(O.codecSet);if(A!==$)return $-A}if(E.averageBitrate!==O.averageBitrate)return E.averageBitrate-O.averageBitrate;return 0});let U=V[0];if(this.steering){if(G=this.steering.filterParsedLevels(G),G.length!==V.length){for(let E=0;EA&&A===this.hls.abrEwmaDefaultEstimate)this.hls.bandwidthEstimate=$}break}let j=Q&&!X,K=this.hls.config,B=!!(K.audioStreamController&&K.audioTrackController),R={levels:G,audioTracks:W,subtitleTracks:H,sessionData:Y.sessionData,sessionKeys:Y.sessionKeys,firstLevel:this._firstLevel,stats:Y.stats,audio:Q,video:X,altAudio:B&&!j&&W.some((E)=>!!E.url)};q.end=performance.now(),this.hls.trigger(F.MANIFEST_PARSED,R)}get levels(){if(this._levels.length===0)return null;return this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(Z){let Y=this._levels;if(Y.length===0)return;if(Z<0||Z>=Y.length){let q=Error("invalid level idx"),V=Z<0;if(this.hls.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.LEVEL_SWITCH_ERROR,level:Z,fatal:V,error:q,reason:q.message}),V)return;Z=Math.min(Z,Y.length-1)}let J=this.currentLevelIndex,X=this.currentLevel,Q=X?X.attrs["PATHWAY-ID"]:void 0,z=Y[Z],W=z.attrs["PATHWAY-ID"];if(this.currentLevelIndex=Z,this.currentLevel=z,J===Z&&X&&Q===W)return;this.log(`Switching to level ${Z} (${z.height?z.height+"p ":""}${z.videoRange?z.videoRange+" ":""}${z.codecSet?z.codecSet+" ":""}@${z.bitrate})${W?" with Pathway "+W:""} from level ${J}${Q?" with Pathway "+Q:""}`);let H={level:Z,attrs:z.attrs,details:z.details,bitrate:z.bitrate,averageBitrate:z.averageBitrate,maxBitrate:z.maxBitrate,realBitrate:z.realBitrate,width:z.width,height:z.height,codecSet:z.codecSet,audioCodec:z.audioCodec,videoCodec:z.videoCodec,audioGroups:z.audioGroups,subtitleGroups:z.subtitleGroups,loaded:z.loaded,loadError:z.loadError,fragmentError:z.fragmentError,name:z.name,id:z.id,uri:z.uri,url:z.url,urlId:0,audioGroupIds:z.audioGroupIds,textGroupIds:z.textGroupIds};this.hls.trigger(F.LEVEL_SWITCHING,H);let G=z.details;if(!G||G.live){let q=this.switchParams(z.uri,X==null?void 0:X.details,G);this.loadPlaylist(q)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(Z){if(this.manualLevelIndex=Z,this._startLevel===void 0)this._startLevel=Z;if(Z!==-1)this.level=Z}get firstLevel(){return this._firstLevel}set firstLevel(Z){this._firstLevel=Z}get startLevel(){if(this._startLevel===void 0){let Z=this.hls.config.startLevel;if(Z!==void 0)return Z;return this.hls.firstAutoLevel}return this._startLevel}set startLevel(Z){this._startLevel=Z}get pathways(){if(this.steering)return this.steering.pathways();return[]}get pathwayPriority(){if(this.steering)return this.steering.pathwayPriority;return null}set pathwayPriority(Z){if(this.steering){let Y=this.steering.pathways(),J=Z.filter((X)=>{return Y.indexOf(X)!==-1});if(Z.length<1){this.warn(`pathwayPriority ${Z} should contain at least one pathway from list: ${Y}`);return}this.steering.pathwayPriority=J}}onError(Z,Y){if(Y.fatal||!Y.context)return;if(Y.context.type===J0.LEVEL&&Y.context.level===this.level)this.checkRetry(Y)}onFragBuffered(Z,{frag:Y}){if(Y!==void 0&&Y.type===o.MAIN){let J=Y.elementaryStreams;if(!Object.keys(J).some((Q)=>!!J[Q]))return;let X=this._levels[Y.level];if(X!=null&&X.loadError)this.log(`Resetting level error count of ${X.loadError} on frag buffered`),X.loadError=0}}onLevelLoaded(Z,Y){var J;let{level:X,details:Q}=Y,z=Y.levelInfo;if(!z){var W;if(this.warn(`Invalid level index ${X}`),(W=Y.deliveryDirectives)!=null&&W.skip)Q.deltaUpdateFailed=!0;return}if(z===this.currentLevel||Y.withoutMultiVariant){if(z.fragmentError===0)z.loadError=0;let H=z.details;if(H===Y.details&&H.advanced)H=void 0;this.playlistLoaded(X,Y,H)}else if((J=Y.deliveryDirectives)!=null&&J.skip)Q.deltaUpdateFailed=!0}loadPlaylist(Z){if(super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel))this.scheduleLoading(this.currentLevel,Z)}loadingPlaylist(Z,Y){super.loadingPlaylist(Z,Y);let J=this.getUrlWithDirectives(Z.uri,Y),X=this.currentLevelIndex,Q=Z.attrs["PATHWAY-ID"],z=Z.details,W=z==null?void 0:z.age;this.log(`Loading level index ${X}${(Y==null?void 0:Y.msn)!==void 0?" at sn "+Y.msn+" part "+Y.part:""}${Q?" Pathway "+Q:""}${W&&z.live?" age "+W.toFixed(1)+(z.type?" "+z.type||"":""):""} ${J}`),this.hls.trigger(F.LEVEL_LOADING,{url:J,level:X,levelInfo:Z,pathwayId:Z.attrs["PATHWAY-ID"],id:0,deliveryDirectives:Y||null})}get nextLoadLevel(){if(this.manualLevelIndex!==-1)return this.manualLevelIndex;else return this.hls.nextAutoLevel}set nextLoadLevel(Z){if(this.level=Z,this.manualLevelIndex===-1)this.hls.nextAutoLevel=Z}removeLevel(Z){var Y;if(this._levels.length===1)return;let J=this._levels.filter((Q,z)=>{if(z!==Z)return!0;if(this.steering)this.steering.removeLevel(Q);if(Q===this.currentLevel){if(this.currentLevel=null,this.currentLevelIndex=-1,Q.details)Q.details.fragments.forEach((W)=>W.level=-1)}return!1});if(CX(J),this._levels=J,this.currentLevelIndex>-1&&(Y=this.currentLevel)!=null&&Y.details)this.currentLevelIndex=this.currentLevel.details.fragments[0].level;if(this.manualLevelIndex>-1)this.manualLevelIndex=this.currentLevelIndex;let X=J.length-1;if(this._firstLevel=Math.min(this._firstLevel,X),this._startLevel)this._startLevel=Math.min(this._startLevel,X);this.hls.trigger(F.LEVELS_UPDATED,{levels:J})}onLevelsUpdated(Z,{levels:Y}){this._levels=Y}checkMaxAutoUpdated(){let{autoLevelCapping:Z,maxAutoLevel:Y,maxHdcpLevel:J}=this.hls;if(this._maxAutoLevel!==Y)this._maxAutoLevel=Y,this.hls.trigger(F.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:Z,levels:this.levels,maxAutoLevel:Y,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:J})}}function yJ(Z){let Y={};Z.forEach((J)=>{let X=J.groupId||"";J.id=Y[X]=Y[X]||0,Y[X]++})}function YQ(){return self.SourceBuffer||self.WebKitSourceBuffer}function JQ(){if(!k8())return!1;let Y=YQ();return!Y||Y.prototype&&typeof Y.prototype.appendBuffer==="function"&&typeof Y.prototype.remove==="function"}function YV(){if(!JQ())return!1;let Z=k8();return typeof(Z==null?void 0:Z.isTypeSupported)==="function"&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((Y)=>Z.isTypeSupported(o9(Y,"video")))||["mp4a.40.2","fLaC"].some((Y)=>Z.isTypeSupported(o9(Y,"audio"))))}function JV(){var Z;let Y=YQ();return typeof(Y==null||(Z=Y.prototype)==null?void 0:Z.changeType)==="function"}var XV=100;class XQ extends e7{constructor(Z,Y,J){super(Z,Y,J,"stream-controller",o.MAIN);this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this.fragPlaying=null,this.fragLastKbps=0,this.couldBacktrack=!1,this.backtrackFragment=null,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{let X=this.media,Q=X?X.currentTime:null;if(Q===null||!m(Q))return;if(this.log(`Media seeked to ${Q.toFixed(3)}`),!this.getBufferedFrag(Q))return;let z=this.getFwdBufferInfoAtPos(X,Q,o.MAIN,0);if(z===null||z.len===0){this.warn(`Main forward buffer length at ${Q} on "seeked" event ${z?z.len:"empty"})`);return}this.tick()},this.registerListeners()}registerListeners(){super.registerListeners();let{hls:Z}=this;Z.on(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.on(F.LEVEL_LOADING,this.onLevelLoading,this),Z.on(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.on(F.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),Z.on(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.on(F.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),Z.on(F.BUFFER_CREATED,this.onBufferCreated,this),Z.on(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.on(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.on(F.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();let{hls:Z}=this;Z.off(F.MANIFEST_PARSED,this.onManifestParsed,this),Z.off(F.LEVEL_LOADED,this.onLevelLoaded,this),Z.off(F.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),Z.off(F.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),Z.off(F.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),Z.off(F.BUFFER_CREATED,this.onBufferCreated,this),Z.off(F.BUFFER_FLUSHED,this.onBufferFlushed,this),Z.off(F.LEVELS_UPDATED,this.onLevelsUpdated,this),Z.off(F.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}startLoad(Z,Y){if(this.levels){let{lastCurrentTime:J,hls:X}=this;if(this.stopLoad(),this.setInterval(XV),this.level=-1,!this.startFragRequested){let Q=X.startLevel;if(Q===-1)if(X.config.testBandwidth&&this.levels.length>1)Q=0,this.bitrateTest=!0;else Q=X.firstAutoLevel;X.nextLoadLevel=Q,this.level=X.loadLevel,this._hasEnoughToStart=!!Y}if(J>0&&Z===-1&&!Y)this.log(`Override startPosition with lastCurrentTime @${J.toFixed(3)}`),Z=J;this.state=S.IDLE,this.nextLoadPosition=this.lastCurrentTime=Z+this.timelineOffset,this.startPosition=Y?-1:Z,this.tick()}else this._forceStartLoad=!0,this.state=S.STOPPED}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case S.WAITING_LEVEL:{let{levels:Z,level:Y}=this,J=Z==null?void 0:Z[Y],X=J==null?void 0:J.details;if(X&&(!X.live||this.levelLastLoaded===J&&!this.waitForLive(J))){if(this.waitForCdnTuneIn(X))break;this.state=S.IDLE;break}else if(this.hls.nextLoadLevel!==this.level){this.state=S.IDLE;break}break}case S.FRAG_LOADING_WAITING_RETRY:this.checkRetryDate();break}if(this.state===S.IDLE)this.doTickIdle();this.onTickEnd()}onTickEnd(){var Z;if(super.onTickEnd(),(Z=this.media)!=null&&Z.readyState&&this.media.seeking===!1)this.lastCurrentTime=this.media.currentTime;this.checkFragmentChanged()}doTickIdle(){let{hls:Z,levelLastLoaded:Y,levels:J,media:X}=this;if(Y===null||!X&&!this.primaryPrefetch&&(this.startFragRequested||!Z.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;let Q=this.buffering?Z.nextLoadLevel:Z.loadLevel;if(!(J!=null&&J[Q]))return;let z=J[Q],W=this.getMainFwdBufferInfo();if(W===null)return;let H=this.getLevelDetails();if(H&&this._streamEnded(W,H)){let K={};if(this.altAudio===2)K.type="video";this.hls.trigger(F.BUFFER_EOS,K),this.state=S.ENDED;return}if(!this.buffering)return;if(Z.loadLevel!==Q&&Z.manualLevel===-1)this.log(`Adapting to level ${Q} from level ${this.level}`);this.level=Z.nextLoadLevel=Q;let G=z.details;if(!G||this.state===S.WAITING_LEVEL||this.waitForLive(z)){this.level=Q,this.state=S.WAITING_LEVEL,this.startFragRequested=!1;return}let q=W.len,V=this.getMaxBufferLength(z.maxBitrate);if(q>=V)return;if(this.backtrackFragment&&this.backtrackFragment.start>W.end)this.backtrackFragment=null;let U=this.backtrackFragment?this.backtrackFragment.start:W.end,N=this.getNextFragment(U,G);if(this.couldBacktrack&&!this.fragPrevious&&N&&$0(N)&&this.fragmentTracker.getState(N)!==P0.OK){var j;let B=((j=this.backtrackFragment)!=null?j:N).sn-G.startSN,R=G.fragments[B-1];if(R&&N.cc===R.cc)N=R,this.fragmentTracker.removeFragment(R)}else if(this.backtrackFragment&&W.len)this.backtrackFragment=null;if(N&&this.isLoopLoading(N,U)){if(!N.gap){let B=this.audioOnly&&!this.altAudio?N0.AUDIO:N0.VIDEO,R=(B===N0.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;if(R)this.afterBufferFlushed(R,B,o.MAIN)}N=this.getNextFragmentLoopLoading(N,G,W,o.MAIN,V)}if(!N)return;if(this.exceedsMaxBuffer(W,V,N))return;if(N.initSegment&&!N.initSegment.data&&!this.bitrateTest)N=N.initSegment;this.loadFragment(N,z,U)}loadFragment(Z,Y,J){let X=this.fragmentTracker.getState(Z);if(X===P0.NOT_LOADED||X===P0.PARTIAL)if(!$0(Z))this._loadInitSegment(Z,Y);else if(this.bitrateTest)this.log(`Fragment ${Z.sn} of level ${Z.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(Z,Y);else super.loadFragment(Z,Y,J);else this.clearTrackerIfNeeded(Z)}getBufferedFrag(Z){return this.fragmentTracker.getBufferedFrag(Z,o.MAIN)}followingBufferedFrag(Z){if(Z)return this.getBufferedFrag(Z.end+0.5);return null}immediateLevelSwitch(){if(this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY),this.altAudio!==0){var Z;if((((Z=this.getLevelDetails())==null?void 0:Z.fragmentStart)||0)>this.lastCurrentTime)super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio")}}nextLevelSwitch(){let{levels:Z,media:Y}=this;if(Y!=null&&Y.readyState){let J,X=this.getAppendedFrag(Y.currentTime);if(X&&X.start>1)this.flushMainBuffer(0,X.start-1);let Q=this.getLevelDetails();if(Q!=null&&Q.live){let W=this.getMainFwdBufferInfo();if(!W||W.len=z-Y.maxFragLookUpTolerance&&Q<=W;if(X!==null&&J.duration>X&&(Q{if(!this.hls)return;this.hls.trigger(F.AUDIO_TRACK_SWITCHED,Y)}),J.trigger(F.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null});return}J.trigger(F.AUDIO_TRACK_SWITCHED,Y)}else this.altAudio=1}onAudioTrackSwitched(Z,Y){let J=m7(Y.url,this.hls);if(J){let X=this.videoBuffer;if(X&&this.mediaBuffer!==X)this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=X}this.altAudio=J?2:0,this.tick()}onBufferCreated(Z,Y){let J=Y.tracks,X,Q,z=!1;for(let W in J){let H=J[W];if(H.id==="main"){if(Q=W,X=H,W==="video"){let G=J[W];if(G)this.videoBuffer=G.buffer}}else z=!0}if(z&&X)this.log(`Alternate track found, use ${Q}.buffered to schedule main fragment loading`),this.mediaBuffer=X.buffer;else this.mediaBuffer=this.media}onFragBuffered(Z,Y){let{frag:J,part:X}=Y,Q=J.type===o.MAIN;if(Q){if(this.fragContextChanged(J)){if(this.warn(`Fragment ${J.sn}${X?" p: "+X.index:""} of level ${J.level} finished buffering, but was aborted. state: ${this.state}`),this.state===S.PARSED)this.state=S.IDLE;return}let W=X?X.stats:J.stats;if(this.fragLastKbps=Math.round(8*W.total/(W.buffering.end-W.loading.first)),$0(J))this.fragPrevious=J;this.fragBufferedComplete(J,X)}let z=this.media;if(!z)return;if(!this._hasEnoughToStart&&t.getBuffered(z).length)this._hasEnoughToStart=!0,this.seekToStartPos();if(Q)this.tick()}get hasEnoughToStart(){return this._hasEnoughToStart}onError(Z,Y){var J;if(Y.fatal){this.state=S.ERROR;return}switch(Y.details){case b.FRAG_GAP:case b.FRAG_PARSING_ERROR:case b.FRAG_DECRYPT_ERROR:case b.FRAG_LOAD_ERROR:case b.FRAG_LOAD_TIMEOUT:case b.KEY_LOAD_ERROR:case b.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(o.MAIN,Y);break;case b.LEVEL_LOAD_ERROR:case b.LEVEL_LOAD_TIMEOUT:case b.LEVEL_PARSING_ERROR:if(!Y.levelRetry&&this.state===S.WAITING_LEVEL&&((J=Y.context)==null?void 0:J.type)===J0.LEVEL)this.state=S.IDLE;break;case b.BUFFER_ADD_CODEC_ERROR:case b.BUFFER_APPEND_ERROR:if(Y.parent!=="main")return;if(this.reduceLengthAndFlushBuffer(Y))this.resetLoadingState();break;case b.BUFFER_FULL_ERROR:if(Y.parent!=="main")return;if(this.reduceLengthAndFlushBuffer(Y))if(!this.config.interstitialsController&&this.config.assetPlayerId)this._hasEnoughToStart=!0;else this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case b.INTERNAL_EXCEPTION:this.recoverWorkerError(Y);break}}onFragLoadEmergencyAborted(){if(this.state=S.IDLE,!this._hasEnoughToStart)this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime;this.tickImmediate()}onBufferFlushed(Z,{type:Y}){if(Y!==N0.AUDIO||!this.altAudio){let J=(Y===N0.VIDEO?this.videoBuffer:this.mediaBuffer)||this.media;if(J)this.afterBufferFlushed(J,Y,o.MAIN),this.tick()}}onLevelsUpdated(Z,Y){if(this.level>-1&&this.fragCurrent){if(this.level=this.fragCurrent.level,this.level===-1)this.resetWhenMissingContext(this.fragCurrent)}this.levels=Y.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){let{media:Z}=this;if(!Z)return;let Y=Z.currentTime,J=this.startPosition;if(J>=0&&Y0&&(H{let{hls:X}=this,Q=J==null?void 0:J.frag;if(!Q||this.fragContextChanged(Q))return;Y.fragmentError=0,this.state=S.IDLE,this.startFragRequested=!1,this.bitrateTest=!1;let z=Q.stats;z.parsing.start=z.parsing.end=z.buffering.start=z.buffering.end=self.performance.now(),X.trigger(F.FRAG_LOADED,J),Q.bitrateTest=!1}).catch((J)=>{if(this.state===S.STOPPED||this.state===S.ERROR)return;this.warn(J),this.resetFragmentLoading(Z)})}_handleTransmuxComplete(Z){let Y=this.playlistType,{hls:J}=this,{remuxResult:X,chunkMeta:Q}=Z,z=this.getCurrentContext(Q);if(!z){this.resetWhenMissingContext(Q);return}let{frag:W,part:H,level:G}=z,{video:q,text:V,id3:U,initSegment:N}=X,{details:j}=G,K=this.altAudio?void 0:X.audio;if(this.fragContextChanged(W)){this.fragmentTracker.removeFragment(W);return}if(this.state=S.PARSING,N){let B=N.tracks;if(B){let A=W.initSegment||W;if(this.unhandledEncryptionError(N,W))return;this._bufferInitSegment(G,B,A,Q),J.trigger(F.FRAG_PARSING_INIT_SEGMENT,{frag:A,id:Y,tracks:B})}let{initPTS:R,timescale:E}=N,O=this.initPTS[W.cc];if(m(R)&&(!O||O.baseTime!==R||O.timescale!==E)){let A=N.trackId;this.initPTS[W.cc]={baseTime:R,timescale:E,trackId:A},J.trigger(F.INIT_PTS_FOUND,{frag:W,id:Y,initPTS:R,timescale:E,trackId:A})}}if(q&&j){if(K&&q.type==="audiovideo")this.logMuxedErr(W);let B=j.fragments[W.sn-1-j.startSN],R=W.sn===j.startSN,E=!B||W.cc>B.cc;if(X.independent!==!1){let{startPTS:O,endPTS:A,startDTS:$,endDTS:L}=q;if(H)H.elementaryStreams[q.type]={startPTS:O,endPTS:A,startDTS:$,endDTS:L};else{if(q.firstKeyFrame&&q.independent&&Q.id===1&&!E)this.couldBacktrack=!0;if(q.dropped&&q.independent){let M=this.getMainFwdBufferInfo(),w=(M?M.end:this.getLoadPosition())+this.config.maxBufferHole,_=q.firstKeyFramePTS?q.firstKeyFramePTS:O;if(!R&&w<_-this.config.maxBufferHole&&!E){this.backtrack(W);return}else if(E)W.gap=!0;W.setElementaryStreamInfo(q.type,W.start,A,W.start,L,!0)}else if(R&&O-(j.appliedTimelineOffset||0)>k7)W.gap=!0}if(W.setElementaryStreamInfo(q.type,O,A,$,L),this.backtrackFragment)this.backtrackFragment=W;this.bufferFragmentData(q,W,H,Q,R||E)}else if(R||E)W.gap=!0;else{this.backtrack(W);return}}if(K){let{startPTS:B,endPTS:R,startDTS:E,endDTS:O}=K;if(H)H.elementaryStreams[N0.AUDIO]={startPTS:B,endPTS:R,startDTS:E,endDTS:O};W.setElementaryStreamInfo(N0.AUDIO,B,R,E,O),this.bufferFragmentData(K,W,H,Q)}if(j&&U!=null&&U.samples.length){let B={id:Y,frag:W,details:j,samples:U.samples};J.trigger(F.FRAG_PARSING_METADATA,B)}if(j&&V){let B={id:Y,frag:W,details:j,samples:V.samples};J.trigger(F.FRAG_PARSING_USERDATA,B)}}logMuxedErr(Z){this.warn(`${$0(Z)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${Z.url}`)}_bufferInitSegment(Z,Y,J,X){if(this.state!==S.PARSING)return;if(this.audioOnly=!!Y.audio&&!Y.video,this.altAudio&&!this.audioOnly){if(delete Y.audio,Y.audiovideo)this.logMuxedErr(J)}let{audio:Q,video:z,audiovideo:W}=Y;if(Q){let G=Z.audioCodec,q=I7(Q.codec,G);if(q==="mp4a")q="mp4a.40.5";let V=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){if(q)if(q.indexOf("mp4a.40.5")!==-1)q="mp4a.40.2";else q="mp4a.40.5";let U=Q.metadata;if(U&&"channelCount"in U&&(U.channelCount||1)!==1&&V.indexOf("firefox")===-1)q="mp4a.40.5"}if(q&&q.indexOf("mp4a.40.5")!==-1&&V.indexOf("android")!==-1&&Q.container!=="audio/mpeg")q="mp4a.40.2",this.log(`Android: force audio codec to ${q}`);if(G&&G!==q)this.log(`Swapping manifest audio codec "${G}" for "${q}"`);Q.levelCodec=q,Q.id=o.MAIN,this.log(`Init audio buffer, container:${Q.container}, codecs[selected/level/parsed]=[${q||""}/${G||""}/${Q.codec}]`),delete Y.audiovideo}if(z){z.levelCodec=Z.videoCodec,z.id=o.MAIN;let G=z.codec;if((G==null?void 0:G.length)===4)switch(G){case"hvc1":case"hev1":z.codec="hvc1.1.6.L120.90";break;case"av01":z.codec="av01.0.04M.08";break;case"avc1":z.codec="avc1.42e01e";break}this.log(`Init video buffer, container:${z.container}, codecs[level/parsed]=[${Z.videoCodec||""}/${G}]${z.codec!==G?" parsed-corrected="+z.codec:""}${z.supplemental?" supplemental="+z.supplemental:""}`),delete Y.audiovideo}if(W)this.log(`Init audiovideo buffer, container:${W.container}, codecs[level/parsed]=[${Z.codecs}/${W.codec}]`),delete Y.video,delete Y.audio;let H=Object.keys(Y);if(H.length){if(this.hls.trigger(F.BUFFER_CODECS,Y),!this.hls)return;H.forEach((G)=>{let V=Y[G].initSegment;if(V!=null&&V.byteLength)this.hls.trigger(F.BUFFER_APPENDING,{type:G,data:V,frag:J,part:null,chunkMeta:X,parent:J.type})})}this.tickImmediate()}getMainFwdBufferInfo(){let Z=this.mediaBuffer&&this.altAudio===2?this.mediaBuffer:this.media;return this.getFwdBufferInfo(Z,o.MAIN)}get maxBufferLength(){let{levels:Z,level:Y}=this,J=Z==null?void 0:Z[Y];if(!J)return this.config.maxBufferLength;return this.getMaxBufferLength(J.maxBitrate)}backtrack(Z){this.couldBacktrack=!0,this.backtrackFragment=Z,this.resetTransmuxer(),this.flushBufferGap(Z),this.fragmentTracker.removeFragment(Z),this.fragPrevious=null,this.nextLoadPosition=Z.start,this.state=S.IDLE}checkFragmentChanged(){let Z=this.media,Y=null;if(Z&&Z.readyState>1&&Z.seeking===!1){let J=Z.currentTime;if(t.isBuffered(Z,J))Y=this.getAppendedFrag(J);else if(t.isBuffered(Z,J+0.1))Y=this.getAppendedFrag(J+0.1);if(Y){this.backtrackFragment=null;let X=this.fragPlaying,Q=Y.level;if(!X||Y.sn!==X.sn||X.level!==Q){if(this.fragPlaying=Y,this.hls.trigger(F.FRAG_CHANGED,{frag:Y}),!X||X.level!==Q)this.hls.trigger(F.LEVEL_SWITCHED,{level:Q})}}}}get nextLevel(){let Z=this.nextBufferedFrag;if(Z)return Z.level;return-1}get currentFrag(){var Z;if(this.fragPlaying)return this.fragPlaying;let Y=((Z=this.media)==null?void 0:Z.currentTime)||this.lastCurrentTime;if(m(Y))return this.getAppendedFrag(Y);return null}get currentProgramDateTime(){var Z;let Y=((Z=this.media)==null?void 0:Z.currentTime)||this.lastCurrentTime;if(m(Y)){let J=this.getLevelDetails(),X=this.currentFrag||(J?J9(null,J.fragments,Y):null);if(X){let Q=X.programDateTime;if(Q!==null){let z=Q+(Y-X.start)*1000;return new Date(z)}}}return null}get currentLevel(){let Z=this.currentFrag;if(Z)return Z.level;return-1}get nextBufferedFrag(){let Z=this.currentFrag;if(Z)return this.followingBufferedFrag(Z);return null}get forceStartLoad(){return this._forceStartLoad}}class QQ extends l0{constructor(Z,Y){super("key-loader",Y);this.config=void 0,this.keyIdToKeyInfo={},this.emeController=null,this.config=Z}abort(Z){for(let J in this.keyIdToKeyInfo){let X=this.keyIdToKeyInfo[J].loader;if(X){var Y;if(Z&&Z!==((Y=X.context)==null?void 0:Y.frag.type))return;X.abort()}}}detach(){for(let Z in this.keyIdToKeyInfo){let Y=this.keyIdToKeyInfo[Z];if(Y.mediaKeySessionContext||Y.decryptdata.isCommonEncryption)delete this.keyIdToKeyInfo[Z]}}destroy(){this.detach();for(let Z in this.keyIdToKeyInfo){let Y=this.keyIdToKeyInfo[Z].loader;if(Y)Y.destroy()}this.keyIdToKeyInfo={}}createKeyLoadError(Z,Y=b.KEY_LOAD_ERROR,J,X,Q){return new N8({type:n.NETWORK_ERROR,details:Y,fatal:!1,frag:Z,response:Q,error:J,networkDetails:X})}loadClear(Z,Y,J){if(this.emeController&&this.config.emeEnabled&&!this.emeController.getSelectedKeySystemFormats().length){if(Y.length)for(let X=0,Q=Y.length;X{if(!this.emeController)return;z.setKeyFormat(W);let H=S7(W);if(H)return this.emeController.getKeySystemAccess([H])})}if(this.config.requireKeySystemAccessOnStart){let X=f9(this.config);if(X.length)return this.emeController.getKeySystemAccess(X)}}return null}load(Z){if(!Z.decryptdata&&Z.encrypted&&this.emeController&&this.config.emeEnabled)return this.emeController.selectKeySystemFormat(Z).then((Y)=>{return this.loadInternal(Z,Y)});return this.loadInternal(Z)}loadInternal(Z,Y){var J,X;if(Y)Z.setKeyFormat(Y);let Q=Z.decryptdata;if(!Q){let G=Error(Y?`Expected frag.decryptdata to be defined after setting format ${Y}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(this.createKeyLoadError(Z,b.KEY_LOAD_ERROR,G))}let z=Q.uri;if(!z)return Promise.reject(this.createKeyLoadError(Z,b.KEY_LOAD_ERROR,Error(`Invalid key URI: "${z}"`)));let W=BZ(Q),H=this.keyIdToKeyInfo[W];if((J=H)!=null&&J.decryptdata.key)return Q.key=H.decryptdata.key,Promise.resolve({frag:Z,keyInfo:H});if(this.emeController&&(X=H)!=null&&X.keyLoadPromise)switch(this.emeController.getKeyStatus(H.decryptdata)){case"usable":case"usable-in-future":return H.keyLoadPromise.then((q)=>{let{keyInfo:V}=q;return Q.key=V.decryptdata.key,{frag:Z,keyInfo:V}})}switch(this.log(`${this.keyIdToKeyInfo[W]?"Rel":"L"}oading${Q.keyId?" keyId: "+T0(Q.keyId):""} URI: ${Q.uri} from ${Z.type} ${Z.level}`),H=this.keyIdToKeyInfo[W]={decryptdata:Q,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},Q.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":if(Q.keyFormat==="identity")return this.loadKeyHTTP(H,Z);return this.loadKeyEME(H,Z);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(H,Z);default:return Promise.reject(this.createKeyLoadError(Z,b.KEY_LOAD_ERROR,Error(`Key supplied with unsupported METHOD: "${Q.method}"`)))}}loadKeyEME(Z,Y){let J={frag:Y,keyInfo:Z};if(this.emeController&&this.config.emeEnabled){var X;if(!Z.decryptdata.keyId&&(X=Y.initSegment)!=null&&X.data){let z=FH(Y.initSegment.data);if(z.length){let W=z[0];if(W.some((H)=>H!==0))this.log(`Using keyId found in init segment ${T0(W)}`),g8.setKeyIdForUri(Z.decryptdata.uri,W);else W=g8.addKeyIdForUri(Z.decryptdata.uri),this.log(`Generating keyId to patch media ${T0(W)}`);Z.decryptdata.keyId=W}}if(!Z.decryptdata.keyId&&!$0(Y))return Promise.resolve(J);let Q=this.emeController.loadKey(J);return(Z.keyLoadPromise=Q.then((z)=>{return Z.mediaKeySessionContext=z,J})).catch((z)=>{if(Z.keyLoadPromise=null,"data"in z)z.data.frag=Y;throw z})}return Promise.resolve(J)}loadKeyHTTP(Z,Y){let J=this.config,Q=new J.loader(J);return Y.keyLoader=Z.loader=Q,Z.keyLoadPromise=new Promise((z,W)=>{let H={keyInfo:Z,frag:Y,responseType:"arraybuffer",url:Z.decryptdata.uri},G=J.keyLoadPolicy.default,q={loadPolicy:G,timeout:G.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},V={onSuccess:(U,N,j,K)=>{let{frag:B,keyInfo:R}=j,E=BZ(R.decryptdata);if(!B.decryptdata||R!==this.keyIdToKeyInfo[E])return W(this.createKeyLoadError(B,b.KEY_LOAD_ERROR,Error("after key load, decryptdata unset or changed"),K));R.decryptdata.key=B.decryptdata.key=new Uint8Array(U.data),B.keyLoader=null,R.loader=null,z({frag:B,keyInfo:R})},onError:(U,N,j,K)=>{this.resetLoader(N),W(this.createKeyLoadError(Y,b.KEY_LOAD_ERROR,Error(`HTTP Error ${U.code} loading key ${U.text}`),j,H0({url:H.url,data:void 0},U)))},onTimeout:(U,N,j)=>{this.resetLoader(N),W(this.createKeyLoadError(Y,b.KEY_LOAD_TIMEOUT,Error("key loading timed out"),j))},onAbort:(U,N,j)=>{this.resetLoader(N),W(this.createKeyLoadError(Y,b.INTERNAL_ABORTED,Error("key loading aborted"),j))}};Q.load(H,q,V)})}resetLoader(Z){let{frag:Y,keyInfo:J,url:X}=Z,Q=J.loader;if(Y.keyLoader===Q)Y.keyLoader=null,J.loader=null;let z=BZ(J.decryptdata)||X;if(delete this.keyIdToKeyInfo[z],Q)Q.destroy()}}function BZ(Z){if(Z.keyFormat!==h0.FAIRPLAY){let Y=Z.keyId;if(Y)return T0(Y)}return Z.uri}function fJ(Z){let{type:Y}=Z;switch(Y){case J0.AUDIO_TRACK:return o.AUDIO;case J0.SUBTITLE_TRACK:return o.SUBTITLE;default:return o.MAIN}}function RZ(Z,Y){let J=Z.url;if(J===void 0||J.indexOf("data:")===0)J=Y.url;return J}class zQ{constructor(Z){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=Z,this.registerListeners()}startLoad(Z){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){let{hls:Z}=this;Z.on(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.on(F.LEVEL_LOADING,this.onLevelLoading,this),Z.on(F.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),Z.on(F.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),Z.on(F.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){let{hls:Z}=this;Z.off(F.MANIFEST_LOADING,this.onManifestLoading,this),Z.off(F.LEVEL_LOADING,this.onLevelLoading,this),Z.off(F.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),Z.off(F.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),Z.off(F.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(Z){let Y=this.hls.config,J=Y.pLoader,X=Y.loader,z=new(J||X)(Y);return this.loaders[Z.type]=z,z}getInternalLoader(Z){return this.loaders[Z.type]}resetInternalLoader(Z){if(this.loaders[Z])delete this.loaders[Z]}destroyInternalLoaders(){for(let Z in this.loaders){let Y=this.loaders[Z];if(Y)Y.destroy();this.resetInternalLoader(Z)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(Z,Y){let{url:J}=Y;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:J0.MANIFEST,url:J,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(Z,Y){let{id:J,level:X,pathwayId:Q,url:z,deliveryDirectives:W,levelInfo:H}=Y;this.load({id:J,level:X,pathwayId:Q,responseType:"text",type:J0.LEVEL,url:z,deliveryDirectives:W,levelOrTrack:H})}onAudioTrackLoading(Z,Y){let{id:J,groupId:X,url:Q,deliveryDirectives:z,track:W}=Y;this.load({id:J,groupId:X,level:null,responseType:"text",type:J0.AUDIO_TRACK,url:Q,deliveryDirectives:z,levelOrTrack:W})}onSubtitleTrackLoading(Z,Y){let{id:J,groupId:X,url:Q,deliveryDirectives:z,track:W}=Y;this.load({id:J,groupId:X,level:null,responseType:"text",type:J0.SUBTITLE_TRACK,url:Q,deliveryDirectives:z,levelOrTrack:W})}onLevelsUpdated(Z,Y){let J=this.loaders[J0.LEVEL];if(J){let X=J.context;if(X&&!Y.levels.some((Q)=>Q===X.levelOrTrack))J.abort(),delete this.loaders[J0.LEVEL]}}load(Z){var Y;let J=this.hls.config,X=this.getInternalLoader(Z);if(X){let G=this.hls.logger,q=X.context;if(q&&q.levelOrTrack===Z.levelOrTrack&&(q.url===Z.url||q.deliveryDirectives&&!Z.deliveryDirectives)){if(q.url===Z.url)G.log(`[playlist-loader]: ignore ${Z.url} ongoing request`);else G.log(`[playlist-loader]: ignore ${Z.url} in favor of ${q.url}`);return}G.log(`[playlist-loader]: aborting previous loader for type: ${Z.type}`),X.abort()}let Q;if(Z.type===J0.MANIFEST)Q=J.manifestLoadPolicy.default;else Q=U0({},J.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null});if(X=this.createInternalLoader(Z),m((Y=Z.deliveryDirectives)==null?void 0:Y.part)){let G;if(Z.type===J0.LEVEL&&Z.level!==null)G=this.hls.levels[Z.level].details;else if(Z.type===J0.AUDIO_TRACK&&Z.id!==null)G=this.hls.audioTracks[Z.id].details;else if(Z.type===J0.SUBTITLE_TRACK&&Z.id!==null)G=this.hls.subtitleTracks[Z.id].details;if(G){let{partTarget:q,targetduration:V}=G;if(q&&V){let U=Math.max(q*3,V*0.8)*1000;Q=U0({},Q,{maxTimeToFirstByteMs:Math.min(U,Q.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(U,Q.maxTimeToFirstByteMs)})}}}let z=Q.errorRetry||Q.timeoutRetry||{},W={loadPolicy:Q,timeout:Q.maxLoadTimeMs,maxRetry:z.maxNumRetry||0,retryDelay:z.retryDelayMs||0,maxRetryDelay:z.maxRetryDelayMs||0},H={onSuccess:(G,q,V,U)=>{let N=this.getInternalLoader(V);this.resetInternalLoader(V.type);let j=G.data;if(q.parsing.start=performance.now(),R8.isMediaPlaylist(j)||V.type!==J0.MANIFEST)this.handleTrackOrLevelPlaylist(G,q,V,U||null,N);else this.handleMasterPlaylist(G,q,V,U)},onError:(G,q,V,U)=>{this.handleNetworkError(q,V,!1,G,U)},onTimeout:(G,q,V)=>{this.handleNetworkError(q,V,!0,void 0,G)}};X.load(Z,W,H)}checkAutostartLoad(){if(!this.hls)return;let{config:{autoStartLoad:Z,startPosition:Y},forceStartLoad:J}=this.hls;if(Z||J)this.hls.logger.log(`${Z?"auto":"force"} startLoad with configured startPosition ${Y}`),this.hls.startLoad(Y)}handleMasterPlaylist(Z,Y,J,X){let Q=this.hls,z=Z.data,W=RZ(Z,J),H=R8.parseMasterPlaylist(z,W);if(H.playlistParsingError){Y.parsing.end=performance.now(),this.handleManifestParsingError(Z,J,H.playlistParsingError,X,Y);return}let{contentSteering:G,levels:q,sessionData:V,sessionKeys:U,startTimeOffset:N,variableList:j}=H;this.variableList=j,q.forEach((E)=>{let{unknownCodecs:O}=E;if(O){let{preferManagedMediaSource:A}=this.hls.config,{audioCodec:$,videoCodec:L}=E;for(let M=O.length;M--;){let w=O[M];if(d9(w,"audio",A))E.audioCodec=$=$?`${$},${w}`:w,O9.audio[$.substring(0,4)]=2,O.splice(M,1);else if(d9(w,"video",A))E.videoCodec=L=L?`${L},${w}`:w,O9.video[L.substring(0,4)]=2,O.splice(M,1)}}});let{AUDIO:K=[],SUBTITLES:B,"CLOSED-CAPTIONS":R}=R8.parseMasterPlaylistMedia(z,W,H);if(K.length){if(!K.some((O)=>!O.url)&&q[0].audioCodec&&!q[0].attrs.AUDIO)this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),K.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new R0({}),bitrate:0,url:""})}Q.trigger(F.MANIFEST_LOADED,{levels:q,audioTracks:K,subtitles:B,captions:R,contentSteering:G,url:W,stats:Y,networkDetails:X,sessionData:V,sessionKeys:U,startTimeOffset:N,variableList:j})}handleTrackOrLevelPlaylist(Z,Y,J,X,Q){let z=this.hls,{id:W,level:H,type:G}=J,q=RZ(Z,J),V=m(H)?H:m(W)?W:0,U=fJ(J),N=R8.parseLevelPlaylist(Z.data,q,V,U,0,this.variableList);if(G===J0.MANIFEST){let j={attrs:new R0({}),bitrate:0,details:N,name:"",url:q};N.requestScheduled=Y.loading.start+LX(N,0),z.trigger(F.MANIFEST_LOADED,{levels:[j],audioTracks:[],url:q,stats:Y,networkDetails:X,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}Y.parsing.end=performance.now(),J.levelDetails=N,this.handlePlaylistLoaded(N,Z,Y,J,X,Q)}handleManifestParsingError(Z,Y,J,X,Q){this.hls.trigger(F.ERROR,{type:n.NETWORK_ERROR,details:b.MANIFEST_PARSING_ERROR,fatal:Y.type===J0.MANIFEST,url:Z.url,err:J,error:J,reason:J.message,response:Z,context:Y,networkDetails:X,stats:Q})}handleNetworkError(Z,Y,J=!1,X,Q){let z=`A network ${J?"timeout":"error"+(X?" (status "+X.code+")":"")} occurred while loading ${Z.type}`;if(Z.type===J0.LEVEL)z+=`: ${Z.level} id: ${Z.id}`;else if(Z.type===J0.AUDIO_TRACK||Z.type===J0.SUBTITLE_TRACK)z+=` id: ${Z.id} group-id: "${Z.groupId}"`;let W=Error(z);this.hls.logger.warn(`[playlist-loader]: ${z}`);let H=b.UNKNOWN,G=!1,q=this.getInternalLoader(Z);switch(Z.type){case J0.MANIFEST:H=J?b.MANIFEST_LOAD_TIMEOUT:b.MANIFEST_LOAD_ERROR,G=!0;break;case J0.LEVEL:H=J?b.LEVEL_LOAD_TIMEOUT:b.LEVEL_LOAD_ERROR,G=!1;break;case J0.AUDIO_TRACK:H=J?b.AUDIO_TRACK_LOAD_TIMEOUT:b.AUDIO_TRACK_LOAD_ERROR,G=!1;break;case J0.SUBTITLE_TRACK:H=J?b.SUBTITLE_TRACK_LOAD_TIMEOUT:b.SUBTITLE_LOAD_ERROR,G=!1;break}if(q)this.resetInternalLoader(Z.type);let V={type:n.NETWORK_ERROR,details:H,fatal:G,url:Z.url,loader:q,context:Z,error:W,networkDetails:Y,stats:Q};if(X){let U=(Y==null?void 0:Y.url)||Z.url;V.response=H0({url:U,data:void 0},X)}this.hls.trigger(F.ERROR,V)}handlePlaylistLoaded(Z,Y,J,X,Q,z){let W=this.hls,{type:H,level:G,levelOrTrack:q,id:V,groupId:U,deliveryDirectives:N}=X,j=RZ(Y,X),K=fJ(X),B=typeof X.level==="number"&&K===o.MAIN?G:void 0,R=Z.playlistParsingError;if(R){if(this.hls.logger.warn(`${R} ${Z.url}`),!W.config.ignorePlaylistParsingErrors){W.trigger(F.ERROR,{type:n.NETWORK_ERROR,details:b.LEVEL_PARSING_ERROR,fatal:!1,url:j,error:R,reason:R.message,response:Y,context:X,level:B,parent:K,networkDetails:Q,stats:J});return}Z.playlistParsingError=null}if(!Z.fragments.length){let E=Z.playlistParsingError=Error("No Segments found in Playlist");W.trigger(F.ERROR,{type:n.NETWORK_ERROR,details:b.LEVEL_EMPTY_ERROR,fatal:!1,url:j,error:E,reason:E.message,response:Y,context:X,level:B,parent:K,networkDetails:Q,stats:J});return}if(Z.live&&z){if(z.getCacheAge)Z.ageHeader=z.getCacheAge()||0;if(!z.getCacheAge||isNaN(Z.ageHeader))Z.ageHeader=0}switch(H){case J0.MANIFEST:case J0.LEVEL:if(B){if(!q)B=0;else if(q!==W.levels[B]){let E=W.levels.indexOf(q);if(E>-1)B=E}}W.trigger(F.LEVEL_LOADED,{details:Z,levelInfo:q||W.levels[0],level:B||0,id:V||0,stats:J,networkDetails:Q,deliveryDirectives:N,withoutMultiVariant:H===J0.MANIFEST});break;case J0.AUDIO_TRACK:W.trigger(F.AUDIO_TRACK_LOADED,{details:Z,track:q,id:V||0,groupId:U||"",stats:J,networkDetails:Q,deliveryDirectives:N});break;case J0.SUBTITLE_TRACK:W.trigger(F.SUBTITLE_TRACK_LOADED,{details:Z,track:q,id:V||0,groupId:U||"",stats:J,networkDetails:Q,deliveryDirectives:N});break}}}class _8{static get version(){return l9}static isMSESupported(){return JQ()}static isSupported(){return YV()}static getMediaSource(){return k8()}static get Events(){return F}static get MetadataSchema(){return d0}static get ErrorTypes(){return n}static get ErrorDetails(){return b}static get DefaultConfig(){if(!_8.defaultConfig)return nq;return _8.defaultConfig}static set DefaultConfig(Z){_8.defaultConfig=Z}constructor(Z={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new tZ,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._url=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;let Y=this.logger=WH(Z.debug||!1,"Hls instance",Z.assetPlayerId),J=this.config=iq(_8.DefaultConfig,Z,Y);if(this.userConfig=Z,J.progressive)rq(J,Y);let{abrController:X,bufferController:Q,capLevelController:z,errorController:W,fpsController:H}=J,G=new W(this),q=this.abrController=new X(this),V=new VX(this),U=J.interstitialsController,N=U?this.interstitialsController=new U(this,_8):null,j=this.bufferController=new Q(this,V),K=this.capLevelController=new z(this),B=new H(this),R=new zQ(this),E=J.contentSteeringController,O=E?new E(this):null,A=this.levelController=new ZQ(this,O),$=new t2(this),L=new QQ(this.config,this.logger),M=this.streamController=new XQ(this,V,L),w=this.gapController=new a2(this,V);K.setStreamController(M),B.setStreamController(M);let _=[R,A,M];if(N)_.splice(1,0,N);if(O)_.splice(1,0,O);this.networkControllers=_;let C=[q,j,w,K,B,$,V];this.audioTrackController=this.createController(J.audioTrackController,_);let D=J.audioStreamController;if(D)_.push(this.audioStreamController=new D(this,V,L));this.subtitleTrackController=this.createController(J.subtitleTrackController,_);let I=J.subtitleStreamController;if(I)_.push(this.subtititleStreamController=new I(this,V,L));this.createController(J.timelineController,C),L.emeController=this.emeController=this.createController(J.emeController,C),this.cmcdController=this.createController(J.cmcdController,C),this.latencyController=this.createController(e2,C),this.coreComponents=C,_.push(G);let h=G.onErrorOut;if(typeof h==="function")this.on(F.ERROR,h,G);this.on(F.MANIFEST_LOADED,R.onManifestLoaded,R)}createController(Z,Y){if(Z){let J=new Z(this);if(Y)Y.push(J);return J}return null}on(Z,Y,J=this){this._emitter.on(Z,Y,J)}once(Z,Y,J=this){this._emitter.once(Z,Y,J)}removeAllListeners(Z){this._emitter.removeAllListeners(Z)}off(Z,Y,J=this,X){this._emitter.off(Z,Y,J,X)}listeners(Z){return this._emitter.listeners(Z)}emit(Z,Y,J){return this._emitter.emit(Z,Y,J)}trigger(Z,Y){if(this.config.debug)return this.emit(Z,Z,Y);else try{return this.emit(Z,Z,Y)}catch(J){if(this.logger.error("An internal error happened while handling event "+Z+'. Error message: "'+J.message+'". Here is a stacktrace:',J),!this.triggeringException){this.triggeringException=!0;let X=Z===F.ERROR;this.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.INTERNAL_EXCEPTION,fatal:X,event:Z,error:J}),this.triggeringException=!1}}return!1}listenerCount(Z){return this._emitter.listenerCount(Z)}destroy(){this.logger.log("destroy"),this.trigger(F.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach((Y)=>Y.destroy()),this.networkControllers.length=0,this.coreComponents.forEach((Y)=>Y.destroy()),this.coreComponents.length=0;let Z=this.config;Z.xhrSetup=Z.fetchSetup=void 0,this.userConfig=null}attachMedia(Z){if(!Z||"media"in Z&&!Z.media){let Q=Error(`attachMedia failed: invalid argument (${Z})`);this.trigger(F.ERROR,{type:n.OTHER_ERROR,details:b.ATTACH_MEDIA_ERROR,fatal:!0,error:Q});return}if(this.logger.log("attachMedia"),this._media)this.logger.warn("media must be detached before attaching"),this.detachMedia();let Y="media"in Z,J=Y?Z.media:Z,X=Y?Z:{media:J};this._media=J,this.trigger(F.MEDIA_ATTACHING,X)}detachMedia(){this.logger.log("detachMedia"),this.trigger(F.MEDIA_DETACHING,{}),this._media=null}transferMedia(){this._media=null;let Z=this.bufferController.transferMedia();return this.trigger(F.MEDIA_DETACHING,{transferMedia:Z}),Z}loadSource(Z){this.stopLoad();let Y=this.media,J=this._url,X=this._url=mZ.buildAbsoluteURL(self.location.href,Z,{alwaysNormalize:!0});if(this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${X}`),Y&&J&&(J!==X||this.bufferController.hasSourceTypes()))this.detachMedia(),this.attachMedia(Y);this.trigger(F.MANIFEST_LOADING,{url:Z})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(Z=-1,Y){this.logger.log(`startLoad(${Z+(Y?", ":"")})`),this.started=!0,this.resumeBuffering();for(let J=0;J{if(Z.resumeBuffering)Z.resumeBuffering()})}pauseBuffering(){if(this.bufferingEnabled)this.logger.log("pause buffering"),this.networkControllers.forEach((Z)=>{if(Z.pauseBuffering)Z.pauseBuffering()})}get inFlightFragments(){let Z={[o.MAIN]:this.streamController.inFlightFrag};if(this.audioStreamController)Z[o.AUDIO]=this.audioStreamController.inFlightFrag;if(this.subtititleStreamController)Z[o.SUBTITLE]=this.subtititleStreamController.inFlightFrag;return Z}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");let Z=this._media,Y=Z==null?void 0:Z.currentTime;if(this.detachMedia(),Z){if(this.attachMedia(Z),Y)this.startLoad(Y)}}removeLevel(Z){this.levelController.removeLevel(Z)}get sessionId(){let Z=this._sessionId;if(!Z)Z=this._sessionId=Bq();return Z}get levels(){let Z=this.levelController.levels;return Z?Z:[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(Z){this.logger.log(`set currentLevel:${Z}`),this.levelController.manualLevel=Z,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(Z){this.logger.log(`set nextLevel:${Z}`),this.levelController.manualLevel=Z,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(Z){this.logger.log(`set loadLevel:${Z}`),this.levelController.manualLevel=Z}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(Z){this.levelController.nextLoadLevel=Z}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(Z){this.logger.log(`set firstLevel:${Z}`),this.levelController.firstLevel=Z}get startLevel(){let Z=this.levelController.startLevel;if(Z===-1&&this.abrController.forcedAutoLevel>-1)return this.abrController.forcedAutoLevel;return Z}set startLevel(Z){if(this.logger.log(`set startLevel:${Z}`),Z!==-1)Z=Math.max(Z,this.minAutoLevel);this.levelController.startLevel=Z}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(Z){let Y=!!Z;if(Y!==this.config.capLevelToPlayerSize){if(Y)this.capLevelController.startCapping();else this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch();this.config.capLevelToPlayerSize=Y}}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){let{bwEstimator:Z}=this.abrController;if(!Z)return NaN;return Z.getEstimate()}set bandwidthEstimate(Z){this.abrController.resetEstimator(Z)}get abrEwmaDefaultEstimate(){let{bwEstimator:Z}=this.abrController;if(!Z)return NaN;return Z.defaultEstimate}get ttfbEstimate(){let{bwEstimator:Z}=this.abrController;if(!Z)return NaN;return Z.getEstimateTTFB()}set autoLevelCapping(Z){if(this._autoLevelCapping!==Z)this.logger.log(`set autoLevelCapping:${Z}`),this._autoLevelCapping=Z,this.levelController.checkMaxAutoUpdated()}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(Z){if(yH(Z)&&this._maxHdcpLevel!==Z)this._maxHdcpLevel=Z,this.levelController.checkMaxAutoUpdated()}get autoLevelEnabled(){return this.levelController.manualLevel===-1}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){let{levels:Z,config:{minAutoBitrate:Y}}=this;if(!Z)return 0;let J=Z.length;for(let X=0;X=Y)return X;return 0}get maxAutoLevel(){let{levels:Z,autoLevelCapping:Y,maxHdcpLevel:J}=this,X;if(Y===-1&&Z!=null&&Z.length)X=Z.length-1;else X=Y;if(J)for(let Q=X;Q--;){let z=Z[Q].attrs["HDCP-LEVEL"];if(z&&z<=J)return Q}return X}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(Z){this.abrController.nextAutoLevel=Z}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(Z){var Y;return((Y=this.audioTrackController)==null?void 0:Y.setAudioOption(Z))||null}setSubtitleOption(Z){var Y;return((Y=this.subtitleTrackController)==null?void 0:Y.setSubtitleOption(Z))||null}get allAudioTracks(){let Z=this.audioTrackController;return Z?Z.allAudioTracks:[]}get audioTracks(){let Z=this.audioTrackController;return Z?Z.audioTracks:[]}get audioTrack(){let Z=this.audioTrackController;return Z?Z.audioTrack:-1}set audioTrack(Z){let Y=this.audioTrackController;if(Y)Y.audioTrack=Z}get allSubtitleTracks(){let Z=this.subtitleTrackController;return Z?Z.allSubtitleTracks:[]}get subtitleTracks(){let Z=this.subtitleTrackController;return Z?Z.subtitleTracks:[]}get subtitleTrack(){let Z=this.subtitleTrackController;return Z?Z.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(Z){let Y=this.subtitleTrackController;if(Y)Y.subtitleTrack=Z}get subtitleDisplay(){let Z=this.subtitleTrackController;return Z?Z.subtitleDisplay:!1}set subtitleDisplay(Z){let Y=this.subtitleTrackController;if(Y)Y.subtitleDisplay=Z}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(Z){this.config.lowLatencyMode=Z}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}set targetLatency(Z){this.latencyController.targetLatency=Z}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(Z){this.levelController.pathwayPriority=Z}get bufferedToEnd(){var Z;return!!((Z=this.bufferController)!=null&&Z.bufferedToEnd)}get interstitialsManager(){var Z;return((Z=this.interstitialsController)==null?void 0:Z.interstitialsManager)||null}getMediaDecodingInfo(Z,Y=this.allAudioTracks){let J=XX(Y);return YX(Z,J,navigator.mediaCapabilities)}}_8.defaultConfig=void 0;var Z0=_8,V0={VIDEO:"video",THUMBNAIL:"thumbnail",STORYBOARD:"storyboard",DRM:"drm"},W0={NOT_AN_ERROR:0,NETWORK_OFFLINE:2000002,NETWORK_RECONNECTING:2000003,NETWORK_UNKNOWN_ERROR:2000000,NETWORK_NO_STATUS:2000001,NETWORK_INVALID_URL:2400000,NETWORK_NOT_FOUND:2404000,NETWORK_NOT_READY:2412000,NETWORK_GENERIC_SERVER_FAIL:2500000,NETWORK_TOKEN_MISSING:2403201,NETWORK_TOKEN_MALFORMED:2412202,NETWORK_TOKEN_EXPIRED:2403210,NETWORK_TOKEN_AUD_MISSING:2403221,NETWORK_TOKEN_AUD_MISMATCH:2403222,NETWORK_TOKEN_SUB_MISMATCH:2403232,ENCRYPTED_ERROR:5000000,ENCRYPTED_UNSUPPORTED_KEY_SYSTEM:5000001,ENCRYPTED_GENERATE_REQUEST_FAILED:5000002,ENCRYPTED_UPDATE_LICENSE_FAILED:5000003,ENCRYPTED_UPDATE_SERVER_CERT_FAILED:5000004,ENCRYPTED_CDM_ERROR:5000005,ENCRYPTED_OUTPUT_RESTRICTED:5000006,ENCRYPTED_MISSING_TOKEN:5000002},RQ=(Z)=>Z===V0.VIDEO?"playback":Z,f8=class Z extends Error{constructor(Y,J=Z.MEDIA_ERR_CUSTOM,X,Q){var z;super(Y),this.name="MediaError",this.code=J,this.context=Q,this.fatal=X!=null?X:J>=Z.MEDIA_ERR_NETWORK&&J<=Z.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(z=Z.defaultMessages[this.code])!=null?z:"")}};f8.MEDIA_ERR_ABORTED=1,f8.MEDIA_ERR_NETWORK=2,f8.MEDIA_ERR_DECODE=3,f8.MEDIA_ERR_SRC_NOT_SUPPORTED=4,f8.MEDIA_ERR_ENCRYPTED=5,f8.MEDIA_ERR_CUSTOM=100,f8.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var d=f8,QV=(Z)=>Z==null,L6=(Z,Y)=>QV(Y)?!1:(Z in Y),B6={ANY:"any",MUTED:"muted"},g0={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},X9={MSE:"mse",NATIVE:"native"},a9={HEADER:"header",QUERY:"query",NONE:"none"},_6=Object.values(a9),C8={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},R6={HLS:C8.M3U8},yU=Object.keys(R6),fU=[...Object.values(C8),"hls","HLS"];var zV="en",F6={code:zV},A0=(Z,Y,J,X,Q=Z)=>{Q.addEventListener(Y,J,X),Z.addEventListener("teardown",()=>{Q.removeEventListener(Y,J)},{once:!0})};function WV(Z,Y,J){Y&&J>Y&&(J=Y);for(let X=0;X=J)return!0;return!1}var H1=(Z)=>{let Y=Z.indexOf("?");if(Y<0)return[Z];let J=Z.slice(0,Y),X=Z.slice(Y);return[J,X]},q1=(Z)=>{let{type:Y}=Z;if(Y){let J=Y.toUpperCase();return L6(J,R6)?R6[J]:Y}return GV(Z)},FQ=(Z)=>Z==="VOD"?g0.ON_DEMAND:g0.LIVE,EQ=(Z)=>Z==="EVENT"?Number.POSITIVE_INFINITY:Z==="VOD"?Number.NaN:0,GV=(Z)=>{let{src:Y}=Z;if(!Y)return"";let J="";try{J=D6(Y).pathname}catch{console.error("Invalid url when trying to infer mime type",Y)}let X=J.lastIndexOf(".");if(X<0)return VV(Z)?C8.M3U8:"";let Q=J.slice(X+1).toUpperCase();return L6(Q,C8)?C8[Q]:""},E6=(Z)=>{try{return new URL(Z),!1}catch{return!0}},HV=(Z)=>Z.split(` `).find((Y,J,X)=>J>0&&X[J-1].startsWith("#EXT-X-STREAM-INF")),D6=(Z,Y)=>{var J;if(!E6(Z))return new URL(Z);let X=(J=window==null?void 0:window.location)==null?void 0:J.href,Q=Y!=null?Y:X;return Y&&E6(Y.toString())&&(Q=new URL(Y,X)),new URL(Z,Q)},qV="mux.com",VV=({src:Z,customDomain:Y=qV})=>{let J;try{J=new URL(`${Z}`)}catch{return!1}let X=J.protocol==="https:",Q=J.hostname===`stream.${Y}`.toLowerCase(),z=J.pathname.split("/"),W=z.length===2,H=!(z!=null&&z[1].includes("."));return X&&Q&&W&&H},UV=(Z)=>{let Y=(Z!=null?Z:"").split(".")[1];if(Y)try{let J=Y.replace(/-/g,"+").replace(/_/g,"/"),X=decodeURIComponent(atob(J).split("").map(function(Q){return"%"+("00"+Q.charCodeAt(0).toString(16)).slice(-2)}).join(""));return JSON.parse(X)}catch{return}},jV=({exp:Z},Y=Date.now())=>!Z||Z*1000Z!==Y,KV=({aud:Z},Y)=>!Z,BV=({aud:Z},Y)=>Z!==Y,AQ="en";function X0(Z,Y=!0){var J,X;let Q=Y&&(X=(J=F6)==null?void 0:J[Z])!=null?X:Z,z=Y?F6.code:AQ;return new RV(Q,z)}var RV=class{constructor(Z,Y=((J)=>(J=F6)!=null?J:AQ)()){this.message=Z,this.locale=Y}format(Z){return this.message.replace(/\{(\w+)\}/g,(Y,J)=>{var X;return(X=Z[J])!=null?X:""})}toString(){return this.message}},FV=Object.values(B6),WQ=(Z)=>typeof Z=="boolean"||typeof Z=="string"&&FV.includes(Z),EV=(Z,Y,J)=>{let{autoplay:X}=Z,Q=!1,z=!1,W=WQ(X)?X:!!X,H=()=>{Q||A0(Y,"playing",()=>{Q=!0},{once:!0})};if(H(),A0(Y,"loadstart",()=>{Q=!1,H(),N6(Y,W)},{once:!0}),A0(Y,"loadstart",()=>{J||(Z.streamType&&Z.streamType!==g0.UNKNOWN?z=Z.streamType===g0.LIVE:z=!Number.isFinite(Y.duration)),N6(Y,W)},{once:!0}),J&&J.once(Z0.Events.LEVEL_LOADED,(G,q)=>{var V;Z.streamType&&Z.streamType!==g0.UNKNOWN?z=Z.streamType===g0.LIVE:z=(V=q.details.live)!=null?V:!1}),!W){let G=()=>{!z||Number.isFinite(Z.startTime)||(J!=null&&J.liveSyncPosition?Y.currentTime=J.liveSyncPosition:Number.isFinite(Y.seekable.end(0))&&(Y.currentTime=Y.seekable.end(0)))};J&&A0(Y,"play",()=>{Y.preload==="metadata"?J.once(Z0.Events.LEVEL_UPDATED,G):G()},{once:!0})}return(G)=>{Q||(W=WQ(G)?G:!!G,N6(Y,W))}},N6=(Z,Y)=>{if(!Y)return;let J=Z.muted,X=()=>Z.muted=J;switch(Y){case B6.ANY:Z.play().catch(()=>{Z.muted=!0,Z.play().catch(X)});break;case B6.MUTED:Z.muted=!0,Z.play().catch(X);break;default:Z.play().catch(()=>{});break}},AV=({preload:Z,src:Y},J,X)=>{let Q=(U)=>{U!=null&&["","none","metadata","auto"].includes(U)?J.setAttribute("preload",U):J.removeAttribute("preload")};if(!X)return Q(Z),Q;let z=!1,W=!1,H=X.config.maxBufferLength,G=X.config.maxBufferSize,q=(U)=>{Q(U);let N=U!=null?U:J.preload;W||N==="none"||(N==="metadata"?(X.config.maxBufferLength=1,X.config.maxBufferSize=1):(X.config.maxBufferLength=H,X.config.maxBufferSize=G),V())},V=()=>{!z&&Y&&(z=!0,X.loadSource(Y))};return A0(J,"play",()=>{W=!0,X.config.maxBufferLength=H,X.config.maxBufferSize=G,V()},{once:!0}),q(Z),q},OV=(Z,Y,J)=>{let{minPreloadSegments:X}=Z;if(X==null||X<=0||!J)return;let Q=0,z=!1,W=Y.playbackRate||1,H=()=>{Y.playbackRate!==0&&(W=Y.playbackRate,Y.playbackRate=0)};Y.playbackRate=0,A0(Y,"ratechange",H);let G=(q,{frag:V})=>{z||V.type!=="main"||(Q++,Q>=X&&(z=!0,Y.removeEventListener("ratechange",H),Y.playbackRate=W))};J.on(Z0.Events.FRAG_BUFFERED,G),Y.addEventListener("teardown",()=>{z||(z=!0,J.off(Z0.Events.FRAG_BUFFERED,G),Y.playbackRate=W)},{once:!0})},$V=(Z,Y,J)=>{let{initialEstimateSegments:X}=Z;if(X==null||X<=0||!J)return;let Q=0;J.on(Z0.Events.FRAG_BUFFERED,(z,{frag:W})=>{W.type==="main"&&(Q++,Q{var q;let V=+((q=[...Z.audioTracks].find((N)=>N.enabled))==null?void 0:q.id),U=Y.audioTracks.map((N)=>N.id);V!=Y.audioTrack&&U.includes(V)&&(Y.audioTrack=V)};Z.audioTracks.addEventListener("change",Q),Y.on(Z0.Events.LEVELS_UPDATED,function(q,V){var U;let N=Z.videoTracks[(U=Z.videoTracks.selectedIndex)!=null?U:0];if(!N)return;let j=V.levels.map((K)=>X.get(K));for(let K of Z.videoRenditions)K.id&&!j.includes(K.id)&&N.removeRendition(K)});let z=(q)=>{let V=q.target.selectedIndex;V!=Y.nextLevel&&(Y.nextLevel=V)};(J=Z.videoRenditions)==null||J.addEventListener("change",z);let W=()=>{for(let q of Z.videoTracks)Z.removeVideoTrack(q)},H=()=>{for(let q of Z.audioTracks)Z.removeAudioTrack(q)},G=()=>{W(),H()};Y.once(Z0.Events.DESTROYING,()=>{var q,V;G(),(q=Z.audioTracks)==null||q.removeEventListener("change",Q),(V=Z.videoRenditions)==null||V.removeEventListener("change",z)})}var K6=(Z)=>("time"in Z)?Z.time:Z.startTime;function wV(Z,Y){Y.on(Z0.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(Q,{tracks:z})=>{z.forEach((W)=>{var H,G;let q=(H=W.subtitleTrack)!=null?H:W.closedCaptions,V=Y.subtitleTracks.findIndex(({lang:N,name:j,type:K})=>N==(q==null?void 0:q.lang)&&j===W.label&&K.toLowerCase()===W.kind),U=((G=W._id)!=null?G:W.default)?"default":`${W.kind}${V}`;OQ(Z,W.kind,W.label,q==null?void 0:q.lang,U,W.default)})});let J=()=>{if(!Y.subtitleTracks.length)return;let Q=Array.from(Z.textTracks).find((H)=>H.id&&H.mode==="showing"&&["subtitles","captions"].includes(H.kind));if(!Q)return;let z=Y.subtitleTracks[Y.subtitleTrack],W=z?z.default?"default":`${Y.subtitleTracks[Y.subtitleTrack].type.toLowerCase()}${Y.subtitleTrack}`:void 0;if(Y.subtitleTrack<0||(Q==null?void 0:Q.id)!==W){let H=Y.subtitleTracks.findIndex(({lang:G,name:q,type:V,default:U})=>Q.id==="default"&&U||G==Q.language&&q===Q.label&&V.toLowerCase()===Q.kind);Y.subtitleTrack=H}(Q==null?void 0:Q.id)===W&&Q.cues&&Array.from(Q.cues).forEach((H)=>{Q.addCue(H)})};Z.textTracks.addEventListener("change",J),Y.on(Z0.Events.CUES_PARSED,(Q,{track:z,cues:W})=>{let H=Z.textTracks.getTrackById(z);if(!H)return;let G=H.mode==="disabled";G&&(H.mode="hidden"),W.forEach((q)=>{var V;(V=H.cues)!=null&&V.getCueById(q.id)||H.addCue(q)}),G&&(H.mode="disabled")}),Y.once(Z0.Events.DESTROYING,()=>{Z.textTracks.removeEventListener("change",J),Z.querySelectorAll("track[data-removeondestroy]").forEach((Q)=>{Q.remove()})});let X=()=>{Array.from(Z.textTracks).forEach((Q)=>{var z,W;if(!["subtitles","caption"].includes(Q.kind)&&(Q.label==="thumbnails"||Q.kind==="chapters")){if(!((z=Q.cues)!=null&&z.length)){let H="track";Q.kind&&(H+=`[kind="${Q.kind}"]`),Q.label&&(H+=`[label="${Q.label}"]`);let G=Z.querySelector(H),q=(W=G==null?void 0:G.getAttribute("src"))!=null?W:"";G==null||G.removeAttribute("src"),setTimeout(()=>{G==null||G.setAttribute("src",q)},0)}Q.mode!=="hidden"&&(Q.mode="hidden")}})};Y.once(Z0.Events.MANIFEST_LOADED,X),Y.once(Z0.Events.MEDIA_ATTACHED,X)}function OQ(Z,Y,J,X,Q,z){let W=document.createElement("track");return W.kind=Y,W.label=J,X&&(W.srclang=X),Q&&(W.id=Q),z&&(W.default=!0),W.track.mode=["subtitles","captions"].includes(Y)?"disabled":"hidden",W.setAttribute("data-removeondestroy",""),Z.append(W),W.track}function t9(Z,Y,J){var X;return(X=Array.from(Z.querySelectorAll("track")).find((Q)=>Q.track.label===Y&&Q.track.kind===J))==null?void 0:X.track}async function $Q(Z,Y,J,X){let Q=t9(Z,J,X);return Q||(Q=OQ(Z,X,J),Q.mode="hidden",await new Promise((z)=>setTimeout(()=>z(void 0),0))),Q.mode!=="hidden"&&(Q.mode="hidden"),[...Y].sort((z,W)=>K6(W)-K6(z)).forEach((z)=>{var W,H;let G=z.value,q=K6(z);if("endTime"in z&&z.endTime!=null)Q==null||Q.addCue(new VTTCue(q,z.endTime,X==="chapters"?G:JSON.stringify(G!=null?G:null)));else{let V=Array.prototype.findIndex.call(Q==null?void 0:Q.cues,(K)=>K.startTime>=q),U=(W=Q==null?void 0:Q.cues)==null?void 0:W[V],N=U?U.startTime:Number.isFinite(Z.duration)?Z.duration:Number.MAX_SAFE_INTEGER,j=(H=Q==null?void 0:Q.cues)==null?void 0:H[V-1];j&&(j.endTime=q),Q==null||Q.addCue(new VTTCue(q,N,X==="chapters"?G:JSON.stringify(G!=null?G:null)))}}),Z.textTracks.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),Q}var C6="cuepoints",MQ=Object.freeze({label:C6});async function P6(Z,Y,J=MQ){return $Q(Z,Y,J.label,"metadata")}var A6=(Z)=>({time:Z.startTime,value:JSON.parse(Z.text)});function wQ(Z,Y={label:C6}){let J=t9(Z,Y.label,"metadata");return J!=null&&J.cues?Array.from(J.cues,(X)=>A6(X)):[]}function b6(Z,Y={label:C6}){var J,X;let Q=t9(Z,Y.label,"metadata");if(!((J=Q==null?void 0:Q.activeCues)!=null&&J.length))return;if(Q.activeCues.length===1)return A6(Q.activeCues[0]);let{currentTime:z}=Z,W=Array.prototype.find.call((X=Q.activeCues)!=null?X:[],({startTime:H,endTime:G})=>H<=z&&G>z);return A6(W||Q.activeCues[0])}async function LV(Z,Y=MQ){return new Promise((J)=>{A0(Z,"loadstart",async()=>{let X=await P6(Z,[],Y);A0(Z,"cuechange",()=>{let Q=b6(Z);if(Q){let z=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:Q});Z.dispatchEvent(z)}},{},X),J(X)})})}var I6="chapters",LQ=Object.freeze({label:I6}),O6=(Z)=>({startTime:Z.startTime,endTime:Z.endTime,value:Z.text});async function x6(Z,Y,J=LQ){return $Q(Z,Y,J.label,"chapters")}function _Q(Z,Y={label:I6}){var J;let X=t9(Z,Y.label,"chapters");return(J=X==null?void 0:X.cues)!=null&&J.length?Array.from(X.cues,(Q)=>O6(Q)):[]}function S6(Z,Y={label:I6}){var J,X;let Q=t9(Z,Y.label,"chapters");if(!((J=Q==null?void 0:Q.activeCues)!=null&&J.length))return;if(Q.activeCues.length===1)return O6(Q.activeCues[0]);let{currentTime:z}=Z,W=Array.prototype.find.call((X=Q.activeCues)!=null?X:[],({startTime:H,endTime:G})=>H<=z&&G>z);return O6(W||Q.activeCues[0])}async function _V(Z,Y=LQ){return new Promise((J)=>{A0(Z,"loadstart",async()=>{let X=await x6(Z,[],Y);A0(Z,"cuechange",()=>{let Q=S6(Z);if(Q){let z=new CustomEvent("chapterchange",{composed:!0,bubbles:!0,detail:Q});Z.dispatchEvent(z)}},{},X),J(X)})})}function DQ(Z,Y){if(Y){let J=Y.playingDate;if(J!=null)return new Date(J.getTime()-Z.currentTime*1000)}return typeof Z.getStartDate=="function"?Z.getStartDate():new Date(NaN)}function CQ(Z,Y){if(Y&&Y.playingDate)return Y.playingDate;if(typeof Z.getStartDate=="function"){let J=Z.getStartDate();return new Date(J.getTime()+Z.currentTime*1000)}return new Date(NaN)}var GQ={VIDEO:"v",THUMBNAIL:"t",STORYBOARD:"s",DRM:"d"},DV=(Z)=>{if(Z===V0.VIDEO)return GQ.VIDEO;if(Z===V0.DRM)return GQ.DRM},CV=(Z,Y)=>{var J,X;let Q=RQ(Z),z=`${Q}Token`;return(J=Y.tokens)!=null&&J[Q]?(X=Y.tokens)==null?void 0:X[Q]:L6(z,Y)?Y[z]:void 0},W1=(Z,Y,J,X,Q=!1,z=!((W)=>(W=globalThis.navigator)==null?void 0:W.onLine)())=>{var W,H;if(z){let E=X0("Your device appears to be offline",Q),O=void 0,A=d.MEDIA_ERR_NETWORK,$=new d(E,A,!1,O);return $.errorCategory=Y,$.muxCode=W0.NETWORK_OFFLINE,$.data=Z,$}let G="status"in Z?Z.status:Z.code,q=Date.now(),V=d.MEDIA_ERR_NETWORK;if(G===200)return;let U=RQ(Y),N=CV(Y,J),j=DV(Y),[K]=H1((W=J.playbackId)!=null?W:"");if(!G||!K)return;let B=UV(N);if(N&&!B){let E=X0("The {tokenNamePrefix}-token provided is invalid or malformed.",Q).format({tokenNamePrefix:U}),O=X0("Compact JWT string: {token}",Q).format({token:N}),A=new d(E,V,!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_TOKEN_MALFORMED,A.data=Z,A}if(G>=500){let E=new d("",V,X!=null?X:!0);return E.errorCategory=Y,E.muxCode=W0.NETWORK_UNKNOWN_ERROR,E}if(G===403)if(B){if(jV(B,q)){let E={timeStyle:"medium",dateStyle:"medium"},O=X0("The video’s secured {tokenNamePrefix}-token has expired.",Q).format({tokenNamePrefix:U}),A=X0("Expired at: {expiredDate}. Current time: {currentDate}.",Q).format({expiredDate:new Intl.DateTimeFormat("en",E).format((H=B.exp)!=null?H:0),currentDate:new Intl.DateTimeFormat("en",E).format(q)}),$=new d(O,V,!0,A);return $.errorCategory=Y,$.muxCode=W0.NETWORK_TOKEN_EXPIRED,$.data=Z,$}if(NV(B,K)){let E=X0("The video’s playback ID does not match the one encoded in the {tokenNamePrefix}-token.",Q).format({tokenNamePrefix:U}),O=X0("Specified playback ID: {playbackId} and the playback ID encoded in the {tokenNamePrefix}-token: {tokenPlaybackId}",Q).format({tokenNamePrefix:U,playbackId:K,tokenPlaybackId:B.sub}),A=new d(E,V,!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_TOKEN_SUB_MISMATCH,A.data=Z,A}if(KV(B,j)){let E=X0("The {tokenNamePrefix}-token is formatted with incorrect information.",Q).format({tokenNamePrefix:U}),O=X0("The {tokenNamePrefix}-token has no aud value. aud value should be {expectedAud}.",Q).format({tokenNamePrefix:U,expectedAud:j}),A=new d(E,V,!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_TOKEN_AUD_MISSING,A.data=Z,A}if(BV(B,j)){let E=X0("The {tokenNamePrefix}-token is formatted with incorrect information.",Q).format({tokenNamePrefix:U}),O=X0("The {tokenNamePrefix}-token has an incorrect aud value: {aud}. aud value should be {expectedAud}.",Q).format({tokenNamePrefix:U,expectedAud:j,aud:B.aud}),A=new d(E,V,!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_TOKEN_AUD_MISMATCH,A.data=Z,A}}else{let E=X0("Authorization error trying to access this {category} URL. If this is a signed URL, you might need to provide a {tokenNamePrefix}-token.",Q).format({tokenNamePrefix:U,category:Y}),O=X0("Specified playback ID: {playbackId}",Q).format({playbackId:K}),A=new d(E,V,X!=null?X:!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_TOKEN_MISSING,A.data=Z,A}if(G===412){let E=X0("This playback-id may belong to a live stream that is not currently active or an asset that is not ready.",Q),O=X0("Specified playback ID: {playbackId}",Q).format({playbackId:K}),A=new d(E,V,X!=null?X:!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_NOT_READY,A.streamType=J.streamType===g0.LIVE?"live":J.streamType===g0.ON_DEMAND?"on-demand":"unknown",A.data=Z,A}if(G===404){let E=X0("This URL or playback-id does not exist. You may have used an Asset ID or an ID from a different resource.",Q),O=X0("Specified playback ID: {playbackId}",Q).format({playbackId:K}),A=new d(E,V,X!=null?X:!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_NOT_FOUND,A.data=Z,A}if(G===400){let E=X0("The URL or playback-id was invalid. You may have used an invalid value as a playback-id."),O=X0("Specified playback ID: {playbackId}",Q).format({playbackId:K}),A=new d(E,V,X!=null?X:!0,O);return A.errorCategory=Y,A.muxCode=W0.NETWORK_INVALID_URL,A.data=Z,A}let R=new d("",V,X!=null?X:!0);return R.errorCategory=Y,R.muxCode=W0.NETWORK_UNKNOWN_ERROR,R.data=Z,R},HQ=Z0.DefaultConfig.capLevelController,PV={"720p":921600,"1080p":2073600,"1440p":4194304,"2160p":8294400};function bV(Z){let Y=Z.toLowerCase().trim();return PV[Y]}var $6=class Z extends HQ{constructor(Y){super(Y)}static setMaxAutoResolution(Y,J){J?Z.maxAutoResolution.set(Y,J):Z.maxAutoResolution.delete(Y)}getMaxAutoResolution(){var Y;let J=this.hls;return(Y=Z.maxAutoResolution.get(J))!=null?Y:void 0}get levels(){var Y;return(Y=this.hls.levels)!=null?Y:[]}getValidLevels(Y){return this.levels.filter((J,X)=>this.isLevelAllowed(J)&&X<=Y)}getMaxLevelCapped(Y){let J=this.getValidLevels(Y),X=this.getMaxAutoResolution();if(!X)return super.getMaxLevel(Y);let Q=bV(X);if(!Q)return super.getMaxLevel(Y);let z=J.filter((G)=>G.width*G.height<=Q),W=z.findIndex((G)=>G.width*G.height===Q);if(W!==-1){let G=z[W];return J.findIndex((q)=>q===G)}if(z.length===0)return 0;let H=z[z.length-1];return J.findIndex((G)=>G===H)}getMaxLevel(Y){if(this.getMaxAutoResolution()!==void 0)return this.getMaxLevelCapped(Y);let J=super.getMaxLevel(Y),X=this.getValidLevels(Y);if(!X[J])return J;let Q=Math.min(X[J].width,X[J].height),z=Z.minMaxResolution;return Q>=z?J:HQ.getMaxLevelByMediaSize(X,z*1.7777777777777777,z)}};$6.minMaxResolution=720,$6.maxAutoResolution=new WeakMap;var IV=$6,M6=IV,xV="com.apple.fps.1_0",SV="application/vnd.apple.mpegurl",TV=({mediaEl:Z,getAppCertificate:Y,getLicenseKey:J,saveAndDispatchError:X,drmTypeCb:Q})=>{if(!window.WebKitMediaKeys||!("onwebkitneedkey"in Z)){console.error("No WebKitMediaKeys. FairPlay may not be supported");let N=X0("Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser."),j=new d(N,d.MEDIA_ERR_ENCRYPTED,!0);return j.errorCategory=V0.DRM,j.muxCode=W0.ENCRYPTED_CDM_ERROR,X(Z,j),()=>{}}let z=Z,W=Y(),H=null,G=(N)=>{(async()=>{try{z.webkitKeys||q();let j=await W;if(N.initData===null||j==null)return;let K=hV(N.initData,j);V(K)}catch(j){console.error("Could not start encrypted playback due to exception",j),X(z,j)}})()},q=()=>{try{let N=new WebKitMediaKeys(xV);z.webkitSetMediaKeys(N),Q()}catch{let N="Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser.",j=new d(N,d.MEDIA_ERR_ENCRYPTED,!0);throw j.errorCategory=V0.DRM,j.muxCode=W0.ENCRYPTED_UNSUPPORTED_KEY_SYSTEM,j}},V=(N)=>{let j=z.webkitKeys.createSession(SV,N),K=async(E)=>{try{let O=E.message,A=await J(O);j.update(A)}catch(O){console.error("Error on FairPlay session message",O),X(Z,O)}},B=(E)=>{let O=E.target.error;if(!O)return;console.error(`Internal Webkit Key Session Error - sysCode: ${O.systemCode} code: ${O.code}`);let A=X0("The DRM Content Decryption Module system had an internal failure. Try reloading the page, updating your browser, or playing in another browser."),$=new d(A,d.MEDIA_ERR_ENCRYPTED,!0);$.errorCategory=V0.DRM,$.muxCode=W0.ENCRYPTED_CDM_ERROR,X(Z,$)},R=()=>{j.removeEventListener("webkitkeymessage",K),j.removeEventListener("webkitkeyerror",B),Z.removeEventListener("teardown",R),"webkitCurrentPlaybackTargetIsWireless"in Z&&Z.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",R),H=null;try{j.close()}catch{}};"webkitCurrentPlaybackTargetIsWireless"in Z&&Z.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",R,{once:!0}),j.addEventListener("webkitkeymessage",K),j.addEventListener("webkitkeyerror",B),Z.addEventListener("teardown",R),H=R},U=()=>{Z.removeEventListener("webkitneedkey",G),Z.removeEventListener("teardown",U),H==null||H();try{z.webkitSetMediaKeys(null)}catch{}};return Z.addEventListener("webkitneedkey",G),Z.addEventListener("teardown",U,{once:!0}),U},hV=(Z,Y)=>{let J=gV(vV(Z)),X=new Uint8Array(Z),Q=new Uint8Array(J),z=new Uint8Array(Y),W=X.byteLength+4+z.byteLength+4+Q.byteLength,H=new Uint8Array(W),G=0,q=(U)=>{H.set(U,G),G+=U.byteLength},V=(U)=>{let N=new DataView(H.buffer),j=U.byteLength;N.setUint32(G,j,!0),G+=4,q(U)};return q(X),V(Q),V(z),H},vV=(Z)=>new TextDecoder("utf-16le").decode(Z).replace("skd://","").slice(1);function gV(Z){let Y=new ArrayBuffer(Z.length*2),J=new DataView(Y);for(let X=0;X{let W=null,H=async(U)=>{try{let N=U.initDataType;if(N!=="skd"){console.error(`Received unexpected initialization data type "${N}"`);return}Z.mediaKeys||await G(N);let j=U.initData;if(j==null){console.error(`Could not start encrypted playback due to missing initData in ${U.type} event`);return}await q(N,j)}catch(N){X(Z,N);return}},G=async(U)=>{let N=await navigator.requestMediaKeySystemAccess("com.apple.fps",[{initDataTypes:[U],videoCapabilities:[{contentType:"application/vnd.apple.mpegurl",robustness:""}],distinctiveIdentifier:"not-allowed",persistentState:"not-allowed",sessionTypes:["temporary"]}]).then((K)=>(Q(),K)).catch(()=>{let K=X0("Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser."),B=new d(K,d.MEDIA_ERR_ENCRYPTED,!0);B.errorCategory=V0.DRM,B.muxCode=W0.ENCRYPTED_UNSUPPORTED_KEY_SYSTEM,X(Z,B)});if(!N)return;let j=await N.createMediaKeys();try{let K=await Y();await j.setServerCertificate(K).catch(()=>{let B=X0("Your server certificate failed when attempting to set it. This may be an issue with a no longer valid certificate."),R=new d(B,d.MEDIA_ERR_ENCRYPTED,!0);return R.errorCategory=V0.DRM,R.muxCode=W0.ENCRYPTED_UPDATE_SERVER_CERT_FAILED,Promise.reject(R)})}catch(K){X(Z,K);return}await Z.setMediaKeys(j)},q=async(U,N)=>{let j=Z.mediaKeys.createSession(),K=async(E)=>{let O=E.message,A=await J(O);try{await j.update(A)}catch{let $=X0("Failed to update DRM license. This may be an issue with the player or your protected content."),L=new d($,d.MEDIA_ERR_ENCRYPTED,!0);L.errorCategory=V0.DRM,L.muxCode=W0.ENCRYPTED_UPDATE_LICENSE_FAILED,X(Z,L)}},B=()=>{let E=(O)=>{let A;if(O==="internal-error"){let $=X0("The DRM Content Decryption Module system had an internal failure. Try reloading the page, updating your browser, or playing in another browser.");A=new d($,d.MEDIA_ERR_ENCRYPTED,!0),A.errorCategory=V0.DRM,A.muxCode=W0.ENCRYPTED_CDM_ERROR}else if(O==="output-restricted"||O==="output-downscaled"){let $=X0("DRM playback is being attempted in an environment that is not sufficiently secure. User may see black screen.");A=new d($,d.MEDIA_ERR_ENCRYPTED,!1),A.errorCategory=V0.DRM,A.muxCode=W0.ENCRYPTED_OUTPUT_RESTRICTED}A&&X(Z,A)};j.keyStatuses.forEach((O)=>E(O))};j.addEventListener("keystatuseschange",B),j.addEventListener("message",K);let R=async()=>{j.removeEventListener("keystatuseschange",B),j.removeEventListener("message",K),"webkitCurrentPlaybackTargetIsWireless"in Z&&Z.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",R),Z.removeEventListener("teardown",R),await j.close().catch((E)=>{console.warn("There was an error when closing EME session",E)}),W=null};"webkitCurrentPlaybackTargetIsWireless"in Z&&Z.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",R,{once:!0}),Z.addEventListener("teardown",R,{once:!0}),W=R,await j.generateRequest(U,N).catch(async(E)=>{if(E.name==="NotSupportedError"&&"webkitCurrentPlaybackTargetIsWireless"in Z&&Z.webkitCurrentPlaybackTargetIsWireless)console.warn("Failed to generate a DRM license request. Attempting to fallback to Webkit DRM"),z==null||z();else{let O=X0("Failed to generate a DRM license request. This may be an issue with the player or your protected content."),A=new d(O,d.MEDIA_ERR_ENCRYPTED,!0);return A.errorCategory=V0.DRM,A.muxCode=W0.ENCRYPTED_GENERATE_REQUEST_FAILED,console.error("Failed to generate license request",E),Promise.reject(A)}})},V=async()=>{Z.removeEventListener("encrypted",H),Z.removeEventListener("teardown",V),W&&await W(),await Z.setMediaKeys(null).catch(()=>{})};return Z.addEventListener("encrypted",H),Z.addEventListener("teardown",V,{once:!0}),V},yV=({hls:Z,mediaEl:Y,src:J,muxMediaState:X,saveAndDispatchError:Q,maxRetries:z})=>{var W;let H,G=0,q=!1,V=!1,U=!1,N=()=>{H!=null&&(clearTimeout(H),H=void 0)},j=(w)=>(w==null?void 0:w.muxCode)===W0.NETWORK_RECONNECTING,K=()=>!Y.paused&&Y.readyState{let w=X.get(Y);if(j(w==null?void 0:w.error))return;let _=new d(X0("Attempting to reconnect..."),d.MEDIA_ERR_NETWORK,!1);_.errorCategory=V0.VIDEO,_.muxCode=W0.NETWORK_RECONNECTING,w&&(w.error=_),Y.dispatchEvent(new CustomEvent("error",{detail:_}))},R=()=>{if(!U&&J){Z.loadSource(J);return}Z.startLoad(Y.currentTime)},E=()=>{q=!1,V=!0,N();let w=new d(X0("Network error, try reloading."),d.MEDIA_ERR_NETWORK,!0);w.errorCategory=V0.VIDEO,w.reload=!0,Q(Y,w)},O=()=>{if(H!=null||q)return;if(G>=z){E();return}q=!0;let w=Math.min(1000*2**G,30000);H=setTimeout(()=>{H=void 0,G+=1,R()},w)},A=()=>{let w=X.get(Y);!(w!=null&&w.networkError)||V||K()&&(B(),O())},$=()=>{let w=X.get(Y);w&&(w.networkError=!0),q=!1,A()},L=()=>{let w=X.get(Y);w!=null&&w.networkError&&(G=0,V=!1,N(),q=!0,R())};(W=globalThis.addEventListener)==null||W.call(globalThis,"online",L);let M=()=>{let w=X.get(Y);w&&(!w.networkError&&!j(w.error)||(w.networkError=!1,q=!1,G=0,V=!1,N(),w.error&&(w.error=null,Y.dispatchEvent(new Event("emptied")))))};return Z.on(Z0.Events.FRAG_BUFFERED,M),A0(Y,"playing",()=>{let w=X.get(Y);w!=null&&w.networkError&&(q=!1,G=0,V=!1,N(),w.error&&(w.error=null))}),A0(Y,"waiting",A),Y.addEventListener("teardown",()=>{var w;(w=globalThis.removeEventListener)==null||w.call(globalThis,"online",L),N()},{once:!0}),{handleHlsError:(w,_)=>{var C,D;if(w.type!==Z0.ErrorTypes.NETWORK_ERROR)return!1;let I=(D=(C=w.response)==null?void 0:C.code)!=null?D:0;return(_.muxCode===W0.NETWORK_OFFLINE||I===0||I>=500)&&w.fatal?($(),!0):!1},onManifestLoaded:()=>{U=!0,q=!1,N()}}},Q1={FAIRPLAY:"fairplay",PLAYREADY:"playready",WIDEVINE:"widevine"},fV=(Z)=>{if(Z.includes("fps"))return Q1.FAIRPLAY;if(Z.includes("playready"))return Q1.PLAYREADY;if(Z.includes("widevine"))return Q1.WIDEVINE},pV=(Z,Y)=>{let J=HV(Z);if(!J)return Promise.reject(Error("No media playlist URL found in multivariant playlist"));if(E6(J)&&!Y)return Promise.reject(Error("masterPlaylistUrl is required to resolve relative media playlist URL"));let X;try{X=D6(J,Y)}catch(Q){return Promise.reject(Q)}return fetch(X).then((Q)=>Q.status!==200?Promise.reject(Q):Q.text())},mV=(Z)=>{let Y=Z.split(` `).filter((X)=>X.startsWith("#EXT-X-SESSION-DATA"));if(!Y.length)return{};let J={};for(let X of Y){let Q=cV(X),z=Q["DATA-ID"];z&&(J[z]={...Q})}return{sessionData:J}},uV=/([A-Z0-9-]+)="?(.*?)"?(?:,|$)/g;function cV(Z){let Y=[...Z.matchAll(uV)];return Object.fromEntries(Y.map(([,J,X])=>[J,X]))}var dV=(Z)=>{var Y,J,X;let Q=Z.split(` `),z=(J=((Y=Q.find((q)=>q.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?Y:"").split(":")[1])==null?void 0:J.trim(),W=FQ(z),H=EQ(z),G;if(W===g0.LIVE){let q=Q.find((V)=>V.startsWith("#EXT-X-PART-INF"));if(q)G=+q.split(":")[1].split("=")[1]*2;else{let V=Q.find((N)=>N.startsWith("#EXT-X-TARGETDURATION")),U=(X=V==null?void 0:V.split(":"))==null?void 0:X[1];G=+(U!=null?U:6)*3}}return{streamType:W,targetLiveWindow:H,liveEdgeStartOffset:G}},oV=async(Z,Y)=>{if(Y===C8.MP4)return{streamType:g0.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0,sessionData:void 0};if(Y===C8.M3U8){let J=await fetch(Z);if(!J.ok)return Promise.reject(J);let X=await J.text(),Q=await pV(X,J.url);return{...mV(X),...dV(Q)}}return console.error(`Media type ${Y} is an unrecognized or unsupported type for src ${Z}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0,sessionData:void 0}},lV=async(Z,Y,J=q1({src:Z}))=>{var X,Q,z,W;let{streamType:H,targetLiveWindow:G,liveEdgeStartOffset:q,sessionData:V}=await oV(Z,J),U=V==null?void 0:V["com.apple.hls.chapters"];(U!=null&&U.URI||U!=null&&U.VALUE.toLocaleLowerCase().startsWith("http"))&&T6((X=U.URI)!=null?X:U.VALUE,Y),((Q=B0.get(Y))!=null?Q:{}).liveEdgeStartOffset=q,((z=B0.get(Y))!=null?z:{}).targetLiveWindow=G,Y.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((W=B0.get(Y))!=null?W:{}).streamType=H,Y.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},T6=async(Z,Y)=>{var J,X;try{let Q=await fetch(Z);if(!Q.ok)throw Error(`Failed to fetch Mux metadata: ${Q.status} ${Q.statusText}`);let z=await Q.json(),W={};if(!((J=z==null?void 0:z[0])!=null&&J.metadata))return;for(let G of z[0].metadata)G.key&&G.value&&(W[G.key]=G.value);((X=B0.get(Y))!=null?X:{}).metadata=W;let H=new CustomEvent("muxmetadata");Y.dispatchEvent(H)}catch(Q){console.error(Q)}},nV=(Z)=>{var Y;let J=Z.type,X=FQ(J),Q=EQ(J),z,W=!!((Y=Z.partList)!=null&&Y.length);return X===g0.LIVE&&(z=W?Z.partTarget*2:Z.targetduration*3),{streamType:X,targetLiveWindow:Q,liveEdgeStartOffset:z,lowLatency:W}},sV=(Z,Y,J)=>{var X,Q,z,W,H,G,q,V;let{streamType:U,targetLiveWindow:N,liveEdgeStartOffset:j,lowLatency:K}=nV(Z);if(U===g0.LIVE){K?(J.config.backBufferLength=(X=J.userConfig.backBufferLength)!=null?X:4,J.config.maxFragLookUpTolerance=(Q=J.userConfig.maxFragLookUpTolerance)!=null?Q:0.001,J.config.abrBandWidthUpFactor=(z=J.userConfig.abrBandWidthUpFactor)!=null?z:J.config.abrBandWidthFactor):J.config.backBufferLength=(W=J.userConfig.backBufferLength)!=null?W:8;let B=Object.freeze({get length(){return Y.seekable.length},start(R){return Y.seekable.start(R)},end(R){var E;return R>this.length||R<0||Number.isFinite(Y.duration)?Y.seekable.end(R):(E=J.liveSyncPosition)!=null?E:Y.seekable.end(R)}});((H=B0.get(Y))!=null?H:{}).seekable=B}((G=B0.get(Y))!=null?G:{}).liveEdgeStartOffset=j,((q=B0.get(Y))!=null?q:{}).targetLiveWindow=N,Y.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((V=B0.get(Y))!=null?V:{}).streamType=U,Y.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},qQ,VQ,PQ=(VQ=(qQ=globalThis==null?void 0:globalThis.navigator)==null?void 0:qQ.userAgent)!=null?VQ:"",UQ,jQ,NQ,iV=(NQ=(jQ=(UQ=globalThis==null?void 0:globalThis.navigator)==null?void 0:UQ.userAgentData)==null?void 0:jQ.platform)!=null?NQ:"",rV=PQ.toLowerCase().includes("android")||["x11","android"].some((Z)=>iV.toLowerCase().includes(Z)),aV=(Z)=>/^((?!chrome|android).)*safari/i.test(PQ)&&!!Z.canPlayType("application/vnd.apple.mpegurl"),B0=new WeakMap,P8="mux.com",KQ,BQ,bQ=(BQ=(KQ=Z0).isSupported)==null?void 0:BQ.call(KQ),tV=(Z)=>rV||!aV(Z),IQ=()=>{if(typeof window<"u")return B7.utils.now()},eV=B7.utils.generateUUID,xQ=({playbackId:Z,customDomain:Y=P8,maxResolution:J,minResolution:X,renditionOrder:Q,programStartTime:z,programEndTime:W,assetStartTime:H,assetEndTime:G,playbackToken:q,tokens:{playback:V=q}={},extraSourceParams:U={}}={})=>{if(!Z)return;let[N,j=""]=H1(Z),K=new URL(`https://stream.${Y}/${N}.m3u8${j}`);return V||K.searchParams.has("token")?(K.searchParams.forEach((B,R)=>{R!="token"&&K.searchParams.delete(R)}),V&&K.searchParams.set("token",V)):(J&&K.searchParams.set("max_resolution",J),X&&(K.searchParams.set("min_resolution",X),J&&+J.slice(0,-1)<+X.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",X,"maxResolution",J)),Q&&K.searchParams.set("rendition_order",Q),z&&K.searchParams.set("program_start_time",`${z}`),W&&K.searchParams.set("program_end_time",`${W}`),H&&K.searchParams.set("asset_start_time",`${H}`),G&&K.searchParams.set("asset_end_time",`${G}`),Object.entries(U).forEach(([B,R])=>{R!=null&&K.searchParams.set(B,R)})),K.toString()},V1=(Z)=>{if(!Z)return;let[Y]=Z.split("?");return Y||void 0},U1=(Z)=>{if(!Z||!Z.startsWith("https://stream."))return;let[Y]=new URL(Z).pathname.slice(1).split(/\.m3u8|\//);return Y||void 0},ZU=(Z)=>{var Y,J,X;return(Y=Z==null?void 0:Z.metadata)!=null&&Y.video_id?Z.metadata.video_id:pQ(Z)&&(X=(J=V1(Z.playbackId))!=null?J:U1(Z.src))!=null?X:Z.src},h6=(Z)=>{var Y;return(Y=B0.get(Z))==null?void 0:Y.error},SQ=(Z)=>{var Y;return(Y=B0.get(Z))==null?void 0:Y.metadata},G1=(Z)=>{var Y,J;return(J=(Y=B0.get(Z))==null?void 0:Y.streamType)!=null?J:g0.UNKNOWN},TQ=(Z)=>{var Y,J;return(J=(Y=B0.get(Z))==null?void 0:Y.targetLiveWindow)!=null?J:Number.NaN},j1=(Z)=>{var Y,J;return(J=(Y=B0.get(Z))==null?void 0:Y.seekable)!=null?J:Z.seekable},hQ=(Z)=>{var Y;let J=(Y=B0.get(Z))==null?void 0:Y.liveEdgeStartOffset;if(typeof J!="number")return Number.NaN;let X=j1(Z);return X.length?X.end(X.length-1)-J:Number.NaN},vQ=(Z)=>{var Y;return(Y=B0.get(Z))==null?void 0:Y.coreReference},v6=0.034,YU=(Z,Y,J=v6)=>Math.abs(Z-Y)<=J,gQ=(Z,Y,J=v6)=>Z>Y||YU(Z,Y,J),JU=(Z,Y=v6)=>Z.paused&&gQ(Z.currentTime,Z.duration,Y),kQ=(Z,Y)=>{var J,X,Q;if(!Y||!Z.buffered.length)return;if(Z.readyState>2)return!1;let z=Y.currentLevel>=0?(X=(J=Y.levels)==null?void 0:J[Y.currentLevel])==null?void 0:X.details:(Q=Y.levels.find((U)=>!!U.details))==null?void 0:Q.details;if(!z||z.live)return;let{fragments:W}=z;if(!(W!=null&&W.length))return;if(Z.currentTimeq&&GZ.ended||Z.loop?Z.ended:Y&&kQ(Z,Y)?!0:JU(Z),k6=(Z,Y,J)=>{y6(Y,J,Z);let{metadata:X={}}=Z,{view_session_id:Q=eV()}=X,z=ZU(Z);X.view_session_id=Q,X.video_id=z,Z.metadata=X;let W=(N)=>{var j;(j=Y.mux)==null||j.emit("hb",{view_drm_type:N})};Z.drmTypeCb=W,Z.fallbackToWebkitFairplay=async()=>{var N;let j=!Y.paused,K=Y.currentTime;Z.useWebkitFairplay=!0;let B=Z.muxDataKeepSession;Z.muxDataKeepSession=!0;let R=(N=B0.get(Y))==null?void 0:N.coreReference;k6(Z,Y,R),Z.muxDataKeepSession=B,Z.useWebkitFairplay=!1,j&&await Y.play().then(()=>{Y.currentTime=K}).catch(()=>{}),Y.currentTime=K},B0.set(Y,{retryCount:0});let H=XU(Z,Y),G=AV(Z,Y,H);Z!=null&&Z.muxDataKeepSession&&(Y!=null&&Y.mux)&&!Y.mux.deleted?H&&Y.mux.addHLSJS({hlsjs:H,Hls:H?Z0:void 0}):VU(Z,Y,H),UU(Z,Y,H),LV(Y),_V(Y);let q=EV(Z,Y,H);OV(Z,Y,H),$V(Z,Y,H);let V={engine:H,setAutoplay:q,setPreload:G},U=B0.get(Y);return U&&(U.coreReference=V),V},y6=(Z,Y,J)=>{let X=Y==null?void 0:Y.engine;Z!=null&&Z.mux&&!Z.mux.deleted&&(J!=null&&J.muxDataKeepSession?X&&Z.mux.removeHLSJS():(Z.mux.destroy(),delete Z.mux)),X&&(X.detachMedia(),X.destroy()),Z&&(Z.hasAttribute("src")&&(Z.removeAttribute("src"),Z.load()),Z.removeEventListener("error",uQ),Z.removeEventListener("error",w6),Z.removeEventListener("durationchange",mQ),B0.delete(Z),Z.dispatchEvent(new Event("teardown")))};function yQ(Z,Y){var J;let X=q1(Z);if(X!==C8.M3U8)return!0;let Q=!X||((J=Y.canPlayType(X))!=null?J:!0),{preferPlayback:z}=Z,W=z===X9.MSE,H=z===X9.NATIVE,G=bQ&&(W||tV(Y));return Q&&(H||!G)}var XU=(Z,Y)=>{let{debug:J,streamType:X,startTime:Q=-1,metadata:z,preferCmcd:W,_hlsConfig:H={},maxAutoResolution:G,initialBandwidthEstimateKbps:q}=Z,V=q1(Z)===C8.M3U8,U=yQ(Z,Y);if(V&&!U&&bQ){let N={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelOnFPSDrop:!0,...q!=null?{abrEwmaDefaultEstimate:q*1000}:{}},j=QU(X),K=zU(Z),B=[a9.QUERY,a9.HEADER].includes(W)?{useHeaders:W===a9.HEADER,sessionId:z==null?void 0:z.view_session_id,contentId:z==null?void 0:z.video_id}:void 0,R=qU(Z,H),E=new Z0({debug:J,startPosition:Q,cmcd:B,xhrSetup:(O,A)=>{var $,L;if(W&&W!==a9.QUERY)return;let M=D6(A);if(!M.searchParams.has("CMCD"))return;let w=((L=($=M.searchParams.get("CMCD"))==null?void 0:$.split(","))!=null?L:[]).filter((_)=>_.startsWith("sid")||_.startsWith("cid")).join(",");M.searchParams.set("CMCD",w),O.open("GET",M)},...N,...R,...j,...K,...H});return R.capLevelController===M6&&G!==void 0&&M6.setMaxAutoResolution(E,G),E.on(Z0.Events.MANIFEST_PARSED,async function(O,A){var $,L;let M=($=A.sessionData)==null?void 0:$["com.apple.hls.chapters"];(M!=null&&M.URI||M!=null&&M.VALUE.toLocaleLowerCase().startsWith("http"))&&T6((L=M==null?void 0:M.URI)!=null?L:M==null?void 0:M.VALUE,Y)}),E}},QU=(Z)=>Z===g0.LIVE?{backBufferLength:8}:{},zU=(Z)=>{let{tokens:{drm:Y}={},playbackId:J,drmTypeCb:X}=Z,Q=V1(J);return!Y||!Q?{}:{emeEnabled:!0,drmSystems:{"com.apple.fps":{licenseUrl:z1(Z,"fairplay"),serverCertificateUrl:fQ(Z,"fairplay")},"com.widevine.alpha":{licenseUrl:z1(Z,"widevine")},"com.microsoft.playready":{licenseUrl:z1(Z,"playready")}},requestMediaKeySystemAccessFunc:(z,W)=>(z==="com.widevine.alpha"&&(W=[...W.map((H)=>{var G;let q=(G=H.videoCapabilities)==null?void 0:G.map((V)=>({...V,robustness:"HW_SECURE_ALL"}));return{...H,videoCapabilities:q}}),...W]),navigator.requestMediaKeySystemAccess(z,W).then((H)=>{let G=fV(z);return X==null||X(G),H}))}},WU=async(Z)=>{let Y=await fetch(Z);return Y.status!==200?Promise.reject(Y):await Y.arrayBuffer()},GU=async(Z,Y)=>{let J=await fetch(Y,{method:"POST",headers:{"Content-type":"application/octet-stream"},body:Z});if(J.status!==200)return Promise.reject(J);let X=await J.arrayBuffer();return new Uint8Array(X)},HU=(Z,Y)=>{let J={mediaEl:Y,getAppCertificate:()=>WU(fQ(Z,"fairplay")).catch((X)=>{if(X instanceof Response){let Q=W1(X,V0.DRM,Z);return console.error("mediaError",Q==null?void 0:Q.message,Q==null?void 0:Q.context),Q?Promise.reject(Q):Promise.reject(Error("Unexpected error in app cert request"))}return Promise.reject(X)}),getLicenseKey:(X)=>GU(X,z1(Z,"fairplay")).catch((Q)=>{if(Q instanceof Response){let z=W1(Q,V0.DRM,Z);return console.error("mediaError",z==null?void 0:z.message,z==null?void 0:z.context),z?Promise.reject(z):Promise.reject(Error("Unexpected error in license key request"))}return Promise.reject(Q)}),saveAndDispatchError:D8,drmTypeCb:()=>{var X;(X=Z.drmTypeCb)==null||X.call(Z,Q1.FAIRPLAY)}};if(Z.useWebkitFairplay)TV(J);else{let X={fallbackToWebkitFairplay:async()=>{var z;await Q(),(z=Z.fallbackToWebkitFairplay)==null||z.call(Z)},...J},Q=kV(X)}},z1=({playbackId:Z,tokens:{drm:Y}={},customDomain:J=P8},X)=>{let Q=V1(Z);return`https://license.${J.toLocaleLowerCase().endsWith(P8)?J:P8}/license/${X}/${Q}?token=${Y}`},fQ=({playbackId:Z,tokens:{drm:Y}={},customDomain:J=P8},X)=>{let Q=V1(Z);return`https://license.${J.toLocaleLowerCase().endsWith(P8)?J:P8}/appcert/${X}/${Q}?token=${Y}`},pQ=({playbackId:Z,src:Y,customDomain:J})=>{if(Z)return!0;if(typeof Y!="string")return!1;let X=window==null?void 0:window.location.href,Q=new URL(Y,X).hostname.toLocaleLowerCase();return Q.includes(P8)||!!J&&Q.includes(J.toLocaleLowerCase())},qU=(Z,Y)=>{let J={};return J.capLevelToPlayerSize=Z.capRenditionToPlayerSize,J.capLevelToPlayerSize==null?(J.capLevelController=M6,J.capLevelToPlayerSize=!0):J.capLevelController=r9,J},VU=(Z,Y,J)=>{var X;let{envKey:Q,disableTracking:z,muxDataSDK:W=B7,muxDataSDKOptions:H={}}=Z,G=pQ(Z);if(!z&&(Q||G)){let{playerInitTime:q,playerSoftwareName:V,playerSoftwareVersion:U,beaconCollectionDomain:N,debug:j,disableCookies:K}=Z,B={...Z.metadata,video_title:((X=Z==null?void 0:Z.metadata)==null?void 0:X.video_title)||void 0},R=(E)=>typeof E.player_error_code=="string"?!1:typeof Z.errorTranslator=="function"?Z.errorTranslator(E):E;W.monitor(Y,{debug:j,beaconCollectionDomain:N,hlsjs:J,Hls:J?Z0:void 0,automaticErrorTracking:!1,errorTranslator:R,disableCookies:K,...H,data:{...Q?{env_key:Q}:{},player_software_name:V,player_software:V,player_software_version:U,player_init_time:q,...B}})}},UU=(Z,Y,J)=>{var X,Q,z;let W=yQ(Z,Y),{src:H,customDomain:G=P8}=Z,q=()=>{Y.ended||Z.disablePseudoEnded||!g6(Y,J)||(kQ(Y,J)?Y.currentTime=Y.buffered.end(Y.buffered.length-1):Y.dispatchEvent(new Event("ended")))},V,U,N=()=>{let j=j1(Y),K,B;j.length>0&&(K=j.start(0),B=j.end(0)),(U!==B||V!==K)&&Y.dispatchEvent(new CustomEvent("seekablechange",{composed:!0})),V=K,U=B};if(A0(Y,"durationchange",N),Y&&W){let j=q1(Z);if(typeof H=="string"){if(H.endsWith(".mp4")&&H.includes(G)){let R=U1(H),E=new URL(`https://stream.${G}/${R}/metadata.json`);T6(E.toString(),Y)}let K=()=>{if(G1(Y)!==g0.LIVE||Number.isFinite(Y.duration))return;let R=setInterval(N,1000);Y.addEventListener("teardown",()=>{clearInterval(R)},{once:!0}),A0(Y,"durationchange",()=>{Number.isFinite(Y.duration)&&clearInterval(R)})},B=async()=>lV(H,Y,j).then(K).catch((R)=>{if(R instanceof Response){let E=W1(R,V0.VIDEO,Z);if(E){D8(Y,E);return}}else R instanceof Error});if(Y.preload==="none"){let R=()=>{B(),Y.removeEventListener("loadedmetadata",E)},E=()=>{B(),Y.removeEventListener("play",R)};A0(Y,"play",R,{once:!0}),A0(Y,"loadedmetadata",E,{once:!0})}else B();(X=Z.tokens)!=null&&X.drm?HU(Z,Y):A0(Y,"encrypted",()=>{let R=X0("Attempting to play DRM-protected content without providing a DRM token."),E=new d(R,d.MEDIA_ERR_ENCRYPTED,!0);E.errorCategory=V0.DRM,E.muxCode=W0.ENCRYPTED_MISSING_TOKEN,D8(Y,E)},{once:!0}),Y.setAttribute("src",H),Z.startTime&&(((Q=B0.get(Y))!=null?Q:{}).startTime=Z.startTime,Y.addEventListener("durationchange",mQ,{once:!0}))}else Y.removeAttribute("src");Y.addEventListener("error",uQ),Y.addEventListener("error",w6),Y.addEventListener("emptied",()=>{Y.querySelectorAll("track[data-removeondestroy]").forEach((K)=>{K.remove()})},{once:!0}),A0(Y,"pause",q),A0(Y,"seeked",q),A0(Y,"play",()=>{Y.ended||gQ(Y.currentTime,Y.duration)&&(Y.currentTime=Y.seekable.length?Y.seekable.start(0):0)})}else if(J&&H){J.once(Z0.Events.LEVEL_LOADED,(B,R)=>{sV(R.details,Y,J),N(),G1(Y)===g0.LIVE&&!Number.isFinite(Y.duration)&&(J.on(Z0.Events.LEVEL_UPDATED,N),A0(Y,"durationchange",()=>{Number.isFinite(Y.duration)&&J.off(Z0.Events.LEVELS_UPDATED,N)}))});let j=(z=Z.maxReconnectRetries)!=null?z:0,K=j>0?yV({hls:J,mediaEl:Y,src:H,muxMediaState:B0,saveAndDispatchError:D8,maxRetries:j}):void 0;J.on(Z0.Events.ERROR,(B,R)=>{var E,O;let A=jU(R,Z);if(A.muxCode===W0.NETWORK_NOT_READY){let $=(E=B0.get(Y))!=null?E:{},L=(O=$.retryCount)!=null?O:0;if(L<6){let M=L===0?5000:60000,w=new d(`Retrying in ${M/1000} seconds...`,A.code,A.fatal);Object.assign(w,A),D8(Y,w);let _=setTimeout(()=>{$.retryCount=L+1,R.details==="manifestLoadError"&&R.url&&J.loadSource(R.url)},M);Y.addEventListener("teardown",()=>clearTimeout(_),{once:!0});return}else{$.retryCount=0;let M=new d("Network error, try reloading.",A.code,A.fatal);Object.assign(M,A),M.reload=!0,D8(Y,M);return}}K!=null&&K.handleHlsError(R,A)||D8(Y,A)}),J.on(Z0.Events.MANIFEST_LOADED,()=>{K==null||K.onManifestLoaded();let B=B0.get(Y);B!=null&&B.networkError||B&&B.error&&(B.error=null,B.retryCount=0,Y.dispatchEvent(new Event("emptied")),Y.dispatchEvent(new Event("loadstart")))}),Y.addEventListener("error",w6),A0(Y,"waiting",q),MV(Z,J),wV(Y,J),J.attachMedia(Y)}else console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function mQ(Z){var Y;let J=Z.target,X=(Y=B0.get(J))==null?void 0:Y.startTime;if(X&&WV(J.seekable,J.duration,X)){let Q=J.preload==="auto";Q&&(J.preload="none"),J.currentTime=X,Q&&(J.preload="auto")}}async function uQ(Z){if(!Z.isTrusted)return;Z.stopImmediatePropagation();let Y=Z.target;if(!(Y!=null&&Y.error))return;let{message:J,code:X}=Y.error,Q=new d(J,X);if(Y.src&&X===d.MEDIA_ERR_SRC_NOT_SUPPORTED&&Y.readyState===HTMLMediaElement.HAVE_NOTHING){setTimeout(()=>{var z;let W=(z=h6(Y))!=null?z:Y.error;(W==null?void 0:W.code)===d.MEDIA_ERR_SRC_NOT_SUPPORTED&&D8(Y,Q)},500);return}if(Y.src&&(X!==d.MEDIA_ERR_DECODE||X!==void 0))try{let{status:z}=await fetch(Y.src);Q.data={response:{code:z}}}catch{}D8(Y,Q)}function D8(Z,Y){var J;Y.fatal&&(((J=B0.get(Z))!=null?J:{}).error=Y,Z.dispatchEvent(new CustomEvent("error",{detail:Y})))}function w6(Z){var Y,J;if(!(Z instanceof CustomEvent)||!(Z.detail instanceof d))return;let{target:X,detail:Q}=Z;!Q||!Q.fatal||(((Y=B0.get(X))!=null?Y:{}).error=Q,(J=X.mux)==null||J.emit("error",{player_error_code:Q.code,player_error_message:Q.message,player_error_context:Q.context}))}var jU=(Z,Y)=>{var J,X,Q;!Z.fatal?Y.debug&&console.warn("getErrorFromHlsErrorData() (non-fatal)",Z):console.error("getErrorFromHlsErrorData()",Z);let z={[Z0.ErrorTypes.NETWORK_ERROR]:d.MEDIA_ERR_NETWORK,[Z0.ErrorTypes.MEDIA_ERROR]:d.MEDIA_ERR_DECODE,[Z0.ErrorTypes.KEY_SYSTEM_ERROR]:d.MEDIA_ERR_ENCRYPTED},W=(V)=>[Z0.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,Z0.ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED].includes(V.details)?d.MEDIA_ERR_NETWORK:z[V.type],H=(V)=>{if(V.type===Z0.ErrorTypes.KEY_SYSTEM_ERROR)return V0.DRM;if(V.type===Z0.ErrorTypes.NETWORK_ERROR)return V0.VIDEO},G,q=W(Z);if(q===d.MEDIA_ERR_NETWORK&&Z.response){let V=(J=H(Z))!=null?J:V0.VIDEO;G=(X=W1(Z.response,V,Y,Z.fatal))!=null?X:new d("",q,Z.fatal)}else if(q===d.MEDIA_ERR_ENCRYPTED)if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_NO_CONFIGURED_LICENSE){let V=X0("Attempting to play DRM-protected content without providing a DRM token.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_MISSING_TOKEN}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_NO_ACCESS){let V=X0("Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_UNSUPPORTED_KEY_SYSTEM}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_NO_SESSION){let V=X0("Failed to generate a DRM license request. This may be an issue with the player or your protected content.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,!0),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_GENERATE_REQUEST_FAILED}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_SESSION_UPDATE_FAILED){let V=X0("Failed to update DRM license. This may be an issue with the player or your protected content.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_UPDATE_LICENSE_FAILED}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED){let V=X0("Your server certificate failed when attempting to set it. This may be an issue with a no longer valid certificate.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_UPDATE_SERVER_CERT_FAILED}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_STATUS_INTERNAL_ERROR){let V=X0("The DRM Content Decryption Module system had an internal failure. Try reloading the page, updating your browser, or playing in another browser.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_CDM_ERROR}else if(Z.details===Z0.ErrorDetails.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED){let V=X0("DRM playback is being attempted in an environment that is not sufficiently secure. User may see black screen.");G=new d(V,d.MEDIA_ERR_ENCRYPTED,!1),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_OUTPUT_RESTRICTED}else G=new d(Z.error.message,d.MEDIA_ERR_ENCRYPTED,Z.fatal),G.errorCategory=V0.DRM,G.muxCode=W0.ENCRYPTED_ERROR;else G=new d("",q,Z.fatal);return G.context||(G.context=`${Z.url?`url: ${Z.url} `:""}${Z.response&&(Z.response.code||Z.response.text)?`response: ${Z.response.code}, ${Z.response.text} `:""}${Z.reason?`failure reason: ${Z.reason} `:""}${Z.level?`level: ${Z.level} `:""}${Z.parent?`parent stream controller: ${Z.parent} `:""}${Z.buffer?`buffer length: ${Z.buffer} `:""}${Z.error?`error: ${Z.error} `:""}${Z.event?`event: ${Z.event} `:""}${Z.err?`error message: ${(Q=Z.err)==null?void 0:Q.message} `:""}`),G.data=Z,G};var cQ=["abort","canplay","canplaythrough","durationchange","emptied","encrypted","ended","error","loadeddata","loadedmetadata","loadstart","pause","play","playing","progress","ratechange","seeked","seeking","stalled","suspend","timeupdate","volumechange","waiting","waitingforkey","resize","enterpictureinpicture","leavepictureinpicture","webkitbeginfullscreen","webkitendfullscreen","webkitpresentationmodechanged"],dQ=["autopictureinpicture","disablepictureinpicture","disableremoteplayback","autoplay","controls","controlslist","crossorigin","loop","muted","playsinline","poster","preload","src"];function NU(Z){return` `}function KU(Z){return` `}function oQ(Z,{tag:Y,is:J}){let X=globalThis.document?.createElement?.(Y,{is:J}),Q=X?BU(X):[];return class z extends Z{static getTemplateHTML=Y.endsWith("audio")?NU:KU;static shadowRootOptions={mode:"open"};static Events=cQ;static#Z=!1;static get observedAttributes(){return z.#X(),[...X?.constructor?.observedAttributes??[],...dQ]}static#X(){if(this.#Z)return;this.#Z=!0;let W=new Set(this.observedAttributes);W.delete("muted");for(let H of Q){if(H in this.prototype)continue;if(typeof X[H]==="function")this.prototype[H]=function(...G){return this.#H(),(()=>{if(this.call)return this.call(H,...G);return this.nativeEl?.[H]?.apply(this.nativeEl,G)})()};else{let G={get(){this.#H();let q=H.toLowerCase();if(W.has(q)){let V=this.getAttribute(q);return V===null?!1:V===""?!0:V}return this.get?.(H)??this.nativeEl?.[H]}};if(H!==H.toUpperCase())G.set=function(q){this.#H();let V=H.toLowerCase();if(W.has(V)){if(q===!0||q===!1||q==null)this.toggleAttribute(V,Boolean(q));else this.setAttribute(V,q);return}if(this.set){this.set(H,q);return}if(this.nativeEl)this.nativeEl[H]=q};Object.defineProperty(this.prototype,H,G)}}}#J=!1;#Q=null;#Y=new Map;#W;#z;get;set;call;get nativeEl(){return this.#H(),this.#Q??this.querySelector(":scope > [slot=media]")??this.querySelector(Y)??this.shadowRoot?.querySelector(Y)??null}set nativeEl(W){this.#Q=W}get defaultMuted(){return this.hasAttribute("muted")}set defaultMuted(W){this.toggleAttribute("muted",W)}get src(){return this.getAttribute("src")}set src(W){this.setAttribute("src",`${W}`)}get preload(){return this.getAttribute("preload")??this.nativeEl?.preload}set preload(W){this.setAttribute("preload",`${W}`)}#H(){if(this.#J)return;this.#J=!0,this.init()}init(){if(!this.shadowRoot){this.attachShadow({mode:"open"});let W=RU(this.attributes);if(J)W.is=J;if(Y)W.part=Y;this.shadowRoot.innerHTML=this.constructor.getTemplateHTML(W)}this.nativeEl.muted=this.hasAttribute("muted");for(let W of Q)this.#U(W);this.#q()}#q(){this.#W=new MutationObserver(this.#j.bind(this)),this.#z=()=>this.#G(),this.shadowRoot?.addEventListener("slotchange",this.#z),this.#G();for(let W of this.constructor.Events)this.shadowRoot?.addEventListener(W,this,!0)}handleEvent(W){if(W.target===this.nativeEl)this.dispatchEvent(new CustomEvent(W.type,{detail:W.detail}))}#G(){let W=new Map(this.#Y);(this.shadowRoot?.querySelector("slot:not([name])")?.assignedElements({flatten:!0}).filter((q)=>["track","source"].includes(q.localName))).forEach((q)=>{W.delete(q);let V=this.#Y.get(q);if(!V)V=q.cloneNode(),this.#Y.set(q,V),this.#W?.observe(q,{attributes:!0});this.nativeEl?.append(V),this.#V(V)}),W.forEach((q,V)=>{q.remove(),this.#Y.delete(V)})}#j(W){for(let H of W)if(H.type==="attributes"){let{target:G,attributeName:q}=H,V=this.#Y.get(G);if(V&&q)V.setAttribute(q,G.getAttribute(q)??""),this.#V(V)}}#V(W){if(W&&W.localName==="track"&&W.default&&(W.kind==="chapters"||W.kind==="metadata")&&W.track.mode==="disabled")W.track.mode="hidden"}#U(W){if(Object.prototype.hasOwnProperty.call(this,W)){let H=this[W];delete this[W],this[W]=H}}attributeChangedCallback(W,H,G){this.#H(),this.#N(W,H,G)}#N(W,H,G){if(["id","class"].includes(W))return;if(!z.observedAttributes.includes(W)&&this.constructor.observedAttributes.includes(W))return;if(G===null)this.nativeEl?.removeAttribute(W);else if(this.nativeEl?.getAttribute(W)!==G)this.nativeEl?.setAttribute(W,G)}connectedCallback(){if(this.#H(),!this.#z)this.#q()}disconnectedCallback(){if(this.#W?.disconnect(),this.#W=void 0,this.#z)this.shadowRoot?.removeEventListener("slotchange",this.#z),this.#z=void 0;for(let W of this.constructor.Events)this.shadowRoot?.removeEventListener(W,this,!0);this.#Y.forEach((W)=>W.remove()),this.#Y.clear(),this.#Q=null}}}function BU(Z){let Y=[];for(let J=Object.getPrototypeOf(Z);J&&J!==HTMLElement.prototype;J=Object.getPrototypeOf(J)){let X=Object.getOwnPropertyNames(J);Y.push(...X)}return Y}function lQ(Z){let Y="";for(let J in Z){if(!dQ.includes(J))continue;let X=Z[J];if(X==="")Y+=` ${J}`;else Y+=` ${J}="${X}"`}return Y}function RU(Z){let Y={};for(let J of Z)Y[J.name]=J.value;return Y}var e9=oQ(globalThis.HTMLElement??class{},{tag:"video"}),uU=oQ(globalThis.HTMLElement??class{},{tag:"audio"});var iQ=(Z)=>{throw TypeError(Z)},f6=(Z,Y,J)=>Y.has(Z)||iQ("Cannot "+J),L0=(Z,Y,J)=>(f6(Z,Y,"read from private field"),J?J.call(Z):Y.get(Z)),t0=(Z,Y,J)=>Y.has(Z)?iQ("Cannot add the same private member more than once"):Y instanceof WeakSet?Y.add(Z):Y.set(Z,J),W8=(Z,Y,J,X)=>(f6(Z,Y,"write to private field"),X?X.call(Z,J):Y.set(Z,J),J),N1=(Z,Y,J)=>(f6(Z,Y,"access private method"),J),FU=()=>{try{return"0.31.2"}catch{}return"UNKNOWN"},EU=FU(),AU=()=>EU,OU=` `,x={BEACON_COLLECTION_DOMAIN:"beacon-collection-domain",CUSTOM_DOMAIN:"custom-domain",DEBUG:"debug",DISABLE_TRACKING:"disable-tracking",DISABLE_COOKIES:"disable-cookies",DISABLE_PSEUDO_ENDED:"disable-pseudo-ended",MAX_RECONNECT_RETRIES:"max-reconnect-retries",DRM_TOKEN:"drm-token",PLAYBACK_TOKEN:"playback-token",ENV_KEY:"env-key",MAX_RESOLUTION:"max-resolution",MIN_RESOLUTION:"min-resolution",MAX_AUTO_RESOLUTION:"max-auto-resolution",RENDITION_ORDER:"rendition-order",PROGRAM_START_TIME:"program-start-time",PROGRAM_END_TIME:"program-end-time",ASSET_START_TIME:"asset-start-time",ASSET_END_TIME:"asset-end-time",METADATA_URL:"metadata-url",PLAYBACK_ID:"playback-id",PLAYER_SOFTWARE_NAME:"player-software-name",PLAYER_SOFTWARE_VERSION:"player-software-version",PLAYER_INIT_TIME:"player-init-time",PREFER_CMCD:"prefer-cmcd",PREFER_PLAYBACK:"prefer-playback",START_TIME:"start-time",STREAM_TYPE:"stream-type",TARGET_LIVE_WINDOW:"target-live-window",LIVE_EDGE_OFFSET:"live-edge-offset",TYPE:"type",LOGO:"logo",CAP_RENDITION_TO_PLAYER_SIZE:"cap-rendition-to-player-size",INITIAL_BANDWIDTH_ESTIMATE_KBPS:"initial-bandwidth-estimate-kbps",INITIAL_ESTIMATE_SEGMENTS:"initial-estimate-segments",MIN_PRELOAD_SEGMENTS:"min-preload-segments"},$U=Object.values(x),nQ=AU(),sQ="mux-video",Z7,K1,Y7,B1,R1,F1,E1,A1,J7,O1,e0,Q9,$1,X7,rQ=class extends e9{constructor(){super();t0(this,e0),t0(this,Z7),t0(this,K1),t0(this,Y7,{}),t0(this,B1,{}),t0(this,R1),t0(this,F1),t0(this,E1),t0(this,A1),t0(this,J7,""),t0(this,O1,(Z)=>{var Y;let J=SQ(this.nativeEl),X=(Y=this.metadata)!=null?Y:{};this.metadata={...J,...X},(J==null?void 0:J["com.mux.video.branding"])==="mux-free-plan"&&(W8(this,J7,"default"),this.updateLogo())}),t0(this,$1),W8(this,K1,IQ())}static get NAME(){return sQ}static get VERSION(){return nQ}static get observedAttributes(){var Z;return[...$U,...(Z=e9.observedAttributes)!=null?Z:[]]}static getLogoHTML(Z){return!Z||Z==="false"?"":Z==="default"?OU:``}static getTemplateHTML(Z={}){var Y;return` ${e9.getTemplateHTML(Z)} ${this.getLogoHTML((Y=Z[x.LOGO])!=null?Y:"")} `}get preferCmcd(){var Z;return(Z=this.getAttribute(x.PREFER_CMCD))!=null?Z:void 0}set preferCmcd(Z){Z!==this.preferCmcd&&(Z?_6.includes(Z)?this.setAttribute(x.PREFER_CMCD,Z):console.warn(`Invalid value for preferCmcd. Must be one of ${_6.join()}`):this.removeAttribute(x.PREFER_CMCD))}get playerInitTime(){return this.hasAttribute(x.PLAYER_INIT_TIME)?+this.getAttribute(x.PLAYER_INIT_TIME):L0(this,K1)}set playerInitTime(Z){Z!=this.playerInitTime&&(Z==null?this.removeAttribute(x.PLAYER_INIT_TIME):this.setAttribute(x.PLAYER_INIT_TIME,`${+Z}`))}get playerSoftwareName(){var Z;return(Z=L0(this,E1))!=null?Z:sQ}set playerSoftwareName(Z){W8(this,E1,Z)}get playerSoftwareVersion(){var Z;return(Z=L0(this,F1))!=null?Z:nQ}set playerSoftwareVersion(Z){W8(this,F1,Z)}get _hls(){var Z;return(Z=L0(this,e0,Q9))==null?void 0:Z.engine}get mux(){var Z;return(Z=this.nativeEl)==null?void 0:Z.mux}get error(){var Z;return(Z=h6(this.nativeEl))!=null?Z:null}get errorTranslator(){return L0(this,A1)}set errorTranslator(Z){W8(this,A1,Z)}get src(){return this.getAttribute("src")}set src(Z){Z!==this.src&&(Z==null?this.removeAttribute("src"):this.setAttribute("src",Z))}get type(){var Z;return(Z=this.getAttribute(x.TYPE))!=null?Z:void 0}set type(Z){Z!==this.type&&(Z?this.setAttribute(x.TYPE,Z):this.removeAttribute(x.TYPE))}get preload(){let Z=this.getAttribute("preload");return Z===""?"auto":["none","metadata","auto"].includes(Z)?Z:super.preload}set preload(Z){Z!=this.getAttribute("preload")&&(["","none","metadata","auto"].includes(Z)?this.setAttribute("preload",Z):this.removeAttribute("preload"))}get debug(){return this.getAttribute(x.DEBUG)!=null}set debug(Z){Z!==this.debug&&(Z?this.setAttribute(x.DEBUG,""):this.removeAttribute(x.DEBUG))}get disableTracking(){return this.hasAttribute(x.DISABLE_TRACKING)}set disableTracking(Z){Z!==this.disableTracking&&this.toggleAttribute(x.DISABLE_TRACKING,!!Z)}get disableCookies(){return this.hasAttribute(x.DISABLE_COOKIES)}set disableCookies(Z){Z!==this.disableCookies&&(Z?this.setAttribute(x.DISABLE_COOKIES,""):this.removeAttribute(x.DISABLE_COOKIES))}get disablePseudoEnded(){return this.hasAttribute(x.DISABLE_PSEUDO_ENDED)}set disablePseudoEnded(Z){Z!==this.disablePseudoEnded&&(Z?this.setAttribute(x.DISABLE_PSEUDO_ENDED,""):this.removeAttribute(x.DISABLE_PSEUDO_ENDED))}get maxReconnectRetries(){let Z=this.getAttribute(x.MAX_RECONNECT_RETRIES);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set maxReconnectRetries(Z){Z!==this.maxReconnectRetries&&(Z==null?this.removeAttribute(x.MAX_RECONNECT_RETRIES):this.setAttribute(x.MAX_RECONNECT_RETRIES,`${Z}`))}get startTime(){let Z=this.getAttribute(x.START_TIME);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set startTime(Z){Z!==this.startTime&&(Z==null?this.removeAttribute(x.START_TIME):this.setAttribute(x.START_TIME,`${Z}`))}get initialBandwidthEstimateKbps(){let Z=this.getAttribute(x.INITIAL_BANDWIDTH_ESTIMATE_KBPS);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set initialBandwidthEstimateKbps(Z){Z!==this.initialBandwidthEstimateKbps&&(Z==null?this.removeAttribute(x.INITIAL_BANDWIDTH_ESTIMATE_KBPS):this.setAttribute(x.INITIAL_BANDWIDTH_ESTIMATE_KBPS,`${Z}`))}get initialEstimateSegments(){let Z=this.getAttribute(x.INITIAL_ESTIMATE_SEGMENTS);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set initialEstimateSegments(Z){Z!==this.initialEstimateSegments&&(Z==null?this.removeAttribute(x.INITIAL_ESTIMATE_SEGMENTS):this.setAttribute(x.INITIAL_ESTIMATE_SEGMENTS,`${Z}`))}get minPreloadSegments(){let Z=this.getAttribute(x.MIN_PRELOAD_SEGMENTS);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set minPreloadSegments(Z){Z!==this.minPreloadSegments&&(Z==null?this.removeAttribute(x.MIN_PRELOAD_SEGMENTS):this.setAttribute(x.MIN_PRELOAD_SEGMENTS,`${Z}`))}get playbackId(){var Z;return this.hasAttribute(x.PLAYBACK_ID)?this.getAttribute(x.PLAYBACK_ID):(Z=U1(this.src))!=null?Z:void 0}set playbackId(Z){Z!==this.playbackId&&(Z?this.setAttribute(x.PLAYBACK_ID,Z):this.removeAttribute(x.PLAYBACK_ID))}get maxResolution(){var Z;return(Z=this.getAttribute(x.MAX_RESOLUTION))!=null?Z:void 0}set maxResolution(Z){Z!==this.maxResolution&&(Z?this.setAttribute(x.MAX_RESOLUTION,Z):this.removeAttribute(x.MAX_RESOLUTION))}get minResolution(){var Z;return(Z=this.getAttribute(x.MIN_RESOLUTION))!=null?Z:void 0}set minResolution(Z){Z!==this.minResolution&&(Z?this.setAttribute(x.MIN_RESOLUTION,Z):this.removeAttribute(x.MIN_RESOLUTION))}get maxAutoResolution(){var Z;return(Z=this.getAttribute(x.MAX_AUTO_RESOLUTION))!=null?Z:void 0}set maxAutoResolution(Z){Z==null?this.removeAttribute(x.MAX_AUTO_RESOLUTION):this.setAttribute(x.MAX_AUTO_RESOLUTION,Z)}get renditionOrder(){var Z;return(Z=this.getAttribute(x.RENDITION_ORDER))!=null?Z:void 0}set renditionOrder(Z){Z!==this.renditionOrder&&(Z?this.setAttribute(x.RENDITION_ORDER,Z):this.removeAttribute(x.RENDITION_ORDER))}get programStartTime(){let Z=this.getAttribute(x.PROGRAM_START_TIME);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set programStartTime(Z){Z==null?this.removeAttribute(x.PROGRAM_START_TIME):this.setAttribute(x.PROGRAM_START_TIME,`${Z}`)}get programEndTime(){let Z=this.getAttribute(x.PROGRAM_END_TIME);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set programEndTime(Z){Z==null?this.removeAttribute(x.PROGRAM_END_TIME):this.setAttribute(x.PROGRAM_END_TIME,`${Z}`)}get assetStartTime(){let Z=this.getAttribute(x.ASSET_START_TIME);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set assetStartTime(Z){Z==null?this.removeAttribute(x.ASSET_START_TIME):this.setAttribute(x.ASSET_START_TIME,`${Z}`)}get assetEndTime(){let Z=this.getAttribute(x.ASSET_END_TIME);if(Z==null)return;let Y=+Z;return Number.isNaN(Y)?void 0:Y}set assetEndTime(Z){Z==null?this.removeAttribute(x.ASSET_END_TIME):this.setAttribute(x.ASSET_END_TIME,`${Z}`)}get customDomain(){var Z;return(Z=this.getAttribute(x.CUSTOM_DOMAIN))!=null?Z:void 0}set customDomain(Z){Z!==this.customDomain&&(Z?this.setAttribute(x.CUSTOM_DOMAIN,Z):this.removeAttribute(x.CUSTOM_DOMAIN))}get capRenditionToPlayerSize(){var Z;return((Z=this._hlsConfig)==null?void 0:Z.capLevelToPlayerSize)!=null?this._hlsConfig.capLevelToPlayerSize:L0(this,$1)}set capRenditionToPlayerSize(Z){W8(this,$1,Z)}get drmToken(){var Z;return(Z=this.getAttribute(x.DRM_TOKEN))!=null?Z:void 0}set drmToken(Z){Z!==this.drmToken&&(Z?this.setAttribute(x.DRM_TOKEN,Z):this.removeAttribute(x.DRM_TOKEN))}get playbackToken(){var Z,Y,J,X;if(this.hasAttribute(x.PLAYBACK_TOKEN))return(Z=this.getAttribute(x.PLAYBACK_TOKEN))!=null?Z:void 0;if(this.hasAttribute(x.PLAYBACK_ID)){let[,Q]=H1((Y=this.playbackId)!=null?Y:"");return(J=new URLSearchParams(Q).get("token"))!=null?J:void 0}if(this.src)return(X=new URLSearchParams(this.src).get("token"))!=null?X:void 0}set playbackToken(Z){Z!==this.playbackToken&&(Z?this.setAttribute(x.PLAYBACK_TOKEN,Z):this.removeAttribute(x.PLAYBACK_TOKEN))}get tokens(){let Z=this.getAttribute(x.PLAYBACK_TOKEN),Y=this.getAttribute(x.DRM_TOKEN);return{...L0(this,B1),...Z!=null?{playback:Z}:{},...Y!=null?{drm:Y}:{}}}set tokens(Z){W8(this,B1,Z!=null?Z:{})}get ended(){return g6(this.nativeEl,this._hls)}get envKey(){var Z;return(Z=this.getAttribute(x.ENV_KEY))!=null?Z:void 0}set envKey(Z){Z!==this.envKey&&(Z?this.setAttribute(x.ENV_KEY,Z):this.removeAttribute(x.ENV_KEY))}get beaconCollectionDomain(){var Z;return(Z=this.getAttribute(x.BEACON_COLLECTION_DOMAIN))!=null?Z:void 0}set beaconCollectionDomain(Z){Z!==this.beaconCollectionDomain&&(Z?this.setAttribute(x.BEACON_COLLECTION_DOMAIN,Z):this.removeAttribute(x.BEACON_COLLECTION_DOMAIN))}get streamType(){var Z;return(Z=this.getAttribute(x.STREAM_TYPE))!=null?Z:G1(this.nativeEl)}set streamType(Z){Z!==this.streamType&&(Z?this.setAttribute(x.STREAM_TYPE,Z):this.removeAttribute(x.STREAM_TYPE))}get targetLiveWindow(){return this.hasAttribute(x.TARGET_LIVE_WINDOW)?+this.getAttribute(x.TARGET_LIVE_WINDOW):TQ(this.nativeEl)}set targetLiveWindow(Z){Z!=this.targetLiveWindow&&(Z==null?this.removeAttribute(x.TARGET_LIVE_WINDOW):this.setAttribute(x.TARGET_LIVE_WINDOW,`${+Z}`))}get liveEdgeStart(){var Z,Y;if(this.hasAttribute(x.LIVE_EDGE_OFFSET)){let{liveEdgeOffset:J}=this,X=(Z=this.nativeEl.seekable.end(0))!=null?Z:0,Q=(Y=this.nativeEl.seekable.start(0))!=null?Y:0;return Math.max(Q,X-J)}return hQ(this.nativeEl)}get liveEdgeOffset(){if(this.hasAttribute(x.LIVE_EDGE_OFFSET))return+this.getAttribute(x.LIVE_EDGE_OFFSET)}set liveEdgeOffset(Z){Z!=this.liveEdgeOffset&&(Z==null?this.removeAttribute(x.LIVE_EDGE_OFFSET):this.setAttribute(x.LIVE_EDGE_OFFSET,`${+Z}`))}get seekable(){return j1(this.nativeEl)}async addCuePoints(Z){return this.nativeEl.currentSrc||console.warn("addCuePoints() was called before the media element has loaded. Wait for the loadstart event before calling addCuePoints()."),P6(this.nativeEl,Z)}get activeCuePoint(){return b6(this.nativeEl)}get cuePoints(){return wQ(this.nativeEl)}async addChapters(Z){return this.nativeEl.currentSrc||console.warn("addChapters() was called before the media element has loaded. Wait for the loadstart event before calling addChapters()."),x6(this.nativeEl,Z)}get activeChapter(){return S6(this.nativeEl)}get chapters(){return _Q(this.nativeEl)}getStartDate(){return DQ(this.nativeEl,this._hls)}get currentPdt(){return CQ(this.nativeEl,this._hls)}get preferPlayback(){let Z=this.getAttribute(x.PREFER_PLAYBACK);if(Z===X9.MSE||Z===X9.NATIVE)return Z}set preferPlayback(Z){Z!==this.preferPlayback&&(Z===X9.MSE||Z===X9.NATIVE?this.setAttribute(x.PREFER_PLAYBACK,Z):this.removeAttribute(x.PREFER_PLAYBACK))}get metadata(){return{...this.getAttributeNames().filter((Z)=>Z.startsWith("metadata-")&&![x.METADATA_URL].includes(Z)).reduce((Z,Y)=>{let J=this.getAttribute(Y);return J!=null&&(Z[Y.replace(/^metadata-/,"").replace(/-/g,"_")]=J),Z},{}),...L0(this,Y7)}}set metadata(Z){W8(this,Y7,Z!=null?Z:{}),this.mux&&this.mux.emit("hb",L0(this,Y7))}get _hlsConfig(){return L0(this,R1)}set _hlsConfig(Z){W8(this,R1,Z)}get logo(){var Z;return(Z=this.getAttribute(x.LOGO))!=null?Z:L0(this,J7)}set logo(Z){Z?this.setAttribute(x.LOGO,Z):this.removeAttribute(x.LOGO)}load(){k6(this,this.nativeEl,L0(this,e0,Q9))}unload(){y6(this.nativeEl,L0(this,e0,Q9),this)}attributeChangedCallback(Z,Y,J){var X,Q;switch(e9.observedAttributes.includes(Z)&&!["src","autoplay","preload"].includes(Z)&&super.attributeChangedCallback(Z,Y,J),Z){case x.PLAYER_SOFTWARE_NAME:this.playerSoftwareName=J!=null?J:void 0;break;case x.PLAYER_SOFTWARE_VERSION:this.playerSoftwareVersion=J!=null?J:void 0;break;case"src":{let z=!!Y,W=!!J;!z&&W?N1(this,e0,X7).call(this):z&&!W?this.unload():z&&W&&(this.unload(),N1(this,e0,X7).call(this));break}case"autoplay":if(J===Y)break;(X=L0(this,e0,Q9))==null||X.setAutoplay(this.autoplay);break;case"preload":if(J===Y)break;(Q=L0(this,e0,Q9))==null||Q.setPreload(J);break;case x.PLAYBACK_ID:case x.CUSTOM_DOMAIN:case x.MAX_RESOLUTION:case x.MIN_RESOLUTION:case x.RENDITION_ORDER:case x.PROGRAM_START_TIME:case x.PROGRAM_END_TIME:case x.ASSET_START_TIME:case x.ASSET_END_TIME:case x.PLAYBACK_TOKEN:this.src=xQ(this);break;case x.DEBUG:{let z=this.debug;this.mux&&console.info("Cannot toggle debug mode of mux data after initialization. Make sure you set all metadata to override before setting the src."),this._hls&&(this._hls.config.debug=z);break}case x.METADATA_URL:J&&fetch(J).then((z)=>z.json()).then((z)=>this.metadata=z).catch(()=>console.error(`Unable to load or parse metadata JSON from metadata-url ${J}!`));break;case x.STREAM_TYPE:(J==null||J!==Y)&&this.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}));break;case x.TARGET_LIVE_WINDOW:(J==null||J!==Y)&&this.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0,detail:this.targetLiveWindow}));break;case x.LOGO:(J==null||J!==Y)&&this.updateLogo();break;case x.DISABLE_TRACKING:{if(J==null||J!==Y){let z=this.currentTime,W=this.paused;this.unload(),N1(this,e0,X7).call(this).then(()=>{this.currentTime=z,W||this.play()})}break}case x.DISABLE_COOKIES:{(J==null||J!==Y)&&this.disableCookies&&document.cookie.split(";").forEach((z)=>{z.trim().startsWith("muxData")&&(document.cookie=z.replace(/^ +/,"").replace(/=.*/,"=;expires="+new Date().toUTCString()+";path=/"))});break}case x.CAP_RENDITION_TO_PLAYER_SIZE:(J==null||J!==Y)&&(this.capRenditionToPlayerSize=J!=null?!0:void 0)}}updateLogo(){if(!this.shadowRoot)return;let Z=this.shadowRoot.querySelector('slot[name="logo"]');if(!Z)return;let Y=this.constructor.getLogoHTML(L0(this,J7)||this.logo);Z.innerHTML=Y}connectedCallback(){var Z,Y;(Z=super.connectedCallback)==null||Z.call(this),(Y=this.nativeEl)==null||Y.addEventListener("muxmetadata",L0(this,O1)),this.nativeEl&&this.src&&!L0(this,e0,Q9)&&N1(this,e0,X7).call(this)}disconnectedCallback(){var Z,Y;(Z=this.nativeEl)==null||Z.removeEventListener("muxmetadata",L0(this,O1)),this.unload(),(Y=super.disconnectedCallback)==null||Y.call(this)}handleEvent(Z){Z.target===this.nativeEl&&this.dispatchEvent(new CustomEvent(Z.type,{composed:!0,detail:Z.detail}))}};Z7=new WeakMap,K1=new WeakMap,Y7=new WeakMap,B1=new WeakMap,R1=new WeakMap,F1=new WeakMap,E1=new WeakMap,A1=new WeakMap,J7=new WeakMap,O1=new WeakMap,e0=new WeakSet,Q9=function(){return vQ(this.nativeEl)},$1=new WeakMap,X7=async function(){L0(this,Z7)||(await W8(this,Z7,Promise.resolve()),W8(this,Z7,null),this.load())};var A8=new WeakMap;class Q7 extends Error{}class p6 extends Error{}var MU=["application/x-mpegURL","application/vnd.apple.mpegurl","audio/mpegurl"],eQ=globalThis.WeakRef?class extends Set{add(Z){super.add(new WeakRef(Z))}forEach(Z){super.forEach((Y)=>{let J=Y.deref();if(J)Z(J)})}}:Set;function Zz(Z){if(!globalThis.chrome?.cast?.isAvailable)globalThis.__onGCastApiAvailable=()=>{customElements.whenDefined("google-cast-button").then(Z)};else if(!globalThis.cast?.framework)customElements.whenDefined("google-cast-button").then(Z);else Z()}function Yz(){return globalThis.chrome}function Jz(){if(globalThis.chrome?.cast||document.querySelector('script[src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1"]'))return;let Y=document.createElement("script");Y.src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1",document.head.append(Y)}function b8(){return globalThis.cast?.framework?.CastContext.getInstance()}function z7(){return b8()?.getCurrentSession()}function M1(){return z7()?.getSessionObj().media[0]}function Xz(Z){return new Promise((Y,J)=>{M1().editTracksInfo(Z,Y,J)})}function Qz(Z){return new Promise((Y,J)=>{M1().getStatus(Z,Y,J)})}function m6(Z){return b8().setOptions({...u6(),...Z})}function u6(){return{receiverApplicationId:"CC1AD845",autoJoinPolicy:"origin_scoped",androidReceiverCompatible:!1,language:"en-US",resumeSavedSession:!0}}function aQ(Z){if(!Z)return;let Y=/\.([a-zA-Z0-9]+)(?:\?.*)?$/,J=Z.match(Y);return J?J[1]:null}function wU(Z){for(let Y of Z.split(` `)){let J=Y.trim();if(J.startsWith("#EXT-X-MEDIA")&&/TYPE=AUDIO/i.test(J)){let X=J.match(/URI="([^"]+)"/i);if(X)return X[1]}}return}function LU(Z){let Y=Z.split(` `),J=[];for(let X=0;X!X.trim().startsWith("#")&&X.trim()!=="")?.trim()}async function zz(Z){if(!Z)return!1;if(/\.m3u8?(\?.*)?$/i.test(Z))return!0;if(Z.startsWith("blob:"))return!1;try{let J=(await fetch(Z,{method:"HEAD"})).headers.get("Content-Type");return MU.some((X)=>J===X)}catch(Y){return console.error("Error while trying to get the Content-Type of the manifest",Y),!1}}async function Wz(Z){if(!Z||Z.startsWith("blob:"))return{videoFormat:void 0,audioFormat:void 0};try{let Y=await(await fetch(Z)).text(),J=Y,X=LU(Y);if(X.length>0){let G=new URL(X[0],Z).toString();J=await(await fetch(G)).text()}let Q=tQ(J),z=aQ(Q),W=wU(Y),H=z;if(W)try{let G=new URL(W,Z).toString(),q=await(await fetch(G)).text(),V=tQ(q);H=aQ(V)??z}catch(G){console.error("Error while trying to parse the audio rendition playlist",G)}return{videoFormat:z,audioFormat:H}}catch(Y){return console.error("Error while trying to parse the manifest playlist",Y),{videoFormat:void 0,audioFormat:void 0}}}var w1=new eQ,I8=new WeakSet,b0;Zz(()=>{if(!globalThis.chrome?.cast?.isAvailable){console.debug("chrome.cast.isAvailable",globalThis.chrome?.cast?.isAvailable);return}if(!b0)b0=cast.framework,b8().addEventListener(b0.CastContextEventType.CAST_STATE_CHANGED,(Z)=>{w1.forEach((Y)=>A8.get(Y).onCastStateChanged?.(Z))}),b8().addEventListener(b0.CastContextEventType.SESSION_STATE_CHANGED,(Z)=>{w1.forEach((Y)=>A8.get(Y).onSessionStateChanged?.(Z))}),w1.forEach((Z)=>A8.get(Z).init?.())});var Gz=0;class c6 extends EventTarget{#Z;#X;#J;#Q;#Y="disconnected";#W=!1;#z=new Set;#H=new WeakMap;#q=()=>this.#B();constructor(Z){super();this.#Z=Z,w1.add(this),A8.set(this,{init:()=>this.#K(),onCastStateChanged:()=>this.#U(),onSessionStateChanged:()=>this.#N(),getCastPlayer:()=>this.#G}),this.#K()}destroy(){if(this.#Z?.textTracks?.removeEventListener("change",this.#q),this.#Q&&this.#J?.controller)Object.entries(this.#Q).forEach(([Z,Y])=>{this.#J.controller.removeEventListener(Z,Y)});if(this.#Z)I8.delete(this.#Z);this.#X=!1}get#G(){if(I8.has(this.#Z))return this.#J;return}get state(){return this.#Y}async watchAvailability(Z){if(this.#Z.disableRemotePlayback)throw new Q7("disableRemotePlayback attribute is present.");return this.#H.set(Z,++Gz),this.#z.add(Z),queueMicrotask(()=>Z(this.#V())),Gz}async cancelWatchAvailability(Z){if(this.#Z.disableRemotePlayback)throw new Q7("disableRemotePlayback attribute is present.");if(Z)this.#z.delete(Z);else this.#z.clear()}async prompt(){if(this.#Z.disableRemotePlayback)throw new Q7("disableRemotePlayback attribute is present.");if(!globalThis.chrome?.cast?.isAvailable)throw new p6("The RemotePlayback API is disabled on this platform.");let Z=I8.has(this.#Z);I8.add(this.#Z),m6(this.#Z.castOptions),Object.entries(this.#Q).forEach(([Y,J])=>{this.#J.controller.addEventListener(Y,J)});try{await b8().requestSession()}catch(Y){if(!Z)I8.delete(this.#Z);if(Y==="cancel")return;throw Error(Y)}A8.get(this.#Z)?.loadOnPrompt?.()}#j(){if(!I8.has(this.#Z))return;if(Object.entries(this.#Q).forEach(([Z,Y])=>{this.#J.controller.removeEventListener(Z,Y)}),I8.delete(this.#Z),this.#Z.muted=this.#J.isMuted,this.#Z.currentTime=this.#J.savedPlayerState.currentTime,this.#J.savedPlayerState.isPaused===!1)this.#Z.play()}#V(){let Z=b8()?.getCastState();return Z&&Z!=="NO_DEVICES_AVAILABLE"}#U(){let Z=b8().getCastState();if(I8.has(this.#Z)){if(Z==="CONNECTING")this.#Y="connecting",this.dispatchEvent(new Event("connecting"))}if(!this.#W&&Z?.includes("CONNECT")){this.#W=!0;for(let Y of this.#z)Y(!0)}else if(this.#W&&(!Z||Z==="NO_DEVICES_AVAILABLE")){this.#W=!1;for(let Y of this.#z)Y(!1)}}async#N(){let{SESSION_RESUMED:Z}=b0.SessionState;if(b8().getSessionState()===Z){if(this.#Z.castSrc===M1()?.media.contentId){I8.add(this.#Z),Object.entries(this.#Q).forEach(([Y,J])=>{this.#J.controller.addEventListener(Y,J)});try{await Qz(new chrome.cast.media.GetStatusRequest)}catch(Y){console.error(Y)}this.#Q[b0.RemotePlayerEventType.IS_PAUSED_CHANGED](),this.#Q[b0.RemotePlayerEventType.PLAYER_STATE_CHANGED]()}}}#K(){if(!b0||this.#X)return;this.#X=!0,m6(this.#Z.castOptions),this.#Z.textTracks.addEventListener("change",this.#q),this.#U(),this.#J=new b0.RemotePlayer,new b0.RemotePlayerController(this.#J),this.#Q={[b0.RemotePlayerEventType.IS_CONNECTED_CHANGED]:({value:Z})=>{if(Z===!0)this.#Y="connected",this.dispatchEvent(new Event("connect"));else this.#j(),this.#Y="disconnected",this.dispatchEvent(new Event("disconnect"))},[b0.RemotePlayerEventType.DURATION_CHANGED]:()=>{this.#Z.dispatchEvent(new Event("durationchange"))},[b0.RemotePlayerEventType.VOLUME_LEVEL_CHANGED]:()=>{this.#Z.dispatchEvent(new Event("volumechange"))},[b0.RemotePlayerEventType.IS_MUTED_CHANGED]:()=>{this.#Z.dispatchEvent(new Event("volumechange"))},[b0.RemotePlayerEventType.CURRENT_TIME_CHANGED]:()=>{if(!this.#G?.isMediaLoaded)return;this.#Z.dispatchEvent(new Event("timeupdate"))},[b0.RemotePlayerEventType.VIDEO_INFO_CHANGED]:()=>{this.#Z.dispatchEvent(new Event("resize"))},[b0.RemotePlayerEventType.IS_PAUSED_CHANGED]:()=>{this.#Z.dispatchEvent(new Event(this.paused?"pause":"play"))},[b0.RemotePlayerEventType.PLAYER_STATE_CHANGED]:()=>{if(this.#G?.playerState===chrome.cast.media.PlayerState.PAUSED)return;this.#Z.dispatchEvent(new Event({[chrome.cast.media.PlayerState.PLAYING]:"playing",[chrome.cast.media.PlayerState.BUFFERING]:"waiting",[chrome.cast.media.PlayerState.IDLE]:"emptied"}[this.#G?.playerState]))},[b0.RemotePlayerEventType.IS_MEDIA_LOADED_CHANGED]:async()=>{if(!this.#G?.isMediaLoaded)return;await Promise.resolve(),this.#R()}}}#R(){this.#B()}async#B(){if(!this.#G)return;let Y=(this.#J.mediaInfo?.tracks??[]).filter(({type:V})=>V===chrome.cast.media.TrackType.TEXT),J=[...this.#Z.textTracks].filter(({kind:V})=>V==="subtitles"||V==="captions"),X=Y.map(({language:V,name:U,trackId:N})=>{let{mode:j}=J.find((K)=>K.language===V&&K.label===U)??{};if(j)return{mode:j,trackId:N};return!1}).filter(Boolean),z=X.filter(({mode:V})=>V!=="showing").map(({trackId:V})=>V),W=X.find(({mode:V})=>V==="showing"),H=z7()?.getSessionObj().media[0]?.activeTrackIds??[],G=H;if(H.length)G=G.filter((V)=>!z.includes(V));if(W?.trackId)G=[...G,W.trackId];if(G=[...new Set(G)],!((V,U)=>V.length===U.length&&V.every((N)=>U.includes(N)))(H,G))try{let V=new chrome.cast.media.EditTracksInfoRequest(G);await Xz(V)}catch(V){console.error(V)}}}var Hz=(Z)=>class extends Z{static observedAttributes=[...Z.observedAttributes??[],"cast-src","cast-content-type","cast-stream-type","cast-receiver"];#Z={paused:!1};#X=u6();#J;#Q;get remote(){if(this.#Q)return this.#Q;if(Yz()){if(!this.isConnected)return;if(!this.disableRemotePlayback)Jz();return A8.set(this,{loadOnPrompt:()=>this.#W()}),this.#Q=new c6(this)}return super.remote}get#Y(){return A8.get(this.#Q)?.getCastPlayer?.()}disconnectedCallback(){this.#Q?.destroy(),this.#Q=null,A8.delete(this),super.disconnectedCallback?.()}attributeChangedCallback(J,X,Q){if(super.attributeChangedCallback(J,X,Q),J==="cast-receiver"&&Q){this.#X.receiverApplicationId=Q;return}if(!this.#Y)return;switch(J){case"cast-stream-type":case"cast-src":this.load();break}}async#W(){this.#Z.paused=super.paused,super.pause(),this.muted=super.muted;try{await this.load()}catch(J){console.error(J)}}async load(){if(!this.#Y)return super.load();let J=new chrome.cast.media.MediaInfo(this.castSrc,this.castContentType);J.customData=this.castCustomData;let X=[...this.querySelectorAll("track")].filter(({kind:G,src:q})=>q&&(G==="subtitles"||G==="captions")),Q=[],z=0;if(X.length)J.tracks=X.map((G)=>{let q=++z;if(Q.length===0&&G.track.mode==="showing")Q.push(q);let V=new chrome.cast.media.Track(q,chrome.cast.media.TrackType.TEXT);return V.trackContentId=G.src,V.trackContentType="text/vtt",V.subtype=G.kind==="captions"?chrome.cast.media.TextTrackType.CAPTIONS:chrome.cast.media.TextTrackType.SUBTITLES,V.name=G.label,V.language=G.srclang,V});if(this.castStreamType==="live")J.streamType=chrome.cast.media.StreamType.LIVE;else J.streamType=chrome.cast.media.StreamType.BUFFERED;if(J.metadata=new chrome.cast.media.GenericMediaMetadata,J.metadata.title=this.title,J.metadata.images=[{url:this.poster}],await zz(this.castSrc)){if(!J.contentType)J.contentType="application/x-mpegURL";let{videoFormat:G,audioFormat:q}=await Wz(this.castSrc);if(G?.includes("m4s")||G?.includes("mp4")||G?.includes("m4a"))J.hlsSegmentFormat=chrome.cast.media.HlsSegmentFormat.FMP4,J.hlsVideoSegmentFormat=chrome.cast.media.HlsVideoSegmentFormat.FMP4;else if(q?.includes("aac"))J.hlsSegmentFormat=chrome.cast.media.HlsSegmentFormat.AAC,J.hlsVideoSegmentFormat=chrome.cast.media.HlsVideoSegmentFormat.MPEG2_TS;else if(G?.includes("ts")||q?.includes("ts"))J.hlsSegmentFormat=chrome.cast.media.HlsSegmentFormat.TS,J.hlsVideoSegmentFormat=chrome.cast.media.HlsVideoSegmentFormat.MPEG2_TS}let H=new chrome.cast.media.LoadRequest(J);H.currentTime=super.currentTime??0,H.autoplay=!this.#Z.paused,H.activeTrackIds=Q,await z7()?.loadMedia(H),this.dispatchEvent(new Event("volumechange"))}play(){if(this.#Y){if(this.#Y.isPaused)this.#Y.controller?.playOrPause();return}return super.play()}pause(){if(this.#Y){if(!this.#Y.isPaused)this.#Y.controller?.playOrPause();return}super.pause()}get castOptions(){return this.#X}get castReceiver(){return this.getAttribute("cast-receiver")??void 0}set castReceiver(J){if(this.castReceiver==J)return;this.setAttribute("cast-receiver",`${J}`)}get castSrc(){let J=this.currentSrc,X=J?.startsWith("blob:")?void 0:J;return this.getAttribute("cast-src")??this.querySelector("source")?.src??X??this.getAttribute("src")??void 0}set castSrc(J){if(this.castSrc==J)return;this.setAttribute("cast-src",`${J}`)}get castContentType(){return this.getAttribute("cast-content-type")??void 0}set castContentType(J){this.setAttribute("cast-content-type",`${J}`)}get castStreamType(){return this.getAttribute("cast-stream-type")??this.streamType??void 0}set castStreamType(J){this.setAttribute("cast-stream-type",`${J}`)}get castCustomData(){return this.#J}set castCustomData(J){let X=typeof J;if(!["object","undefined"].includes(X)){console.error(`castCustomData must be nullish or an object but value was of type ${X}`);return}this.#J=J}get readyState(){if(this.#Y)switch(this.#Y.playerState){case chrome.cast.media.PlayerState.IDLE:return 0;case chrome.cast.media.PlayerState.BUFFERING:return 2;default:return 3}return super.readyState}get paused(){if(this.#Y)return this.#Y.isPaused;return super.paused}get muted(){if(this.#Y)return this.#Y?.isMuted;return super.muted}set muted(J){if(this.#Y){if(J&&!this.#Y.isMuted||!J&&this.#Y.isMuted)this.#Y.controller?.muteOrUnmute();return}super.muted=J}get volume(){if(this.#Y)return this.#Y?.volumeLevel??1;return super.volume}set volume(J){if(this.#Y){this.#Y.volumeLevel=+J,this.#Y.controller?.setVolumeLevel();return}super.volume=J}get duration(){if(this.#Y&&this.#Y?.isMediaLoaded)return this.#Y?.duration??NaN;return super.duration}get currentTime(){if(this.#Y&&this.#Y?.isMediaLoaded)return this.#Y?.currentTime??0;return super.currentTime}set currentTime(J){if(this.#Y){this.#Y.currentTime=J,this.#Y.controller?.seek();return}super.currentTime=J}};class p8 extends Event{track;constructor(Z,Y){super(Z);this.track=Y.track}}var d6=new WeakMap;function u(Z){return d6.get(Z)??_U(Z,{})}function _U(Z,Y){let J=d6.get(Z);if(!J)d6.set(Z,J={});return Object.assign(J,Y)}function L1(Z,Y){let J=Z.videoTracks;if(u(Y).media=new WeakRef(Z),!u(Y).renditionSet)u(Y).renditionSet=new Set;let X=u(J).trackSet;X.add(Y);let Q=X.size-1;if(!(Q in w9.prototype))Object.defineProperty(w9.prototype,Q,{get(){return[...u(this).trackSet][Q]}});queueMicrotask(()=>{J.dispatchEvent(new p8("addtrack",{track:Y}))})}function _1(Z){let Y=u(Z).media?.deref()?.videoTracks;if(!Y)return;u(Y).trackSet.delete(Z),queueMicrotask(()=>{Y.dispatchEvent(new p8("removetrack",{track:Z}))})}function qz(Z){let Y=u(Z).media?.deref()?.videoTracks??[],J=!1;for(let X of Y){if(X===Z)continue;X.selected=!1,J=!0}if(J){if(u(Y).changeRequested)return;u(Y).changeRequested=!0,queueMicrotask(()=>{delete u(Y).changeRequested,Y.dispatchEvent(new Event("change"))})}}class w9 extends EventTarget{#Z;#X;#J;constructor(){super();u(this).trackSet=new Set}get#Q(){return u(this).trackSet}[Symbol.iterator](){return this.#Q.values()}get length(){return this.#Q.size}getTrackById(Z){return[...this.#Q].find((Y)=>Y.id===Z)??null}get selectedIndex(){return[...this.#Q].findIndex((Z)=>Z.selected)}get onaddtrack(){return this.#Z}set onaddtrack(Z){if(this.#Z)this.removeEventListener("addtrack",this.#Z),this.#Z=void 0;if(typeof Z=="function")this.#Z=Z,this.addEventListener("addtrack",Z)}get onremovetrack(){return this.#X}set onremovetrack(Z){if(this.#X)this.removeEventListener("removetrack",this.#X),this.#X=void 0;if(typeof Z=="function")this.#X=Z,this.addEventListener("removetrack",Z)}get onchange(){return this.#J}set onchange(Z){if(this.#J)this.removeEventListener("change",this.#J),this.#J=void 0;if(typeof Z=="function")this.#J=Z,this.addEventListener("change",Z)}}class m8 extends Event{rendition;constructor(Z,Y){super(Z);this.rendition=Y.rendition}}function Vz(Z,Y){let J=u(Z).media?.deref()?.videoRenditions;u(Y).media=u(Z).media,u(Y).track=Z;let X=u(Z).renditionSet;X.add(Y);let Q=X.size-1;if(!(Q in _9.prototype))Object.defineProperty(_9.prototype,Q,{get(){return L9(this)[Q]}});queueMicrotask(()=>{if(!J||!Z.selected)return;J.dispatchEvent(new m8("addrendition",{rendition:Y}))})}function Uz(Z){let Y=u(Z).media?.deref()?.videoRenditions,J=u(Z).track;u(J).renditionSet.delete(Z),queueMicrotask(()=>{let Q=u(Z).track;if(!Y||!Q.selected)return;Y.dispatchEvent(new m8("removerendition",{rendition:Z}))})}function jz(Z){let Y=u(Z).media?.deref()?.videoRenditions;if(!Y||u(Y).changeRequested)return;u(Y).changeRequested=!0,queueMicrotask(()=>{if(delete u(Y).changeRequested,!u(Z).track.selected)return;Y.dispatchEvent(new Event("change"))})}function L9(Z){let Y=u(Z).media?.deref();if(!Y)return[];return[...Y.videoTracks].filter((J)=>J.selected).flatMap((J)=>[...u(J).renditionSet])}class _9 extends EventTarget{#Z;#X;#J;[Symbol.iterator](){return L9(this).values()}get length(){return L9(this).length}getRenditionById(Z){return L9(this).find((Y)=>`${Y.id}`===`${Z}`)??null}get selectedIndex(){return L9(this).findIndex((Z)=>Z.selected)}set selectedIndex(Z){for(let[Y,J]of L9(this).entries())J.selected=Y===Z}get onaddrendition(){return this.#Z}set onaddrendition(Z){if(this.#Z)this.removeEventListener("addrendition",this.#Z),this.#Z=void 0;if(typeof Z=="function")this.#Z=Z,this.addEventListener("addrendition",Z)}get onremoverendition(){return this.#X}set onremoverendition(Z){if(this.#X)this.removeEventListener("removerendition",this.#X),this.#X=void 0;if(typeof Z=="function")this.#X=Z,this.addEventListener("removerendition",Z)}get onchange(){return this.#J}set onchange(Z){if(this.#J)this.removeEventListener("change",this.#J),this.#J=void 0;if(typeof Z=="function")this.#J=Z,this.addEventListener("change",Z)}}class D1{src;id;width;height;bitrate;frameRate;codec;#Z=!1;get selected(){return this.#Z}set selected(Z){if(this.#Z===Z)return;this.#Z=Z,jz(this)}}class W7{id;kind;label="";language="";sourceBuffer;#Z=!1;addRendition(Z,Y,J,X,Q,z){let W=new D1;return W.src=Z,W.width=Y,W.height=J,W.frameRate=z,W.bitrate=Q,W.codec=X,Vz(this,W),W}removeRendition(Z){Uz(Z)}get selected(){return this.#Z}set selected(Z){if(this.#Z===Z)return;if(this.#Z=Z,Z!==!0)return;qz(this)}}function Nz(Z,Y){let J=u(Z).media?.deref()?.audioRenditions;u(Y).media=u(Z).media,u(Y).track=Z;let X=u(Z).renditionSet;X.add(Y);let Q=X.size-1;if(!(Q in C9.prototype))Object.defineProperty(C9.prototype,Q,{get(){return D9(this)[Q]}});queueMicrotask(()=>{if(!J||!Z.enabled)return;J.dispatchEvent(new m8("addrendition",{rendition:Y}))})}function Kz(Z){let Y=u(Z).media?.deref()?.audioRenditions,J=u(Z).track;u(J).renditionSet.delete(Z),queueMicrotask(()=>{let Q=u(Z).track;if(!Y||!Q.enabled)return;Y.dispatchEvent(new m8("removerendition",{rendition:Z}))})}function Bz(Z){let Y=u(Z).media?.deref()?.audioRenditions;if(!Y||u(Y).changeRequested)return;u(Y).changeRequested=!0,queueMicrotask(()=>{if(delete u(Y).changeRequested,!u(Z).track.enabled)return;Y.dispatchEvent(new Event("change"))})}function D9(Z){let Y=u(Z).media?.deref();if(!Y)return[];return[...Y.audioTracks].filter((J)=>J.enabled).flatMap((J)=>[...u(J).renditionSet])}class C9 extends EventTarget{#Z;#X;#J;[Symbol.iterator](){return D9(this).values()}get length(){return D9(this).length}getRenditionById(Z){return D9(this).find((Y)=>`${Y.id}`===`${Z}`)??null}get selectedIndex(){return D9(this).findIndex((Z)=>Z.selected)}set selectedIndex(Z){for(let[Y,J]of D9(this).entries())J.selected=Y===Z}get onaddrendition(){return this.#Z}set onaddrendition(Z){if(this.#Z)this.removeEventListener("addrendition",this.#Z),this.#Z=void 0;if(typeof Z=="function")this.#Z=Z,this.addEventListener("addrendition",Z)}get onremoverendition(){return this.#X}set onremoverendition(Z){if(this.#X)this.removeEventListener("removerendition",this.#X),this.#X=void 0;if(typeof Z=="function")this.#X=Z,this.addEventListener("removerendition",Z)}get onchange(){return this.#J}set onchange(Z){if(this.#J)this.removeEventListener("change",this.#J),this.#J=void 0;if(typeof Z=="function")this.#J=Z,this.addEventListener("change",Z)}}class C1{src;id;bitrate;codec;#Z=!1;get selected(){return this.#Z}set selected(Z){if(this.#Z===Z)return;this.#Z=Z,Bz(this)}}function P1(Z,Y){let J=Z.audioTracks;if(u(Y).media=new WeakRef(Z),!u(Y).renditionSet)u(Y).renditionSet=new Set;let X=u(J).trackSet;X.add(Y);let Q=X.size-1;if(!(Q in P9.prototype))Object.defineProperty(P9.prototype,Q,{get(){return[...u(this).trackSet][Q]}});queueMicrotask(()=>{J.dispatchEvent(new p8("addtrack",{track:Y}))})}function b1(Z){let Y=u(Z).media?.deref()?.audioTracks;if(!Y)return;u(Y).trackSet.delete(Z),queueMicrotask(()=>{Y.dispatchEvent(new p8("removetrack",{track:Z}))})}function Rz(Z){let Y=u(Z).media?.deref()?.audioTracks;if(!Y||u(Y).changeRequested)return;u(Y).changeRequested=!0,queueMicrotask(()=>{delete u(Y).changeRequested,Y.dispatchEvent(new Event("change"))})}class P9 extends EventTarget{#Z;#X;#J;constructor(){super();u(this).trackSet=new Set}get#Q(){return u(this).trackSet}[Symbol.iterator](){return this.#Q.values()}get length(){return this.#Q.size}getTrackById(Z){return[...this.#Q].find((Y)=>Y.id===Z)??null}get onaddtrack(){return this.#Z}set onaddtrack(Z){if(this.#Z)this.removeEventListener("addtrack",this.#Z),this.#Z=void 0;if(typeof Z=="function")this.#Z=Z,this.addEventListener("addtrack",Z)}get onremovetrack(){return this.#X}set onremovetrack(Z){if(this.#X)this.removeEventListener("removetrack",this.#X),this.#X=void 0;if(typeof Z=="function")this.#X=Z,this.addEventListener("removetrack",Z)}get onchange(){return this.#J}set onchange(Z){if(this.#J)this.removeEventListener("change",this.#J),this.#J=void 0;if(typeof Z=="function")this.#J=Z,this.addEventListener("change",Z)}}class G7{id;kind;label="";language="";sourceBuffer;#Z=!1;addRendition(Z,Y,J){let X=new C1;return X.src=Z,X.codec=Y,X.bitrate=J,Nz(this,X),X}removeRendition(Z){Kz(Z)}get enabled(){return this.#Z}set enabled(Z){if(this.#Z===Z)return;this.#Z=Z,Rz(this)}}var Fz=I1(globalThis.HTMLMediaElement,"video"),Ez=I1(globalThis.HTMLMediaElement,"audio");function Az(Z){if(!Z?.prototype)return Z;let Y=I1(Z,"video");if(!Y||`${Y}`.includes("[native code]"))Object.defineProperty(Z.prototype,"videoTracks",{get(){return DU(this)}});let J=I1(Z,"audio");if(!J||`${J}`.includes("[native code]"))Object.defineProperty(Z.prototype,"audioTracks",{get(){return CU(this)}});if(!("addVideoTrack"in Z.prototype))Z.prototype.addVideoTrack=function(z,W="",H=""){let G=new W7;return G.kind=z,G.label=W,G.language=H,L1(this,G),G};if(!("removeVideoTrack"in Z.prototype))Z.prototype.removeVideoTrack=_1;if(!("addAudioTrack"in Z.prototype))Z.prototype.addAudioTrack=function(z,W="",H=""){let G=new G7;return G.kind=z,G.label=W,G.language=H,P1(this,G),G};if(!("removeAudioTrack"in Z.prototype))Z.prototype.removeAudioTrack=b1;if(!("videoRenditions"in Z.prototype))Object.defineProperty(Z.prototype,"videoRenditions",{get(){return X(this)}});let X=(z)=>{let W=u(z).videoRenditions;if(!W)W=new _9,u(W).media=new WeakRef(z),u(z).videoRenditions=W;return W};if(!("audioRenditions"in Z.prototype))Object.defineProperty(Z.prototype,"audioRenditions",{get(){return Q(this)}});let Q=(z)=>{let W=u(z).audioRenditions;if(!W)W=new C9,u(W).media=new WeakRef(z),u(z).audioRenditions=W;return W};return Z}function I1(Z,Y){if(Z?.prototype)return Object.getOwnPropertyDescriptor(Z.prototype,`${Y}Tracks`)?.get}function DU(Z){let Y=u(Z).videoTracks;if(!Y){if(Y=new w9,u(Z).videoTracks=Y,Fz){let J=Fz.call(Z.nativeEl??Z);for(let W of J)L1(Z,W);let X=()=>{Y.dispatchEvent(new Event("change"))},Q=(W)=>{if([...Y].some((H)=>H instanceof W7)){for(let H of J)_1(H);return}L1(Z,W.track)},z=(W)=>{_1(W.track)};J.addEventListener("change",X),J.addEventListener("addtrack",Q),J.addEventListener("removetrack",z)}}return Y}function CU(Z){let Y=u(Z).audioTracks;if(!Y){if(Y=new P9,u(Z).audioTracks=Y,Ez){let J=Ez.call(Z.nativeEl??Z);for(let W of J)P1(Z,W);let X=()=>{Y.dispatchEvent(new Event("change"))},Q=(W)=>{if([...Y].some((H)=>H instanceof G7)){for(let H of J)b1(H);return}P1(Z,W.track)},z=(W)=>{b1(W.track)};J.addEventListener("change",X),J.addEventListener("addtrack",Q),J.addEventListener("removetrack",z)}}return Y}var Oz=(Z)=>{throw TypeError(Z)},$z=(Z,Y,J)=>Y.has(Z)||Oz("Cannot "+J),Mz=(Z,Y,J)=>($z(Z,Y,"read from private field"),J?J.call(Z):Y.get(Z)),wz=(Z,Y,J)=>Y.has(Z)?Oz("Cannot add the same private member more than once"):Y instanceof WeakSet?Y.add(Z):Y.set(Z,J),Lz=(Z,Y,J,X)=>($z(Z,Y,"write to private field"),X?X.call(Z,J):Y.set(Z,J),J),T1=class{addEventListener(){}removeEventListener(){}dispatchEvent(Z){return!0}};if(typeof DocumentFragment>"u"){class Z extends T1{}globalThis.DocumentFragment=Z}var n6=class extends T1{},PU=class extends T1{},bU={get(Z){},define(Z,Y,J){},getName(Z){return null},upgrade(Z){},whenDefined(Z){return Promise.resolve(n6)}},x1,IU=class{constructor(Z,Y={}){wz(this,x1),Lz(this,x1,Y==null?void 0:Y.detail)}get detail(){return Mz(this,x1)}initCustomEvent(){}};x1=new WeakMap;function xU(Z,Y){return new n6}var _z={document:{createElement:xU},DocumentFragment,customElements:bU,CustomEvent:IU,EventTarget:T1,HTMLElement:n6,HTMLVideoElement:PU},Dz=typeof window>"u"||typeof globalThis.customElements>"u",o6=Dz?_z:globalThis,rj=Dz?_z.document:globalThis.document,S1,l6=class extends Hz(Az(rQ)){constructor(){super(...arguments);wz(this,S1)}get autoplay(){let Z=this.getAttribute("autoplay");return Z===null?!1:Z===""?!0:Z}set autoplay(Z){let Y=this.autoplay;Z!==Y&&(Z?this.setAttribute("autoplay",typeof Z=="string"?Z:""):this.removeAttribute("autoplay"))}get muxCastCustomData(){return{mux:{playbackId:this.playbackId,minResolution:this.minResolution,maxResolution:this.maxResolution,renditionOrder:this.renditionOrder,customDomain:this.customDomain,tokens:{drm:this.drmToken},envKey:this.envKey,metadata:this.metadata,disableCookies:this.disableCookies,disableTracking:this.disableTracking,beaconCollectionDomain:this.beaconCollectionDomain,startTime:this.startTime,preferCmcd:this.preferCmcd}}}get castCustomData(){var Z;return(Z=Mz(this,S1))!=null?Z:this.muxCastCustomData}set castCustomData(Z){Lz(this,S1,Z)}};S1=new WeakMap;o6.customElements.get("mux-video")||(o6.customElements.define("mux-video",l6),o6.MuxVideoElement=l6);var ZN=l6;export{nQ as playerSoftwareVersion,sQ as playerSoftwareName,IQ as generatePlayerInitTime,ZN as default,rQ as MuxVideoBaseElement,d as MediaError,cQ as Events,x as Attributes};