@vindral/web-sdk 4.3.0-9-g13d8cb8f → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as ee, l, m as te, n as u, o as ne, p as re, r as ie, s as ae, t as oe, u as se, v as ce } from "./BWe37SYR.js";
2
+ import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as ee, l, m as te, n as u, o as ne, p as re, r as ie, s as ae, t as oe, u as se, v as ce } from "./Dfj0VbOY.js";
3
3
  import { M as le } from "./C01DcfYu.js";
4
4
  import { a as d, i as f, n as p, r as m, t as h } from "./B7hT-BKr.js";
5
5
  import { n as ue, t as de } from "./DeYmk5AL.js";
6
6
  import { t as fe } from "./FYiEDBC4.js";
7
7
  import { _ as pe, a as me, c as he, d as ge, f as _e, g, h as _, i as v, l as ve, m as ye, n as y, o as b, p as be, r as x, s as xe, t as Se, u as Ce, v as we, y as Te } from "./CjPLLJi5.js";
8
- import { t as Ee } from "./BdFcdkj1.js";
8
+ import { t as Ee } from "./D5iA4gy8.js";
9
9
  //#region ../../libs/utils/src/mediaMetadata.ts
10
10
  var De = ({ title: e, subTitle: t = "Live stream", poster: n }) => {
11
11
  document.title = e, "mediaSession" in navigator && (navigator.mediaSession.metadata = new MediaMetadata({
@@ -45,7 +45,7 @@ var r = class extends n {
45
45
  var e;
46
46
  let t = this.getInstance();
47
47
  if (!t) throw "cast context should exist";
48
- let n = t.getSessionState(), r = ((e = this.config) == null ? void 0 : e.receiverApplicationId) || "A5452297";
48
+ let n = t.getSessionState(), r = ((e = this.config) == null ? void 0 : e.receiverApplicationId) || void 0;
49
49
  t.setOptions({
50
50
  receiverApplicationId: r,
51
51
  autoJoinPolicy: chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,
@@ -11008,7 +11008,7 @@ var Uv = class {
11008
11008
  let e = this.modules.canvasModule instanceof J_ ? !0 : void 0;
11009
11009
  return w({
11010
11010
  uptime: Date.now() - this.createdAt,
11011
- version: "4.3.0-9-g13d8cb8f",
11011
+ version: "4.3.1",
11012
11012
  clientId: this.clientId,
11013
11013
  sessionId: this.sessionId,
11014
11014
  channelId: this.channelId,
package/cast-sender.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./BdFcdkj1.js";
1
+ import { t as e } from "./D5iA4gy8.js";
2
2
  export { e as CastSender };
package/core.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "./BWe37SYR.js";
1
+ import { t as e } from "./Dfj0VbOY.js";
2
2
  import { a as t, c as n, i as r, l as i, n as a, o, r as s, s as c, u as l } from "./C01DcfYu.js";
3
3
  export { a as AUTHENTICATION_EXPIRED_CODE, s as AUTHENTICATION_FAILED_CODE, r as CHANNEL_NOT_FOUND_CODE, t as CONNECTION_FAILED_AFTER_RETRIES_CODE, o as CONNECTION_FAILED_CODE, c as DISCONNECTED_BY_EDGE, n as INACTIVITY_CODE, i as NO_INCOMING_DATA, e as Vindral, l as VindralError };
package/legacy.es.js CHANGED
@@ -1216,7 +1216,7 @@ var cr = class extends Ut {
1216
1216
  var e;
1217
1217
  let t = this.getInstance();
1218
1218
  if (!t) throw "cast context should exist";
1219
- let n = t.getSessionState(), r = ((e = this.config) == null ? void 0 : e.receiverApplicationId) || "A5452297";
1219
+ let n = t.getSessionState(), r = ((e = this.config) == null ? void 0 : e.receiverApplicationId) || void 0;
1220
1220
  t.setOptions({
1221
1221
  receiverApplicationId: r,
1222
1222
  autoJoinPolicy: chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,
@@ -12503,7 +12503,7 @@ var Gx = /* @__PURE__ */ new WeakMap(), Kx = /* @__PURE__ */ new WeakMap(), qx =
12503
12503
  let e = this.modules.canvasModule instanceof Lb ? !0 : void 0;
12504
12504
  return R({
12505
12505
  uptime: Date.now() - this.createdAt,
12506
- version: "4.3.0-9-g13d8cb8f",
12506
+ version: void 0,
12507
12507
  clientId: this.clientId,
12508
12508
  sessionId: this.sessionId,
12509
12509
  channelId: this.channelId,
package/legacy.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.Vindral={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=`_buffering_1ccif_1`,a=`_hidden_1ccif_25`,o=`_scaleout_1ccif_1`,s={buffering:i,"buffering-fullscreen":`_buffering-fullscreen_1ccif_16`,hidden:a,"buffering-indicator":`_buffering-indicator_1ccif_31`,scaleout:o};function c(e){"@babel/helpers - typeof";return c=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},c(e)}var l=n((()=>{}));function u(e,t){if(c(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(c(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var d=n((()=>{l()}));function f(e){var t=u(e,`string`);return c(t)==`symbol`?t:t+``}var p=n((()=>{l(),d()}));function m(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=n((()=>{p()}));h();var g=class{constructor(e){m(this,`attach`,e=>{this.detach(),e.appendChild(this.element)}),m(this,`attachBefore`,(e,t)=>{this.detach(),e.insertBefore(this.element,t)}),m(this,`detach`,()=>this.element.remove()),this.element=e}};h();var _,v,y,b,x=(_=s.hidden)==null?``:_,ee=(v=s.buffering)==null?``:v,te=(y=s[`buffering-fullscreen`])==null?``:y,ne=(b=s[`buffering-indicator`])==null?``:b,re=class extends g{constructor(){super(document.createElement(`div`)),m(this,`indicator`,document.createElement(`div`)),m(this,`isHidden`,()=>this.element.classList.contains(x)),m(this,`setHidden`,e=>e?this.hide():this.show()),m(this,`hide`,()=>this.element.classList.add(x)),m(this,`show`,()=>this.element.classList.remove(x)),m(this,`fullscreen`,e=>{e?this.element.classList.add(te):this.element.classList.remove(te)}),this.element.className=ee,this.indicator.className=ne,this.element.appendChild(this.indicator)}},ie,ae=n((()=>{h(),ie=class{constructor(e){m(this,`maxSize`,0),m(this,`size`,0),m(this,`buffers`,[]),m(this,`_borrowedBuffers`,0),m(this,`get`,e=>{let t=this.buffers.pop();return this._borrowedBuffers++,this.size<e||!t?(this.buffers=[],this.size=e,new ArrayBuffer(e)):t}),m(this,`reclaim`,e=>{this._borrowedBuffers=Math.max(0,this._borrowedBuffers-1),!(e.byteLength<this.size)&&(this.buffers.length>=this.maxSize||this.buffers.push(e))}),this.maxSize=e}get bufferSize(){return this.size}get poolSize(){return this.buffers.length}get borrowedBuffers(){return this._borrowedBuffers}}})),S,oe=n((()=>{S=()=>{}})),C,se=n((()=>{oe(),h(),C=class e{constructor(){m(this,`promise`,void 0),m(this,`resolved`,void 0),m(this,`resolve`,void 0),m(this,`reject`,void 0),m(this,`pending`,!0),this.promise=new Promise((e,t)=>{this.resolve=t=>{this.pending=!1,this.resolved=t,e(t)},this.reject=e=>{this.pending=!1,t(e)}}),this.promise.catch(S)}static resolved(t){let n=new e;return n.resolve(t),n}static fromPromise(t){let n=new e;return n.promise=t,t.then(e=>{n.pending=!1,n.resolved=e},e=>{n.pending=!1,n.reject(e)}),n}}})),w,ce=n((()=>{h(),w=class{constructor(e=50){m(this,`maxSize`,void 0),m(this,`values`,[]),m(this,`start`,0),m(this,`size`,()=>this.values.length-this.start),m(this,`compact`,()=>{if(this.start!==0){if(this.start>=this.values.length){this.values=[],this.start=0;return}this.start<32&&this.start*2<this.values.length||(this.values=this.values.slice(this.start),this.start=0)}}),m(this,`push`,e=>{this.isFull()&&(this.start++,this.compact()),this.values.push(e)}),m(this,`clear`,()=>{this.values=[],this.start=0}),m(this,`pop`,()=>{if(this.isEmpty())return;let e=this.values[this.start];return this.start++,this.compact(),e}),m(this,`popLast`,()=>{if(this.isEmpty())return;let e=this.values.pop();return this.start>=this.values.length&&this.clear(),e}),m(this,`peekFirst`,()=>this.isEmpty()?void 0:this.values[this.start]),m(this,`peekLast`,()=>this.isEmpty()?void 0:this.values[this.values.length-1]),m(this,`isFull`,()=>this.size()>=this.maxSize),m(this,`isEmpty`,()=>this.size()===0),m(this,`items`,()=>this.start===0?this.values:this.values.slice(this.start)),m(this,`filterPop`,e=>{for(;!this.isEmpty();){let t=this.peekFirst();if(t===void 0||e(t))return;this.pop()}}),this.maxSize=e}}}));function le(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}var ue=n((()=>{}));function T(e,t,n){le(e,t),t.set(e,n)}var E=n((()=>{ue()}));function D(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}var O=n((()=>{}));function k(e,t,n){return e.set(D(e,t),n),n}var A=n((()=>{O()}));function j(e,t){return e.get(D(e,t))}var M=n((()=>{O()}));function de(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function N(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){de(a,r,i,o,s,`next`,e)}function s(e){de(a,r,i,o,s,`throw`,e)}o(void 0)})}}var P=n((()=>{}));function fe(e){let t=new ve(e);return[t,t]}var pe,me,he,ge,_e,ve,ye=n((()=>{se(),ce(),oe(),E(),A(),M(),P(),me=new WeakMap,he=new WeakMap,ge=new WeakMap,_e=new WeakMap,pe=Symbol.asyncIterator,ve=class{constructor(e){T(this,me,void 0),T(this,he,new C),T(this,ge,void 0),T(this,_e,!1),k(me,this,new w(e))}isFull(){return j(me,this).isFull()}close(){var e;(e=j(ge,this))==null||e.resolve(),k(_e,this,!0)}abort(e){var t,n;(t=j(ge,this))==null||t.promise.catch(S),(n=j(ge,this))==null||n.reject(e)}push(e){var t=this;return N(function*(){var n;j(me,t).isFull()&&(yield j(he,t).promise),j(me,t).push(e),(n=j(ge,t))==null||n.resolve(),k(ge,t,new C)})()}pop(){var e=this;return N(function*(){for(;!(j(_e,e)&&j(me,e).isEmpty());){var t;let n=j(me,e).pop();if(n)return j(he,e).resolve(),k(he,e,new C),n;j(ge,e)||k(ge,e,new C),yield(t=j(ge,e))==null?void 0:t.promise}})()}start(e){}pull(e){var t=this;return N(function*(){let n=yield t.pop();n?e.enqueue(n):e.close()})()}cancel(e){this.abort(Error(e))}next(){var e=this;return N(function*(){let t=yield e.pop().catch(()=>void 0);return t?{done:!1,value:t}:{done:!0,value:void 0}})()}return(){return this.close(),Promise.resolve({done:!0,value:void 0})}[pe](){return this}}}));function be(e,t){if(!e)throw Error(t)}var xe=n((()=>{}));function F(e){return Se?BigInt(e):typeof BigInt==`function`&&typeof e==`bigint`?Number(e):e}var Se,Ce=n((()=>{Se=typeof DataView.prototype.getBigUint64==`function`})),we,Te,Ee,De,Oe=n((()=>{E(),h(),M(),A(),we=new WeakMap,Te=new WeakMap,Ee=new WeakMap,De=class{constructor(e,t=0){T(this,we,void 0),T(this,Te,void 0),T(this,Ee,void 0),m(this,`position`,()=>j(Ee,this)),m(this,`peekBit`,()=>this.getBit(j(Te,this),j(Ee,this))),m(this,`readBit`,()=>{var e;let t=this.peekBit();return k(Ee,this,(e=j(Ee,this),e++,e)),t}),m(this,`readBits`,e=>{let t=0;for(let i=0;i<e;i++){var n,r;t=t<<1|(this.getBit(j(Te,this),(k(Ee,this,(n=j(Ee,this),r=n++,n)),r))?1:0)}return t}),m(this,`remainingBits`,()=>j(Te,this).byteLength*8-j(Ee,this)),m(this,`readSignedExpGolomb`,()=>{let e=this.readUnsignedExpGolomb();return e&1?(e+1)/2:-(e/2)}),m(this,`readUnsignedExpGolomb`,()=>{var e,t;let n=0;for(;this.getBit(j(Te,this),(k(Ee,this,(e=j(Ee,this),t=e++,e)),t))===0;)n++;let r=1<<n;for(let e=n-1;e>=0;e--){var i,a;r|=this.getBit(j(Te,this),(k(Ee,this,(i=j(Ee,this),a=i++,i)),a))<<e}return r-1}),m(this,`getBit`,(e,t)=>{if(e.byteLength*8<=t)throw Error(`BitReader: Out of bounds`);return e[t>>3]>>7-(t&7)&1}),k(we,this,e),k(Te,this,new Uint8Array(j(we,this))),k(Ee,this,t)}bytes(){return j(Te,this)}}})),ke,Ae=n((()=>{ke=(e,t,n)=>{let r=0;for(let i=t;i<=n;i++)if(i===t){let t=e[i];r+=t&127,t&128&&(r-=128)}else r=r*256+e[i];return r}})),I,je,Me,Ne,Pe=n((()=>{Ae(),E(),A(),M(),I=new WeakMap,je=new WeakMap,Me=new WeakMap,Ne=class{constructor(e){T(this,I,void 0),T(this,je,void 0),T(this,Me,void 0),k(je,this,e),k(Me,this,new DataView(e.buffer,e.byteOffset,e.byteLength)),k(I,this,0)}position(){return j(I,this)}byteOffset(){return j(je,this).byteOffset+j(I,this)}buffer(){return j(je,this)}remaining(){return j(je,this).length-j(I,this)}readUint8(){let e=j(Me,this).getUint8(j(I,this));return k(I,this,j(I,this)+1),e}readUint24(){let e=j(Me,this).getUint32(j(I,this))>>8&16777215;return k(I,this,j(I,this)+3),e}readUint16(){let e=j(Me,this).getUint16(j(I,this));return k(I,this,j(I,this)+2),e}readUint32(){let e=j(Me,this).getUint32(j(I,this));return k(I,this,j(I,this)+4),e}readUint64(){let e=ke(j(je,this),j(I,this),j(I,this)+7);return k(I,this,j(I,this)+8),e}readBytes(e){let t=j(je,this).subarray(j(I,this),j(I,this)+e);return k(I,this,j(I,this)+e),t}readRemaining(){return this.readBytes(this.remaining())}readUtf8String(){let e=[],t;for(;(t=this.readUint8())!==0&&(e.push(t),this.remaining()!==0););return new TextDecoder().decode(new Uint8Array(e))}}})),Fe,Ie=n((()=>{h(),Fe=class{constructor(e=100){m(this,`internalBuffer`,void 0),m(this,`view`,void 0),m(this,`uint8`,void 0),m(this,`_position`,0),m(this,`_end`,0),this.internalBuffer=new ArrayBuffer(e),this.view=new DataView(this.internalBuffer),this.uint8=new Uint8Array(this.internalBuffer)}position(){return this._position}seek(e){this._position=Math.max(0,Math.min(this._end,e))}seekToEnd(){this._position=this._end}writeUint8(e){this.writeAndMove(e,1)}writeUint16(e){this.writeAndMove(e,2)}writeUint24(e){this.writeAndMove(e,3)}writeUint32(e){this.writeAndMove(e,4)}writeUint64(e){let t=Math.floor(e/4294967296),n=(e&4294967295)>>>0;this.writeUint32(t),this.writeUint32(n)}writeUint32At(e,t){this.view.setUint32(e,t)}writeBytes(e){this.resizeIfNeeded(this.position()+e.byteLength),this.uint8.set(e,this.position()),this._position+=e.byteLength,this._end=Math.max(this._end,this._position)}buffer(){return this.internalBuffer.slice(0,this._end)}bufferExact(){return this._end===this.internalBuffer.byteLength?this.internalBuffer:this.internalBuffer.slice(0,this._end)}write(e,t){switch(this.resizeIfNeeded(this.position()+t),t){case 1:this.view.setUint8(this.position(),e);break;case 2:this.view.setUint16(this.position(),e);break;case 3:this.view.setUint8(this.position(),e>>16&255),this.view.setUint8(this.position()+1,e>>8&255),this.view.setUint8(this.position()+2,e&255);break;case 4:this.view.setUint32(this.position(),e);break}}writeAndMove(e,t){this.write(e,t),this._position+=t,this._end=Math.max(this._end,this._position)}resizeIfNeeded(e){if(e>this.internalBuffer.byteLength){let t=Math.max(e,this.internalBuffer.byteLength*2),n=new ArrayBuffer(t),r=new Uint8Array(n);r.set(this.uint8),this.internalBuffer=n,this.view=new DataView(this.internalBuffer),this.uint8=r}}}}));function Le(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}var Re=n((()=>{}));function ze(){let e=self.MediaSource,t=self.ManagedMediaSource;return e==null?t:e}var Be=n((()=>{}));function Ve(){if(/(iPhone|iPod|iPad)/i.test(We)){var e;return We==null||(e=We.match(/OS [\d_]+/i))==null||(e=e[0])==null?void 0:e.substring(3).split(`_`).map(e=>parseInt(e,10))[0]}}function He(){if(/^((?!chrome|android).)*safari/i.test(We)){var e;return(e=We.match(/version\/([\d.]+)/))==null||(e=e[1])==null?void 0:e.split(`.`).map(e=>parseInt(e,10))[0]}}var Ue,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,rt=n((()=>{Be(),Ue=/(android|bbd+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino\/i.test(a)||\/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-\//i,We=navigator.userAgent.toLowerCase(),Ge=Ue.test(We),Ke=()=>{let e=document.createElement(`video`);return e.canPlayType(`application/vnd.apple.mpegURL`)!==``||e.canPlayType(`audio/mpegurl`)!==``},qe=()=>{try{if(typeof WebAssembly==`object`&&typeof WebAssembly.instantiate==`function`){let e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){return!1}return!1},Je=()=>We.indexOf(`CrKey`)!==-1,Ye=()=>navigator.platform===`MacIntel`&&navigator.maxTouchPoints===0,Xe=()=>navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1,Ze=()=>Qe()||Xe()?!0:/AppleWebKit/i.test(navigator.userAgent)&&!/Chrome|Chromium|Edg|OPR|Opera/i.test(navigator.userAgent),Qe=()=>We.indexOf(`iphone`)>=0&&We.indexOf(`like iphone`)<0||We.indexOf(`ipad`)>=0&&We.indexOf(`like ipad`)<0||We.indexOf(`ipod`)>=0&&We.indexOf(`like ipod`)<0||Xe(),$e=()=>{var e,t;return Xe()||(e=(t=ze())==null?void 0:t.isTypeSupported(`audio/mp4; codecs="opus"`))==null?!1:e},et=()=>/^(?!.*chrome).*safari/i.test(We),tt=()=>typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.captureStream==`function`,nt=()=>{var e,t;let n=!!ze(),r=!1;return n&&(r=$e()),{isMobile:Ge,supportsMp4Opus:r,supportsMediaSource:n,supportsHls:Ke(),supportsWebAssembly:qe(),supportsCanvasCaptureStream:tt(),platform:{iosVersion:(e=Ve())==null?2**53-1:e,safariVersion:(t=He())==null?2**53-1:t,isIpadOS:Xe(),isMacOS:Ye(),isIOS:Qe(),isWebKit:Ze()}}}})),it,at,ot,st,ct,lt,ut,dt,ft,pt,mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt=n((()=>{it=e=>e,at=e=>e,ot=e=>e,st=e=>e,ct=e=>`orientation`in e?e.orientation:void 0,lt=(e=document)=>{let t=it(e);return!!(e.fullscreenElement||e.fullscreen||t.mozFullScreen||t.webkitIsFullScreen)},ut=e=>{var t,n,r,i;let a=at(e);return((t=e.requestFullscreen)==null?void 0:t.bind(e))||((n=a.webkitRequestFullscreen)==null?void 0:n.bind(a))||((r=a.webkitEnterFullscreen)==null?void 0:r.bind(a))||((i=a.mozRequestFullScreen)==null?void 0:i.bind(a))},dt=(e,t=document)=>{var n,r;let i=it(t);return((n=t.exitFullscreen)==null?void 0:n.bind(t))||(i.webkitFullscreenElement&&i.webkitExitFullscreen?i.webkitExitFullscreen.bind(t):void 0)||(i.mozFullscreenElement&&i.mozCancelFullScreen?i.mozCancelFullScreen.bind(t):void 0)||(e?(r=at(e).webkitExitFullscreen)==null?void 0:r.bind(e):void 0)},ft=e=>!!ut(e),pt=e=>{var t;let n=st(e);return(t=n.requestPictureInPicture)==null?void 0:t.bind(n)},mt=(e=document)=>{var t;return(t=ot(e).exitPictureInPicture)==null?void 0:t.bind(e)},ht=(e=document)=>!!ot(e).pictureInPictureEnabled,gt=(e=document)=>!!ot(e).pictureInPictureElement,_t=(e,t=document)=>!!pt(e)&&ht(t),vt=e=>e.pictureInPictureWindow,yt=e=>st(e).webkitPresentationMode,bt=(e,t)=>{var n,r;(n=(r=st(e)).webkitSetPresentationMode)==null||n.call(r,t)},xt=e=>!!st(e).webkitSetPresentationMode,St=(e,t)=>{if(t){e.setAttribute(`autopictureinpicture`,``);return}e.removeAttribute(`autopictureinpicture`)},Ct=(e=screen)=>{var t;let n=ct(e);return n==null||(t=n.lock)==null?void 0:t.bind(n)},wt=(e,t=screen)=>{var n;return(n=Ct(t))==null?void 0:n(e)},Tt=(e=screen)=>{var t,n;(t=ct(e))==null||(n=t.unlock)==null||n.call(t)},Et=e=>{if(!e.supportsCanvasCaptureStream)return!1;if(!e.platform.isIOS)return!0;let{iosVersion:t,safariVersion:n,isIpadOS:r}=e.platform;return Number.isFinite(t)&&t!==2**53-1?t>=15:r&&Number.isFinite(n)&&n!==2**53-1?n>=15:typeof VideoDecoder<`u`}})),Ot,kt=n((()=>{h(),Ot=class{constructor(e,t,n){m(this,`onSuccess`,void 0),m(this,`onError`,void 0),m(this,`doExecute`,void 0),this.doExecute=e,this.onSuccess=t,this.onError=n}execute(e){try{this.doExecute(e),this.onSuccess()}catch(e){this.onError(e)}}}})),At,jt,Mt,Nt,Pt,Ft=n((()=>{At=e=>e.reduce((e,t)=>e+t,0)/e.length,jt=e=>{if(e.length<2)return;let t=0;for(let n=1;n<e.length;n++)t+=e[n]-e[n-1];return t/(e.length-1)},Mt=e=>{if(e.length===0)return NaN;let t=Math.floor(e.length/2),n=[...e].sort((e,t)=>e-t);return e.length%2==0?(n[t-1]+n[t])/2:n[t]},Nt=e=>({last:e[e.length-1]||0,average:e.length===0?0:At(e),max:e.length===0?0:Math.max(...e),min:e.length===0?0:Math.min(...e)}),Pt=e=>{let t=0,n=0,r=0,i=0,a=0;for(let o=0;o<e.length;o++){let{x:s,y:c}=e[o];t+=s,n+=c,r+=s*c,i+=s*s,a+=c*c}let o=(e.length*r-t*n)/(e.length*i-t*t),s=(n-o*t)/e.length;return{slope:o,intercept:s,r2:((e.length*r-t*n)/Math.sqrt((e.length*i-t*t)*(e.length*a-n*n)))**2,predict:t=>o*(e.length+t)+s}}})),It,Lt=n((()=>{ce(),Ft(),h(),It=class{constructor(e=10){m(this,`rates`,void 0),m(this,`_total`,0),m(this,`accumulatedValues`,0),m(this,`lastTickTime`,Date.now()),m(this,`add`,e=>{this.accumulatedValues+=e,this._total+=e}),m(this,`tick`,()=>{let e=this.accumulatedValues/((Date.now()-this.lastTickTime)/1e3);this.rates.push(e),this.accumulatedValues=0,this.lastTickTime=Date.now()}),this.rates=new w(e)}get total(){return this._total}get average(){return this.rates.isEmpty()?0:At(this.rates.items())}get minMaxAverage(){return Nt(this.rates.items())}}})),Rt,zt=n((()=>{Rt=5e3})),Bt=n((()=>{})),Vt,Ht=n((()=>{Vt=(e,t)=>{if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=0,r=0;for(let t in e)n+=1;for(let n in t)if(r+=1,!(n in e)||!Vt(e[n],t[n]))return!1;return n===r}})),Ut,Wt=n((()=>{h(),Ut=class{constructor(){m(this,`listeners`,{})}emit(e,t){let n=this.listeners[e];if(n){let r=!1;for(let e=0;e<n.length;e++)if(n[e].once){r=!0;break}r&&(this.listeners[e]=n.filter(e=>!e.once));let i,a=n.length;for(let e=0;e<a;e++){let r=n[e].fn(t);typeof r==`function`&&(i||(i=[]),i.push(r))}if(i)for(let e=0;e<i.length;e++)i[e]()}}off(e,t){let n=this.listeners[e];n&&(this.listeners[e]=n.filter(e=>e.fn!==t))}on(e,t){this.add(e,t,!1)}once(e,t){this.add(e,t,!0)}hasListeners(e){let t=this.listeners[e];return t!==void 0&&t.length>0}reset(){this.listeners={}}add(e,t,n){let r=this.listeners[e],i={fn:t,once:n};r?r.push(i):this.listeners[e]=[i]}}})),Gt=n((()=>{})),Kt,qt,Jt,Yt,Xt,Zt,Qt,$t=n((()=>{Kt=1e3,qt=Kt*1e3,Jt=qt*1e3,Yt=(e,t,n)=>e%t===0?e/t:(e/t).toFixed(n),Xt=(e,t=1)=>e>=Jt?`${Yt(e,Jt,t)} Gbit/s`:e>=qt?`${Yt(e,qt,t)} Mbit/s`:e>=Kt?`${Yt(e,Kt,t)} Kbit/s`:`${e} bit/s`,Zt=({width:e,height:t})=>`${e}x${t}`,Qt=e=>e%1e3==0?`${e/1e3} kHz`:e>1e3?`${(e/1e3).toFixed(1)} kHz`:`${e} Hz`})),en=n((()=>{})),tn,nn,rn,an,on,sn,cn,ln,un=n((()=>{E(),h(),A(),M(),tn=[`off`,`error`,`warn`,`info`,`debug`,`trace`],nn={ERROR:`error`,WARN:`warn`,INFO:`info`,DEBUG:`debug`,TRACE:`trace`,OFF:`off`},rn=new WeakMap,an=new WeakMap,on=new WeakMap,sn=new WeakMap,cn=class e{constructor({context:e,logLevel:t,debug:n}){T(this,rn,new Map),T(this,an,``),T(this,on,!1),T(this,sn,`off`),m(this,`trace`,(...e)=>{}),m(this,`debug`,(...e)=>{}),m(this,`info`,(...e)=>{}),m(this,`warn`,(...e)=>{}),m(this,`error`,(...e)=>{}),m(this,`table`,(...e)=>{}),m(this,`count`,(...e)=>{}),k(an,this,e),k(sn,this,t),k(on,this,n||!1),this.setLevel(t),this.setDebug(j(on,this))}setDebug(e){k(on,this,e);for(let[t,n]of j(rn,this))n.setDebug(e);e?(this.table=console.table.bind(console),this.count=console.count.bind(console)):(this.table=()=>{},this.count=()=>{})}setLevel(e){k(sn,this,e);for(let[t,n]of j(rn,this))n.setLevel(e);let t=tn.indexOf(e);for(let[e,n]of tn.entries())n!==`off`&&(e<=t?this[n]=console[n].bind(console,`%c%s %c%s`,`font-weight:bold;`,n.toUpperCase(),`font-weight:normal;`,j(an,this)):this[n]=()=>{})}createContext(t){let n=j(rn,this).get(t);if(!n){let n=new e({context:`${t}`,logLevel:j(sn,this),debug:j(on,this)});return j(rn,this).set(t,n),n}return n}static get(){return ln._||(ln._=new e({context:`Vindral`,logLevel:`off`})),ln._}},ln={_:void 0}}));function dn(){return typeof Symbol.asyncDispose!=`symbol`&&Object.defineProperty(Symbol,`asyncDispose`,{value:Symbol.for(`asyncDispose`)}),Symbol.asyncDispose}function fn(){return typeof Symbol.dispose!=`symbol`&&Object.defineProperty(Symbol,`dispose`,{value:Symbol.for(`dispose`)}),Symbol.dispose}var pn=n((()=>{}));function L(e,t){le(e,t),t.add(e)}var R=n((()=>{ue()}));function mn(){this.unlocker.resolve(this.value)}var hn,gn,_n,vn,yn,bn,xn,Sn=n((()=>{se(),oe(),pn(),R(),h(),O(),E(),M(),A(),P(),_n=new WeakSet,hn=fn(),gn=Symbol.dispose,vn=class{constructor(e,t){L(this,_n),m(this,`value`,void 0),m(this,`unlocker`,void 0),this.value=e,this.unlocker=t}unlocked(){var e;return(e=this.unlocker)==null?void 0:e.promise}[hn](){D(_n,this,mn).call(this)}[gn](){D(_n,this,mn).call(this)}},yn=new WeakMap,bn=new WeakMap,xn=class{unsafeValue(){return j(yn,this)}constructor(e){T(this,yn,void 0),T(this,bn,new C),k(yn,this,e),j(bn,this).resolve(e)}isLocked(){return j(bn,this).pending}lock(){var e=this;return N(function*(){let t=new C;t.promise.then(t=>{k(yn,e,t)}).catch(S);let n=j(bn,e).promise.then(()=>t);return k(bn,e,t),yield n,new vn(j(yn,e),t)})()}}}));function Cn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Cn(Object(n),!0).forEach(function(t){m(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Cn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var B=n((()=>{h()})),wn=n((()=>{})),Tn=n((()=>{})),En=n((()=>{}));function Dn(e,t){this.v=e,this.k=t}var On=n((()=>{}));function V(e){return new Dn(e,0)}var kn=n((()=>{On()}));function An(e){return function(){return new jn(e.apply(this,arguments))}}function jn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Dn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}var Mn=n((()=>{On(),jn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},jn.prototype.next=function(e){return this._invoke(`next`,e)},jn.prototype.throw=function(e){return this._invoke(`throw`,e)},jn.prototype.return=function(e){return this._invoke(`return`,e)}})),Nn,Pn,Fn,In,Ln=n((()=>{se(),E(),A(),M(),P(),kn(),Mn(),Pn=new WeakMap,Fn=new WeakMap,Nn=Symbol.asyncIterator,In=class{constructor(e){T(this,Pn,void 0),T(this,Fn,void 0),k(Pn,this,e),k(Fn,this,new C)}isClosed(){var e;return!((e=j(Fn,this))!=null&&e.pending)}current(){return j(Pn,this)}value(){var e;return[j(Pn,this),(e=j(Fn,this))==null?void 0:e.promise]}update(e){var t;if(!((t=j(Fn,this))!=null&&t.pending))throw Error(`ObservableValue is closed`);k(Pn,this,e instanceof Function?e(j(Pn,this)):e),j(Fn,this).resolve(j(Pn,this)),k(Fn,this,new C)}close(){var e;(e=j(Fn,this))==null||e.resolve(j(Pn,this)),k(Fn,this,void 0)}waitFor(e){var t=this;return N(function*(){if(e(j(Pn,t)))return j(Pn,t);for(;;){let[n,r]=t.value();if(!r)throw Error(`ObservableValue was closed while waiting for condition`);let i=yield r;if(e(i))return i}})()}[Nn](){var e=this;return An(function*(){for(;;){let[t,n]=e.value();if(yield t,!n)return;yield V(n)}})()}}})),Rn,zn=n((()=>{B(),Rn=(e,t)=>{let n=z({},e);return typeof n==`object`&&t.forEach(e=>{delete n[e]}),n}})),Bn=n((()=>{})),Vn,Hn,Un=n((()=>{h(),Hn=class{constructor(){m(this,`pendingTimeouts`,new Set),m(this,`pendingIntervals`,new Set),m(this,`clearTimeout`,e=>{this.pendingTimeouts.delete(e)&&window.clearTimeout(e)}),m(this,`clearInterval`,e=>{this.pendingIntervals.delete(e)&&window.clearInterval(e)}),m(this,`setTimeout`,(e,t,...n)=>{let r=window.setTimeout(()=>{e(...n),this.clearTimeout(r)},t);return this.pendingTimeouts.add(r),r}),m(this,`setInterval`,(e,t,...n)=>{let r=window.setInterval(()=>{e(...n)},t);return this.pendingIntervals.add(r),r}),m(this,`unload`,()=>{this.pendingIntervals.forEach(this.clearInterval),this.pendingTimeouts.forEach(this.clearTimeout)})}},Vn=Hn,m(Hn,`create`,()=>new Vn)})),Wn,Gn,Kn,qn,Jn=n((()=>{Wn=(e,t=Date.now())=>{let n=e.length;if(n>0){let r=e[n-1];r.end||(r.end=t)}},Gn=(e,t=Date.now())=>{Wn(e),e.push({start:t})},Kn=e=>e.reduce((e,t)=>{var n;return e+(((n=t.end)==null?Date.now():n)-t.start)},0),qn=(e,t,n=Date.now())=>e.reduce((e,r)=>{var i;let a=Math.max(n-t,r.start),o=(i=r.end)==null?n:i;return Math.max(0,o-a)+e},0)}));function Yn(e){try{return e()}catch(e){return e}}var Xn=n((()=>{})),Zn,Qn=n((()=>{Zn=e=>{try{return JSON.parse(e)}catch(e){return}}})),$n=n((()=>{})),er,tr=n((()=>{oe(),h(),B(),er=class{constructor(){var e;m(this,`highEntropyValues`,void 0),(e=self.navigator.userAgentData)==null||e.getHighEntropyValues([`architecture`,`model`,`platformVersion`,`fullVersionList`]).then(e=>{this.highEntropyValues=e}).catch(S)}getUserAgentInformation(){var e;let t=window.location.origin,n=!t||t===`null`?``:`${window.location.pathname}${window.location.search}`.substring(0,1e3),r={locationOrigin:window.location.origin,locationPath:n,ancestorOrigins:((e=window.location.ancestorOrigins)==null?void 0:e.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){var i,a,o,s,c;let e=[...(i=this.highEntropyValues.brands)==null?[]:i];e.sort((e,t)=>e.brand.localeCompare(t.brand));let t=[...(a=this.highEntropyValues.fullVersionList)==null?[]:a];t.sort((e,t)=>e.brand.localeCompare(t.brand));let n=t.map(e=>e.version),l=e.map(e=>e.brand),u=e.map(e=>e.version),d=parseInt((o=(s=this.highEntropyValues.platformVersion)==null?void 0:s.split(`.`)[0])==null?`1`:o,10);return z({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:l,fullVersionBrands:n,majorVersions:u},device:this.highEntropyValues.model||`Other`,os:{family:this.highEntropyValues.platform||`Other`,version:(c=this.highEntropyValues.platformVersion)==null?`1`:c,major_version:Number.isFinite(d)?d:0}}},r)}else return z({userAgent:window.navigator.userAgent},r)}}})),nr,rr=n((()=>{nr=()=>{let e=[...Array(256).keys()].map(e=>e.toString(16).padStart(2,`0`)),t=crypto.getRandomValues(new Uint8Array(16));return t[6]=t[6]&15|64,t[8]=t[8]&63|128,[...t.entries()].map(([t,n])=>[4,6,8,10].includes(t)?`-${e[n]}`:e[n]).join(``)}})),ir,ar,or=n((()=>{P(),ir=function(){var e=N(function*(e){return new Promise(t=>setTimeout(t,e))});return function(t){return e.apply(this,arguments)}}(),ar=function(){var e=N(function*(e,t=Error(`Timeout`)){return new Promise((n,r)=>setTimeout(()=>r(t),e))});return function(t){return e.apply(this,arguments)}}(),function(){var e=N(function*(e,t){throw yield e,Error(t)});return function(t,n){return e.apply(this,arguments)}}()})),H=n((()=>{ae(),ye(),xe(),Ce(),Oe(),Pe(),Ie(),Re(),rt(),rt(),Dt(),Ae(),kt(),Lt(),zt(),se(),Bt(),Ht(),Wt(),ce(),Gt(),$t(),en(),Be(),un(),Sn(),wn(),Tn(),En(),oe(),Ln(),zn(),Bn(),Ft(),pn(),Un(),Jn(),Xn(),Qn(),$n(),tr(),rr(),or()}));H(),h(),P();var sr=class extends Ut{constructor(e){super(),m(this,`config`,void 0),m(this,`hlsUrl`,void 0),m(this,`element`,void 0),m(this,`connectingTimeout`,void 0),m(this,`castingAvailable`,!1),m(this,`updateAuthenticationToken`,e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)}),m(this,`unload`,()=>{this.element&&(this.element.removeEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.removeEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.element.remove())}),m(this,`onAirPlayAvailable`,e=>{switch(e.availability){case`available`:this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(e=>{e&&(this.element.src=this.hlsUrl,this.emit(`available`))});break;case`not-available`:this.castingAvailable=!1;break;default:break}}),m(this,`onAirPlayPlaybackChanged`,()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit(`connected`),this.element.style.display=`block`,this.element.paused&&this.element.play().catch(S)):(this.emit(`disconnected`),this.element.pause(),this.element.src=``,this.element.src=this.hlsUrl,this.element.style.display=`none`)}),this.config=e,this.hlsUrl=this.getHlsUrl(),this.element=document.createElement(`video`),this.element.style.position=`absolute`,this.element.style.top=`0`,this.element.style.bottom=`0`,this.element.style.left=`0`,this.element.style.right=`0`,this.element.style.width=`100%`,this.element.style.height=`100%`,this.element.style.zIndex=`1001`,this.element.style.display=`none`,this.element.id=`vindral-airplay-element`,this.element.slot=`overlay`,this.element.playsInline=!0,this.element.controls=!0,this.element.preload=`metadata`,this.element.addEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.addEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){`webkitShowPlaybackTargetPicker`in this.element&&this.castingAvailable&&(this.element.paused&&(this.element.play().catch(S),this.connectingTimeout=window.setTimeout(()=>{this.casting||(this.element.pause(),this.element.src=``,this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker())}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}getHlsUrl(){let e=new URL(`/api/hls?channelId=${this.config.channelId}`,this.config.url);return this.config.authenticationToken&&e.searchParams.set(`authenticationToken`,this.config.authenticationToken),e.toString()}checkHlsUrl(e){return N(function*(){try{return(yield fetch(e,{method:`HEAD`})).ok}catch(e){return!1}})()}};H(),h(),P();var cr=class extends Ut{constructor(e){var t;super(),t=this,m(this,`state`,`not casting`),m(this,`config`,void 0),m(this,`unloaded`,!1),m(this,`updateAuthenticationToken`,e=>{this.config&&(this.config.options.authenticationToken=e,this.send({type:`updateAuthToken`,token:e}))}),m(this,`unload`,()=>{var e;this.unloaded=!0,(e=this.getSession())==null||e.removeMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage)}),m(this,`init`,N(function*(){return new Promise((e,n)=>{let r=!1,i=setTimeout(()=>{r=!0,n()},1e4);window.__onGCastApiAvailable=a=>{if(r){r=!1;return}if(clearTimeout(i),!a)return n();setTimeout(()=>{try{t.onGCastApiAvailable(),e()}catch(e){n()}},1e3)},t.castLibrariesAdded()&&window.cast?window.__onGCastApiAvailable(!0):t.verifyCastLibraries()})})),m(this,`start`,N(function*(){var e;yield(e=t.getInstance())==null?void 0:e.requestSession()})),m(this,`stop`,()=>{var e;(e=this.getSession())==null||e.endSession(!0)}),m(this,`getReceiverName`,()=>{var e;return((e=this.getSession())==null||(e=e.getCastDevice())==null?void 0:e.friendlyName)||void 0}),m(this,`onGCastApiAvailable`,()=>{var e;let t=this.getInstance();if(!t)throw`cast context should exist`;let n=t.getSessionState(),r=((e=this.config)==null?void 0:e.receiverApplicationId)||`A5452297`;t.setOptions({receiverApplicationId:r,autoJoinPolicy:chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,resumeSavedSession:!0}),t.addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,this.onSessionStateChanged),n===cast.framework.SessionState.SESSION_STARTED&&setTimeout(()=>{this.state=`casting`,this.emit(`resumed`)})}),m(this,`send`,e=>{var t;(t=this.getSession())==null||t.sendMessage(`urn:x-cast:com.vindral.castdata`,e)}),m(this,`onMessage`,(e,t)=>{if(e===`urn:x-cast:com.vindral.castdata`)try{let e=JSON.parse(t);switch(e.type){case`metadata`:this.emit(`metadata`,e.metadata);break;case`serverWallclockTime`:this.emit(`server wallclock time`,e.serverWallclockTime);break;default:break}}catch(e){}}),m(this,`onSessionStarted`,()=>{var e;(e=this.getSession())==null||e.addMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.send({type:`start`,config:this.config})}),m(this,`onSessionStateChanged`,e=>{if(!this.unloaded)switch(e.sessionState){case cast.framework.SessionState.SESSION_START_FAILED:this.state=`not casting`,this.emit(`failed`);break;case cast.framework.SessionState.SESSION_ENDED:this.state=`not casting`,this.emit(`disconnected`);break;case cast.framework.SessionState.SESSION_ENDING:break;case cast.framework.SessionState.SESSION_RESUMED:this.onSessionStarted(),this.state=`casting`,this.emit(`resumed`);break;case cast.framework.SessionState.SESSION_STARTED:this.onSessionStarted(),this.state=`casting`,this.emit(`connected`);break;case cast.framework.SessionState.SESSION_STARTING:break;default:break}}),m(this,`getInstance`,()=>{var e;return(e=window.cast)==null?void 0:e.framework.CastContext.getInstance()}),m(this,`getSession`,()=>{var e;return(e=this.getInstance())==null?void 0:e.getCurrentSession()}),m(this,`castLibrariesAdded`,()=>!!(document.querySelector(`#vindralCastFrameworkLib`)&&document.querySelector(`#vindralCastSenderLib`))),m(this,`verifyCastLibraries`,()=>{if(this.castLibrariesAdded())return;let e=document.createElement(`script`);e.type=`text/javascript`,e.id=`vindralCastFrameworkLib`,e.src=`//www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js`,document.head.appendChild(e);let t=document.createElement(`script`);t.type=`text/javascript`,t.id=`vindralCastSenderLib`,t.src=`//www.gstatic.com/cv/js/sender/v1/cast_sender.js`,document.head.appendChild(t)}),this.config=e}get casting(){return this.state===`casting`}get volume(){var e,t;return(e=(t=this.getSession())==null?void 0:t.getVolume())==null?0:e}set volume(e){var t;(t=this.getSession())==null||t.setVolume(e)}get language(){var e;return(e=this.config)==null||(e=e.options)==null?void 0:e.language}set language(e){this.config&&(this.config.options.language=e,this.send({type:`setLanguage`,language:e}))}get channelId(){var e;return((e=this.config)==null?void 0:e.options.channelId)||``}set channelId(e){this.config&&(this.config.options.channelId=e,this.send({type:`setChannelId`,channelId:e}))}},lr=e=>{switch(e){case`h264`:case`h265`:case`av1`:return`video`;case`aac`:case`opus`:case`mp3`:return`audio`;case`webvtt`:return`text`;default:throw Error(`Unknown codec`)}};function ur(e){if(e.startsWith(`opus`))return`opus`;if(e.startsWith(`mp4a`))return`aac`;if(e.startsWith(`avc1`))return`h264`;if(e.startsWith(`hvc1`)||e.startsWith(`hev1`))return`h265`;if(e.startsWith(`av01`))return`av1`;if(e.startsWith(`webvtt`))return`webvtt`}H();function dr(e){return!(typeof e.edges[0]==`string`||e.channels[0]&&!(`catalog`in e.channels[0]))}function fr(e){return e.tracks.filter(e=>!!e.codec).filter(e=>ur(e.codec||``)).map((e,t)=>{let n=e.codec,r=e.bitrate;be(n,`codec is required`),be(r!==void 0,`bitrate is required`);let i=ur(n);if(be(i,`codec is required`),lr(i)===`audio`){let a=e.samplerate||0;return{track:e,id:t,codec:i,codecString:n,bitRate:r,channels:e.channelConfig===`stereo`?2:1,sampleRate:a,language:e.language}}return lr(i)===`text`?{track:e,id:t,bitRate:0,codec:i,kind:`subtitles`,codecString:n,label:e.label,language:e.language}:(be(e.width,`width is required`),be(e.height,`width is required`),be(e.framerate,`framerate is required`),{track:e,id:t,codec:i,bitRate:r,codecString:n,width:e.width,height:e.height,frameRate:e.framerate})}).sort((e,t)=>e.bitRate-t.bitRate)}var pr=e=>`width`in e&&typeof e.width==`number`,mr=e=>`sampleRate`in e&&typeof e.sampleRate==`number`,hr=e=>{switch(e.codec){case`opus`:return`audio/mp4; codecs="opus"`;case`mp3`:return`audio/mpeg`;case`webvtt`:return`text/vtt`;case`aac`:return e.codecString?`audio/mp4; codecs="${e.codecString}"`:`audio/mp4`;case`h264`:case`h265`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`;case`av1`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`}},gr=()=>2**53-1,_r=()=>({width:2**53-1,height:2**53-1}),vr=e=>!(typeof e!=`object`||!e||!(`type`in e));H();var yr={sizeBasedResolutionCapEnabled:!0,pictureInPictureEnabled:!0,abrEnabled:!0,burstEnabled:!1,mseEnabled:!0,mseOpusEnabled:!0,muted:!1,volume:1,minBufferTime:1500,maxBufferTime:1500,logLevel:nn.OFF,maxSize:_r(),maxVideoBitRate:gr(),maxAudioBitRate:gr(),maxInitialBitRate:2.5*1e3*1e3,tags:[],media:`audio+video`,poster:!0,reconnectHandler:e=>e.reconnectRetries<30,iosWakeLockEnabled:!1,telemetryEnabled:!0,streamToMediaElementEnabled:!1,iosMediaElementEnabled:!1,pauseSupportEnabled:!0,webcodecsHardwareAcceleration:`no-preference`,offscreenCanvasEnabled:void 0,advanced:{},videoCodecs:[`av1`,`h264`,`h265`],webtransportEnabled:!0};function br(e){return typeof e==`function`?this.then(t=>Promise.resolve(e()).then(()=>t),t=>Promise.resolve(e()).then(()=>{throw t})):this.then()}function xr(e=Promise){return typeof e.prototype.finally!=`function`&&Object.defineProperty(e.prototype,`finally`,{configurable:!0,enumerable:!1,value:br,writable:!0}),e.prototype.finally}xr();var Sr=e=>{e.width=320,e.height=180,e.style.width=`100%`,e.style.position=`relative`,e.style.backgroundColor=`#000`};R(),E(),h(),B(),M(),A(),O();var Cr={backgroundColor:`rgba(0,0,0,0.6)`,textPadding:8,fontSize:`28px`,lineGap:16},wr=new WeakMap,Tr=new WeakMap,Er=new WeakMap,Dr=new WeakMap,Or=new WeakSet,kr=class{constructor(){L(this,Or),T(this,wr,[]),T(this,Tr,document.createElement(`canvas`)),T(this,Er,void 0),T(this,Dr,window.devicePixelRatio||1),m(this,`config`,z({},Cr));let e=j(Tr,this).getContext(`2d`,{alpha:!0});if(!e)throw Error(`Failed to create 2d context`);k(Er,this,e),D(Or,this,jr).call(this)}get canvas(){return j(Tr,this)}setActiveCues(e){k(wr,this,e)}render(e,t=!1){let n=j(wr,this).flatMap(t=>t.text.split(`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.Vindral={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t)=>()=>(e&&(t=e(e=0)),t),r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=`_buffering_1ccif_1`,a=`_hidden_1ccif_25`,o=`_scaleout_1ccif_1`,s={buffering:i,"buffering-fullscreen":`_buffering-fullscreen_1ccif_16`,hidden:a,"buffering-indicator":`_buffering-indicator_1ccif_31`,scaleout:o};function c(e){"@babel/helpers - typeof";return c=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},c(e)}var l=n((()=>{}));function u(e,t){if(c(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(c(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var d=n((()=>{l()}));function f(e){var t=u(e,`string`);return c(t)==`symbol`?t:t+``}var p=n((()=>{l(),d()}));function m(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=n((()=>{p()}));h();var g=class{constructor(e){m(this,`attach`,e=>{this.detach(),e.appendChild(this.element)}),m(this,`attachBefore`,(e,t)=>{this.detach(),e.insertBefore(this.element,t)}),m(this,`detach`,()=>this.element.remove()),this.element=e}};h();var _,v,y,b,x=(_=s.hidden)==null?``:_,ee=(v=s.buffering)==null?``:v,te=(y=s[`buffering-fullscreen`])==null?``:y,ne=(b=s[`buffering-indicator`])==null?``:b,re=class extends g{constructor(){super(document.createElement(`div`)),m(this,`indicator`,document.createElement(`div`)),m(this,`isHidden`,()=>this.element.classList.contains(x)),m(this,`setHidden`,e=>e?this.hide():this.show()),m(this,`hide`,()=>this.element.classList.add(x)),m(this,`show`,()=>this.element.classList.remove(x)),m(this,`fullscreen`,e=>{e?this.element.classList.add(te):this.element.classList.remove(te)}),this.element.className=ee,this.indicator.className=ne,this.element.appendChild(this.indicator)}},ie,ae=n((()=>{h(),ie=class{constructor(e){m(this,`maxSize`,0),m(this,`size`,0),m(this,`buffers`,[]),m(this,`_borrowedBuffers`,0),m(this,`get`,e=>{let t=this.buffers.pop();return this._borrowedBuffers++,this.size<e||!t?(this.buffers=[],this.size=e,new ArrayBuffer(e)):t}),m(this,`reclaim`,e=>{this._borrowedBuffers=Math.max(0,this._borrowedBuffers-1),!(e.byteLength<this.size)&&(this.buffers.length>=this.maxSize||this.buffers.push(e))}),this.maxSize=e}get bufferSize(){return this.size}get poolSize(){return this.buffers.length}get borrowedBuffers(){return this._borrowedBuffers}}})),S,oe=n((()=>{S=()=>{}})),C,se=n((()=>{oe(),h(),C=class e{constructor(){m(this,`promise`,void 0),m(this,`resolved`,void 0),m(this,`resolve`,void 0),m(this,`reject`,void 0),m(this,`pending`,!0),this.promise=new Promise((e,t)=>{this.resolve=t=>{this.pending=!1,this.resolved=t,e(t)},this.reject=e=>{this.pending=!1,t(e)}}),this.promise.catch(S)}static resolved(t){let n=new e;return n.resolve(t),n}static fromPromise(t){let n=new e;return n.promise=t,t.then(e=>{n.pending=!1,n.resolved=e},e=>{n.pending=!1,n.reject(e)}),n}}})),w,ce=n((()=>{h(),w=class{constructor(e=50){m(this,`maxSize`,void 0),m(this,`values`,[]),m(this,`start`,0),m(this,`size`,()=>this.values.length-this.start),m(this,`compact`,()=>{if(this.start!==0){if(this.start>=this.values.length){this.values=[],this.start=0;return}this.start<32&&this.start*2<this.values.length||(this.values=this.values.slice(this.start),this.start=0)}}),m(this,`push`,e=>{this.isFull()&&(this.start++,this.compact()),this.values.push(e)}),m(this,`clear`,()=>{this.values=[],this.start=0}),m(this,`pop`,()=>{if(this.isEmpty())return;let e=this.values[this.start];return this.start++,this.compact(),e}),m(this,`popLast`,()=>{if(this.isEmpty())return;let e=this.values.pop();return this.start>=this.values.length&&this.clear(),e}),m(this,`peekFirst`,()=>this.isEmpty()?void 0:this.values[this.start]),m(this,`peekLast`,()=>this.isEmpty()?void 0:this.values[this.values.length-1]),m(this,`isFull`,()=>this.size()>=this.maxSize),m(this,`isEmpty`,()=>this.size()===0),m(this,`items`,()=>this.start===0?this.values:this.values.slice(this.start)),m(this,`filterPop`,e=>{for(;!this.isEmpty();){let t=this.peekFirst();if(t===void 0||e(t))return;this.pop()}}),this.maxSize=e}}}));function le(e,t){if(t.has(e))throw TypeError(`Cannot initialize the same private elements twice on an object`)}var ue=n((()=>{}));function T(e,t,n){le(e,t),t.set(e,n)}var E=n((()=>{ue()}));function D(e,t,n){if(typeof e==`function`?e===t:e.has(t))return arguments.length<3?t:n;throw TypeError(`Private element is not present on this object`)}var O=n((()=>{}));function k(e,t,n){return e.set(D(e,t),n),n}var A=n((()=>{O()}));function j(e,t){return e.get(D(e,t))}var M=n((()=>{O()}));function de(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function N(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){de(a,r,i,o,s,`next`,e)}function s(e){de(a,r,i,o,s,`throw`,e)}o(void 0)})}}var P=n((()=>{}));function fe(e){let t=new ve(e);return[t,t]}var pe,me,he,ge,_e,ve,ye=n((()=>{se(),ce(),oe(),E(),A(),M(),P(),me=new WeakMap,he=new WeakMap,ge=new WeakMap,_e=new WeakMap,pe=Symbol.asyncIterator,ve=class{constructor(e){T(this,me,void 0),T(this,he,new C),T(this,ge,void 0),T(this,_e,!1),k(me,this,new w(e))}isFull(){return j(me,this).isFull()}close(){var e;(e=j(ge,this))==null||e.resolve(),k(_e,this,!0)}abort(e){var t,n;(t=j(ge,this))==null||t.promise.catch(S),(n=j(ge,this))==null||n.reject(e)}push(e){var t=this;return N(function*(){var n;j(me,t).isFull()&&(yield j(he,t).promise),j(me,t).push(e),(n=j(ge,t))==null||n.resolve(),k(ge,t,new C)})()}pop(){var e=this;return N(function*(){for(;!(j(_e,e)&&j(me,e).isEmpty());){var t;let n=j(me,e).pop();if(n)return j(he,e).resolve(),k(he,e,new C),n;j(ge,e)||k(ge,e,new C),yield(t=j(ge,e))==null?void 0:t.promise}})()}start(e){}pull(e){var t=this;return N(function*(){let n=yield t.pop();n?e.enqueue(n):e.close()})()}cancel(e){this.abort(Error(e))}next(){var e=this;return N(function*(){let t=yield e.pop().catch(()=>void 0);return t?{done:!1,value:t}:{done:!0,value:void 0}})()}return(){return this.close(),Promise.resolve({done:!0,value:void 0})}[pe](){return this}}}));function be(e,t){if(!e)throw Error(t)}var xe=n((()=>{}));function F(e){return Se?BigInt(e):typeof BigInt==`function`&&typeof e==`bigint`?Number(e):e}var Se,Ce=n((()=>{Se=typeof DataView.prototype.getBigUint64==`function`})),we,Te,Ee,De,Oe=n((()=>{E(),h(),M(),A(),we=new WeakMap,Te=new WeakMap,Ee=new WeakMap,De=class{constructor(e,t=0){T(this,we,void 0),T(this,Te,void 0),T(this,Ee,void 0),m(this,`position`,()=>j(Ee,this)),m(this,`peekBit`,()=>this.getBit(j(Te,this),j(Ee,this))),m(this,`readBit`,()=>{var e;let t=this.peekBit();return k(Ee,this,(e=j(Ee,this),e++,e)),t}),m(this,`readBits`,e=>{let t=0;for(let i=0;i<e;i++){var n,r;t=t<<1|(this.getBit(j(Te,this),(k(Ee,this,(n=j(Ee,this),r=n++,n)),r))?1:0)}return t}),m(this,`remainingBits`,()=>j(Te,this).byteLength*8-j(Ee,this)),m(this,`readSignedExpGolomb`,()=>{let e=this.readUnsignedExpGolomb();return e&1?(e+1)/2:-(e/2)}),m(this,`readUnsignedExpGolomb`,()=>{var e,t;let n=0;for(;this.getBit(j(Te,this),(k(Ee,this,(e=j(Ee,this),t=e++,e)),t))===0;)n++;let r=1<<n;for(let e=n-1;e>=0;e--){var i,a;r|=this.getBit(j(Te,this),(k(Ee,this,(i=j(Ee,this),a=i++,i)),a))<<e}return r-1}),m(this,`getBit`,(e,t)=>{if(e.byteLength*8<=t)throw Error(`BitReader: Out of bounds`);return e[t>>3]>>7-(t&7)&1}),k(we,this,e),k(Te,this,new Uint8Array(j(we,this))),k(Ee,this,t)}bytes(){return j(Te,this)}}})),ke,Ae=n((()=>{ke=(e,t,n)=>{let r=0;for(let i=t;i<=n;i++)if(i===t){let t=e[i];r+=t&127,t&128&&(r-=128)}else r=r*256+e[i];return r}})),I,je,Me,Ne,Pe=n((()=>{Ae(),E(),A(),M(),I=new WeakMap,je=new WeakMap,Me=new WeakMap,Ne=class{constructor(e){T(this,I,void 0),T(this,je,void 0),T(this,Me,void 0),k(je,this,e),k(Me,this,new DataView(e.buffer,e.byteOffset,e.byteLength)),k(I,this,0)}position(){return j(I,this)}byteOffset(){return j(je,this).byteOffset+j(I,this)}buffer(){return j(je,this)}remaining(){return j(je,this).length-j(I,this)}readUint8(){let e=j(Me,this).getUint8(j(I,this));return k(I,this,j(I,this)+1),e}readUint24(){let e=j(Me,this).getUint32(j(I,this))>>8&16777215;return k(I,this,j(I,this)+3),e}readUint16(){let e=j(Me,this).getUint16(j(I,this));return k(I,this,j(I,this)+2),e}readUint32(){let e=j(Me,this).getUint32(j(I,this));return k(I,this,j(I,this)+4),e}readUint64(){let e=ke(j(je,this),j(I,this),j(I,this)+7);return k(I,this,j(I,this)+8),e}readBytes(e){let t=j(je,this).subarray(j(I,this),j(I,this)+e);return k(I,this,j(I,this)+e),t}readRemaining(){return this.readBytes(this.remaining())}readUtf8String(){let e=[],t;for(;(t=this.readUint8())!==0&&(e.push(t),this.remaining()!==0););return new TextDecoder().decode(new Uint8Array(e))}}})),Fe,Ie=n((()=>{h(),Fe=class{constructor(e=100){m(this,`internalBuffer`,void 0),m(this,`view`,void 0),m(this,`uint8`,void 0),m(this,`_position`,0),m(this,`_end`,0),this.internalBuffer=new ArrayBuffer(e),this.view=new DataView(this.internalBuffer),this.uint8=new Uint8Array(this.internalBuffer)}position(){return this._position}seek(e){this._position=Math.max(0,Math.min(this._end,e))}seekToEnd(){this._position=this._end}writeUint8(e){this.writeAndMove(e,1)}writeUint16(e){this.writeAndMove(e,2)}writeUint24(e){this.writeAndMove(e,3)}writeUint32(e){this.writeAndMove(e,4)}writeUint64(e){let t=Math.floor(e/4294967296),n=(e&4294967295)>>>0;this.writeUint32(t),this.writeUint32(n)}writeUint32At(e,t){this.view.setUint32(e,t)}writeBytes(e){this.resizeIfNeeded(this.position()+e.byteLength),this.uint8.set(e,this.position()),this._position+=e.byteLength,this._end=Math.max(this._end,this._position)}buffer(){return this.internalBuffer.slice(0,this._end)}bufferExact(){return this._end===this.internalBuffer.byteLength?this.internalBuffer:this.internalBuffer.slice(0,this._end)}write(e,t){switch(this.resizeIfNeeded(this.position()+t),t){case 1:this.view.setUint8(this.position(),e);break;case 2:this.view.setUint16(this.position(),e);break;case 3:this.view.setUint8(this.position(),e>>16&255),this.view.setUint8(this.position()+1,e>>8&255),this.view.setUint8(this.position()+2,e&255);break;case 4:this.view.setUint32(this.position(),e);break}}writeAndMove(e,t){this.write(e,t),this._position+=t,this._end=Math.max(this._end,this._position)}resizeIfNeeded(e){if(e>this.internalBuffer.byteLength){let t=Math.max(e,this.internalBuffer.byteLength*2),n=new ArrayBuffer(t),r=new Uint8Array(n);r.set(this.uint8),this.internalBuffer=n,this.view=new DataView(this.internalBuffer),this.uint8=r}}}}));function Le(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n.buffer}var Re=n((()=>{}));function ze(){let e=self.MediaSource,t=self.ManagedMediaSource;return e==null?t:e}var Be=n((()=>{}));function Ve(){if(/(iPhone|iPod|iPad)/i.test(We)){var e;return We==null||(e=We.match(/OS [\d_]+/i))==null||(e=e[0])==null?void 0:e.substring(3).split(`_`).map(e=>parseInt(e,10))[0]}}function He(){if(/^((?!chrome|android).)*safari/i.test(We)){var e;return(e=We.match(/version\/([\d.]+)/))==null||(e=e[1])==null?void 0:e.split(`.`).map(e=>parseInt(e,10))[0]}}var Ue,We,Ge,Ke,qe,Je,Ye,Xe,Ze,Qe,$e,et,tt,nt,rt=n((()=>{Be(),Ue=/(android|bbd+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino\/i.test(a)||\/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-\//i,We=navigator.userAgent.toLowerCase(),Ge=Ue.test(We),Ke=()=>{let e=document.createElement(`video`);return e.canPlayType(`application/vnd.apple.mpegURL`)!==``||e.canPlayType(`audio/mpegurl`)!==``},qe=()=>{try{if(typeof WebAssembly==`object`&&typeof WebAssembly.instantiate==`function`){let e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){return!1}return!1},Je=()=>We.indexOf(`CrKey`)!==-1,Ye=()=>navigator.platform===`MacIntel`&&navigator.maxTouchPoints===0,Xe=()=>navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1,Ze=()=>Qe()||Xe()?!0:/AppleWebKit/i.test(navigator.userAgent)&&!/Chrome|Chromium|Edg|OPR|Opera/i.test(navigator.userAgent),Qe=()=>We.indexOf(`iphone`)>=0&&We.indexOf(`like iphone`)<0||We.indexOf(`ipad`)>=0&&We.indexOf(`like ipad`)<0||We.indexOf(`ipod`)>=0&&We.indexOf(`like ipod`)<0||Xe(),$e=()=>{var e,t;return Xe()||(e=(t=ze())==null?void 0:t.isTypeSupported(`audio/mp4; codecs="opus"`))==null?!1:e},et=()=>/^(?!.*chrome).*safari/i.test(We),tt=()=>typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.captureStream==`function`,nt=()=>{var e,t;let n=!!ze(),r=!1;return n&&(r=$e()),{isMobile:Ge,supportsMp4Opus:r,supportsMediaSource:n,supportsHls:Ke(),supportsWebAssembly:qe(),supportsCanvasCaptureStream:tt(),platform:{iosVersion:(e=Ve())==null?2**53-1:e,safariVersion:(t=He())==null?2**53-1:t,isIpadOS:Xe(),isMacOS:Ye(),isIOS:Qe(),isWebKit:Ze()}}}})),it,at,ot,st,ct,lt,ut,dt,ft,pt,mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt=n((()=>{it=e=>e,at=e=>e,ot=e=>e,st=e=>e,ct=e=>`orientation`in e?e.orientation:void 0,lt=(e=document)=>{let t=it(e);return!!(e.fullscreenElement||e.fullscreen||t.mozFullScreen||t.webkitIsFullScreen)},ut=e=>{var t,n,r,i;let a=at(e);return((t=e.requestFullscreen)==null?void 0:t.bind(e))||((n=a.webkitRequestFullscreen)==null?void 0:n.bind(a))||((r=a.webkitEnterFullscreen)==null?void 0:r.bind(a))||((i=a.mozRequestFullScreen)==null?void 0:i.bind(a))},dt=(e,t=document)=>{var n,r;let i=it(t);return((n=t.exitFullscreen)==null?void 0:n.bind(t))||(i.webkitFullscreenElement&&i.webkitExitFullscreen?i.webkitExitFullscreen.bind(t):void 0)||(i.mozFullscreenElement&&i.mozCancelFullScreen?i.mozCancelFullScreen.bind(t):void 0)||(e?(r=at(e).webkitExitFullscreen)==null?void 0:r.bind(e):void 0)},ft=e=>!!ut(e),pt=e=>{var t;let n=st(e);return(t=n.requestPictureInPicture)==null?void 0:t.bind(n)},mt=(e=document)=>{var t;return(t=ot(e).exitPictureInPicture)==null?void 0:t.bind(e)},ht=(e=document)=>!!ot(e).pictureInPictureEnabled,gt=(e=document)=>!!ot(e).pictureInPictureElement,_t=(e,t=document)=>!!pt(e)&&ht(t),vt=e=>e.pictureInPictureWindow,yt=e=>st(e).webkitPresentationMode,bt=(e,t)=>{var n,r;(n=(r=st(e)).webkitSetPresentationMode)==null||n.call(r,t)},xt=e=>!!st(e).webkitSetPresentationMode,St=(e,t)=>{if(t){e.setAttribute(`autopictureinpicture`,``);return}e.removeAttribute(`autopictureinpicture`)},Ct=(e=screen)=>{var t;let n=ct(e);return n==null||(t=n.lock)==null?void 0:t.bind(n)},wt=(e,t=screen)=>{var n;return(n=Ct(t))==null?void 0:n(e)},Tt=(e=screen)=>{var t,n;(t=ct(e))==null||(n=t.unlock)==null||n.call(t)},Et=e=>{if(!e.supportsCanvasCaptureStream)return!1;if(!e.platform.isIOS)return!0;let{iosVersion:t,safariVersion:n,isIpadOS:r}=e.platform;return Number.isFinite(t)&&t!==2**53-1?t>=15:r&&Number.isFinite(n)&&n!==2**53-1?n>=15:typeof VideoDecoder<`u`}})),Ot,kt=n((()=>{h(),Ot=class{constructor(e,t,n){m(this,`onSuccess`,void 0),m(this,`onError`,void 0),m(this,`doExecute`,void 0),this.doExecute=e,this.onSuccess=t,this.onError=n}execute(e){try{this.doExecute(e),this.onSuccess()}catch(e){this.onError(e)}}}})),At,jt,Mt,Nt,Pt,Ft=n((()=>{At=e=>e.reduce((e,t)=>e+t,0)/e.length,jt=e=>{if(e.length<2)return;let t=0;for(let n=1;n<e.length;n++)t+=e[n]-e[n-1];return t/(e.length-1)},Mt=e=>{if(e.length===0)return NaN;let t=Math.floor(e.length/2),n=[...e].sort((e,t)=>e-t);return e.length%2==0?(n[t-1]+n[t])/2:n[t]},Nt=e=>({last:e[e.length-1]||0,average:e.length===0?0:At(e),max:e.length===0?0:Math.max(...e),min:e.length===0?0:Math.min(...e)}),Pt=e=>{let t=0,n=0,r=0,i=0,a=0;for(let o=0;o<e.length;o++){let{x:s,y:c}=e[o];t+=s,n+=c,r+=s*c,i+=s*s,a+=c*c}let o=(e.length*r-t*n)/(e.length*i-t*t),s=(n-o*t)/e.length;return{slope:o,intercept:s,r2:((e.length*r-t*n)/Math.sqrt((e.length*i-t*t)*(e.length*a-n*n)))**2,predict:t=>o*(e.length+t)+s}}})),It,Lt=n((()=>{ce(),Ft(),h(),It=class{constructor(e=10){m(this,`rates`,void 0),m(this,`_total`,0),m(this,`accumulatedValues`,0),m(this,`lastTickTime`,Date.now()),m(this,`add`,e=>{this.accumulatedValues+=e,this._total+=e}),m(this,`tick`,()=>{let e=this.accumulatedValues/((Date.now()-this.lastTickTime)/1e3);this.rates.push(e),this.accumulatedValues=0,this.lastTickTime=Date.now()}),this.rates=new w(e)}get total(){return this._total}get average(){return this.rates.isEmpty()?0:At(this.rates.items())}get minMaxAverage(){return Nt(this.rates.items())}}})),Rt,zt=n((()=>{Rt=5e3})),Bt=n((()=>{})),Vt,Ht=n((()=>{Vt=(e,t)=>{if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=0,r=0;for(let t in e)n+=1;for(let n in t)if(r+=1,!(n in e)||!Vt(e[n],t[n]))return!1;return n===r}})),Ut,Wt=n((()=>{h(),Ut=class{constructor(){m(this,`listeners`,{})}emit(e,t){let n=this.listeners[e];if(n){let r=!1;for(let e=0;e<n.length;e++)if(n[e].once){r=!0;break}r&&(this.listeners[e]=n.filter(e=>!e.once));let i,a=n.length;for(let e=0;e<a;e++){let r=n[e].fn(t);typeof r==`function`&&(i||(i=[]),i.push(r))}if(i)for(let e=0;e<i.length;e++)i[e]()}}off(e,t){let n=this.listeners[e];n&&(this.listeners[e]=n.filter(e=>e.fn!==t))}on(e,t){this.add(e,t,!1)}once(e,t){this.add(e,t,!0)}hasListeners(e){let t=this.listeners[e];return t!==void 0&&t.length>0}reset(){this.listeners={}}add(e,t,n){let r=this.listeners[e],i={fn:t,once:n};r?r.push(i):this.listeners[e]=[i]}}})),Gt=n((()=>{})),Kt,qt,Jt,Yt,Xt,Zt,Qt,$t=n((()=>{Kt=1e3,qt=Kt*1e3,Jt=qt*1e3,Yt=(e,t,n)=>e%t===0?e/t:(e/t).toFixed(n),Xt=(e,t=1)=>e>=Jt?`${Yt(e,Jt,t)} Gbit/s`:e>=qt?`${Yt(e,qt,t)} Mbit/s`:e>=Kt?`${Yt(e,Kt,t)} Kbit/s`:`${e} bit/s`,Zt=({width:e,height:t})=>`${e}x${t}`,Qt=e=>e%1e3==0?`${e/1e3} kHz`:e>1e3?`${(e/1e3).toFixed(1)} kHz`:`${e} Hz`})),en=n((()=>{})),tn,nn,rn,an,on,sn,cn,ln,un=n((()=>{E(),h(),A(),M(),tn=[`off`,`error`,`warn`,`info`,`debug`,`trace`],nn={ERROR:`error`,WARN:`warn`,INFO:`info`,DEBUG:`debug`,TRACE:`trace`,OFF:`off`},rn=new WeakMap,an=new WeakMap,on=new WeakMap,sn=new WeakMap,cn=class e{constructor({context:e,logLevel:t,debug:n}){T(this,rn,new Map),T(this,an,``),T(this,on,!1),T(this,sn,`off`),m(this,`trace`,(...e)=>{}),m(this,`debug`,(...e)=>{}),m(this,`info`,(...e)=>{}),m(this,`warn`,(...e)=>{}),m(this,`error`,(...e)=>{}),m(this,`table`,(...e)=>{}),m(this,`count`,(...e)=>{}),k(an,this,e),k(sn,this,t),k(on,this,n||!1),this.setLevel(t),this.setDebug(j(on,this))}setDebug(e){k(on,this,e);for(let[t,n]of j(rn,this))n.setDebug(e);e?(this.table=console.table.bind(console),this.count=console.count.bind(console)):(this.table=()=>{},this.count=()=>{})}setLevel(e){k(sn,this,e);for(let[t,n]of j(rn,this))n.setLevel(e);let t=tn.indexOf(e);for(let[e,n]of tn.entries())n!==`off`&&(e<=t?this[n]=console[n].bind(console,`%c%s %c%s`,`font-weight:bold;`,n.toUpperCase(),`font-weight:normal;`,j(an,this)):this[n]=()=>{})}createContext(t){let n=j(rn,this).get(t);if(!n){let n=new e({context:`${t}`,logLevel:j(sn,this),debug:j(on,this)});return j(rn,this).set(t,n),n}return n}static get(){return ln._||(ln._=new e({context:`Vindral`,logLevel:`off`})),ln._}},ln={_:void 0}}));function dn(){return typeof Symbol.asyncDispose!=`symbol`&&Object.defineProperty(Symbol,`asyncDispose`,{value:Symbol.for(`asyncDispose`)}),Symbol.asyncDispose}function fn(){return typeof Symbol.dispose!=`symbol`&&Object.defineProperty(Symbol,`dispose`,{value:Symbol.for(`dispose`)}),Symbol.dispose}var pn=n((()=>{}));function L(e,t){le(e,t),t.add(e)}var R=n((()=>{ue()}));function mn(){this.unlocker.resolve(this.value)}var hn,gn,_n,vn,yn,bn,xn,Sn=n((()=>{se(),oe(),pn(),R(),h(),O(),E(),M(),A(),P(),_n=new WeakSet,hn=fn(),gn=Symbol.dispose,vn=class{constructor(e,t){L(this,_n),m(this,`value`,void 0),m(this,`unlocker`,void 0),this.value=e,this.unlocker=t}unlocked(){var e;return(e=this.unlocker)==null?void 0:e.promise}[hn](){D(_n,this,mn).call(this)}[gn](){D(_n,this,mn).call(this)}},yn=new WeakMap,bn=new WeakMap,xn=class{unsafeValue(){return j(yn,this)}constructor(e){T(this,yn,void 0),T(this,bn,new C),k(yn,this,e),j(bn,this).resolve(e)}isLocked(){return j(bn,this).pending}lock(){var e=this;return N(function*(){let t=new C;t.promise.then(t=>{k(yn,e,t)}).catch(S);let n=j(bn,e).promise.then(()=>t);return k(bn,e,t),yield n,new vn(j(yn,e),t)})()}}}));function Cn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function z(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Cn(Object(n),!0).forEach(function(t){m(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Cn(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var B=n((()=>{h()})),wn=n((()=>{})),Tn=n((()=>{})),En=n((()=>{}));function Dn(e,t){this.v=e,this.k=t}var On=n((()=>{}));function V(e){return new Dn(e,0)}var kn=n((()=>{On()}));function An(e){return function(){return new jn(e.apply(this,arguments))}}function jn(e){var t,n;function r(t,n){try{var a=e[t](n),o=a.value,s=o instanceof Dn;Promise.resolve(s?o.v:o).then(function(n){if(s){var c=t===`return`?`return`:`next`;if(!o.k||n.done)return r(c,n);n=e[c](n).value}i(a.done?`return`:`normal`,n)},function(e){r(`throw`,e)})}catch(e){i(`throw`,e)}}function i(e,i){switch(e){case`return`:t.resolve({value:i,done:!0});break;case`throw`:t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(e,i){return new Promise(function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};n?n=n.next=s:(t=n=s,r(e,i))})},typeof e.return!=`function`&&(this.return=void 0)}var Mn=n((()=>{On(),jn.prototype[typeof Symbol==`function`&&Symbol.asyncIterator||`@@asyncIterator`]=function(){return this},jn.prototype.next=function(e){return this._invoke(`next`,e)},jn.prototype.throw=function(e){return this._invoke(`throw`,e)},jn.prototype.return=function(e){return this._invoke(`return`,e)}})),Nn,Pn,Fn,In,Ln=n((()=>{se(),E(),A(),M(),P(),kn(),Mn(),Pn=new WeakMap,Fn=new WeakMap,Nn=Symbol.asyncIterator,In=class{constructor(e){T(this,Pn,void 0),T(this,Fn,void 0),k(Pn,this,e),k(Fn,this,new C)}isClosed(){var e;return!((e=j(Fn,this))!=null&&e.pending)}current(){return j(Pn,this)}value(){var e;return[j(Pn,this),(e=j(Fn,this))==null?void 0:e.promise]}update(e){var t;if(!((t=j(Fn,this))!=null&&t.pending))throw Error(`ObservableValue is closed`);k(Pn,this,e instanceof Function?e(j(Pn,this)):e),j(Fn,this).resolve(j(Pn,this)),k(Fn,this,new C)}close(){var e;(e=j(Fn,this))==null||e.resolve(j(Pn,this)),k(Fn,this,void 0)}waitFor(e){var t=this;return N(function*(){if(e(j(Pn,t)))return j(Pn,t);for(;;){let[n,r]=t.value();if(!r)throw Error(`ObservableValue was closed while waiting for condition`);let i=yield r;if(e(i))return i}})()}[Nn](){var e=this;return An(function*(){for(;;){let[t,n]=e.value();if(yield t,!n)return;yield V(n)}})()}}})),Rn,zn=n((()=>{B(),Rn=(e,t)=>{let n=z({},e);return typeof n==`object`&&t.forEach(e=>{delete n[e]}),n}})),Bn=n((()=>{})),Vn,Hn,Un=n((()=>{h(),Hn=class{constructor(){m(this,`pendingTimeouts`,new Set),m(this,`pendingIntervals`,new Set),m(this,`clearTimeout`,e=>{this.pendingTimeouts.delete(e)&&window.clearTimeout(e)}),m(this,`clearInterval`,e=>{this.pendingIntervals.delete(e)&&window.clearInterval(e)}),m(this,`setTimeout`,(e,t,...n)=>{let r=window.setTimeout(()=>{e(...n),this.clearTimeout(r)},t);return this.pendingTimeouts.add(r),r}),m(this,`setInterval`,(e,t,...n)=>{let r=window.setInterval(()=>{e(...n)},t);return this.pendingIntervals.add(r),r}),m(this,`unload`,()=>{this.pendingIntervals.forEach(this.clearInterval),this.pendingTimeouts.forEach(this.clearTimeout)})}},Vn=Hn,m(Hn,`create`,()=>new Vn)})),Wn,Gn,Kn,qn,Jn=n((()=>{Wn=(e,t=Date.now())=>{let n=e.length;if(n>0){let r=e[n-1];r.end||(r.end=t)}},Gn=(e,t=Date.now())=>{Wn(e),e.push({start:t})},Kn=e=>e.reduce((e,t)=>{var n;return e+(((n=t.end)==null?Date.now():n)-t.start)},0),qn=(e,t,n=Date.now())=>e.reduce((e,r)=>{var i;let a=Math.max(n-t,r.start),o=(i=r.end)==null?n:i;return Math.max(0,o-a)+e},0)}));function Yn(e){try{return e()}catch(e){return e}}var Xn=n((()=>{})),Zn,Qn=n((()=>{Zn=e=>{try{return JSON.parse(e)}catch(e){return}}})),$n=n((()=>{})),er,tr=n((()=>{oe(),h(),B(),er=class{constructor(){var e;m(this,`highEntropyValues`,void 0),(e=self.navigator.userAgentData)==null||e.getHighEntropyValues([`architecture`,`model`,`platformVersion`,`fullVersionList`]).then(e=>{this.highEntropyValues=e}).catch(S)}getUserAgentInformation(){var e;let t=window.location.origin,n=!t||t===`null`?``:`${window.location.pathname}${window.location.search}`.substring(0,1e3),r={locationOrigin:window.location.origin,locationPath:n,ancestorOrigins:((e=window.location.ancestorOrigins)==null?void 0:e.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){var i,a,o,s,c;let e=[...(i=this.highEntropyValues.brands)==null?[]:i];e.sort((e,t)=>e.brand.localeCompare(t.brand));let t=[...(a=this.highEntropyValues.fullVersionList)==null?[]:a];t.sort((e,t)=>e.brand.localeCompare(t.brand));let n=t.map(e=>e.version),l=e.map(e=>e.brand),u=e.map(e=>e.version),d=parseInt((o=(s=this.highEntropyValues.platformVersion)==null?void 0:s.split(`.`)[0])==null?`1`:o,10);return z({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:l,fullVersionBrands:n,majorVersions:u},device:this.highEntropyValues.model||`Other`,os:{family:this.highEntropyValues.platform||`Other`,version:(c=this.highEntropyValues.platformVersion)==null?`1`:c,major_version:Number.isFinite(d)?d:0}}},r)}else return z({userAgent:window.navigator.userAgent},r)}}})),nr,rr=n((()=>{nr=()=>{let e=[...Array(256).keys()].map(e=>e.toString(16).padStart(2,`0`)),t=crypto.getRandomValues(new Uint8Array(16));return t[6]=t[6]&15|64,t[8]=t[8]&63|128,[...t.entries()].map(([t,n])=>[4,6,8,10].includes(t)?`-${e[n]}`:e[n]).join(``)}})),ir,ar,or=n((()=>{P(),ir=function(){var e=N(function*(e){return new Promise(t=>setTimeout(t,e))});return function(t){return e.apply(this,arguments)}}(),ar=function(){var e=N(function*(e,t=Error(`Timeout`)){return new Promise((n,r)=>setTimeout(()=>r(t),e))});return function(t){return e.apply(this,arguments)}}(),function(){var e=N(function*(e,t){throw yield e,Error(t)});return function(t,n){return e.apply(this,arguments)}}()})),H=n((()=>{ae(),ye(),xe(),Ce(),Oe(),Pe(),Ie(),Re(),rt(),rt(),Dt(),Ae(),kt(),Lt(),zt(),se(),Bt(),Ht(),Wt(),ce(),Gt(),$t(),en(),Be(),un(),Sn(),wn(),Tn(),En(),oe(),Ln(),zn(),Bn(),Ft(),pn(),Un(),Jn(),Xn(),Qn(),$n(),tr(),rr(),or()}));H(),h(),P();var sr=class extends Ut{constructor(e){super(),m(this,`config`,void 0),m(this,`hlsUrl`,void 0),m(this,`element`,void 0),m(this,`connectingTimeout`,void 0),m(this,`castingAvailable`,!1),m(this,`updateAuthenticationToken`,e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)}),m(this,`unload`,()=>{this.element&&(this.element.removeEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.removeEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.element.remove())}),m(this,`onAirPlayAvailable`,e=>{switch(e.availability){case`available`:this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(e=>{e&&(this.element.src=this.hlsUrl,this.emit(`available`))});break;case`not-available`:this.castingAvailable=!1;break;default:break}}),m(this,`onAirPlayPlaybackChanged`,()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit(`connected`),this.element.style.display=`block`,this.element.paused&&this.element.play().catch(S)):(this.emit(`disconnected`),this.element.pause(),this.element.src=``,this.element.src=this.hlsUrl,this.element.style.display=`none`)}),this.config=e,this.hlsUrl=this.getHlsUrl(),this.element=document.createElement(`video`),this.element.style.position=`absolute`,this.element.style.top=`0`,this.element.style.bottom=`0`,this.element.style.left=`0`,this.element.style.right=`0`,this.element.style.width=`100%`,this.element.style.height=`100%`,this.element.style.zIndex=`1001`,this.element.style.display=`none`,this.element.id=`vindral-airplay-element`,this.element.slot=`overlay`,this.element.playsInline=!0,this.element.controls=!0,this.element.preload=`metadata`,this.element.addEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.addEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){`webkitShowPlaybackTargetPicker`in this.element&&this.castingAvailable&&(this.element.paused&&(this.element.play().catch(S),this.connectingTimeout=window.setTimeout(()=>{this.casting||(this.element.pause(),this.element.src=``,this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker())}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}getHlsUrl(){let e=new URL(`/api/hls?channelId=${this.config.channelId}`,this.config.url);return this.config.authenticationToken&&e.searchParams.set(`authenticationToken`,this.config.authenticationToken),e.toString()}checkHlsUrl(e){return N(function*(){try{return(yield fetch(e,{method:`HEAD`})).ok}catch(e){return!1}})()}};H(),h(),P();var cr=class extends Ut{constructor(e){var t;super(),t=this,m(this,`state`,`not casting`),m(this,`config`,void 0),m(this,`unloaded`,!1),m(this,`updateAuthenticationToken`,e=>{this.config&&(this.config.options.authenticationToken=e,this.send({type:`updateAuthToken`,token:e}))}),m(this,`unload`,()=>{var e;this.unloaded=!0,(e=this.getSession())==null||e.removeMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage)}),m(this,`init`,N(function*(){return new Promise((e,n)=>{let r=!1,i=setTimeout(()=>{r=!0,n()},1e4);window.__onGCastApiAvailable=a=>{if(r){r=!1;return}if(clearTimeout(i),!a)return n();setTimeout(()=>{try{t.onGCastApiAvailable(),e()}catch(e){n()}},1e3)},t.castLibrariesAdded()&&window.cast?window.__onGCastApiAvailable(!0):t.verifyCastLibraries()})})),m(this,`start`,N(function*(){var e;yield(e=t.getInstance())==null?void 0:e.requestSession()})),m(this,`stop`,()=>{var e;(e=this.getSession())==null||e.endSession(!0)}),m(this,`getReceiverName`,()=>{var e;return((e=this.getSession())==null||(e=e.getCastDevice())==null?void 0:e.friendlyName)||void 0}),m(this,`onGCastApiAvailable`,()=>{var e;let t=this.getInstance();if(!t)throw`cast context should exist`;let n=t.getSessionState(),r=((e=this.config)==null?void 0:e.receiverApplicationId)||void 0;t.setOptions({receiverApplicationId:r,autoJoinPolicy:chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,resumeSavedSession:!0}),t.addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,this.onSessionStateChanged),n===cast.framework.SessionState.SESSION_STARTED&&setTimeout(()=>{this.state=`casting`,this.emit(`resumed`)})}),m(this,`send`,e=>{var t;(t=this.getSession())==null||t.sendMessage(`urn:x-cast:com.vindral.castdata`,e)}),m(this,`onMessage`,(e,t)=>{if(e===`urn:x-cast:com.vindral.castdata`)try{let e=JSON.parse(t);switch(e.type){case`metadata`:this.emit(`metadata`,e.metadata);break;case`serverWallclockTime`:this.emit(`server wallclock time`,e.serverWallclockTime);break;default:break}}catch(e){}}),m(this,`onSessionStarted`,()=>{var e;(e=this.getSession())==null||e.addMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.send({type:`start`,config:this.config})}),m(this,`onSessionStateChanged`,e=>{if(!this.unloaded)switch(e.sessionState){case cast.framework.SessionState.SESSION_START_FAILED:this.state=`not casting`,this.emit(`failed`);break;case cast.framework.SessionState.SESSION_ENDED:this.state=`not casting`,this.emit(`disconnected`);break;case cast.framework.SessionState.SESSION_ENDING:break;case cast.framework.SessionState.SESSION_RESUMED:this.onSessionStarted(),this.state=`casting`,this.emit(`resumed`);break;case cast.framework.SessionState.SESSION_STARTED:this.onSessionStarted(),this.state=`casting`,this.emit(`connected`);break;case cast.framework.SessionState.SESSION_STARTING:break;default:break}}),m(this,`getInstance`,()=>{var e;return(e=window.cast)==null?void 0:e.framework.CastContext.getInstance()}),m(this,`getSession`,()=>{var e;return(e=this.getInstance())==null?void 0:e.getCurrentSession()}),m(this,`castLibrariesAdded`,()=>!!(document.querySelector(`#vindralCastFrameworkLib`)&&document.querySelector(`#vindralCastSenderLib`))),m(this,`verifyCastLibraries`,()=>{if(this.castLibrariesAdded())return;let e=document.createElement(`script`);e.type=`text/javascript`,e.id=`vindralCastFrameworkLib`,e.src=`//www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js`,document.head.appendChild(e);let t=document.createElement(`script`);t.type=`text/javascript`,t.id=`vindralCastSenderLib`,t.src=`//www.gstatic.com/cv/js/sender/v1/cast_sender.js`,document.head.appendChild(t)}),this.config=e}get casting(){return this.state===`casting`}get volume(){var e,t;return(e=(t=this.getSession())==null?void 0:t.getVolume())==null?0:e}set volume(e){var t;(t=this.getSession())==null||t.setVolume(e)}get language(){var e;return(e=this.config)==null||(e=e.options)==null?void 0:e.language}set language(e){this.config&&(this.config.options.language=e,this.send({type:`setLanguage`,language:e}))}get channelId(){var e;return((e=this.config)==null?void 0:e.options.channelId)||``}set channelId(e){this.config&&(this.config.options.channelId=e,this.send({type:`setChannelId`,channelId:e}))}},lr=e=>{switch(e){case`h264`:case`h265`:case`av1`:return`video`;case`aac`:case`opus`:case`mp3`:return`audio`;case`webvtt`:return`text`;default:throw Error(`Unknown codec`)}};function ur(e){if(e.startsWith(`opus`))return`opus`;if(e.startsWith(`mp4a`))return`aac`;if(e.startsWith(`avc1`))return`h264`;if(e.startsWith(`hvc1`)||e.startsWith(`hev1`))return`h265`;if(e.startsWith(`av01`))return`av1`;if(e.startsWith(`webvtt`))return`webvtt`}H();function dr(e){return!(typeof e.edges[0]==`string`||e.channels[0]&&!(`catalog`in e.channels[0]))}function fr(e){return e.tracks.filter(e=>!!e.codec).filter(e=>ur(e.codec||``)).map((e,t)=>{let n=e.codec,r=e.bitrate;be(n,`codec is required`),be(r!==void 0,`bitrate is required`);let i=ur(n);if(be(i,`codec is required`),lr(i)===`audio`){let a=e.samplerate||0;return{track:e,id:t,codec:i,codecString:n,bitRate:r,channels:e.channelConfig===`stereo`?2:1,sampleRate:a,language:e.language}}return lr(i)===`text`?{track:e,id:t,bitRate:0,codec:i,kind:`subtitles`,codecString:n,label:e.label,language:e.language}:(be(e.width,`width is required`),be(e.height,`width is required`),be(e.framerate,`framerate is required`),{track:e,id:t,codec:i,bitRate:r,codecString:n,width:e.width,height:e.height,frameRate:e.framerate})}).sort((e,t)=>e.bitRate-t.bitRate)}var pr=e=>`width`in e&&typeof e.width==`number`,mr=e=>`sampleRate`in e&&typeof e.sampleRate==`number`,hr=e=>{switch(e.codec){case`opus`:return`audio/mp4; codecs="opus"`;case`mp3`:return`audio/mpeg`;case`webvtt`:return`text/vtt`;case`aac`:return e.codecString?`audio/mp4; codecs="${e.codecString}"`:`audio/mp4`;case`h264`:case`h265`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`;case`av1`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`}},gr=()=>2**53-1,_r=()=>({width:2**53-1,height:2**53-1}),vr=e=>!(typeof e!=`object`||!e||!(`type`in e));H();var yr={sizeBasedResolutionCapEnabled:!0,pictureInPictureEnabled:!0,abrEnabled:!0,burstEnabled:!1,mseEnabled:!0,mseOpusEnabled:!0,muted:!1,volume:1,minBufferTime:1500,maxBufferTime:1500,logLevel:nn.OFF,maxSize:_r(),maxVideoBitRate:gr(),maxAudioBitRate:gr(),maxInitialBitRate:2.5*1e3*1e3,tags:[],media:`audio+video`,poster:!0,reconnectHandler:e=>e.reconnectRetries<30,iosWakeLockEnabled:!1,telemetryEnabled:!0,streamToMediaElementEnabled:!1,iosMediaElementEnabled:!1,pauseSupportEnabled:!0,webcodecsHardwareAcceleration:`no-preference`,offscreenCanvasEnabled:void 0,advanced:{},videoCodecs:[`av1`,`h264`,`h265`],webtransportEnabled:!0};function br(e){return typeof e==`function`?this.then(t=>Promise.resolve(e()).then(()=>t),t=>Promise.resolve(e()).then(()=>{throw t})):this.then()}function xr(e=Promise){return typeof e.prototype.finally!=`function`&&Object.defineProperty(e.prototype,`finally`,{configurable:!0,enumerable:!1,value:br,writable:!0}),e.prototype.finally}xr();var Sr=e=>{e.width=320,e.height=180,e.style.width=`100%`,e.style.position=`relative`,e.style.backgroundColor=`#000`};R(),E(),h(),B(),M(),A(),O();var Cr={backgroundColor:`rgba(0,0,0,0.6)`,textPadding:8,fontSize:`28px`,lineGap:16},wr=new WeakMap,Tr=new WeakMap,Er=new WeakMap,Dr=new WeakMap,Or=new WeakSet,kr=class{constructor(){L(this,Or),T(this,wr,[]),T(this,Tr,document.createElement(`canvas`)),T(this,Er,void 0),T(this,Dr,window.devicePixelRatio||1),m(this,`config`,z({},Cr));let e=j(Tr,this).getContext(`2d`,{alpha:!0});if(!e)throw Error(`Failed to create 2d context`);k(Er,this,e),D(Or,this,jr).call(this)}get canvas(){return j(Tr,this)}setActiveCues(e){k(wr,this,e)}render(e,t=!1){let n=j(wr,this).flatMap(t=>t.text.split(`
2
2
  `).flatMap(t=>D(Or,this,Mr).call(this,t,e.width)).map(e=>{D(Or,this,jr).call(this);let t=j(Er,this).measureText(e);return{text:e,measurement:t,size:{height:t.fontBoundingBoxAscent+t.fontBoundingBoxDescent+this.config.textPadding*2,width:t.width+this.config.textPadding*2}}})),r=Math.max(...n.map(e=>e.size.width)),i=n.reduce((e,{size:t})=>e+t.height,0)+(n.length-1)*this.config.lineGap,a=0;D(Or,this,Ar).call(this,r,i),j(Er,this).clearRect(0,0,j(Tr,this).width,j(Tr,this).height);for(let{size:e,text:t}of n)D(Or,this,jr).call(this),j(Er,this).fillStyle=this.config.backgroundColor,j(Er,this).fillRect(0,a,e.width,e.height),D(Or,this,jr).call(this),j(Er,this).fillText(t,this.config.textPadding,a+this.config.textPadding),a+=e.height+this.config.lineGap;t&&(j(Er,this).strokeStyle=`red`,j(Er,this).strokeRect(0,0,e.width,j(Tr,this).height))}};function Ar(e,t){j(Tr,this).width=e*j(Dr,this),j(Tr,this).height=t*j(Dr,this),j(Er,this).setTransform(j(Dr,this),0,0,j(Dr,this),0,0),this.canvas.style.width=`${e}px`,this.canvas.style.height=`${t}px`}function jr(){j(Er,this).fillStyle=`white`,j(Er,this).textAlign=`left`,j(Er,this).textBaseline=`top`,j(Er,this).font=`${this.config.fontSize} sans-serif`}function Mr(e,t){let n=[],r=e.split(` `),i=``;for(;r.length>0;){D(Or,this,jr).call(this);let e=0;for(;j(Er,this).measureText(i+(i.length>0?` `:``)+r[0]).width+this.config.textPadding*2<=t&&r.length>0;)e++,i+=(i.length>0?` `:``)+r.shift();if(e===0){n.push(r.shift()||``),i=``;continue}n.push(i),i=``}return n}function Nr(e,t){let n=t*.05,r=e*.035;return`${Math.max(Math.round(Math.min(n,r)),16)}px`}function Pr(e){var t;let{subtitleWidth:n,subtitleHeight:r,canvasWidth:i,canvasHeight:a,containerWidth:o,bottomPadding:s}=e,c=(t=e.baseMargin)==null?20:t,l=i/o,u=n*l,d=r*l;return{drawWidth:u,drawHeight:d,x:(i-u)/2,y:a-d-(s+c)*l}}function Fr(e,t,n){return{scaleX:2*e.drawWidth/t,scaleY:2*e.drawHeight/n,translateX:2*e.x/t-1,translateY:1-2*e.y/n}}H(),h();var Ir={width:256,height:144},Lr=class extends Ut{constructor(){super(),m(this,`canvas`,document.createElement(`canvas`)),m(this,`context`,null),m(this,`size`,Ir),m(this,`hasWarnedNoVideoFrame`,!1),m(this,`subtitleRenderer`,null),m(this,`hasActiveSubtitles`,!1),m(this,`load`,()=>{if(this.hasWarnedNoVideoFrame=!1,this.context=this.canvas.getContext(`2d`,{alpha:!1,desynchronized:!0}),!this.context)throw Error(`Failed to get 2D rendering context`);this.setSize(Ir)}),m(this,`unload`,()=>{this.context=null,this.subtitleRenderer=null,this.hasActiveSubtitles=!1,this.setSize(Ir)}),m(this,`setActiveCues`,(e,t)=>{this.subtitleRenderer||(this.subtitleRenderer=new kr),this.subtitleRenderer.config.fontSize=Nr(t.width,t.height),this.subtitleRenderer.setActiveCues(e),this.subtitleRenderer.render(t),this.hasActiveSubtitles=e.length>0}),m(this,`render`,(e,t=0)=>{if(!this.context)return;if(!e.videoFrame){this.hasWarnedNoVideoFrame||(console.warn(`[VideoFrameCanvas2DRenderer] No VideoFrame in sample, cannot render`),this.hasWarnedNoVideoFrame=!0);return}let n=e.videoFrame;this.setSize({width:e.width,height:e.height});try{this.context.drawImage(n,0,0,this.canvas.width,this.canvas.height),this.renderSubtitles(t)}catch(e){this.emit(`context lost`,e instanceof Error?e:Error(`Failed to render VideoFrame`))}}),m(this,`renderSubtitles`,e=>{if(!this.hasActiveSubtitles||!this.subtitleRenderer||!this.context)return;let t=this.subtitleRenderer.canvas;if(t.width===0||t.height===0)return;let n=window.devicePixelRatio||1,r=this.canvas.clientWidth||this.canvas.width,i=Pr({subtitleWidth:t.width/n,subtitleHeight:t.height/n,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,containerWidth:r,bottomPadding:e});this.context.drawImage(t,i.x,i.y,i.drawWidth,i.drawHeight)}),m(this,`setSize`,e=>{e.width===this.size.width&&e.height===this.size.height||(this.size=e,this.canvas.width=e.width,this.canvas.height=e.height,this.context&&(this.context.fillStyle=`#000`,this.context.fillRect(0,0,e.width,e.height)))}),Sr(this.canvas)}},Rr=`
3
3
  precision mediump float;
4
4
  uniform sampler2D texture;
@@ -1220,7 +1220,7 @@ var __async = (__this, __arguments, generator) => {
1220
1220
  });
1221
1221
  })();
1222
1222
  `,nb=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,tb],{type:`text/javascript;charset=utf-8`})})),ib=r({VideoDecoderWorkerContext:()=>ob}),ab,ob,sb=n((()=>{H(),rb(),h(),B(),P(),ob=class{get isWebCodecs(){return this._isWebCodecs}get usingOffscreenCanvas(){return this._usingOffscreenCanvas}constructor(e,t,n,r,i=!1,a=!1){m(this,`decodedSamples`,[]),m(this,`codedSamples`,[]),m(this,`decoder`,void 0),m(this,`logger`,void 0),m(this,`errors`,new w(10)),m(this,`pool`,void 0),m(this,`getCurrentTime`,void 0),m(this,`_usingOffscreenCanvas`,void 0),m(this,`_isWebCodecs`,void 0),m(this,`_renderedFrameCount`,0),m(this,`_rendererDroppedFrameCount`,0),m(this,`statisticsQueue`,new w(1e3)),m(this,`samplesInTransitToWorker`,0),m(this,`workerPendingDecodeCount`,0),m(this,`targetSamplesInBatch`,4),m(this,`maxSamplesInFlight`,20),m(this,`unload`,()=>{this.decoder.postMessage({type:`unload`}),this.decoder.removeEventListener(`message`,this.onDecoderEvent),this.decoder.terminate(),this.statisticsQueue.clear(),this.codedSamples=[],this.decodedSamples.forEach(e=>{var t;return(t=e.videoFrame)==null?void 0:t.close()}),this.decodedSamples=[],this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0}),m(this,`enqueue`,e=>{this.codedSamples.push(z({},e)),this.flushQueuedSamples()}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{this.decoder.postMessage({type:`subtitle cues`,cues:e,containerWidth:t,containerHeight:n,devicePixelRatio:r,bottomPadding:i})}),m(this,`prepareOutputBuffers`,e=>{this._isWebCodecs||e.forEach(e=>{let t=Math.ceil(e.width/16)*16*(Math.ceil(e.height/16)*16)*3/2;e.buffer=this.pool.get(t)})}),m(this,`flushQueuedSamples`,()=>{for(;this.codedSamples.length>0&&this.samplesInFlight()<this.maxSamplesInFlight;){let e=Math.max(this.maxSamplesInFlight-this.samplesInFlight(),0),t=Math.min(this.targetSamplesInBatch,this.codedSamples.length,e);if(t<=0)return;let n=this.codedSamples.slice(0,t);this.codedSamples=this.codedSamples.slice(t),this.prepareOutputBuffers(n),this.sendSamples(n),this.samplesInTransitToWorker+=n.length}}),m(this,`initSegment`,e=>{let t={type:`init segment`,initSegment:e};this.decoder.postMessage(t)}),m(this,`take`,()=>this.decodedSamples.shift()),m(this,`samplesInFlight`,()=>this.samplesInTransitToWorker+this.workerPendingDecodeCount),m(this,`getRenderStatistics`,()=>({renderedFrameCount:this._renderedFrameCount,rendererDroppedFrameCount:this._rendererDroppedFrameCount})),m(this,`takeEstimatedStatistics`,()=>this.statisticsQueue.pop()),m(this,`sendSamples`,e=>{var t;let n={type:`decode samples`,samples:e,timestamp:Date.now(),currentTime:(t=this.getCurrentTime)==null?void 0:t.call(this)},r=this._isWebCodecs?e.map(e=>e.data):e.flatMap(e=>[e.data,e.buffer]).filter(e=>e!==void 0);this.decoder.postMessage(n,r)}),m(this,`onDecoderEvent`,e=>{switch(e.data.type){case`ready`:break;case`error`:this.errors.push(Error(e.data.message)),this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0;break;case`decoded samples`:{typeof e.data.samplesAcceptedCount==`number`&&e.data.samplesAcceptedCount>0&&(this.samplesInTransitToWorker=Math.max(0,this.samplesInTransitToWorker-e.data.samplesAcceptedCount)),typeof e.data.decoderPendingCount==`number`&&e.data.decoderPendingCount>=0&&(this.workerPendingDecodeCount=e.data.decoderPendingCount);let t=e.data.timestamp,n=Date.now()-t;if(typeof e.data.estimatedSampleCount==`number`&&e.data.estimatedSampleCount>0&&typeof e.data.estimatedDecodeTimeSum==`number`&&typeof e.data.estimatedTransportTimeToWorkerSum==`number`){let t=e.data.estimatedSampleCount,r=e.data.estimatedDecodeTimeSum/t,i=e.data.estimatedTransportTimeToWorkerSum/t+n;for(let e=0;e<t;e++)this.statisticsQueue.push({decodeTime:r,transportTime:i})}e.data.samples.forEach(e=>{e.statistics&&(e.statistics.transportTimeFromWorker=n)}),typeof e.data.renderedFrameCount==`number`&&(this._renderedFrameCount=e.data.renderedFrameCount),typeof e.data.rendererDroppedFrameCount==`number`&&(this._rendererDroppedFrameCount=e.data.rendererDroppedFrameCount),this.decodedSamples.push(...e.data.samples),this.flushQueuedSamples()}break}}),this.decoder=e,this.logger=t,this.pool=n,this.getCurrentTime=r,this._isWebCodecs=i,this._usingOffscreenCanvas=a,this.decoder.addEventListener(`message`,this.onDecoderEvent)}error(){return this.errors.pop()}},ab=ob,m(ob,`create`,function(){var e=N(function*(e,t,n,r=!1,i=`no-preference`,a,o){let s=new eb,{isWebCodecs:c,usingOffscreenCanvas:l}=yield new Promise((n,o)=>{let c=!1,l=setTimeout(()=>{c||(c=!0,u(Error(`Decoder worker initialization timed out`)))},1e4),u=e=>{if(c=!0,clearTimeout(l),s.removeEventListener(`message`,d),s.terminate(),e instanceof Error){o(e);return}o(Error(`Failed to initialize decoder worker`))},d=e=>{if(!c)switch(c=!0,clearTimeout(l),s.removeEventListener(`message`,d),e.data.type){case`ready`:n({isWebCodecs:e.data.isWebCodecs,usingOffscreenCanvas:e.data.usingOffscreenCanvas});break;case`error`:var t;u(Error((t=e.data.message)==null?`Failed to initialize decoder worker`:t));break;default:u(Error(`Failed to initialize decoder worker`));break}};s.addEventListener(`message`,d);let f={type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:a};try{a?s.postMessage(f,[a]):s.postMessage(f)}catch(n){let o=n instanceof DOMException&&n.name===`DataCloneError`;if(a&&o){e.warn(`Failed to transfer OffscreenCanvas to worker, falling back to main-thread rendering`,n);try{s.postMessage({type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:void 0})}catch(e){u(e)}}else u(n)}});return new ab(s,e,n,o,c,l)});return function(t,n,r){return e.apply(this,arguments)}}())}));Ei(),H(),h(),B(),P();var cb=5,lb=100,ub=1e3,db=class e{constructor(e,t,n,r,i=!1,a=!1,o=!1){m(this,`timers`,Hn.create()),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`trackContexts`,void 0),m(this,`playbackSource`,void 0),m(this,`isSuspended`,!1),m(this,`_webCodecsInUse`,void 0),m(this,`_audioWebCodecsInUse`,void 0),m(this,`_offscreenCanvasInUse`,void 0),m(this,`currentVideoDecodeRate`,2),m(this,`decodeRateGraceIntervals`,3),m(this,`isAudioEmitRetryScheduled`,!1),m(this,`videoKeyframeTimestamps`,[]),m(this,`load`,()=>{let e=this._audioWebCodecsInUse?20:lb;this.timers.setInterval(this.emitDecodedFrames,e),this.timers.setInterval(this.emitDecodeRate,ub),this.emitter.on(`init segment`,this.onInitSegment),this.emitter.on(`coded sample`,this.decode)}),m(this,`unload`,()=>{this.trackContexts.forEach(({decoderContext:e})=>e.unload()),this.timers.unload(),this.isAudioEmitRetryScheduled=!1,this.videoKeyframeTimestamps=[],this.emitter.off(`init segment`,this.onInitSegment),this.emitter.off(`coded sample`,this.decode)}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.isSuspended=!1}),m(this,`getBuffer`,e=>{var t;return(t=this.trackContexts.get(e))==null?void 0:t.buffer}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`videoDecodeRate`,()=>this.currentVideoDecodeRate),m(this,`calculateVideoDecodeRate`,()=>{var e;if(this._webCodecsInUse)return 2;let t=this.trackContexts.get(`video`);if(!t)return 2**53-1;let n=(e=t.sampleDuration)==null?40:e,r=Nt(t.decodeTime.items()),i=Nt(t.transportTime.items()),a=r.average+i.average;return a<=0?2:Math.min(n/a,100)}),m(this,`getStatistics`,()=>{var e,t,n,r,i;let a=this.trackContexts.get(`video`),o=Nt((e=a==null?void 0:a.decodeTime.items())==null?[]:e),s=Nt((t=a==null?void 0:a.transportTime.items())==null?[]:t),c=Nt((n=(r=this.trackContexts.get(`audio`))==null?void 0:r.decodeTime.items())==null?[]:n),l=this._offscreenCanvasInUse?a==null||(i=a.getRenderStatistics)==null?void 0:i.call(a):void 0;return z(z({videoDecodeRate:this.videoDecodeRate(),videoDecodeTime:o,audioDecodeTime:c,videoTransportTime:s,videoKeyframeIntervalMs:jt(this.videoKeyframeTimestamps)},l?{renderedFrameCount:l.renderedFrameCount,rendererDroppedFrameCount:l.rendererDroppedFrameCount}:{}),{},{videoRenderer:this._offscreenCanvasInUse?`OffscreenCanvas`:`Canvas`,videoDecoder:this._webCodecsInUse?`WebCodecs`:`WASM`,audioRenderer:`AudioContext`,audioDecoder:this._audioWebCodecsInUse?`WebCodecs`:`WASM`})}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{var a;if(!this._offscreenCanvasInUse)return;let o=(a=this.trackContexts.get(`video`))==null?void 0:a.decoderContext;o&&`setSubtitleCues`in o&&o.setSubtitleCues(e,t,n,r,i)}),m(this,`onInitSegment`,({initSegment:e})=>{var t;let n=(t=this.trackContexts.get(e.type))==null?void 0:t.decoderContext;if(!n)throw new U(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});n.initSegment(e)}),m(this,`decode`,e=>{let t=this.trackContexts.get(e.type);if(!t)throw new U(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});if(this.isSuspended)return;t.sampleDuration=e.duration/e.timescale*1e3;let n=e.compositionTimeOffset||0,{decoderContext:r,buffer:i}=t,a=(e.timestamp+n)/e.timescale*1e3,o=e.duration/e.timescale*1e3,s=i[i.length-1];if(!s||a-cb>s.end?i.push({start:a,end:a+o}):a+o*5<s.end?(t.buffer=[{start:a,end:a+o}],e.type===`video`&&(this.videoKeyframeTimestamps=[])):s.end=a+o,e.type===`video`&&e.isSync){let e=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];e!==void 0&&a<e&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(a),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}r.enqueue(e),this.emitDecodedFrames(),this._audioWebCodecsInUse&&e.type===`audio`&&this.scheduleAudioEmitRetry()}),m(this,`scheduleAudioEmitRetry`,()=>{this.isAudioEmitRetryScheduled||(this.isAudioEmitRetryScheduled=!0,this.timers.setTimeout(()=>{this.isAudioEmitRetryScheduled=!1,this.emitDecodedFrames()},0))}),m(this,`emitDecodedFrames`,()=>{let e;this.updateBufferState(),this.trackContexts.forEach((t,n)=>{var r,i,a,o;let s;for(;(s=(r=(i=t.decoderContext).error)==null?void 0:r.call(i))!==void 0;)this.emitter.emit(`error`,oi(!1,s));for(;(e=t.decoderContext.take())!==void 0;){let{statistics:n}=e;n&&(t.decodeTime.push(n.decodeTime),t.transportTime.push((n.transportTimeToWorker+n.transportTimeFromWorker)/n.samplesInBatch)),this.emitter.emit(`decoded frame`,e)}let c=(a=(o=t.decoderContext).takeEstimatedStatistics)==null?void 0:a.call(o);for(;c!==void 0;){var l,u;t.decodeTime.push(c.decodeTime),t.transportTime.push(c.transportTime),c=(l=(u=t.decoderContext).takeEstimatedStatistics)==null?void 0:l.call(u)}})}),m(this,`emitDecodeRate`,()=>{if(this.decodeRateGraceIntervals>0){this.decodeRateGraceIntervals--;return}this.currentVideoDecodeRate=this.calculateVideoDecodeRate(),this.emitter.emit(`video decode rate`,this.currentVideoDecodeRate)}),m(this,`updateBufferState`,()=>{let e;if(this.trackContexts.forEach(t=>{if(!e)e=t.buffer;else{var n,r,i,a;let o=(n=(r=t.buffer[t.buffer.length-1])==null?void 0:r.end)==null?0:n;((i=(a=e[e.length-1])==null?void 0:a.end)==null?0:i)>o&&(e=t.buffer)}}),!e)return;let t=this.playbackSource.currentTime,n=!0;this.trackContexts.forEach(e=>{e.buffer.some(e=>e.start<=t&&t<e.end)||(n=!1)});let r=n?`playing`:`buffering`;this.emitter.emit(`buffer state`,{buffered:e,currentTime:this.playbackSource.currentTime,isPaused:this.playbackSource.isPaused,playbackState:r})}),this.logger=t,this.emitter=e,this.trackContexts=n,this.playbackSource=r,this._webCodecsInUse=i,this._audioWebCodecsInUse=a,this._offscreenCanvasInUse=o}static create(t,n,r,i,a,o,s=!1,c=`no-preference`,l){return N(function*(){let u=new Map,d=new Set,f=!1,p=!1,m=!1;for(let e of i){if(d.has(e.type)){n.warn(`Received duplicate track type for decoder initialization. Ignoring subsequent track.`,{trackType:e.type,codec:e.codec,mimeType:e.mimeType});continue}switch(d.add(e.type),e.type){case`audio`:{let t,r,i=!1;if(s){let{WebCodecsAudioDecoderContext:a}=yield Promise.resolve().then(()=>(Hy(),Ry));if(i=a.isSupported(),i)try{t=yield a.create(n.createContext(`WebCodecsAudio`)),p=!0}catch(t){r=t instanceof Error?t:Error(`Failed to initialize WebCodecs audio decoder`),e.codec===`opus`&&n.warn(`Failed to initialize WebCodecs audio decoder, falling back to WASM Opus decoder`,{codec:e.codec,error:r})}}if(!t)if(e.codec===`opus`){let{OpusDecoderContext:n}=yield Promise.resolve().then(()=>($y(),Xy));t=yield n.create(e.sampleRate||48e3,e.channels||2)}else{let t=s?r?`WebCodecs audio decoder initialization failed: ${r.message}`:i?`WebCodecs audio decoder could not be initialized.`:`WebCodecs AudioDecoder API is not supported in this environment.`:`WebCodecs audio decoding is disabled.`;throw si(e.codec,t,r)}u.set(e.type,{buffer:[],decoderContext:t,decodeTime:new w(100),transportTime:new w(100),sampleDuration:40});break}case`video`:{let{VideoDecoderWorkerContext:t}=yield Promise.resolve().then(()=>(sb(),ib)),i=yield t.create(n.createContext(`VideoDecoderWorker`),r,o,s,c,l,()=>a.currentTime);f=i.isWebCodecs,m=i.usingOffscreenCanvas,u.set(e.type,{buffer:[],decoderContext:i,decodeTime:new w(100),transportTime:new w(100),sampleDuration:40,getRenderStatistics:i.getRenderStatistics});break}default:break}}return new e(t,n,u,a,f,p,m)})()}};h();var fb,pb=class{constructor(e){m(this,`emitter`,void 0),m(this,`isVisibleCount`,0),m(this,`isHiddenCount`,0),m(this,`isOnlineCount`,0),m(this,`isOfflineCount`,0),m(this,`isActive`,document.visibilityState===`visible`),m(this,`unload`,()=>{document.removeEventListener(`visibilitychange`,this.onVisibilityChanged),window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`online`,this.onOnline),window.removeEventListener(`offline`,this.onOffline)}),m(this,`load`,()=>{document.addEventListener(`visibilitychange`,this.onVisibilityChanged),window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`online`,this.onOnline),window.addEventListener(`offline`,this.onOffline)}),m(this,`unsuspend`,()=>{}),m(this,`getStatistics`,()=>{var e,t,n,r,i;return{isVisible:this.isVisible,isOnline:this.isOnline,isVisibleCount:this.isVisibleCount,isHiddenCount:this.isHiddenCount,isOnlineCount:this.isOnlineCount,isOfflineCount:this.isOfflineCount,navigatorRtt:(e=navigator.connection)==null?void 0:e.rtt,navigatorEffectiveType:(t=navigator.connection)==null?void 0:t.effectiveType,navigatorConnectionType:(n=navigator.connection)==null?void 0:n.type,navigatorSaveData:(r=navigator.connection)==null?void 0:r.saveData,navigatorDownlink:(i=navigator.connection)==null?void 0:i.downlink}}),m(this,`onOnline`,()=>this.isOnlineCount++),m(this,`onOffline`,()=>this.isOfflineCount++),m(this,`onPageHide`,e=>this.emitter.emit(`pagehide`,e)),m(this,`onVisibilityChanged`,()=>{this.setIsActive(document.visibilityState===`visible`)}),m(this,`setIsActive`,e=>{e!==this.isActive&&(this.emitter.emit(`page active`,e),e?this.isVisibleCount++:this.isHiddenCount++),this.isActive=e}),this.emitter=e}get isOnline(){return navigator.onLine}get isVisible(){return document.visibilityState===`visible`}};fb=pb,m(pb,`create`,e=>new fb(e)),H(),h(),B();var mb,hb=e=>(t,n,r)=>t.timestamp<=n||t.timestampAdded<=r-e,gb=class e{constructor(t,n,r){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`waitingEvents`,[]),m(this,`isTriggered`,hb(e.EVENT_TIMEOUT)),m(this,`timeSource`,void 0),m(this,`timers`,new Hn),m(this,`load`,()=>{this.timers.setInterval(this.onBufferedStateChanged,e.EVENT_CHECK_INTERVAL),this.emitter.on(`add event`,this.addEvent)}),m(this,`unload`,()=>{this.timers.unload(),this.emitter.off(`add event`,this.addEvent)}),m(this,`addEvent`,e=>{this.logger.debug(`Adding event`,{event:e}),!this.waitingEvents.some(t=>t.id!==void 0&&t.id===e.id)&&this.waitingEvents.push(z(z({},e),{},{timestampAdded:Date.now()}))}),m(this,`extractEvent`,(e,t)=>{t.type===`video`&&e.channelId!==t.channelId&&this.addEvent({type:`channel switch`,channelId:t.channelId,timestamp:t.timestamp/t.timescale*1e3}),t.type===`audio`&&e.type===`audio`&&t.language!==void 0&&t.language!==e.language&&this.addEvent({type:`language switch`,language:t.language,timestamp:t.timestamp/t.timescale*1e3})}),m(this,`onBufferedStateChanged`,()=>{var e;let t=Date.now(),n=(e=this.timeSource.drift)==null?0:e,r=this.timeSource.serverCurrentTime-n;if(this.waitingEvents.length===0)return;let i=this.waitingEvents.filter(e=>this.isTriggered(e,r,t));this.waitingEvents=this.waitingEvents.filter(e=>!this.isTriggered(e,r,t)),i.forEach(e=>{this.logger.debug(`Emitting event`,{event:e}),this.emitter.emit(`event`,e)})}),this.logger=n,this.emitter=t,this.timeSource=r}};mb=gb,m(gb,`EVENT_TIMEOUT`,5e3),m(gb,`EVENT_CHECK_INTERVAL`,20),m(gb,`create`,(e,t,n)=>new mb(e,t,n)),Ei(),H(),h();var _b,vb=class e{constructor(t){m(this,`emitter`,void 0),m(this,`timers`,Hn.create()),m(this,`bytesReceived`,new Map),m(this,`timeoutInterval`,void 0),m(this,`lastBytesUpdated`,Date.now()),m(this,`load`,()=>{this.emitter.on(`connection state`,this.onConnectionState),this.timers.setInterval(()=>this.bytesReceived.forEach(e=>e.tick()),100)}),m(this,`unload`,()=>{this.emitter.off(`connection state`,this.onConnectionState),this.timers.unload()}),m(this,`averageBitRate`,e=>{var t,n;return((t=(n=this.bytesReceived.get(e))==null?void 0:n.average)==null?0:t)*8}),m(this,`totalBytesReceived`,()=>{let e=0;return this.bytesReceived.forEach(t=>{e+=t.total}),e}),m(this,`add`,(t,n)=>{let r=this.bytesReceived.get(t);r||(r=new It(20),this.bytesReceived.set(t,r)),n>0&&(this.lastBytesUpdated=Date.now(),this.timeoutInterval||(this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))),r.add(n)}),m(this,`getStatistics`,()=>({bytesReceived:this.totalBytesReceived(),videoBitRate:this.averageBitRate(`video`),audioBitRate:this.averageBitRate(`audio`)})),m(this,`onConnectionState`,t=>{this.clearTimeoutInterval(),t===`connected`&&(this.lastBytesUpdated=Date.now(),this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))}),m(this,`checkTimeout`,()=>{let t=Date.now()-this.lastBytesUpdated;if(this.totalBytesReceived()===0&&t>e.NO_DATA_ERROR_TIMEOUT){this.emitter.emit(`error`,yi()),this.emitter.emit(`reconnect`,`no incoming data`),this.clearTimeoutInterval();return}t>e.NO_DATA_TIMEOUT&&this.totalBytesReceived()>0&&(this.emitter.emit(`no data timeout`,this.totalBytesReceived()),this.clearTimeoutInterval())}),m(this,`clearTimeoutInterval`,()=>{this.timeoutInterval&&(this.timers.clearInterval(this.timeoutInterval),this.timeoutInterval=void 0)}),this.emitter=t}};_b=vb,m(vb,`NO_DATA_ERROR_TIMEOUT`,20*1e3),m(vb,`NO_DATA_TIMEOUT`,5*1e3),m(vb,`UPDATE_RECEIVED_BYTES_INTERVAL`,1e3),m(vb,`create`,e=>new _b(e)),H(),h();var yb=1e3,bb=50,xb=class e{constructor(e){m(this,`logger`,void 0),m(this,`trackingState`,new Map),m(this,`runningJitter`,new Map),m(this,`recentJitterSamples`,new Map),m(this,`load`,()=>{this.logger.debug(`JitterModule loaded`)}),m(this,`unload`,()=>{this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear(),this.logger.debug(`JitterModule unloaded`)}),this.logger=e}static create(t){return new e(t)}getTrackingKey(e,t){return`${e}-${t}`}recordSample(e){var t,n,r,i;let a=this.getTrackingKey(e.type,e.renditionId),o=(t=(n=globalThis.performance)==null||(r=n.now)==null?void 0:r.call(n))==null?Date.now():t,s=e.timestamp/e.timescale*1e3,c=this.trackingState.get(a);if(!c){this.trackingState.set(a,{lastArrivalTime:o,lastTimestampMs:s,jitterSamples:new w(yb),interArrivalTimes:new w(yb)}),this.runningJitter.set(a,0),this.recentJitterSamples.set(a,new w(bb));return}let l=s-c.lastTimestampMs;if(l<=0){c.lastArrivalTime=o,c.lastTimestampMs=s;return}let u=o-c.lastArrivalTime,d=Math.abs(u-l);c.jitterSamples.push(d),c.interArrivalTimes.push(u);let f=(i=this.runningJitter.get(a))==null?0:i,p=f+(d-f)/16;this.runningJitter.set(a,p);let m=this.recentJitterSamples.get(a);m||(m=new w(bb),this.recentJitterSamples.set(a,m)),m.push(d),c.lastArrivalTime=o,c.lastTimestampMs=s}getJitterForType(e){for(let[i,a]of this.trackingState)if(i.startsWith(e)){var t,n,r;if(a.jitterSamples.items().length<1)return;let e=(t=this.runningJitter.get(i))==null?0:t,{min:o,max:s,average:c}=Nt((n=(r=this.recentJitterSamples.get(i))==null?void 0:r.items())==null?[]:n);return{min:Math.round(o),max:Math.round(s),last:Math.round(c),average:Math.round(e)}}}getRunningJitter(e){for(let[t,n]of this.runningJitter)if(t.startsWith(e))return n}reset(e,t){if(e!==void 0&&t!==void 0){let n=this.getTrackingKey(e,t);this.trackingState.delete(n),this.runningJitter.delete(n),this.recentJitterSamples.delete(n)}else if(e!==void 0)for(let t of this.trackingState.keys())t.startsWith(e)&&(this.trackingState.delete(t),this.runningJitter.delete(t),this.recentJitterSamples.delete(t));else this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear()}getStatistics(){return{audioJitter:this.getJitterForType(`audio`),videoJitter:this.getJitterForType(`video`)}}};Ei(),H(),h(),P();var Sb=()=>window.AudioContext||window.webkitAudioContext,Cb=class e extends Ut{constructor(){var t;super(),t=this,m(this,`context`,new(Sb())),m(this,`timers`,Hn.create()),m(this,`previousCurrentTime`,0),m(this,`_isStuck`,!1),m(this,`mediaStreamDestination`,void 0),m(this,`unload`,()=>(this.timers.unload(),this.context.removeEventListener(`statechange`,this.onStateChange),this.context.state===`closed`?Promise.resolve():this.context.close())),m(this,`createGain`,()=>this.context.createGain()),m(this,`createBuffer`,(e,t,n)=>this.context.createBuffer(e,t,n)),m(this,`createBufferSource`,()=>this.context.createBufferSource()),m(this,`getMediaStreamDestination`,()=>(this.mediaStreamDestination||(this.mediaStreamDestination=this.context.createMediaStreamDestination()),this.mediaStreamDestination)),m(this,`getDefaultDestination`,()=>this.context.destination),m(this,`createSplitter`,()=>this.context.createChannelSplitter(2)),m(this,`resume`,N(function*(){try{return yield Promise.race([t.context.resume(),ar(1e3,pi())])}catch(e){throw t.suspend().catch(S),e}})),m(this,`suspend`,N(function*(){var e;yield(e=t.context.suspend())==null?Promise.resolve():e})),m(this,`onStateChange`,()=>this.emit(`state`,this.state)),this.context.addEventListener(`statechange`,this.onStateChange),this.timers.setInterval(()=>{this._isStuck=this.isRunning&&this.context.currentTime===this.previousCurrentTime,this._isStuck&&this.emit(`stuck`),this.previousCurrentTime=this.context.currentTime},e.CHECK_INTERVAL)}get isStuck(){return this._isStuck}get isRunning(){return this.state===`running`}get currentTime(){return this.context.currentTime}get sampleRate(){return this.context.sampleRate}get state(){return this.context.state}};m(Cb,`CHECK_INTERVAL`,1e3),Ei(),H(),h(),P(),B();var wb,Tb=150,Eb=400,Db=e=>e===void 0?5:e<=Tb?1:e<=Eb?2:5,Ob=class extends Ut{get isContextRunning(){var e;return((e=this.audio)==null?void 0:e.state)===`running`}get volume(){return this._volume}set volume(e){this._volume=e,this.muted||this.setGain(e)}get seekTime(){return 0}get totalSeekTime(){return 0}get isSeeking(){return!1}get muted(){var e;return this._muted||!((e=this.audio)!=null&&e.isRunning)}set muted(e){this._userProvidedMuted=e,this._muted=e,this.setGain(this._volume)}get isPaused(){return!1}get currentTime(){var e;return!this.audio||!this.audio.isRunning||this.audio.isStuck?this.clockSource.currentTime:this.audio.currentTime*1e3+((e=this.clockDelta)==null?0:e)}set currentTime(e){this.logger.debug(`setting current time to`,{currentTime:e}),this.startTimeIsInvalidated=!0}get bufferTime(){return this._bufferTime}set bufferTime(e){this._bufferTime=e,this.audioBufferMultiplier=Db(e)}get audioNode(){return this.splitter}constructor(e,t,{muted:n,reInitWhenStuck:r,bufferTime:i}){var a;super(),a=this,m(this,`logger`,void 0),m(this,`audio`,void 0),m(this,`gainNode`,void 0),m(this,`splitter`,void 0),m(this,`_volume`,1),m(this,`_userProvidedMuted`,!1),m(this,`_muted`,!1),m(this,`startTime`,0),m(this,`samples`,new Float32Array),m(this,`preInitSampleQueue`,new w(500)),m(this,`unplayedBufferSources`,new w(100)),m(this,`sampleRate`,48e3),m(this,`channels`,2),m(this,`index`,0),m(this,`clockSource`,void 0),m(this,`clockDelta`,void 0),m(this,`startTimeIsInvalidated`,!0),m(this,`lastSampleTimestamp`,0),m(this,`reInitWhenStuck`,void 0),m(this,`ignoreSuspendCalls`,!1),m(this,`_bufferTime`,void 0),m(this,`audioBufferMultiplier`,void 0),m(this,`isActivated`,!1),m(this,`unload`,N(function*(){var e,t;(e=a.gainNode)==null||e.disconnect(),yield(t=a.audio)==null?void 0:t.unload(),a.reset(),a.audio=void 0,a.gainNode=void 0})),m(this,`suspend`,()=>{this.setGain(0)}),m(this,`unsuspend`,()=>{var e;this.setGain(this._volume),this.ignoreSuspendCalls=!!this.audio,(e=this.audio)==null||e.suspend().then(N(function*(){yield a.resume(),a.ignoreSuspendCalls=!1})).catch(()=>{this.ignoreSuspendCalls=!1,this.emit(`state change`,`suspended`)})}),m(this,`flush`,(e=this.samples.length)=>{if(!this.audio||!this.gainNode)throw new U(`AudioContext must be initialized to flush`,{isFatal:!1,code:`audiocontext_must_be_initialized`});let t=Math.floor(e/this.channels);if(t<=0)return;let n=this.audio.createBufferSource(),r=this.audio.createBuffer(this.channels,t,this.sampleRate);if(this.channels===2){let e=r.getChannelData(0),n=r.getChannelData(1);for(let r=0;r<t;r++){let t=r*2;e[r]=this.samples[t],n[r]=this.samples[t+1]}}else if(this.channels===1)r.getChannelData(0).set(this.samples.subarray(0,t));else{let e=0;for(let n=0;n<this.channels;n++){e=n;let i=r.getChannelData(n);for(let n=0;n<t;n++)i[n]=this.samples[e],e+=this.channels}}let i=Math.max(this.startTime,0);n.buffer=r,n.connect(this.gainNode),this.splitter&&n.connect(this.splitter),n.start(i),this.unplayedBufferSources.push([i,n]),this.startTime+=r.duration}),m(this,`onDecodedFrame`,e=>{var t;if(!(this.gainNode&&(t=this.audio)!=null&&t.isRunning)){if(e.type===`audio`){this.preInitSampleQueue.push(z(z({},e),{},{data:e.data.slice(0,e.data.length)}));let t=this.clockSource.currentTime;this.preInitSampleQueue.filterPop(({timestamp:e,timescale:n})=>e/n*1e3>t)}return}for(;!this.preInitSampleQueue.isEmpty();){let e=this.preInitSampleQueue.items();this.preInitSampleQueue.clear(),e.forEach(this.onDecodedFrame)}if(this.unplayedBufferSources.filterPop(([e,t])=>{var n,r;return((n=(r=this.audio)==null?void 0:r.currentTime)==null?0:n)<e}),e.type===`audio`){let t=e.timestamp/e.timescale*1e3;if(t<this.lastSampleTimestamp&&(this.logger.info(`Unordered timestamp - invalidating start time`),this.startTimeIsInvalidated=!0),this.lastSampleTimestamp=t,this.startTimeIsInvalidated){let e=this.audio.currentTime*1e3,n=this.clockSource.currentTime,r=(e+t-n)/1e3;this.clockDelta=n-e,this.startTime=r,this.startTimeIsInvalidated=!1,this.unplayedBufferSources.items().forEach(([e,t])=>{r<=e&&t.stop()})}let n=e.data.length*this.audioBufferMultiplier;this.samples.length!==n&&(this.index>0&&this.flush(this.index),this.samples=new Float32Array(n),this.index=0),this.channels=e.channels,this.sampleRate=e.sampleRate,this.samples.set(e.data,this.index),this.index+=e.data.length,this.samples.length<=this.index&&(this.flush(this.samples.length),this.index=0)}}),m(this,`play`,N(function*(){a.audio=a.getAudioContext(),yield a.resume()})),m(this,`pause`,()=>{}),m(this,`flushBuffer`,()=>{var e,t;this.unplayedBufferSources.items().forEach(([e,t])=>{try{t.stop()}catch(e){}}),this.unplayedBufferSources.clear(),this.preInitSampleQueue.clear(),this.samples=new Float32Array,this.index=0,this.lastSampleTimestamp=0,this.startTime=(e=(t=this.audio)==null?void 0:t.currentTime)==null?0:e,this.startTimeIsInvalidated=!0}),m(this,`resume`,N(function*(){if(!a._userProvidedMuted)try{var e;yield(e=a.audio)==null?void 0:e.resume(),a._muted=a._userProvidedMuted,a.startTimeIsInvalidated=!0}catch(e){throw a._muted=!0,e}})),m(this,`getAudioContext`,()=>this.audio?this.audio:this.setupContext()),m(this,`setupContext`,()=>{var e,t,n;return(e=this.audio)==null||e.unload(),this.audio=new Cb,this.audio.on(`state`,e=>{this.logger.info(`AudioContext state change`,{state:e}),e===`running`&&(this._muted=this._userProvidedMuted,this.setGain(this._volume)),!this.ignoreSuspendCalls&&this.emit(`state change`,e)}),this.audio.on(`stuck`,()=>{this.reInitWhenStuck&&(this.logger.info(`Re-init audio context`),this.setupContext(),this.resume().catch(S),this.emit(`stuck`))}),(t=this.gainNode)==null||t.disconnect(),this.gainNode=this.audio.createGain(),this.setGain(this._volume),this.startTime=this.audio.currentTime,(n=this.splitter)==null||n.disconnect(),this.splitter=this.audio.createSplitter(),this.audio}),m(this,`setGain`,e=>{this.gainNode&&(this.gainNode.gain.value=this._muted?0:e)}),this._muted=n,this._userProvidedMuted=n,this.logger=e,this.clockSource=t,this.reInitWhenStuck=r,this._bufferTime=i,this.audioBufferMultiplier=Db(i)}useMediaStreamDestination(){var e;let t=this.getAudioContext(),n=t.getMediaStreamDestination();return(e=this.gainNode)==null||e.connect(n),t.isRunning||t.resume().catch(()=>{}),n}useDefaultDestination(){var e;let t=this.getAudioContext().getDefaultDestination();return(e=this.gainNode)==null||e.connect(t),t}};wb=Ob,m(Ob,`create`,(e,t,n)=>new wb(e,t,n)),h();var kb,Ab=class{constructor(e,t,n,r,i,a){m(this,`staleFrameThresholdMs`,400),m(this,`pool`,void 0),m(this,`logger`,void 0),m(this,`videoRenderer`,new Gi),m(this,`videoFrameCanvas2DRenderer`,null),m(this,`renderQueue`,[]),m(this,`clockSource`,void 0),m(this,`isFirstFrame`,!0),m(this,`usingWebCodecs`,!1),m(this,`onCanvasChangeCallback`,void 0),m(this,`onRendererErrorCallback`,void 0),m(this,`animationFrameRequest`,void 0),m(this,`firstFrameAnimationFrameRequest`,void 0),m(this,`pendingFirstFrameSample`,void 0),m(this,`renderedFrameCount`,0),m(this,`rendererDroppedFrameCount`,0),m(this,`renderTargetSize`,void 0),m(this,`load`,()=>{this.videoRenderer.load(),this.subscribeToContextLost(this.videoRenderer)}),m(this,`unload`,()=>(this.stopRender(),this.clearRenderQueue(),this.unsubscribeFromContextLost(this.videoRenderer),this.videoRenderer.unload(),this.videoFrameCanvas2DRenderer&&(this.unsubscribeFromContextLost(this.videoFrameCanvas2DRenderer),this.videoFrameCanvas2DRenderer.unload()),Promise.resolve())),m(this,`suspend`,()=>{this.clearRenderQueue(),this.stopRender()}),m(this,`unsuspend`,()=>{this.animationFrameRequest===void 0&&(this.animationFrameRequest=requestAnimationFrame(this.render))}),m(this,`element`,()=>this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.canvas:this.videoRenderer.canvas),m(this,`getStatistics`,()=>({renderedFrameCount:this.renderedFrameCount,rendererDroppedFrameCount:this.rendererDroppedFrameCount})),m(this,`resetSize`,()=>{this.videoRenderer.resetSize()}),m(this,`setActiveCues`,(e,t)=>{this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.setActiveCues(e,t):this.usingWebCodecs||this.videoRenderer.getTextRenderer().setActiveCues(e,t)}),m(this,`onDecodedFrame`,e=>{if(e.type===`video`)if(this.isFirstFrame)this.isFirstFrame=!1,this.pendingFirstFrameSample=e,this.firstFrameAnimationFrameRequest=requestAnimationFrame(()=>{this.firstFrameAnimationFrameRequest=void 0;let e=this.pendingFirstFrameSample;this.pendingFirstFrameSample=void 0,e&&this.renderSample(e)});else{let t=(this.clockSource.currentTime-this.staleFrameThresholdMs)/1e3;this.renderQueue=this.renderQueue.filter(n=>{let r=this.samplePresentationTime(n),i=this.samplePresentationTime(e),a=r>t&&r<=i;return a||this.releaseSampleResources(n),a}),this.renderQueue.push(e)}}),m(this,`render`,()=>{let e=this.clockSource.currentTime,t=this.renderQueue[0],n,r=0;for(;t&&this.samplePresentationTime(t)*1e3<=e;)t=this.renderQueue.shift(),t&&(r++,n&&this.releaseSampleResources(n),n=t),t=this.renderQueue[0];n&&this.renderSample(n),this.rendererDroppedFrameCount+=Math.max(r-1,0),this.animationFrameRequest=requestAnimationFrame(this.render)}),m(this,`renderSample`,e=>{if(this.renderedFrameCount++,e.videoFrame){let n=this.videoFrameCanvas2DRenderer;if(!this.usingWebCodecs){var t;this.logger.info(`Switching to Canvas2D renderer for WebCodecs`),n||(n=new Lr,n.load(),this.subscribeToContextLost(n),this.videoFrameCanvas2DRenderer=n);let e=this.videoRenderer.canvas,r=n.canvas;if(e.parentElement)try{e.parentElement.replaceChild(r,e)}catch(e){}this.usingWebCodecs=!0,(t=this.onCanvasChangeCallback)==null||t.call(this)}n?n.render(e,this.getSubtitlePadding()):this.videoRenderer.render(e,this.renderTargetSize),e.videoFrame.close()}else{if(this.usingWebCodecs){var n;this.logger.info(`Switching back to WebGL renderer for WASM`);let t=this.videoFrameCanvas2DRenderer;if(!t){this.usingWebCodecs=!1,this.videoRenderer.render(e,this.renderTargetSize),e.buffer.byteLength>0&&this.pool.reclaim(e.buffer);return}let r=t.canvas,i=this.videoRenderer.canvas;if(r.parentElement)try{r.parentElement.replaceChild(i,r)}catch(e){}this.usingWebCodecs=!1,(n=this.onCanvasChangeCallback)==null||n.call(this)}this.videoRenderer.render(e,this.renderTargetSize)}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),m(this,`stopRender`,()=>{this.animationFrameRequest!==void 0&&(cancelAnimationFrame(this.animationFrameRequest),this.animationFrameRequest=void 0),this.firstFrameAnimationFrameRequest!==void 0&&(cancelAnimationFrame(this.firstFrameAnimationFrameRequest),this.firstFrameAnimationFrameRequest=void 0),this.pendingFirstFrameSample&&(this.releaseSampleResources(this.pendingFirstFrameSample),this.pendingFirstFrameSample=void 0)}),m(this,`clearRenderQueue`,()=>{this.renderQueue.forEach(e=>{this.releaseSampleResources(e)}),this.renderQueue=[]}),m(this,`onRendererContextLost`,e=>{var t;(t=this.onRendererErrorCallback)==null||t.call(this,e)}),m(this,`subscribeToContextLost`,e=>{let t=e;typeof t.on==`function`&&t.on(`context lost`,this.onRendererContextLost)}),m(this,`unsubscribeFromContextLost`,e=>{let t=e;typeof t.off==`function`&&t.off(`context lost`,this.onRendererContextLost)}),m(this,`getSubtitlePadding`,()=>{let e=this.renderTargetSize.style.getPropertyValue(`--vindral-subtitle-offset`)||this.renderTargetSize.style.getPropertyValue(`--vindral-control-bar-offset`),t=parseInt(e||`0`,10);return Number.isNaN(t)?0:-t}),m(this,`samplePresentationTime`,e=>(e.timestamp+(e.compositionTimeOffset||0))/e.timescale),m(this,`releaseSampleResources`,e=>{try{var t;(t=e.videoFrame)==null||t.close()}catch(e){}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),this.logger=e,this.clockSource=t,this.pool=n,this.renderTargetSize=r||this.videoRenderer.canvas,this.onCanvasChangeCallback=i,this.onRendererErrorCallback=a}};kb=Ab,m(Ab,`create`,(e,t,n,r,i,a)=>new kb(e,t,n,r,i,a)),E(),A(),M();var jb=new WeakMap,Mb=class{constructor(){T(this,jb,[]),k(jb,this,[])}addTextTrack(e,t,n){let r=[],i={kind:e,label:t,language:n,mode:`disabled`,cues:r,addCue:e=>{r.push(e)},removeCue:e=>{let t=r.findIndex(t=>t===e);t!==-1&&r.splice(t,1)}};return j(jb,this).push(i),i}set language(e){j(jb,this).forEach(t=>{t.language===e?t.mode=`showing`:t.mode=`hidden`})}get language(){var e;return(e=j(jb,this).find(e=>e.mode===`showing`))==null?void 0:e.language}getActiveCues(e){let t=j(jb,this).find(e=>e.mode===`showing`);return t?t.cues.filter(({startTime:t,endTime:n})=>e>=t&&e<=n):[]}};H(),h();var Nb=(e,t)=>{let n;for(n=t;e>1;e--)n+=t;return n},Pb=class{constructor(){m(this,`audio`,void 0),m(this,`unmute`,()=>this.audio.play().catch(S));let e=document.createElement(`div`);e.innerHTML=`<audio x-webkit-airplay='deny'></audio>`;let t=e.children.item(0);if(t instanceof HTMLAudioElement)this.audio=t,this.audio.controls=!1,this.audio.disableRemotePlayback=!0,this.audio.preload=`auto`,this.audio.src=`data:audio/mpeg;base64,//uQx`+Nb(23,`A`)+`WGluZwAAAA8AAAACAAACcQCA`+Nb(16,`gICA`)+Nb(66,`/`)+`8AAABhTEFNRTMuMTAwA8MAAAAAAAAAABQgJAUHQQAB9AAAAnGMHkkI`+Nb(320,`A`)+`//sQxAADgnABGiAAQBCqgCRMAAgEAH`+Nb(15,`/`)+`7+n/9FTuQsQH//////2NG0jWUGlio5gLQTOtIoeR2WX////X4s9Atb/JRVCbBUpeRUq`+Nb(18,`/`)+`9RUi0f2jn/+xDECgPCjAEQAABN4AAANIAAAAQVTEFNRTMuMTAw`+Nb(97,`V`)+`Q==`,this.audio.loop=!1,this.audio.load();else throw Error(`Failed to create audio tag`)}};Ei(),H(),h();var Fb,Ib=class{constructor(e,t,n,r,i,a,o,s){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`unmuter`,new Pb),m(this,`_isPaused`,!1),m(this,`isDisconnected`,!1),m(this,`timers`,new Hn),m(this,`isVideoRenderingEnabled`,!0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!0),m(this,`isVideoPlayerLoaded`,!1),m(this,`textTracks`,new Mb),m(this,`playbackRate`,void 0),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.audioPlayer.useDefaultDestination(),this.emitter.on(`decoded frame`,this.onDecodedFrame),this.emitter.on(`flush buffers`,this.flushBuffers),this.isLoaded=!0,this.isVideoRenderingEnabled&&(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0,this.startTextTrackInterval())}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`decoded frame`,this.onDecodedFrame),this.emitter.off(`flush buffers`,this.flushBuffers),this.audioPlayer.unload(),this.isVideoPlayerLoaded&&(this.videoPlayer.unload(),this.isVideoPlayerLoaded=!1),this.timers.unload(),this.isLoaded=!1}),m(this,`suspend`,()=>{this.isSuspended=!0,this.isVideoRenderingEnabled&&this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.isVideoRenderingEnabled&&this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`setVideoRenderingEnabled`,e=>{if(e!==this.isVideoRenderingEnabled&&(this.isVideoRenderingEnabled=e,this.isLoaded)){if(!e){this.timers.unload(),this.videoPlayer.suspend();return}this.isVideoPlayerLoaded||(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0),this.startTextTrackInterval(),this.isSuspended||this.videoPlayer.unsuspend()}}),m(this,`element`,()=>this.videoPlayer.element()),m(this,`getStatistics`,()=>this.videoPlayer.getStatistics()),m(this,`startTextTrackInterval`,()=>{this.timers.setInterval(()=>{if(!this.textTracks.language)return;let e=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(e,{width:this.videoPlayer.element().clientWidth,height:this.videoPlayer.element().clientHeight})},100)}),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&(this.isDisconnected=!1,this.audioPlayer.useDefaultDestination()),this._isPaused=!1,this.unmuter.unmute(),this.audioPlayer.play())),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,ci(!1,e))}this.isVideoRenderingEnabled&&this.videoPlayer.onDecodedFrame(e)}),this.logger=t,this.emitter=e,this.pool=n,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.audioPlayer=Ob.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:i,reInitWhenStuck:!0,bufferTime:s}),a!==void 0&&(this.audioPlayer.volume=a),this.audioPlayer.on(`stuck`,()=>{this.isDisconnected=!0}),this.audioPlayer.on(`state change`,()=>{this.emitter.emit(`volume state`,{volume:this.volume,isMuted:this.muted})}),this.videoPlayer=Ab.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,void 0,o)}get volume(){return this.audioPlayer.volume}set volume(e){this.audioPlayer.volume=e}get muted(){return this.audioPlayer.muted}set muted(e){let t=this.muted;this.audioPlayer.muted=e,!e&&t&&this.activateAudioPlayer().catch(S)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.audioPlayer.isActivated}set isActivated(e){this.audioPlayer.isActivated=e}get seekTime(){return this.audioPlayer.seekTime}get totalSeekTime(){return this.audioPlayer.totalSeekTime}get isPaused(){return this._isPaused}get isSeeking(){return this.audioPlayer.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){this.activateAudioPlayer().then(()=>{this.emitter.emit(`media element state`,`playing`)}).catch(()=>{this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})})}pause(){this._isPaused=!0,this.audioPlayer.pause(),this.emitter.emit(`media element state`,`paused`)}};Fb=Ib,m(Ib,`create`,(e,t,n,r,i,a,o,s)=>new Fb(e,t,n,r,i,a,o,s)),Ei(),H(),h();var Lb,Rb=class{constructor(e,t,n,r,{muted:i,volume:a,type:o,poster:s,offscreenCanvas:c,bufferTime:l}){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`isDisconnected`,!0),m(this,`_userProvidedMuted`,!1),m(this,`timers`,new Hn),m(this,`offscreenCanvas`,void 0),m(this,`nativeTextTrack`,void 0),m(this,`nativeTrackCues`,[]),m(this,`volumeState`,void 0),m(this,`textTracks`,new Mb),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.mediaElement.load(),this.emitter.on(`decoded frame`,this.onDecodedFrame),this.emitter.on(`flush buffers`,this.flushBuffers),this.emitter.on(`ios-hack: reset size`,this.resetCanvasSize),this.emitter.on(`enter picture in picture`,this.onEnterIOSHack),this.emitter.on(`exit picture in picture`,this.onExitIOSHack),this.element().element.addEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.addEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack),this.videoPlayer.load(),this.nativeTextTrack=this.mediaElement.element.addTextTrack(`subtitles`,``,``),this.nativeTextTrack.mode=`showing`,this.timers.setInterval(()=>{if(!this.textTracks.language){this.clearNativeTrackCues();return}let e=this.textTracks.getActiveCues(this.currentTime/1e3);this.updateNativeTrackCues(e)},100)}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`decoded frame`,this.onDecodedFrame),this.emitter.off(`flush buffers`,this.flushBuffers),this.emitter.off(`ios-hack: reset size`,this.resetCanvasSize),this.emitter.off(`enter picture in picture`,this.onEnterIOSHack),this.emitter.off(`exit picture in picture`,this.onExitIOSHack),this.element().element.removeEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.removeEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack),this.clearNativeTrackCues(),this.nativeTextTrack=void 0,this.mediaElement.unload(),this.timers.unload(),this.audioPlayer.unload(),this.videoPlayer.unload()}),m(this,`suspend`,()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`element`,()=>this.mediaElement),m(this,`getStatistics`,()=>this.videoPlayer.getStatistics()),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&this.connectStreams(),this.audioPlayer.play())),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`resetCanvasSize`,()=>{this.videoPlayer.resetSize()}),m(this,`onEnterIOSHack`,()=>{this.mediaElement._iosHackEnterPiPMode()}),m(this,`onExitIOSHack`,()=>{this.mediaElement._iosHackExitPiPMode()}),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,ci(!1,e))}this.offscreenCanvas||this.videoPlayer.onDecodedFrame(e)}),m(this,`onVideoPlayerError`,e=>{if(e instanceof U){this.emitter.emit(`error`,e);return}this.emitter.emit(`error`,oi(!1,e))}),m(this,`connectStreams`,()=>{let e=this.offscreenCanvas||this.videoPlayer.element();this.logger.info(`Connecting streams using ${this.offscreenCanvas?`OffscreenCanvas`:`VideoPlayer`} canvas (${e.width}x${e.height})`);let t=e.captureStream(),n=this.audioPlayer.useMediaStreamDestination().stream,r=[...t.getTracks(),...n.getTracks()];this.logger.info(`Video tracks: ${t.getTracks().length}, Audio tracks: ${n.getTracks().length}`);let i=this.mediaElement.element.srcObject;i instanceof MediaStream&&i.getVideoTracks().forEach(e=>e.stop()),this.mediaElement.element.srcObject=new MediaStream(r),this.isDisconnected=!1}),m(this,`setOffscreenCanvas`,e=>{this.offscreenCanvas!==e&&(this.offscreenCanvas=e,this.reconnectCanvasStream())}),m(this,`reconnectCanvasStream`,()=>{if(!this.isDisconnected){let e=!this.mediaElement.element.paused;this.logger.info(`Reconnecting canvas stream after renderer change`,{wasPlaying:e}),this.connectStreams(),e&&this.mediaElement.tryPlay()}}),m(this,`clearNativeTrackCues`,()=>{if(this.nativeTextTrack){for(let e of this.nativeTrackCues)try{this.nativeTextTrack.removeCue(e)}catch(e){}this.nativeTrackCues=[]}}),m(this,`updateNativeTrackCues`,e=>{let t=this.nativeTextTrack;if(!t)return;let n=e.map(e=>e.text),r=this.nativeTrackCues.map(e=>e.text);if(!(n.length===r.length&&n.every((e,t)=>e===r[t]))){this.clearNativeTrackCues();for(let n of e){let e=new VTTCue(0,999999999,n.text);t.addCue(e),this.nativeTrackCues.push(e)}}}),m(this,`updateVolumeState`,()=>{let e={isMuted:this.muted,volume:this.volume};Vt(e,this.volumeState)||(this.volumeState=e,this.emitter.emit(`volume state`,this.volumeState))}),this.logger=t,this.emitter=e,this.pool=n,this._userProvidedMuted=i,this.offscreenCanvas=c,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.mediaElement=new al({poster:s,type:o,muted:i,volume:a,autoplay:!1,logger:this.logger.createContext(`MediaElement`)}),this.mediaElement.on(`volume state`,e=>{this.updateVolumeState(),!e.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(S),e.isMuted||(this._userProvidedMuted=!1)}),this.mediaElement.on(`media element state`,e=>{e===`paused`&&this.audioPlayer.flushBuffer(),this.emitter.emit(`media element state`,e)}),this.audioPlayer=Ob.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:!1,reInitWhenStuck:!1,bufferTime:l}),this.audioPlayer.on(`stuck`,()=>{this.isDisconnected=!0}),this.audioPlayer.on(`state change`,e=>{e===`suspended`||e===`interrupted`?this.mediaElement.muted=!0:e===`running`&&(this.mediaElement.muted=this._userProvidedMuted||document.visibilityState===`hidden`),this.updateVolumeState()}),this.videoPlayer=Ab.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,this.mediaElement.element,()=>this.reconnectCanvasStream(),this.onVideoPlayerError),this.volumeState={volume:this.volume,isMuted:this.muted}}get volume(){return this.mediaElement.volume}set volume(e){this.mediaElement.volume=e}get muted(){return this.mediaElement.muted||this.audioPlayer.muted}set muted(e){let t=this.muted;this._userProvidedMuted=e,this.mediaElement.muted=e,!e&&t&&this.activateAudioPlayer().catch(S)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.mediaElement.isActivated}set isActivated(e){this.mediaElement.isActivated=e}get seekTime(){return this.mediaElement.seekTime}get totalSeekTime(){return this.mediaElement.totalSeekTime}get isPaused(){return this.mediaElement.isPaused}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){let e=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{e||this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})}),this.mediaElement.play()}pause(){this.mediaElement.pause()}};Lb=Rb,m(Rb,`create`,(e,t,n,r,i)=>new Lb(e,t,n,r,i)),H(),h();var zb=()=>e=>Bb(e.buffered.start(0),e.buffered.end(e.buffered.length-1)),Bb=(e,t)=>n=>n.remove(Math.max(0,e),Math.min(1/0,t)),Vb=e=>t=>t.appendBuffer(e),Hb=e=>t=>t.changeType(e),Ub=e=>t=>e(t),Wb=class{constructor(e){m(this,`commandQueue`,[]),m(this,`sourceBuffer`,void 0),m(this,`errorCallback`,void 0),m(this,`currentInit`,void 0),m(this,`setErrorCallback`,e=>{this.errorCallback=e}),m(this,`onError`,e=>{var t;(t=this.errorCallback)==null||t.call(this,e)}),m(this,`handleQueue`,()=>{if(!this.sourceBuffer.updating){var e;(e=this.commandQueue.shift())==null||e.execute(this.sourceBuffer)}}),m(this,`appendBuffer`,(e,t)=>new Promise((n,r)=>{if(t&&this.currentInit!==t){let e=new Ot(Vb(t),n,r);this.commandQueue.push(e),this.currentInit=t}let i=new Ot(Vb(e),n,r);this.commandQueue.push(i),this.handleQueue()})),m(this,`execute`,e=>new Promise((t,n)=>{let r=new Ot(Ub(e),t,n);this.commandQueue.push(r),this.handleQueue()})),m(this,`buffered`,()=>this.sourceBuffer.buffered),m(this,`removeFromMediaSource`,e=>{this.dispose(),e.removeSourceBuffer(this.sourceBuffer)}),m(this,`dispose`,()=>{this.sourceBuffer.removeEventListener(`updateend`,this.handleQueue),this.sourceBuffer.removeEventListener(`error`,this.onError),this.commandQueue=[],this.errorCallback=void 0}),m(this,`changeType`,e=>new Promise((t,n)=>{let r=new Ot(Hb(e),t,n);this.commandQueue.push(r),this.handleQueue()})),m(this,`removeBuffer`,(e,t)=>new Promise((n,r)=>{let i=new Ot(Bb(e,t),n,r);this.commandQueue.push(i),this.handleQueue()})),m(this,`flush`,()=>new Promise((e,t)=>{let n=new Ot(zb,e,t);this.commandQueue.push(n),this.handleQueue()})),this.sourceBuffer=e,this.sourceBuffer.addEventListener(`updateend`,this.handleQueue),this.sourceBuffer.addEventListener(`error`,this.onError)}};H(),h();var Gb=class extends Ut{constructor(){super(),m(this,`MediaSource`,ze()),m(this,`mediaSource`,new this.MediaSource),m(this,`isOpen`,()=>this.mediaSource.readyState===`open`),m(this,`isClosed`,()=>this.mediaSource.readyState===`closed`),m(this,`isEnded`,()=>this.mediaSource.readyState===`ended`),m(this,`createObjectURL`,()=>URL.createObjectURL(this.mediaSource)),m(this,`attach`,e=>{let t=e;if(`srcObject`in t)try{t.srcObject=this.mediaSource}catch(e){if(e instanceof Error&&e.name!==`TypeError`)throw e;t.src=this.createObjectURL()}else e.src=this.createObjectURL()}),m(this,`detach`,e=>{if(this.mediaSource&&this.mediaSource.readyState===`open`)try{this.mediaSource.endOfStream()}catch(e){}e.srcObject&&(e.srcObject=null),e.src!==``&&(URL.revokeObjectURL(e.src),e.removeAttribute(`src`)),e.load()}),m(this,`addSourceBuffer`,e=>new Wb(this.mediaSource.addSourceBuffer(e))),m(this,`removeSourceBuffer`,e=>{e.removeFromMediaSource(this.mediaSource)}),m(this,`endOfStream`,e=>{this.mediaSource.endOfStream(e)}),m(this,`onSourceOpen`,()=>{this.setDurationIfNeeded(),this.emit(`source open`)}),m(this,`onSourceEnded`,()=>this.emit(`source ended`)),m(this,`onSourceClosed`,()=>this.emit(`source close`)),m(this,`setDurationIfNeeded`,()=>{if(Number.isNaN(this.mediaSource.duration)&&this.mediaSource.readyState===`open`){for(let e=0;e<this.mediaSource.sourceBuffers.length;e++){let t=this.mediaSource.sourceBuffers[e];if(t!=null&&t.updating)return}this.mediaSource.duration=1/0}}),this.mediaSource.addEventListener(`sourceopen`,this.onSourceOpen),this.mediaSource.addEventListener(`sourceclose`,this.onSourceClosed),this.mediaSource.addEventListener(`sourceended`,this.onSourceEnded)}};m(Gb,`isTypeSupported`,e=>{var t,n;return(t=(n=ze())==null?void 0:n.isTypeSupported(e))==null?!1:t}),Ei(),H(),h(),B(),P();var Kb,qb=class{constructor(){m(this,`initSegments`,new Map),m(this,`set`,(e,t,n)=>{var r;let i=(r=this.initSegments.get(e))==null?new Map:r;i.set(t,n),this.initSegments.set(e,i)}),m(this,`get`,(e,t)=>{var n;return(n=this.initSegments.get(e))==null?void 0:n.get(t)})}};function Jb(e,{mediaSource:t,mimeType:n,codec:r}){return z(z({},e),{},{state:`initialized`,mimeType:n,sourceBufferMimeType:n,codec:r,sourceBuffer:t.addSourceBuffer(n),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:Date.now()})}function Yb({initSegments:e,pendingSamples:t}){return{state:`uninitialized`,initSegments:e==null?new qb:e,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:t.some(e=>e.isSync),pendingSamples:t==null?[]:t,pendingSamplesOffset:0,consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}var Xb=class{constructor(e,t,n){var r=this;m(this,`maxChunkSize`,20),m(this,`minConsecutiveErrorsBeforeEmit`,5),m(this,`maxSecondsInBuffer`,60),m(this,`logger`,void 0),m(this,`timers`,Hn.create()),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`mediaSource`,new Gb),m(this,`trackContexts`,new Map),m(this,`autoRecoverFromMediaErrors`,!0),m(this,`quotaErrorCount`,0),m(this,`recoveredFromErrorCount`,0),m(this,`sourceOpenStartTime`,Date.now()),m(this,`sourceOpenEndTime`,Date.now()),m(this,`pendingTracksToAddSourceBuffers`,void 0),m(this,`hasAddedInitialPosterFrame`,!0),m(this,`videoKeyframeTimestamps`,[]),m(this,`isReopening`,!1),m(this,`playbackStallCount`,0),m(this,`hasStartedPlayback`,!1),m(this,`isPlaybackStalled`,!1),m(this,`load`,()=>{this.emitter.on(`init segment`,this.init),this.emitter.on(`coded sample`,this.onCodedSample),this.emitter.on(`flush buffers`,this.flushBuffers),this.emitter.on(`fragment`,this.onFragment)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.emitter.off(`init segment`,this.init),this.emitter.off(`coded sample`,this.onCodedSample),this.emitter.off(`flush buffers`,this.flushBuffers),this.emitter.off(`fragment`,this.onFragment),this.mediaSource.off(`source ended`,this.onSourceEnded),this.mediaSource.off(`source open`,this.onSourceOpen),this.mediaElement.removeEventListener(`error`,this.onMediaElementError),this.mediaElement.removeEventListener(`waiting`,this.onPlaybackStall),this.mediaElement.removeEventListener(`stalled`,this.onPlaybackStall),this.mediaElement.removeEventListener(`playing`,this.onPlaybackProgress),this.mediaElement.removeEventListener(`pause`,this.onPlaybackPauseOrSeek),this.mediaElement.removeEventListener(`seeking`,this.onPlaybackPauseOrSeek),this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(e=>{e.state===`initialized`&&e.sourceBuffer.dispose(),e.pendingSamples=[],e.pendingSamplesOffset=0}),this.videoKeyframeTimestamps=[],this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`getStatistics`,()=>{var e,t;let n={quotaErrorCount:this.quotaErrorCount,mediaSourceOpenTime:this.sourceOpenEndTime-this.sourceOpenStartTime,playbackStallCount:this.playbackStallCount,successfulAudioAppendsCalls:(e=this.trackContexts.get(`audio`))==null?void 0:e.successfulAppendCalls,successfulVideoAppendCalls:(t=this.trackContexts.get(`video`))==null?void 0:t.successfulAppendCalls,videoKeyframeIntervalMs:jt(this.videoKeyframeTimestamps),videoRenderer:`MSE`,videoDecoder:`MSE`,audioRenderer:`MSE`,audioDecoder:`MSE`};if(this.mediaElement instanceof HTMLVideoElement){var r,i;let e=(r=(i=this.mediaElement).getVideoPlaybackQuality)==null?void 0:r.call(i);n.totalVideoFrames=e==null?void 0:e.totalVideoFrames,n.droppedVideoFrames=e==null?void 0:e.droppedVideoFrames}return n}),m(this,`flushBuffers`,()=>{this.videoKeyframeTimestamps=[],this.trackContexts.forEach(e=>{e.pendingSamples=[],e.pendingSamplesOffset=0,e.hasFirstSync=!1,e.state!==`uninitialized`&&this.mediaSource.isOpen()&&e.sourceBuffer.removeBuffer(0,1/0).catch(e=>{this.logger.error(`Failed to remove buffer`,e)})})}),m(this,`setTrackContexts`,(e=new Map)=>{this.logger.debug(`setTrackContexts`),[`audio`,`video`].forEach(t=>{var n,r,i;let a=e.get(t),o=(n=a==null?void 0:a.pendingSamples)==null?[]:n,s=a==null?void 0:a.initSegments,c=(r=a==null?void 0:a.pendingSamplesOffset)==null?0:r;for(;c<o.length&&!((i=o[c])!=null&&i.isSync);)c++;let l=Yb({pendingSamples:o,initSegments:s});l.pendingSamplesOffset=c,this.trackContexts.set(t,l)})}),m(this,`resetRemovedTrackContexts`,e=>{let t=new Set(e.map(e=>e.type));this.trackContexts.forEach((e,n)=>{if(t.has(n))return;e.state===`initialized`&&this.mediaSource.isOpen()&&this.mediaSource.removeSourceBuffer(e.sourceBuffer);let r=Yb({pendingSamples:[],initSegments:e.initSegments});this.trackContexts.set(n,r)})}),m(this,`isCurrentTrackContext`,(e,t)=>this.trackContexts.get(e)===t),m(this,`initializeSourceBuffer`,(e,t)=>{let n=Jb(e,{mimeType:t.mimeType,mediaSource:this.mediaSource,codec:t.codec});n.sourceBuffer.setErrorCallback(this.onSourceBufferError(t.type)),this.trackContexts.set(t.type,n)}),m(this,`setSourceBuffers`,function(){var e=N(function*(e){if(!r.mediaSource.isOpen()){r.pendingTracksToAddSourceBuffers=e;return}r.resetRemovedTrackContexts(e);let t=!0;for(let n of e){let e=r.trackContexts.get(n.type);if(!e||e.state===`uninitialized`||e.sourceBufferMimeType!==n.mimeType){t=!1;break}}if(t){r.logger.debug(`Already setup with the correct mime types`);return}for(let t of e){let n=r.trackContexts.get(t.type);if(n||(n=Yb({pendingSamples:[],initSegments:new qb}),r.trackContexts.set(t.type,n)),n.state===`initialized`){if(t.mimeType!==n.sourceBufferMimeType)try{yield n.sourceBuffer.changeType(t.mimeType),n.sourceBufferMimeType=t.mimeType}catch(i){r.logger.warn(`changeType failed, recreating source buffer`,{from:n.sourceBufferMimeType,to:t.mimeType,error:i});try{r.mediaSource.removeSourceBuffer(n.sourceBuffer)}catch(t){r.logger.warn(`removeSourceBuffer failed`,{removeError:t}),r.reopenMediaSource(`changeType recovery failed`),r.pendingTracksToAddSourceBuffers=e;return}let a=Yb({pendingSamples:n.pendingSamples,initSegments:n.initSegments});a.pendingSamplesOffset=n.pendingSamplesOffset,r.initializeSourceBuffer(a,t)}}else r.initializeSourceBuffer(n,t)}});return function(t){return e.apply(this,arguments)}}()),m(this,`getBuffer`,e=>{if(this.mediaSource.isClosed())return[];let t=this.trackContexts.get(e);return!t||t.state===`uninitialized`?[]:this.getBufferedRanges(t.sourceBuffer)}),m(this,`getBufferState`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return{buffered:t,playbackState:this.getPlaybackStateForBufferedRanges(e,t)}}),m(this,`getNextBufferedRangeStart`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return Qb(e,t)}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`init`,({initSegment:e,mimeType:t})=>{this.logger.debug(`Added init segment`,{channel:e.channelId,renditionId:e.renditionId});let n=this.trackContexts.get(e.type);if(!n)throw di(e.type,e.renditionId);n.state===`initialized`&&(n.mimeType=t);let r=Oc({codec:e.codec,timescale:e.timescale,initData:e.data});r&&n.initSegments.set(e.channelId,e.renditionId,new Uint8Array(r))}),m(this,`append`,function(){var e=N(function*(e,t){let n=e[0];if(!n)return;let i=r.trackContexts.get(n.type),a=i==null?void 0:i.initSegments.get(n.channelId,n.renditionId);if(r.mediaSource.isClosed())return;if(!a)throw li(n.renditionId,n.channelId);if(!i)throw di(n.type,n.renditionId);if(i.state===`uninitialized`)throw fi(n.type,n.renditionId);if(t){var o;let e=(n.timestamp+((o=n.compositionTimeOffset)==null?0:o))/n.timescale;if(yield i.sourceBuffer.removeBuffer(e,1/0),i.mimeType!==i.sourceBufferMimeType&&i.sourceBuffer.changeType)try{yield i.sourceBuffer.changeType(i.mimeType),i.sourceBufferMimeType=i.mimeType}catch(e){r.logger.warn(`changeType failed`,{from:i.sourceBufferMimeType,to:i.mimeType,error:e})}`fragmented`in n||(yield i.sourceBuffer.appendBuffer(a))}let s=Math.max(0,n.timestamp/n.timescale-r.maxSecondsInBuffer);s>0&&Date.now()-i.lastBufferCleanupTime>1e4&&(i.lastBufferCleanupTime=Date.now(),yield i.sourceBuffer.removeBuffer(0,s+10));try{let t=i.sequenceNumber;if(`fragmented`in n)for(let t of e)`initData`in t&&(yield i.sourceBuffer.appendBuffer(t.data,t.initData));else{let n=Fc(e,t++);yield i.sourceBuffer.appendBuffer(n)}i.sequenceNumber=t,i.consecutiveQuotaExceededErrorCount=0,i.successfulAppendCalls++}catch(e){throw e instanceof DOMException&&e.code===DOMException.QUOTA_EXCEEDED_ERR&&(r.quotaErrorCount++,i.consecutiveQuotaExceededErrorCount++,r.logger.error(`quota exceeded error`,{error:e})),e}});return function(t,n){return e.apply(this,arguments)}}()),m(this,`onFragment`,({fragment:e,mimeType:t,codec:n,channelId:r,renditionId:i})=>{let a=e.mediaType(),o=e.rawBytes(),s=e.header().rawBytes(),c=e.baseMediaDecodeTime(),l=e.timescale(),u=e.duration(),d=a===`video`?e.startsWithKeyframe():!0,f=e.compositionTimeOffset(0);if(a===`text`){this.logger.warn(`Skipping unexpected text fragment`);return}if(!n){this.logger.warn(`Skipping fragment with no codec`);return}let p=this.trackContexts.get(a);if(!p)throw di(a);p.state===`initialized`&&t&&(p.mimeType=t,p.initSegments.set(r,i,s));let m={fragmented:!0,type:a,data:o,initData:s,timestamp:c,duration:u,timescale:l,channelId:r,renditionId:i,isSync:d,codec:n,fragment:e,compositionTimeOffset:f};this.onCodedSample(m)}),m(this,`onCodedSample`,e=>{if(e.duration===0)return;let t=this.trackContexts.get(e.type);if(!t)throw di(e.type,e.renditionId);if(!(!t.hasFirstSync&&!e.isSync)){if(this.hasAddedInitialPosterFrame&&e.isSync&&e.type===`video`){this.hasAddedInitialPosterFrame=!1;let n=z({},e);`fragment`in n?(n.fragment=n.fragment.clone(),n.fragment.updateBaseMediaDecodeTime(0),n.data=n.fragment.rawBytes()):n.timestamp=0,t.pendingSamples.push(n)}if(t.hasFirstSync=!0,t.pendingSamples.push(e),e.type===`video`&&e.isSync){var n;let t=(e.timestamp+((n=e.compositionTimeOffset)==null?0:n))/e.timescale*1e3,r=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];r!==void 0&&t<r&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(t),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}t.state!==`uninitialized`&&(t.isWorkingOnPendingSamples||rx(t,this.append,this.maxChunkSize).catch(n=>{if(t.isWorkingOnPendingSamples=!1,!this.isReopening){if(!this.isCurrentTrackContext(e.type,t)){this.logger.debug(`Suppressing append error from stale track context`,{type:e.type});return}if(n instanceof Error){if(this.logger.error(`append failed`,{message:n.message,name:n.name}),n instanceof DOMException&&n.code===DOMException.QUOTA_EXCEEDED_ERR){if(t.consecutiveQuotaExceededErrorCount>=this.minConsecutiveErrorsBeforeEmit){let r=ui(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}else{let r=ui(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}this.mediaElement.error&&this.onSourceEnded()}}}))}}),m(this,`onSourceBufferError`,e=>()=>{var t;this.logger.warn(`SourceBuffer error`,{trackType:e,mediaElementError:(t=this.mediaElement.error)==null?void 0:t.message})}),m(this,`onSourceOpen`,()=>{this.logger.debug(`source opened`),this.sourceOpenEndTime=Date.now(),this.isReopening=!1,this.pendingTracksToAddSourceBuffers&&(this.setSourceBuffers(this.pendingTracksToAddSourceBuffers),this.pendingTracksToAddSourceBuffers=void 0)}),m(this,`reopenMediaSource`,e=>{this.logger.info(`Re-opening MediaSource`,{reason:e}),this.isReopening=!0,this.recoveredFromErrorCount++;let t=!this.mediaElement.paused,n=[];this.trackContexts.forEach((e,t)=>{e.state===`initialized`&&n.push({type:t,mimeType:e.mimeType,codec:e.codec})}),this.sourceOpenStartTime=Date.now(),this.pendingTracksToAddSourceBuffers=n,this.mediaSource.detach(this.mediaElement),this.setTrackContexts(this.trackContexts),this.mediaSource.attach(this.mediaElement),t&&this.mediaElement.play().catch(S)}),m(this,`onMediaElementError`,()=>{let{error:e}=this.mediaElement;if(!e||this.isReopening)return;let t=ai(/AUDIO_RENDERER/.test(e.message)||!this.autoRecoverFromMediaErrors,e);this.logger.error(`MediaElement error`,{error:t}),this.emitter.emit(`error`,t),t.isFatal()||(this.emitter.emit(`recovered from media error`,{error:t,count:this.recoveredFromErrorCount}),this.reopenMediaSource(`media element error recovery`))}),m(this,`onSourceEnded`,()=>{this.mediaElement.error&&this.onMediaElementError(),this.logger.debug(`source ended`)}),m(this,`onPlaybackProgress`,()=>{this.hasStartedPlayback=!0,this.isPlaybackStalled=!1}),m(this,`onPlaybackPauseOrSeek`,()=>{this.isPlaybackStalled=!1}),m(this,`onPlaybackStall`,e=>{!this.hasStartedPlayback||this.mediaElement.paused||this.mediaElement.seeking||this.isPlaybackStalled||(this.playbackStallCount++,this.isPlaybackStalled=!0,this.logger.info(`Detected playback stall`,{event:e.type,currentTime:this.mediaElement.currentTime*1e3,playbackStallCount:this.playbackStallCount}))}),m(this,`getBufferedRanges`,e=>{let t=[];try{let n=e.buffered();if(!n)return[];for(let e=0;e<n.length;e++)t.push({start:n.start(e)*1e3,end:n.end(e)*1e3});return t}catch(e){return[]}}),m(this,`getInitializedTrackBuffers`,()=>{let e=[];return this.trackContexts.forEach(t=>{t.state!==`uninitialized`&&e.push(this.getBufferedRanges(t.sourceBuffer))}),e}),m(this,`getCommonBufferedRangesForCurrentTracks`,()=>{if(this.mediaSource.isClosed())return;let e=this.getInitializedTrackBuffers();if(e.length!==0)return this.getCommonBufferedRanges(e)}),m(this,`getCommonBufferedRanges`,e=>e.slice(1).reduce((e,t)=>$b(e,t),e[0]?Array.from(e[0]):[])),m(this,`getPlaybackStateForBufferedRanges`,(e,t)=>Zb(e,t)?`playing`:`buffering`),this.logger=e,this.mediaElement=n,this.emitter=t}};Kb=Xb,m(Xb,`create`,(e,t,n)=>{let r=new Kb(e,t,n);return r.setTrackContexts(),r.mediaSource.on(`source ended`,r.onSourceEnded),r.mediaSource.on(`source open`,r.onSourceOpen),n.addEventListener(`error`,r.onMediaElementError),n.addEventListener(`waiting`,r.onPlaybackStall),n.addEventListener(`stalled`,r.onPlaybackStall),n.addEventListener(`playing`,r.onPlaybackProgress),n.addEventListener(`pause`,r.onPlaybackPauseOrSeek),n.addEventListener(`seeking`,r.onPlaybackPauseOrSeek),r.mediaSource.attach(n),r});var Zb=(e,t)=>t.some(t=>t.start<=e&&e<t.end),Qb=(e,t)=>{for(let r=0;r<t.length;r++){let i=t[r];if(i){if(e<i.start)return i.start;if(i.start<=e&&e<i.end){var n;return(n=t[r+1])==null?void 0:n.start}}}},$b=(e,t)=>{let n=[],r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];if(!a||!o)break;let s=Math.max(a.start,o.start),c=Math.min(a.end,o.end);s<c&&n.push({start:s,end:c}),a.end<=o.end?r++:i++}return n},ex=(e,t)=>{var n;let r=e.renditionId!==t.renditionId,i=e.channelId!==t.channelId,a=((n=e.timestamp)==null?0:n)>t.timestamp,o=e.type===`video`&&t.type===`video`&&`levelIdc`in e&&`levelIdc`in t&&e.levelIdc!==t.levelIdc,s=!1;return e.type===`video`&&t.type===`video`&&`width`in e&&`width`in t&&(s=t.width!==e.width||t.height!==e.height),i||r||a||s||o},tx=32,nx=e=>{let t=e.pendingSamplesOffset;if(t!==0){if(t>=e.pendingSamples.length){e.pendingSamples=[],e.pendingSamplesOffset=0;return}t<tx||t*2<e.pendingSamples.length||(e.pendingSamples=e.pendingSamples.slice(t),e.pendingSamplesOffset=0)}},rx=function(){var e=N(function*(e,t,n){for(e.isWorkingOnPendingSamples=!0;e.pendingSamplesOffset<e.pendingSamples.length;){let r=[],i=e.pendingSamplesOffset;for(let t=e.pendingSamplesOffset;t<e.pendingSamples.length;t++){i=t;let a=e.pendingSamples[t],o=e.pendingSamples[t+1];if(a&&(r.push(a),o)){if(ex(a,o))break;let e=(a.timestamp+a.duration)/a.timescale;if(o.timestamp/o.timescale-e>.1)break}if(t-e.pendingSamplesOffset>=n-1)break}let a=r[0];if(!a)break;yield t(r,e.previousSample?ex(e.previousSample,a):!0),e.pendingSamplesOffset=i+1,e.previousSample=r[r.length-1],nx(e)}e.isWorkingOnPendingSamples=!1});return function(t,n,r){return e.apply(this,arguments)}}();H(),h(),P();var ix,ax=class{constructor(e,t){var n=this;m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`element`,void 0),m(this,`pictureInPictureWindow`,void 0),m(this,`unload`,()=>{this.emitter.off(`add picture in picture listener`,this.onEnablePictureInPicture),this.detachElementListeners()}),m(this,`onEnablePictureInPicture`,e=>{this.detachElementListeners(),this.element=e.element,e.element.addEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),e.element.addEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),St(e.element,!0)}),m(this,`getPictureInPictureSize`,()=>this.pictureInPictureWindow),m(this,`isPictureInPictureActive`,()=>this.isWebkitPresentationModeActive()||this.isStandardPictureInPictureActive()),m(this,`isPictureInPictureSupported`,()=>this.isWebkitPresentationModeSupported()||this.isStandardPictureInPictureSupported()),m(this,`requestPictureInPicture`,()=>(this.emitter.emit(`ios-hack: reset size`),this.isStandardPictureInPictureSupported()?this.requestStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`picture-in-picture`):Promise.reject(Error(`Picture in picture is not supported`)))),m(this,`exitPictureInPicture`,()=>this.isStandardPictureInPictureSupported()?this.exitStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`inline`):Promise.reject(Error(`Picture in picture is not supported`))),m(this,`getStatistics`,()=>({isPictureInPictureActive:this.isPictureInPictureActive()})),m(this,`detachElementListeners`,()=>{this.element&&(this.element.removeEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),this.element.removeEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),St(this.element,!1))}),m(this,`onLeavePictureInPicture`,()=>{this.pictureInPictureWindow=void 0,this.logger.debug(`Leave picture in picture`),this.emitter.emit(`exit picture in picture`)}),m(this,`onEnterPictureInPicture`,e=>{this.pictureInPictureWindow=vt(e),this.logger.debug(`Enter picture in picture`),this.emitter.emit(`enter picture in picture`,this)}),m(this,`requestStandardPictureInPicture`,N(function*(){if(!n.element)throw Error(`Picture in picture is not supported`);let e=pt(n.element);if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`exitStandardPictureInPicture`,N(function*(){let e=mt();if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`isStandardPictureInPictureSupported`,()=>!!this.element&&_t(this.element)),m(this,`isStandardPictureInPictureActive`,()=>!!this.element&&gt()),m(this,`isWebkitPresentationModeActive`,()=>!!this.element&&yt(this.element)===`picture-in-picture`),m(this,`requestWebkitPresentationMode`,function(){var e=N(function*(e){return n.element&&bt(n.element,e),Promise.resolve()});return function(t){return e.apply(this,arguments)}}()),m(this,`isWebkitPresentationModeSupported`,()=>!!this.element&&xt(this.element)),this.emitter=e,this.logger=t,this.emitter.on(`add picture in picture listener`,this.onEnablePictureInPicture)}};ix=ax,m(ax,`create`,(e,t)=>new ix(e,t)),h();var ox,sx=class{constructor(e,t,n,r){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`clockSource`,void 0),m(this,`state`,`buffering`),m(this,`bufferFullness`,0),m(this,`targetBufferTime`,void 0),m(this,`lastBufferStateEvent`,`drained`),m(this,`firstFrameTime`,void 0),m(this,`currentTimeIsInRange`,!1),m(this,`needsInputForAudioCount`,0),m(this,`needsInputForVideoCount`,0),m(this,`unload`,()=>{this.emitter.off(`buffer state`,this.onBufferedStateChanged),this.emitter.off(`needs user input`,this.onNeedsUserInput)}),m(this,`setTargetBufferTime`,e=>{this.targetBufferTime=e,this.emitter.emit(`target buffer time`,e)}),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`getBufferFullness`,()=>this.bufferFullness),m(this,`getLastBufferStateEvent`,()=>this.lastBufferStateEvent),m(this,`getState`,()=>this.state),m(this,`getFirstFrameTime`,()=>this.firstFrameTime),m(this,`getStatistics`,()=>({bufferTime:this.targetBufferTime,needsInputForAudioCount:this.needsInputForAudioCount,needsInputForVideoCount:this.needsInputForVideoCount})),m(this,`onBufferedStateChanged`,({buffered:e,isPaused:t,playbackState:n})=>{let r=this.clockSource.currentTime,i=e.some(e=>e.start<=r&&r<e.end),a=e[e.length-1],o=a?a.end-a.start>=this.targetBufferTime:!1,s=a?Math.max(0,a.end-r)/this.targetBufferTime:0,c=t?`paused`:n,l=this.state;this.currentTimeIsInRange!==i&&!i?(this.lastBufferStateEvent=`drained`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)):i&&o&&this.lastBufferStateEvent===`drained`&&(this.lastBufferStateEvent=`filled`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)),c===`playing`&&!this.firstFrameTime&&(this.firstFrameTime=Date.now()),this.currentTimeIsInRange=i,this.state=c,this.bufferFullness=i?s:0,l!==c&&this.emitter.emit(`playback state`,c),this.emitter.emit(`buffer fullness`,this.bufferFullness)}),m(this,`onNeedsUserInput`,({forAudio:e,forVideo:t})=>{e&&this.needsInputForAudioCount++,t&&this.needsInputForVideoCount++}),this.emitter=e,this.logger=t,this.clockSource=n,this.targetBufferTime=r,this.emitter.on(`buffer state`,this.onBufferedStateChanged),this.emitter.on(`needs user input`,this.onNeedsUserInput),this.emitter.emit(`target buffer time`,r)}};ox=sx,m(sx,`create`,(e,t,n,r)=>new ox(e,t,n,r)),H(),h();var cx,lx=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:2**53-1}),ux=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:lx()}),dx=class{constructor(e,t,n){m(this,`minBufferFullnessLengthForRegression`,6),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`timers`,Hn.create()),m(this,`metrics`,ux()),m(this,`bufferFullness`,new w(30)),m(this,`bufferFullnessRegression`,void 0),m(this,`currentLevel`,void 0),m(this,`isSuspended`,!1),m(this,`_fatalQosCount`,0),m(this,`targetBufferTime`,0),m(this,`renditionLevelSource`,void 0),m(this,`qualityIndexOrder`,[]),m(this,`hasAsserted`,!1),m(this,`load`,()=>{this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`buffer fullness`,this.onBufferFullness),this.emitter.on(`rendition level changed`,this.onRenditionLevelChanged),this.emitter.on(`video decode rate`,this.onVideoDecodeRate),this.emitter.on(`target buffer time`,this.onTargetBufferTime)}),m(this,`unload`,()=>{this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`buffer fullness`,this.onBufferFullness),this.emitter.off(`rendition level changed`,this.onRenditionLevelChanged),this.emitter.off(`video decode rate`,this.onVideoDecodeRate),this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.suspend()}),m(this,`suspend`,()=>{this.isSuspended=!0,this.timers.unload(),this.stopBuffering(),this.unsetActive()}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.currentLevel&&this.setActive()}),m(this,`fatalQosGraceTime`,()=>1e4*(this.fatalQosCount+1)),m(this,`incrementFatalQosCount`,()=>{this._fatalQosCount++}),m(this,`getMetrics`,()=>this.metrics),m(this,`getLevelStats`,e=>{var t,n,r,i;let a=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r);return this.metrics.levels[a]}),m(this,`getBufferFullnessRegression`,()=>this.bufferFullnessRegression),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`activeRatios`,()=>{let e=new Map,t=Kn(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?Kn(r.activeRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=e.size?Math.abs(Array.from(e.values()).reduce((e,t)=>e+t,0)-1)<=.02:!0;t||(this.hasAsserted=!0,console.assert(t,`Active ratios should be close to 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingRatios`,()=>{let e=new Map,t=Kn(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?Kn(r.bufferingRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=Array.from(e.values()).reduce((e,t)=>e+t,0)<=1;t||(this.hasAsserted=!0,console.assert(t,`Buffering ratios should be less than 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingEventsLast`,e=>this.metrics.general.bufferingRanges.filter(t=>t.start>=Date.now()-e).length),m(this,`timeSpentBufferingLast`,e=>qn(this.metrics.general.bufferingRanges,e)),m(this,`timeSpentActiveLast`,e=>qn(this.metrics.general.activeRanges,e)),m(this,`timeSpentPlayingInAtLeastLevelRatio`,e=>{var t,n,r,i;let a=this.timeSpentBuffering(),o=this.timeActive(),s=this.bufferingRatios(),c=this.activeRatios(),l=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r),u=a/o;return Object.keys(this.metrics.levels).map(e=>parseInt(e,10)).filter(e=>e>=l).reduce((e,t)=>{var n,r;let i=this.getQualityIndex(t).toString();return((n=c.get(i))==null?0:n)-((r=s.get(i))==null?0:r)*u+e},0)}),m(this,`timeSpentBuffering`,()=>Kn(this.metrics.general.bufferingRanges)),m(this,`timeActive`,()=>Kn(this.metrics.general.activeRanges)),m(this,`getStatistics`,()=>{let e=this.timeSpentBuffering(),t=this.timeActive(),n=this.metrics.general.bufferingRanges.length,r=this.activeRatios(),i=t/6e4,a=t>0?e/t:0,o=Math.max(i,1),s=i>0?n/o:0,c=[...r].reduce((e,[t,n])=>e+parseInt(t,10)*n,0),l=6e4,u=this.timeSpentActiveLast(l),d=this.timeSpentBufferingLast(l),f=u>0?d/u:0,p=this.metrics.general.upgradesFromLevel.length+this.metrics.general.downgradesFromLevel.length,m=i>0?p/o:0,h=n>0?e/n:0;return{timeSpentBuffering:e,bufferingEventsCount:n,timeSpentRatio:[...r].reduce((e,[t,n])=>(e[t]=n,e),{}),fatalQosCount:this.fatalQosCount,bufferingRatio:a,bufferingEventsPerMinute:s,averageRenditionIndex:c,bufferingRatioPerMinute:f,renditionChangesPerMinute:m,timePerBufferingEvent:h}}),m(this,`onRenditionLevelChanged`,e=>{var t,n,r,i,a,o,s,c;let l=((t=(n=e.from)==null||(n=n.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.from)==null||(i=i.audio)==null?void 0:i.bitRate)==null?0:r),u=((a=(o=e.to)==null||(o=o.video)==null?void 0:o.bitRate)==null?0:a)+((s=(c=e.to)==null||(c=c.audio)==null?void 0:c.bitRate)==null?0:s);this.logger.info(`rendition level changed`,{fromLevel:l,toLevel:u}),this.metrics.general.activeRanges.length===0&&this.setActive(),e.from&&e.to&&(l<u?this.metrics.general.upgradesFromLevel.push(Date.now()):this.metrics.general.downgradesFromLevel.push(Date.now()));let d=!1;if(e.from){var f;let e=(f=this.metrics.levels[l])==null?lx():f;l<u?e.upgradesFromLevel.push(Date.now()):e.downgradesFromLevel.push(Date.now()),Wn(e.activeRanges);let t=e.bufferingRanges[e.bufferingRanges.length-1];d=!!t&&!t.end,Wn(e.bufferingRanges),this.metrics.levels[l]=e}if(e.to){var p;let e=(p=this.metrics.levels[u])==null?lx():p;Gn(e.activeRanges),d&&Gn(e.bufferingRanges),this.metrics.levels[u]=e,this.currentLevel=u}}),m(this,`onBufferFullness`,e=>{this.bufferFullness.push(e),this.metrics.bufferFullness=e,this.bufferFullness.items().length>=this.minBufferFullnessLengthForRegression&&(this.bufferFullnessRegression=this.calculateLinearRegression())}),m(this,`onPlaybackState`,e=>{switch(this.logger.info(`Playback state`,{state:e,currentLevel:this.currentLevel}),e){case`playing`:this.stopBuffering();break;case`buffering`:this.isSuspended||this.startBuffering();break}}),m(this,`onVideoDecodeRate`,e=>{var t;if(this.metrics.general.decodeRate=e,!this.currentLevel)return;let n=this.metrics.levels[(t=this.currentLevel)==null?0:t];n&&(n.decodeRate=e)}),m(this,`onTargetBufferTime`,e=>{this.targetBufferTime=e}),m(this,`calculateLinearRegression`,()=>Pt(this.bufferFullness.items().map((e,t)=>({x:t,y:e})))),m(this,`stopBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Wn(e.bufferingRanges)}Wn(this.metrics.general.bufferingRanges)}),m(this,`startBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Gn(e.bufferingRanges)}Gn(this.metrics.general.bufferingRanges)}),m(this,`unsetActive`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Wn(e.activeRanges)}Wn(this.metrics.general.activeRanges)}),m(this,`getQualityIndex`,e=>{if(!this.qualityIndexOrder.length){var t,n;let e=((t=(n=this.renditionLevelSource)==null?void 0:n.getRenditionLevels())==null?[]:t).map(e=>{var t,n,r,i;return((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r)}).filter(e=>e>0);this.qualityIndexOrder=[...new Set(e)].sort((e,t)=>t-e)}let r=this.qualityIndexOrder.indexOf(e);return r===-1&&(this.qualityIndexOrder.push(e),this.qualityIndexOrder.sort((e,t)=>t-e),r=this.qualityIndexOrder.indexOf(e)),r}),this.logger=t,this.emitter=e,this.renditionLevelSource=n}get fatalQosCount(){return this._fatalQosCount}setActive(){if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Gn(e.activeRanges)}Gn(this.metrics.general.activeRanges)}};cx=dx,m(dx,`create`,(e,t,n)=>new cx(e,t,n)),H(),h();var fx,px=class{constructor(e,t){m(this,`renditions`,new Map),m(this,`renditionLevels`,[]),m(this,`languages`,[]),m(this,`emitter`,void 0),m(this,`subscriptionSource`,void 0),m(this,`renditionLevelChangeCount`,0),m(this,`unload`,()=>{this.emitter.off(`renditions`,this.onRenditions),this.emitter.off(`subscription changed`,this.onSubscriptionChanged)}),m(this,`getRenditionLevels`,e=>e?this.createRenditionLevels(e):this.renditionLevels),m(this,`getRenditionLevel`,e=>{var t;let n=e==null?this.getCurrentSubscription():e,r=e?this.createRenditionLevels(e):this.renditionLevels;if(!n.video)return r.length?r[0]:void 0;let i=n.video.bitRate||2**53-1,a=n.video.width||2**53-1,o=n.video.height||2**53-1;return(t=r.filter(e=>e.video&&n.video?e.video.bitRate<=i&&e.video.width<=a&&e.video.height<=o:!0).pop())==null?r[0]:t}),m(this,`setRenditions`,(e,t)=>{this.renditions.set(e,t)}),m(this,`getLanguages`,()=>this.languages),m(this,`getVideoRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&pr(n))return n}),m(this,`getAudioRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>mr(e))}),m(this,`getVideoRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>pr(e))}),m(this,`getAudioRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&mr(n))return n}),m(this,`getRendition`,(e,t=this.getCurrentSubscription().channelId)=>{var n;return(n=this.renditions.get(t))==null?void 0:n.find(t=>t.id===e)}),m(this,`getStatistics`,()=>{var e,t,n,r,i,a,o,s,c,l;let u=this.getRenditionLevel();return{videoCodec:u==null||(e=u.video)==null?void 0:e.codec,audioCodec:u==null||(t=u.audio)==null?void 0:t.codec,videoRenditionId:u==null||(n=u.video)==null?void 0:n.id,audioRenditionId:u==null||(r=u.audio)==null?void 0:r.id,videoWidth:u==null||(i=u.video)==null?void 0:i.width,videoHeight:u==null||(a=u.video)==null?void 0:a.height,expectedVideoBitRate:u==null||(o=u.video)==null?void 0:o.bitRate,expectedAudioBitRate:u==null||(s=u.audio)==null?void 0:s.bitRate,frameRate:u==null||(c=u.video)==null?void 0:c.frameRate,language:u==null||(l=u.audio)==null?void 0:l.language,renditionLevelChangeCount:this.renditionLevelChangeCount}}),m(this,`onRenditions`,e=>{let t=this.subscriptionSource.getCurrentSubscription();this.renditions.set(e.channelId,e.renditions),this.updateRenditionLevels({to:t,from:t})}),m(this,`onSubscriptionChanged`,e=>{this.updateRenditionLevels(e)}),m(this,`updateRenditionLevels`,({to:e,from:t})=>{var n;let{channelId:r,initiator:i}=e,a=this.getRenditionLevel(t),o=new Set;((n=this.renditions.get(r))==null?[]:n).filter(e=>e.codec!==`webvtt`).forEach(e=>e.language?o.add(e.language):void 0),this.languages=Array.from(o),this.renditionLevels=this.createRenditionLevels(e);let s=this.getRenditionLevel(e);Vt(a,s)||(this.renditionLevelChangeCount++,this.emitter.emit(`rendition level changed`,{to:s,from:a,reason:i?`manual`:`abr`}))}),m(this,`createRenditionLevels`,e=>{var t;let{video:n,audio:r,channelId:i}=e,a=(t=this.renditions.get(i))==null?[]:t,o=a.filter(pr).filter(e=>n&&e.codec===n.codec),s=a.filter(mr).filter(e=>r&&e.codec===r.codec&&e.language===r.language),c=Math.max(o.length,s.length),l=[];for(let e=0;e<c;e++){let t=o[Math.min(o.length-1,e)],n=s[Math.min(s.length-1,e)];l.push({audio:n,video:t})}return l}),m(this,`getCurrentSubscription`,()=>this.subscriptionSource.getCurrentSubscription()),this.subscriptionSource=t,this.emitter=e,this.emitter.on(`renditions`,this.onRenditions),this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};fx=px,m(px,`create`,(e,t)=>new fx(e,t)),H(),h();var mx,hx=e=>JSON.parse(JSON.stringify(e)),gx=1e4,_x=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`timers`,new Hn),m(this,`emitter`,void 0),m(this,`targetSubscription`,void 0),m(this,`currentSubscription`,void 0),m(this,`_isSwitchingSubscription`,!1),m(this,`pendingSubscriptionTimeoutId`,void 0),m(this,`burstMs`,0),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.timers.unload(),this.emitter.off(`subscription changed`,this.onSubscriptionChanged),this.logger.debug(`Unloaded module`)}),m(this,`isSwitchingSubscription`,()=>this._isSwitchingSubscription),m(this,`getTargetSubscription`,()=>this.targetSubscription),m(this,`getCurrentSubscription`,()=>this.currentSubscription),m(this,`enableBurst`,e=>{this.burstMs=e}),m(this,`setSize`,e=>{this.targetSubscription.video.width=e.width,this.targetSubscription.video.height=e.height,this.scheduleSubscriptionChange()}),m(this,`setVideoConstraint`,e=>{this.targetSubscription.video=e,this.scheduleSubscriptionChange()}),m(this,`setAudioConstraint`,e=>{this.targetSubscription.audio=e,this.scheduleSubscriptionChange()}),m(this,`setVideoBitRate`,e=>{this.targetSubscription.video.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setAudioBitRate`,e=>{this.targetSubscription.audio.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setChannelId`,e=>{this.targetSubscription.channelId=e,this.scheduleSubscriptionChange()}),m(this,`setLanguage`,e=>{this.targetSubscription.audio.language=e,this.scheduleSubscriptionChange()}),m(this,`setVideoCodec`,e=>{this.targetSubscription.video.codec=e,this.scheduleSubscriptionChange()}),m(this,`setAudioCodec`,e=>{this.targetSubscription.audio.codec=e,this.scheduleSubscriptionChange()}),m(this,`setBurst`,e=>{e?this.targetSubscription.burstMs=e:delete this.targetSubscription.burstMs}),m(this,`isNewSubscription`,()=>{let e=[`burstMs`,`meta`,`initiator`,`channelGroupId`];return!Vt(Rn(this.currentSubscription,e),Rn(this.targetSubscription,e))}),m(this,`onSubscriptionChanged`,({to:e,reset:t})=>{this.logger.debug(`onSubscriptionChanged`,{to:e,reset:t}),t?this.targetSubscription=hx(this.currentSubscription):this.currentSubscription=hx(e),this._isSwitchingSubscription=this.isNewSubscription()}),m(this,`scheduleSubscriptionChange`,()=>{this.targetSubscription=hx(this.targetSubscription),this._isSwitchingSubscription=this.isNewSubscription();let e=this.currentSubscription.channelId,t=this.targetSubscription.channelId,n=e!==t;this._isSwitchingSubscription&&(n&&this.burstMs?this.setBurst(this.burstMs):this.setBurst(0),this.pendingSubscriptionTimeoutId&&(this.timers.clearTimeout(this.pendingSubscriptionTimeoutId),this.pendingSubscriptionTimeoutId=void 0),n&&this.timers.setTimeout(()=>{this.currentSubscription.channelId===e&&this.targetSubscription.channelId===t&&(this.logger.warn(`Channel switch timeout`,t),this.targetSubscription=hx(this.currentSubscription),this.emitter.emit(`channel switch timeout`,t))},gx),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit(`send signal`,{type:`subscribe`,subscription:this.getTargetSubscription()}),0))}),this.logger=e,this.targetSubscription=t,this.currentSubscription=hx(t),this.emitter=n,this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};mx=_x,m(_x,`create`,(e,t,n)=>new mx(e,n,t)),H(),h(),B();var vx,yx=5e3,bx=()=>Ze()||Je(),xx=e=>e&&bx()?100:0,Sx=e=>t=>t>e,Cx={seek:{toleranceMs:200,toleranceMaxMs:2500,toleranceMultiplierStep:1,backoffEveryN:2,cooldownMs:1e3,timeoutMs:5e3,aheadToleranceMs:150,keyframeSearchBeforeMs:50,keyframeSearchAfterMs:100},timeshift:{enabled:!1,toleranceMs:50,toleranceMaxMs:600,backoffEveryN:3},playbackRate:{enabled:!1,startDiff:60,stopDiff:40,maxDiff:300,speed:.02,cooldownMs:2e3},backoff:{enabled:!0,decayEnabled:!0,decayCooldownMultiplier:3,decayCheckInterval:15e3}},wx=class{get driftSamplesToCollect(){return this._driftSamplesToCollect}set driftSamplesToCollect(e){this._driftSamplesToCollect=e,this.driftSamples=new w(e)}constructor(e,t,n,r,i,a=!0){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`playbackSource`,void 0),m(this,`bufferSource`,void 0),m(this,`keyframeTimestamps`,new w(10)),m(this,`lastSeekTime`,Date.now()),m(this,`lastAdjustmentTime`,Date.now()),m(this,`lastDecayCheckTime`,Date.now()),m(this,`config`,void 0),m(this,`state`,void 0),m(this,`allowTimeshiftOnAudio`,!1),m(this,`syncInfoToleranceMaxMs`,150),m(this,`syncInfoToleranceStep`,20),m(this,`seekOvershoot`,void 0),m(this,`timers`,Hn.create()),m(this,`rtt`,0),m(this,`channelSyncInfo`,new Map),m(this,`seekAdjustmentCount`,0),m(this,`timeshiftAdjustmentCount`,0),m(this,`syncInfoCorrectionCount`,0),m(this,`playbackRateAdjustmentCount`,0),m(this,`lastPlaybackRateChangeTime`,0),m(this,`seekAdjustmentTimestamps`,[]),m(this,`timeshiftAdjustmentTimestamps`,[]),m(this,`_driftSamplesToCollect`,5),m(this,`driftSamples`,new w(this._driftSamplesToCollect)),m(this,`timestampOffset`,void 0),m(this,`currentChannelId`,void 0),m(this,`highestSeenTimestamps`,new Map),m(this,`isSuspended`,!1),m(this,`isSyncAdjustmentActivated`,!1),m(this,`queuedTimeshift`,!1),m(this,`playbackState`,void 0),m(this,`hasPerformedRecoverySeekInCurrentRecoveryState`,!1),m(this,`shouldSeekAfterBuffering`,!1),m(this,`usesMse`,void 0),m(this,`load`,()=>{this.timers.setInterval(this.onSync,100)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.emitter.off(`rtt`,this.updateRtt),this.emitter.off(`playback state`,this.onPlaybackState),this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.resetSyncState(),this.isSuspended=!1}),m(this,`deactivateSyncAdjustments`,()=>{this.isSyncAdjustmentActivated=!1}),m(this,`activateSyncAdjustments`,()=>{this.tryApplySyncInfo(0),this.lastSeekTime=Date.now(),this.isSyncAdjustmentActivated=!0}),m(this,`reset`,()=>{this.logger.info(`Reset sync state`),this.currentChannelId=void 0,this.timestampOffset=void 0,this.resetSyncState(),this.highestSeenTimestamps.clear()}),m(this,`getTimeshiftOffset`,()=>{var e;return(e=this.timestampOffset)==null?0:e}),m(this,`getCurrentChannelId`,()=>this.currentChannelId),m(this,`resetSyncState`,()=>{this.state.seekToleranceMultiplier=1,this.state.timeshiftToleranceMultiplier=1,this.seekAdjustmentTimestamps=[],this.timeshiftAdjustmentTimestamps=[],this.driftSamples.clear(),this.playbackState=void 0,this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags()}),m(this,`getEffectiveSeekToleranceMs`,()=>this.config.timeshift.enabled?this.config.seek.toleranceMs*2:this.config.seek.toleranceMs),m(this,`getLiveEdgeTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=Date.now()-t.localTimestamp;return t.timestamp+n}),m(this,`getLiveEdgeTimeLatencyAdjusted`,e=>{let t=this.getLiveEdgeTime(e);if(t)return t+this.rtt/2}),m(this,`getWallclockTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=Date.now()-t.localTimestamp;return t.wallclockTime+n}),m(this,`getWallclockTimeLatencyAdjusted`,e=>{let t=this.getWallclockTime(e);if(t)return t+this.rtt/2}),m(this,`processSample`,e=>{var t;if(!e.channelId)throw Error(`Sample must be assigned to a channel`);this.currentChannelId||(this.currentChannelId=e.channelId),this.timestampOffset||(this.timestampOffset=e.timestamp/e.timescale*1e3-yx);let n=e.type===`video`&&e.isSync;if(this.currentChannelId!==e.channelId){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)});let n=e.timestamp/e.timescale*1e3;this.currentChannelId=e.channelId,this.timestampOffset=n-t}else (n||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let r=this.timestampOffset*e.timescale/1e3;return e.timestamp-=r,n&&this.keyframeTimestamps.push(e.timestamp/e.timescale*1e3),this.highestSeenTimestamps.set(e.type,Math.max((t=this.highestSeenTimestamps.get(e.type))==null?0:t,e.timestamp/e.timescale*1e3)),e}),m(this,`processFragment`,(e,t)=>{var n;this.currentChannelId||(this.currentChannelId=e);let r=t.mediaType();if(!r)throw Error(`Fragment must have a media type`);this.timestampOffset||(this.timestampOffset=t.baseMediaDecodeTime()/t.timescale()*1e3-yx);let i=t.mediaType()===`video`&&t.startsWithKeyframe();if(this.currentChannelId!==e){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)}),this.currentChannelId=e}else (i||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let a=this.timestampOffset*t.timescale()/1e3;return t.updateBaseMediaDecodeTime(t.baseMediaDecodeTime()-a),i&&this.keyframeTimestamps.push(t.baseMediaDecodeTime()/t.timescale()*1e3),this.highestSeenTimestamps.set(r,Math.max((n=this.highestSeenTimestamps.get(r))==null?0:n,t.baseMediaDecodeTime()/t.timescale()*1e3)),t}),m(this,`forceSeek`,()=>{this.logger.debug(`Forcing seek`,{amount:this.serverCurrentTime-this.playbackSource.currentTime}),this.clearRecoverySeekFlags(),this.playbackSource.currentTime=this.serverCurrentTime}),m(this,`forceTimeshift`,()=>{this.queuedTimeshift=!0}),m(this,`setPlaybackRateAdjustmentEnabled`,e=>{this.config.playbackRate.enabled=e}),m(this,`getStatistics`,()=>{let e=this.driftSamples.items(),t=e.length>0?At(e.map(Math.abs)):0;return{drift:this.drift,seekAdjustmentCount:this.seekAdjustmentCount,timeshiftAdjustmentCount:this.timeshiftAdjustmentCount,seekTime:this.playbackSource.seekTime,totalSeekTime:this.playbackSource.totalSeekTime,seekToleranceMultiplier:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs(),currentAheadToleranceMs:this.currentAheadToleranceMs(),isPlaybackRateAdjustmentEnabled:this.config.playbackRate.enabled,playbackRate:this.playbackSource.playbackRate||1,playbackRateAdjustmentCount:this.playbackRateAdjustmentCount,averageDrift:t}}),m(this,`updateRtt`,e=>{this.rtt=e}),m(this,`isPlaybackSourceReadyToSeek`,()=>!this.isSeeking()&&this.isSeekCooldownExpired()&&this.isSyncAdjustmentActivated),m(this,`isPlaybackSourceReady`,()=>!this.isSeeking()&&this.isSyncAdjustmentActivated),m(this,`isSeeking`,()=>this.playbackSource.isSeeking?!this.isSeekTimeoutExpired():!1),m(this,`isAllowedToSync`,()=>this.isPlaybackSourceReadyToSeek()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isAllowedToSyncIgnoringCooldown`,()=>this.isPlaybackSourceReady()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isSeekCooldownExpired`,()=>Date.now()-this.lastSeekTime>this.config.seek.cooldownMs),m(this,`isSeekTimeoutExpired`,()=>Date.now()-this.lastSeekTime>this.config.seek.timeoutMs),m(this,`currentTimeshiftToleranceMs`,()=>Math.min(this.config.timeshift.toleranceMs*this.state.timeshiftToleranceMultiplier,this.config.timeshift.toleranceMaxMs)),m(this,`currentSeekToleranceMs`,()=>Math.min(this.state.seekToleranceMultiplier*this.getEffectiveSeekToleranceMs(),this.config.seek.toleranceMaxMs)),m(this,`currentEmergencySeekToleranceMs`,()=>Math.max(this.currentSeekToleranceMs()+this.getEffectiveSeekToleranceMs(),this.bufferSource.getTargetBufferTime())),m(this,`currentAheadToleranceMs`,()=>{let e=Math.max(this.config.seek.aheadToleranceMs*this.state.seekToleranceMultiplier,400),t=this.playbackSource.seekTime>500?e:this.config.seek.aheadToleranceMs;return Math.min(t,this.bufferSource.getTargetBufferTime()/2)}),m(this,`tryDecayMultipliers`,()=>{if(!this.config.backoff.decayEnabled)return;let e=Date.now();if(e-this.lastDecayCheckTime<this.config.backoff.decayCheckInterval)return;this.lastDecayCheckTime=e;let t=this.seekAdjustmentTimestamps.length>0?Math.max(...this.seekAdjustmentTimestamps):0,n=this.timeshiftAdjustmentTimestamps.length>0?Math.max(...this.timeshiftAdjustmentTimestamps):0,r=e-Math.max(t,n,this.lastAdjustmentTime),i=Math.max(this.state.seekToleranceMultiplier,this.state.timeshiftToleranceMultiplier),a=this.config.seek.timeoutMs*this.config.backoff.decayCooldownMultiplier*i;if(r<a)return;let o=!1;if(this.state.seekToleranceMultiplier>1){let e=Math.max(1,this.state.seekToleranceMultiplier-.5);e!==this.state.seekToleranceMultiplier&&(this.logger.info(`Decaying seek tolerance multiplier`,{from:this.state.seekToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.seekToleranceMultiplier=e,o=!0)}if(this.state.timeshiftToleranceMultiplier>1){let e=Math.max(1,this.state.timeshiftToleranceMultiplier-.5);e!==this.state.timeshiftToleranceMultiplier&&(this.logger.info(`Decaying timeshift tolerance multiplier`,{from:this.state.timeshiftToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.timeshiftToleranceMultiplier=e,o=!0)}if(o){let t=e-a*2;this.seekAdjustmentTimestamps=this.seekAdjustmentTimestamps.filter(e=>e>t),this.timeshiftAdjustmentTimestamps=this.timeshiftAdjustmentTimestamps.filter(e=>e>t)}}),m(this,`applyBackoff`,()=>{if(this.config.backoff.enabled&&(this.lastAdjustmentTime=Date.now(),this.seekAdjustmentCount>0&&this.seekAdjustmentCount%this.config.seek.backoffEveryN===0)){let e=this.state.seekToleranceMultiplier,t=this.config.seek.toleranceMaxMs/this.getEffectiveSeekToleranceMs();this.state.seekToleranceMultiplier=Math.min(this.state.seekToleranceMultiplier+this.config.seek.toleranceMultiplierStep,t),e!==this.state.seekToleranceMultiplier&&this.logger.info(`Backoff: Increasing seek tolerance multiplier`,{from:e,to:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs()})}}),m(this,`tryPlaybackRateSync`,e=>{if(!this.config.playbackRate.enabled)return!1;let t=this.playbackSource.playbackRate!==1,n=Math.abs(e),r=t&&n<this.config.playbackRate.stopDiff,i=!t&&n>=this.config.playbackRate.startDiff;if(n>this.config.playbackRate.maxDiff)return t&&(this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=Date.now()),!1;let a=Date.now(),o=a-this.lastPlaybackRateChangeTime>=this.config.playbackRate.cooldownMs;if(r&&o)return this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=a,this.logger.info(`Resetting playback rate to 1`,{drift:e}),!0;if(i&&o){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.playbackRateAdjustmentCount++,this.logger.info(`Adjusting playback rate`,{drift:e,targetRate:t}),!0}if(t&&n>=this.config.playbackRate.stopDiff&&n<=this.config.playbackRate.maxDiff){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate!==t&&o&&(this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.logger.info(`Changing playback rate direction`,{drift:e,targetRate:t})),!0}return!t&&n<this.config.playbackRate.startDiff?!0:t}),m(this,`tryTimeshiftSync`,()=>{var e;if(!this.config.timeshift.enabled||this.hasPendingRecoverySeek()||!this.isAllowedToSync()||this.playbackSource.playbackRate!==1)return;let t=(e=this.drift)==null?0:e;this.driftSamples.push(t);let n=Mt(this.driftSamples.items());if(this.queuedTimeshift&&n>0){this.queuedTimeshift=!1,this.applyTimeshift(n);return}if(n>=this.getEffectiveSeekToleranceMs()||n<this.currentTimeshiftToleranceMs())return;let r=Date.now()-this.config.seek.timeoutMs*this.state.timeshiftToleranceMultiplier,i=this.timeshiftAdjustmentTimestamps.filter(Sx(r)).length;if(i&&this.state.timeshiftToleranceMultiplier>2){this.logger.debug(`Too many timeshifts within sliding window`,{timeshiftCooldownThreshold:r,recentTimeshiftCount:i});return}this.applyTimeshift(n)}),m(this,`clearRecoverySeekFlags`,()=>{this.shouldSeekAfterBuffering=!1}),m(this,`hasActiveRecoveryTrigger`,()=>this.playbackState===`buffering`),m(this,`hasPendingRecoverySeek`,()=>(this.refreshRecoverySeekState(),this.getRecoverySeekReason()!==void 0)),m(this,`refreshRecoverySeekState`,()=>{var e,t;if(!this.hasActiveRecoveryTrigger()||!this.usesMse||this.hasPerformedRecoverySeekInCurrentRecoveryState){this.clearRecoverySeekFlags();return}let n=(e=(t=this.bufferSource).getNextBufferedRangeStart)==null?void 0:e.call(t,this.playbackSource.currentTime);return this.shouldSeekAfterBuffering=n!==void 0,n}),m(this,`getRecoverySeekReason`,()=>{if(this.shouldSeekAfterBuffering)return`buffering`}),m(this,`shouldSkipNormalSeek`,e=>e<0&&-e<this.currentAheadToleranceMs()||e>0&&e<this.currentSeekToleranceMs()||Math.abs(e)<1?!0:!this.isAllowedToSync()),m(this,`shouldDeferRecoverySeek`,(e,t)=>t!==void 0&&t>e),m(this,`buildSeekPlan`,(e,t)=>{var n,r;let i=this.playbackSource.currentTime+e,a=t?(n=(r=this.bufferSource).getNextBufferedRangeStart)==null?void 0:n.call(r,this.playbackSource.currentTime):void 0,o=i+this.seekOvershoot,s=this.playbackSource.currentTime+this.seekOvershoot,c=t?Math.max(o,s):o;if(t&&this.shouldDeferRecoverySeek(c,a)){this.logger.debug(`Deferring recovery seek until expected playhead reaches next buffered range start`,{currentTime:this.playbackSource.currentTime,desiredCurrentTime:c,nextBufferedRangeStart:a,recoverySeekReason:t});return}let l=t&&a?a:i,u=this.findKeyframeCloseToTimestamp(l);if(!(!t&&!u&&!this.keyframeTimestamps.isEmpty()))return{closestKeyFrame:u,keyframeSearchTime:l,nextBufferedRangeStart:a,targetCurrentTime:u&&u>c?a?Math.max(a,u):u:c}}),m(this,`applySeek`,(e,t)=>{let n=this.playbackSource.seekTime,r=this.buildSeekPlan(e,t);r&&(this.logger.info(`Adjusting for drift using seek`,{drift:e,currentTime:this.playbackSource.currentTime,recoverySeekReason:t,keyframeSearchTime:r.keyframeSearchTime,closestKeyFrame:r.closestKeyFrame,nextBufferedRangeStart:r.nextBufferedRangeStart,targetCurrentTime:r.targetCurrentTime,seekTime:n,rtt:this.rtt,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.lastSeekTime=Date.now(),t&&(this.hasPerformedRecoverySeekInCurrentRecoveryState=!0),this.clearRecoverySeekFlags(),this.driftSamples.clear(),this.seekAdjustmentTimestamps.push(this.lastSeekTime),this.seekAdjustmentCount++,this.playbackSource.currentTime=r.targetCurrentTime+Math.min(n,this.bufferSource.getTargetBufferTime()),this.applyBackoff())}),m(this,`applyTimeshift`,e=>{var t;let n=(t=e==null?this.drift:e)==null?0:t;if(!this.timestampOffset)return;let r=n;if(this.logger.info(`Adjusting for drift using timeshift`,{drift:n,syncAmount:r,currentTime:this.playbackSource.currentTime,rtt:this.rtt,timeshiftToleranceMultiplier:this.state.timeshiftToleranceMultiplier}),this.timestampOffset+=r,this.lastSeekTime=Date.now(),this.lastAdjustmentTime=Date.now(),!this.playbackSource.isPaused&&(this.driftSamples.clear(),this.timeshiftAdjustmentTimestamps.push(this.lastSeekTime),this.timeshiftAdjustmentCount++,this.config.backoff.enabled&&this.timeshiftAdjustmentCount>0&&this.timeshiftAdjustmentCount%this.config.timeshift.backoffEveryN===0)){let e=this.state.timeshiftToleranceMultiplier,t=this.config.timeshift.toleranceMaxMs/this.config.timeshift.toleranceMs;this.state.timeshiftToleranceMultiplier=Math.min(this.state.timeshiftToleranceMultiplier+1,t),e!==this.state.timeshiftToleranceMultiplier&&this.logger.info(`Backoff: Increasing timeshift tolerance multiplier`,{from:e,to:this.state.timeshiftToleranceMultiplier,currentTimeshiftToleranceMs:this.currentTimeshiftToleranceMs()})}}),m(this,`onSync`,()=>{var e;this.tryDecayMultipliers(),this.refreshRecoverySeekState();let t=(e=this.drift)==null?0:e,n=this.getRecoverySeekReason(),r=n!==void 0;if(!r&&!this.isAllowedToSyncIgnoringCooldown()||r&&(this.isSeeking()||!this.currentChannelId||this.isSuspended||this.playbackSource.isPaused)||(this.driftSamples.push(t),!this.isSeekCooldownExpired())||!r&&this.driftSamples.items().length<this.driftSamplesToCollect&&Math.abs(t)<2e3)return;let i=r?t:Mt(this.driftSamples.items());if(!r&&this.tryPlaybackRateSync(i)||!r&&this.shouldSkipNormalSeek(i))return;let a=Date.now()-this.config.seek.timeoutMs*this.state.seekToleranceMultiplier,o=this.seekAdjustmentTimestamps.filter(Sx(a)).length,s=this.currentEmergencySeekToleranceMs(),c=i>0&&i>=s;if(o&&this.state.seekToleranceMultiplier>2&&!r&&!c){this.logger.debug(`Too many seek adjustments within sliding window`,{seekCooldownThreshold:a,recentSeekCount:o});return}o&&(r||c)&&this.logger.debug(`Bypassing recent seek limit`,{drift:i,recoverySeekReason:n,emergencySeekToleranceMs:s,recentSeekCount:o,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.applySeek(i,n)}),m(this,`onPlaybackState`,e=>{let t=this.playbackState===`buffering`;if(this.playbackState=e,e!==`buffering`){this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags();return}if(t||(this.hasPerformedRecoverySeekInCurrentRecoveryState=!1),this.refreshRecoverySeekState()!==void 0){this.onSync();return}}),m(this,`findKeyframeCloseToTimestamp`,e=>{let t=this.keyframeTimestamps.items();for(let n of t){let t=n>=e-this.config.seek.keyframeSearchBeforeMs,r=n<=e+this.config.seek.keyframeSearchAfterMs;if(t&&r)return n}}),this.logger=t,this.emitter=e,this.playbackSource=n,this.bufferSource=r,this.usesMse=a,this.seekOvershoot=xx(a),this.config={seek:z({},Cx.seek),timeshift:z({},Cx.timeshift),playbackRate:z({},Cx.playbackRate),backoff:z({},Cx.backoff)},this.config.timeshift.enabled=i,a||(this.config.seek.toleranceMs=50,this.config.timeshift.toleranceMs=20,this.config.seek.aheadToleranceMs=40),this.state={seekToleranceMultiplier:1,timeshiftToleranceMultiplier:1},typeof window<`u`&&window.location.search.includes(`playbackRateAdjustmentEnabled`)&&(this.config.playbackRate.enabled=!0),this.emitter.on(`rtt`,this.updateRtt),this.emitter.on(`playback state`,this.onPlaybackState),this.logger.info(`SyncModule initialized`,{config:this.config})}updateChannelSyncInfo(e,t){let n=Date.now(),r=this.channelSyncInfo.get(e),i=this.getLiveEdgeTime(e);if(this.isSuspended)return;if(!r||!i){this.logger.info(`Initial timing info`,{syncInfo:t}),this.channelSyncInfo.set(e,z(z({},t),{},{localTimestamp:n,timeDifferences:new w(12)}));return}let a=t.wallclockTime-r.wallclockTime,o=t.timestamp-r.timestamp,s=n-r.localTimestamp,c=o-s;if(r.timeDifferences.push(c),this.logger.debug(`Timing info`,{rtt:this.rtt,channelId:e,syncInfo:t,localTimestamp:n,diffFromEstimated:c,timestampDelta:o,wallclockDelta:a,localWallclockDelta:s}),Math.abs(c)>=Math.max(this.bufferSource.getTargetBufferTime()*2,3e3)){this.logger.info(`Resetting sync info`,{diffFromEstimated:c}),this.channelSyncInfo.set(e,z(z({},t),{},{localTimestamp:n,timeDifferences:new w(r.timeDifferences.maxSize+1)})),this.currentChannelId&&this.currentChannelId===e&&(this.reset(),this.emitter.emit(`channel reset`));return}r.timeDifferences.items().length<3||this.tryApplySyncInfo(Math.min(this.syncInfoToleranceMaxMs,this.syncInfoCorrectionCount*this.syncInfoToleranceStep))}tryApplySyncInfo(e){let t=this.getCurrentChannelId();if(!t)return;let n=this.channelSyncInfo.get(t);if(!n)return;let r=n.timeDifferences.items();if(r.length===0)return;let i=Mt(r);Math.abs(i)>e&&(this.logger.info(`Adjusting sync info`,{medianDifference:i,tolerance:e,count:r.length}),n.timestamp+=i,this.syncInfoCorrectionCount++,n.timeDifferences.clear())}get serverCurrentTime(){return this.channelCurrentTime-this.getTimeshiftOffset()}get channelCurrentTime(){let e=this.getCurrentChannelId();if(!e)return 0;let t=this.getLiveEdgeTime(e);return t?t-this.bufferSource.getTargetBufferTime():0}get drift(){return this.serverCurrentTime-this.playbackSource.currentTime}};vx=wx,m(wx,`create`,(e,t,n,r,i,a=!0)=>new vx(e,t,n,r,i,a)),Ei(),H(),B(),h(),P();var Tx,Ex={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},Dx=(e,t)=>z(z({},t),{},{type:e,timestamp:new Date().toISOString(),discriminator:`web`}),Ox=class{constructor(e,t,n,r){var i=this;m(this,`logger`,void 0),m(this,`timers`,new Hn),m(this,`emitter`,void 0),m(this,`options`,void 0),m(this,`parentContext`,void 0),m(this,`unsentLines`,new w(100)),m(this,`retries`,0),m(this,`errorCount`,0),m(this,`eventCount`,0),m(this,`statsCount`,0),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),window.removeEventListener(`error`,this.onError),window.removeEventListener(`unhandledrejection`,this.onRejection),this.timers.unload(),this.emitter.off(`error`,this.addError),this.emitter.off(`visibilitystate`,this.onVisibilityChange),this.emitter.off(`pagehide`,this.onPageHide),this.emitter.off(`telemetry event`,this.addEvent),this.addStats({isFinal:!0,initiator:`unload`}),this.send(`beacon`),this.logger.debug(`Unloaded module`)}),m(this,`load`,()=>{window.addEventListener(`error`,this.onError),window.addEventListener(`unhandledrejection`,this.onRejection),this.emitter.on(`error`,this.addError),this.emitter.on(`visibilitystate`,this.onVisibilityChange),this.emitter.on(`pagehide`,this.onPageHide),this.emitter.on(`telemetry event`,this.addEvent),this.timers.setInterval(()=>{this.addStats(),this.send(`fetch`)},this.options.interval)}),m(this,`addStats`,({isFinal:e,initiator:t}={isFinal:!1,initiator:`interval`},n={})=>{if(!this.options.includeStats)return;let r=this.parentContext.getStatistics(),i=Dx(`stats`,z(z(z({},n),r),{},{isFinal:e,initiator:t,count:this.statsCount++}));this.unsentLines.push(i)}),m(this,`addEvent`,e=>{if(!this.options.includeEvents||this.eventCount>this.options.maxEvents)return;let t=Dx(`event`,z(z({},this.parentContext.getStatistics()),e));this.eventCount++,this.unsentLines.push(t)}),m(this,`getStatistics`,()=>({errorCount:this.errorCount})),m(this,`send`,function(){var e=N(function*(e){if(i.options.enabled&&!(i.retries>=i.options.maxRetries)&&!i.unsentLines.isEmpty()){i.logger.debug(`Sending telemetry`,{lines:i.unsentLines.items()});try{let t=i.unsentLines.items().map(e=>JSON.stringify(e)).reverse().join(`
1223
- `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield kl(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(t&&e instanceof U){if(this.errorCount++,this.errorCount>n)return;let t=this.parentContext.getStatistics();this.unsentLines.push(Dx(`error`,z(z({},t),e.toStringifiable())))}}),this.logger=e,this.emitter=t,this.options=z(z({},Ex),n),this.parentContext=r}};Tx=Ox,m(Ox,`create`,(e,t,n,r)=>new Tx(e,t,n,r)),H(),h();var kx,Ax=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`element`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new Hn),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug(`Unpause video`),this.element.tryPlay())}),this.logger=e,this.element=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};kx=Ax,m(Ax,`create`,(e,t,n)=>new kx(e,t,n)),h();var jx=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function Mx(e){return jx.includes(e)}var Nx=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&Mx(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};B();var Px=6,Fx=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&Vc(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&Vc(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),z(z({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&Vc(e.flags)&&n&&(i=!i),!(n&&t.length<Px&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},Ix=[`mse`,`wasm`],Lx=e=>e==null?Ix:e,Rx=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},zx=(e,t,n)=>{if(Rx(n))return`mse`;let r=Lx(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};B();var Bx=(e,t,n)=>{if(pr(t))return z(z({},e),{},{type:`video`,codec:t.codec,isSync:Vc(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return z(z({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:Vc(e.flags),data:e.payload,duration:0})};Ei(),B();var Vx=(e,t)=>e&&typeof e==`object`&&t in e,Hx=e=>!(typeof e!=`object`||!Vx(e,`channelId`)||typeof e.channelId!=`string`||!Vx(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),Ux=e=>{if(!Hx(e))throw new U(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=z({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},Wx=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};Ra(),zc(),Fy(),h(),P();var Gx=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=N(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=N(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?Py(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?La(e.channels,e.sampleRate):e.codec===`opus`?Lc(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};Ei(),H(),h(),E(),B(),P(),M(),A();var Kx=new WeakMap,qx=new WeakMap,Jx=new WeakMap,Yx=class e extends Ut{constructor(t){var n,r;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,nt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Ut),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,nr()),m(this,`_channels`,[]),m(this,`createdAt`,Date.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new ie(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new er),m(this,`encryptedMediaExtensions`,void 0),T(this,Kx,0),T(this,qx,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`disconnectTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),T(this,Jx,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`getOptions`,()=>this.options.getOptions()),m(this,`getThumbnailUrl`,()=>{let e=this.options.get(`edgeUrl`)||this.options.get(`url`);e=e.replace(`wss://`,`https://`),e=e.replace(`ws://`,`http://`),e=e.endsWith(`/`)?e.slice(0,-1):e;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(this,`updateAuthenticationToken`,e=>{this.logger.debug(`Got new auth token`,{token:e}),this.options.set(`authenticationToken`,e),this.emitter.emit(`send signal`,{type:`refresh auth`,token:e})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.unsuspend(),this.playbackSource instanceof al){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.modules.connection.connect()}}),m(this,`getCastOptions`,()=>({url:this.options.get(`url`),channelId:this.options.get(`channelId`),channelGroupId:this.options.get(`channelGroupId`),authenticationToken:this.options.get(`authenticationToken`),language:this.options.get(`language`),logLevel:this.options.get(`logLevel`),minBufferTime:this.options.get(`minBufferTime`),tags:this.options.get(`tags`),ownerSessionId:this.sessionId,edgeUrl:this.options.get(`edgeUrl`),media:this.options.get(`media`),drm:this.options.get(`drm`)})),m(this,`onConnectInfo`,function(){var e=N(function*(e){var t;n.sessionId=nr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>z(z({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=N(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw vi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.options.get(`burstEnabled`,n.channelId)&&n.modules.subscription.enableBurst(n.targetBufferTime),n.emit(`is live`,i.isLive),!i.isLive)throw Error(`Waiting for channel to go live`);n.patchSubscription(i,n.modules.connection.estimatedBandwidth),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let c=n.options.get(`burstEnabled`,n.channelId);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:c?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!j(qx,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);j(qx,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);j(qx,this).push(t)}}});for(let e of j(qx,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{j(qx,this).forEach(t=>{if(t.cues)for(let n of t.cues)n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=N(function*(e){let t=yield Promise.all(e.map(function(){var e=N(function*(e){if(mr(e)){var t;return n.willUseMediaSource()&&!((t=ze())!=null&&t.isTypeSupported(hr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!pr(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield ol(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>z(z({codec:e.codec,codecString:e.codecString},pr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>z(z({codec:e.codec,codecString:e.codecString},pr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`patchSubscription`,(e,t)=>{let n=this.options.get(`maxInitialBitRate`),r=Math.min(this.options.get(`maxVideoBitRate`),n,t,this.targetSubscription.video.bitRate),i=Math.min(this.options.get(`maxAudioBitRate`),n,t,this.targetSubscription.audio.bitRate),a=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),o=this.supportedAudioCodecs(),s=e.renditions.filter(mr),c=e.renditions.filter(pr),l=o.find(e=>s.find(t=>t.codec===e)!==void 0),u=a.find(e=>c.find(t=>t.codec===e)!==void 0),d=s.map(e=>e.language);if(this.logger.debug(`supported and selected codecs`,{audioCodecs:o,videoCodecs:a,audioCodec:l,videoCodec:u}),u){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(z({codec:u,bitRate:this.abrEnabled?r:this.options.get(`maxVideoBitRate`)},e))}l&&(this.modules.subscription.setAudioConstraint({codec:l,bitRate:this.abrEnabled?i:this.options.get(`maxAudioBitRate`),language:this.options.get(`language`)}),(!d.includes(this.options.get(`language`))||this.language===void 0)&&this.modules.subscription.setLanguage(d[0])),this.alignSizeAndBitRate(this.targetSubscription);let f=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:f,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=ze();return n?n.isTypeSupported(hr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,N(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new U(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:hr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:hr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new U(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){var i;n.emitter.emit(`flush buffers`),yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r);return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Sr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=yield db.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u),{videoRenderer:p}=f.getStatistics(),m=n.modules.canvasModule;if(m instanceof Ib)if(p===`OffscreenCanvas`&&d){m.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{m.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=m.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else m instanceof Rb&&(p===`OffscreenCanvas`&&d?(m.setOffscreenCanvas(d),n.offscreenCanvasElement=d):(m.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=f,n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof Rb)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,N(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new ie(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{this.options.get(`pauseSupportEnabled`)&&this.playbackState!==`paused`&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())}),m(this,`registerDebugInstance`,()=>{il(this)}),m(this,`play`,()=>{var t;this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?z(z({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return z(z({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c})}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof Rb?!0:void 0;return z({uptime:Date.now()-this.createdAt,version:`4.3.0-9-g13d8cb8f`,clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get(`channelGroupId`),ip:this.clientIp,url:this.options.get(`url`),timeToFirstFrame:this.timeToFirstFrame(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return z(z({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{this.logger.info(`media element state`,{state:e}),this.options.get(`pauseSupportEnabled`)&&(e===`paused`?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()))}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t}),this.options=new Nx(z(z({},yr),Ux(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let i={channelId:this.options.get(`channelId`),audio:{language:this.options.get(`language`),bitRate:this.options.get(`maxAudioBitRate`)},video:{bitRate:this.options.get(`maxVideoBitRate`),width:this.options.get(`maxSize`).width,height:this.options.get(`maxSize`).height}},a=cn.get();a.setLevel(this.options.get(`logLevel`)),a.setDebug(!1),this.logger=a,this.webCodecsRenditionSupport=new Gx(a),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let o=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;o!==void 0&&(this.options.set(`streamToMediaElementEnabled`,o),this.options.set(`iosMediaElementEnabled`,o));let s=t.mseEnabled!==void 0,c=t.decoders!==void 0;s&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),s&&!c&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let l=ax.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),u=Hn.create(),d=Oy.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),f=_x.create(this.logger.createContext(`SubscriptionModule`),this.emitter,i),p=px.create(this.emitter,f),h=dx.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),p),g=sx.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Da(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let _=pb.create(this.emitter),v=this.options.get(`poster`),y=v===!0?this.getThumbnailUrl():v||void 0,b,x,ee;if(this.willUseMediaSource()){let e=new al({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:y});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,b)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Da.isSupported()&&this.encryptedMediaExtensions.attach(e.element),b=Xb.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(x=Ax.create(this.logger.createContext(`UnpauseModule`),e,_)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.options.get(`streamToMediaElementEnabled`)&&Et(this.browser)){let e=Rb.create(this.emitter,this.logger.createContext(`ModernCanvasModule`),this.pool,this,{type:this.options.get(`media`)===`audio`?`audio`:`video`,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),poster:y,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`)}),t=e.element();this.element=t.element,this.playbackSource=e,ee=e;let n=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!n&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(x=Ax.create(this.logger.createContext(`UnpauseModule`),t,_))}else{let e;e=Ib.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ee=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Yc)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>u.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>l.requestPictureInPicture(),exit:()=>l.exitPictureInPicture(),isActive:()=>l.isPictureInPictureActive(),isSupported:()=>l.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let te=this.willUseMediaSource(),ne=te?!this.browser.platform.isWebKit:!0,re={getTargetBufferTime:()=>g.getTargetBufferTime(),getNextBufferedRangeStart:b?e=>b.getNextBufferedRangeStart(e):void 0},ae=wx.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,re,ne,te),S=xb.create(this.logger.createContext(`JitterModule`)),oe=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),C=new URL(`/telemetry`,oe).toString();this.modules={telemetry:Ox.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:C,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:yl.create(this.emitter,this.logger.createContext(`BufferTimeModule`),h,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:vb.create(this.emitter),adaptivity:gl.create(this.emitter,this.logger.createContext(`AdaptivityModule`),h,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:Ny.create(this.emitter,this.element,p,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:gb.create(this.emitter,this.logger.createContext(`EventModule`),ae),sync:ae,jitter:S,documentState:_,connection:d,playback:g,pictureInPicture:l,timer:u,subscription:f,renditions:p,qualityOfService:h,mseModule:b,unpause:x,canvasModule:ee},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`page active`,t=>{if(t&&typeof this.disconnectTimeout==`number`&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),t)this.playbackSource.isPaused||(this.logger.debug(`Unsuspending`),this.unsuspend());else if(this.logger.debug(`Suspending`),this.suspend(),this.modules.decoder)if(this.options.get(`iosBackgroundPlayEnabled`)){var n;this.modules.decoder.unsuspend(),(n=this.modules.canvasModule)==null||n.unsuspend()}else this.modules.connection.disconnect();else this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{let e=this.playbackState===`paused`||this.muted;this.connectionState===`connected`&&e&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Page inactive timeout`))},e.DISCONNECT_TIMEOUT)});let se;this.emitter.on(`context switch complete`,()=>{se||(se=window.setTimeout(()=>{window.clearTimeout(se),se=void 0,this.emit(`context switch`,`completed`),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on(`context switch started`,()=>this.emit(`context switch`,`started`)),this.emitter.on(`needs user input`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=Ox.create(this.logger.createContext(`TelemetryModule`),this.emitter,z(z({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{this.logger.debug(`adapt level`,{direction:e});let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?gr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!==`connected`)return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info(`Reconnecting due to poor qos`),this.modules.connection.reconnect(`Fatal QOS`),this.emitter.emit(`adapted level`);return}else a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(z(z({},this.targetSubscription),{},{video:z(z({},this.targetSubscription.video),d==null?void 0:d.video),audio:z(z({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=j(qx,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-j(Kx,this);if(k(Kx,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,z({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),k(Jx,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{k(Jx,this,void 0)}));break;case`subscription changed`:var r;try{Wx(t.subscription)}catch(e){this.emitter.emit(`error`,new U(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,wi(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,wi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=Kc(e);if(!t){this.logger.warn(`Received unwanted message`,z({},n));return}ce(z(z({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload);if(t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Ti(`Switching between DRM and non-DRM channels is not supported`,!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:`channel switch`,channelId:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Za(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var a,o;let p=(a=i.header().init().moov.traks[0])==null?void 0:a.mdia.minf.stbl.stsd,m=(o=p==null?void 0:p.codec)==null?`h264`:o,h;if(m===`h264`){var s;h=p==null||(s=p.avc1)==null?void 0:s.avcC.bytes}else if(m===`h265`){var c,l,u;let e=(c=p==null||(l=p.hvc1)==null?void 0:l.data())==null?p==null||(u=p.hev1)==null?void 0:u.data():c;e&&(h=Ya(e))}else if(m===`av1`&&p!=null&&p.av01)h=cc(p.av01.data());else if(m===`aac`){var d;h=p==null||(d=p.mp4a)==null||(d=d.esds)==null?void 0:d.decoderConfig}else if(m===`opus`){var f;h=Ic(p==null||(f=p.opus)==null?void 0:f.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);t&&this.emitter.emit(`coded sample`,z(z({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let w=this.options.get(`container`);w&&this.attach(w),this.logger.info(`Created Vindral instance`,{options:this.options});let ce=function(){var e=N(function*(e){let t=e.channelId;j(Jx,n)&&(yield j(Jx,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Uc(e.flags)){if(Wc(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=Zn(t);if(e&&e.language!==void 0){let t=new tl().parse(e.content||``),i=r/1e3,a=j(qx,n).find(t=>t.language===e.language),o=i-j(Kx,n);if(k(Kx,n,i),a){if(a.cues)for(let e of a.cues)e.startTime-=o,e.endTime-=o;for(let e of t){let t=new VTTCue(e.startTime-i,e.endTime-i,e.text);a.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=lr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),Hc(e.flags)){let a=z(z({type:i,data:e.payload,codec:r.codec},e),{},{channelId:t}),o=kc(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=hr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=Bx(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=Fx(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Vt(this.options.get(`maxSize`),_r())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&f.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;let t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get(`media`)}get videoBitRate(){return this.modules.incomingData.averageBitRate(`video`)}get audioBitRate(){return this.modules.incomingData.averageBitRate(`audio`)}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get(`sizeBasedResolutionCapEnabled`):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get(`burstEnabled`,this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(j(qx,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return j(qx,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=j(qx,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?_r():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?gr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?gr():e}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(z(z({},e),{},{video:z({},e.video),audio:z({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return zx(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}};m(Yx,`MAX_POOL_SIZE`,10),m(Yx,`DISCONNECT_TIMEOUT`,15*1e3),m(Yx,`REMOVE_CUE_THRESHOLD`,1e3*10);var Xx={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},Zx=`_withThumbnails_suenn_19`,Qx={"channel-selection-item":`_channel-selection-item_suenn_1`,"channel-selection-item-selected":`_channel-selection-item-selected_suenn_8`,"channel-selection-item-image":`_channel-selection-item-image_suenn_13`,withThumbnails:Zx,"hide-on-small":`_hide-on-small_suenn_27`},$x={"icon-button":`_icon-button_5fg7v_1`},eS={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1223
+ `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield kl(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(t&&e instanceof U){if(this.errorCount++,this.errorCount>n)return;let t=this.parentContext.getStatistics();this.unsentLines.push(Dx(`error`,z(z({},t),e.toStringifiable())))}}),this.logger=e,this.emitter=t,this.options=z(z({},Ex),n),this.parentContext=r}};Tx=Ox,m(Ox,`create`,(e,t,n,r)=>new Tx(e,t,n,r)),H(),h();var kx,Ax=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`element`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new Hn),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug(`Unpause video`),this.element.tryPlay())}),this.logger=e,this.element=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};kx=Ax,m(Ax,`create`,(e,t,n)=>new kx(e,t,n)),h();var jx=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function Mx(e){return jx.includes(e)}var Nx=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&Mx(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};B();var Px=6,Fx=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&Vc(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&Vc(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),z(z({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&Vc(e.flags)&&n&&(i=!i),!(n&&t.length<Px&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},Ix=[`mse`,`wasm`],Lx=e=>e==null?Ix:e,Rx=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},zx=(e,t,n)=>{if(Rx(n))return`mse`;let r=Lx(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};B();var Bx=(e,t,n)=>{if(pr(t))return z(z({},e),{},{type:`video`,codec:t.codec,isSync:Vc(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return z(z({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:Vc(e.flags),data:e.payload,duration:0})};Ei(),B();var Vx=(e,t)=>e&&typeof e==`object`&&t in e,Hx=e=>!(typeof e!=`object`||!Vx(e,`channelId`)||typeof e.channelId!=`string`||!Vx(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),Ux=e=>{if(!Hx(e))throw new U(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=z({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},Wx=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};Ra(),zc(),Fy(),h(),P();var Gx=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=N(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=N(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?Py(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?La(e.channels,e.sampleRate):e.codec===`opus`?Lc(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};Ei(),H(),h(),E(),B(),P(),M(),A();var Kx=new WeakMap,qx=new WeakMap,Jx=new WeakMap,Yx=class e extends Ut{constructor(t){var n,r;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,nt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Ut),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,nr()),m(this,`_channels`,[]),m(this,`createdAt`,Date.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new ie(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new er),m(this,`encryptedMediaExtensions`,void 0),T(this,Kx,0),T(this,qx,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`disconnectTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),T(this,Jx,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`getOptions`,()=>this.options.getOptions()),m(this,`getThumbnailUrl`,()=>{let e=this.options.get(`edgeUrl`)||this.options.get(`url`);e=e.replace(`wss://`,`https://`),e=e.replace(`ws://`,`http://`),e=e.endsWith(`/`)?e.slice(0,-1):e;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(this,`updateAuthenticationToken`,e=>{this.logger.debug(`Got new auth token`,{token:e}),this.options.set(`authenticationToken`,e),this.emitter.emit(`send signal`,{type:`refresh auth`,token:e})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.unsuspend(),this.playbackSource instanceof al){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.modules.connection.connect()}}),m(this,`getCastOptions`,()=>({url:this.options.get(`url`),channelId:this.options.get(`channelId`),channelGroupId:this.options.get(`channelGroupId`),authenticationToken:this.options.get(`authenticationToken`),language:this.options.get(`language`),logLevel:this.options.get(`logLevel`),minBufferTime:this.options.get(`minBufferTime`),tags:this.options.get(`tags`),ownerSessionId:this.sessionId,edgeUrl:this.options.get(`edgeUrl`),media:this.options.get(`media`),drm:this.options.get(`drm`)})),m(this,`onConnectInfo`,function(){var e=N(function*(e){var t;n.sessionId=nr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>z(z({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=N(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw vi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.options.get(`burstEnabled`,n.channelId)&&n.modules.subscription.enableBurst(n.targetBufferTime),n.emit(`is live`,i.isLive),!i.isLive)throw Error(`Waiting for channel to go live`);n.patchSubscription(i,n.modules.connection.estimatedBandwidth),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let c=n.options.get(`burstEnabled`,n.channelId);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:c?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!j(qx,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);j(qx,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);j(qx,this).push(t)}}});for(let e of j(qx,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{j(qx,this).forEach(t=>{if(t.cues)for(let n of t.cues)n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=N(function*(e){let t=yield Promise.all(e.map(function(){var e=N(function*(e){if(mr(e)){var t;return n.willUseMediaSource()&&!((t=ze())!=null&&t.isTypeSupported(hr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!pr(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield ol(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>z(z({codec:e.codec,codecString:e.codecString},pr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>z(z({codec:e.codec,codecString:e.codecString},pr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`patchSubscription`,(e,t)=>{let n=this.options.get(`maxInitialBitRate`),r=Math.min(this.options.get(`maxVideoBitRate`),n,t,this.targetSubscription.video.bitRate),i=Math.min(this.options.get(`maxAudioBitRate`),n,t,this.targetSubscription.audio.bitRate),a=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),o=this.supportedAudioCodecs(),s=e.renditions.filter(mr),c=e.renditions.filter(pr),l=o.find(e=>s.find(t=>t.codec===e)!==void 0),u=a.find(e=>c.find(t=>t.codec===e)!==void 0),d=s.map(e=>e.language);if(this.logger.debug(`supported and selected codecs`,{audioCodecs:o,videoCodecs:a,audioCodec:l,videoCodec:u}),u){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(z({codec:u,bitRate:this.abrEnabled?r:this.options.get(`maxVideoBitRate`)},e))}l&&(this.modules.subscription.setAudioConstraint({codec:l,bitRate:this.abrEnabled?i:this.options.get(`maxAudioBitRate`),language:this.options.get(`language`)}),(!d.includes(this.options.get(`language`))||this.language===void 0)&&this.modules.subscription.setLanguage(d[0])),this.alignSizeAndBitRate(this.targetSubscription);let f=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:f,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=ze();return n?n.isTypeSupported(hr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,N(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new U(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:hr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:hr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new U(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){var i;n.emitter.emit(`flush buffers`),yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r);return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Sr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=yield db.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u),{videoRenderer:p}=f.getStatistics(),m=n.modules.canvasModule;if(m instanceof Ib)if(p===`OffscreenCanvas`&&d){m.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{m.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=m.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else m instanceof Rb&&(p===`OffscreenCanvas`&&d?(m.setOffscreenCanvas(d),n.offscreenCanvasElement=d):(m.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=f,n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof Rb)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,N(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new ie(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{this.options.get(`pauseSupportEnabled`)&&this.playbackState!==`paused`&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())}),m(this,`registerDebugInstance`,()=>{il(this)}),m(this,`play`,()=>{var t;this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?z(z({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return z(z({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c})}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof Rb?!0:void 0;return z({uptime:Date.now()-this.createdAt,version:void 0,clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get(`channelGroupId`),ip:this.clientIp,url:this.options.get(`url`),timeToFirstFrame:this.timeToFirstFrame(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return z(z({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{this.logger.info(`media element state`,{state:e}),this.options.get(`pauseSupportEnabled`)&&(e===`paused`?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()))}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t}),this.options=new Nx(z(z({},yr),Ux(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let i={channelId:this.options.get(`channelId`),audio:{language:this.options.get(`language`),bitRate:this.options.get(`maxAudioBitRate`)},video:{bitRate:this.options.get(`maxVideoBitRate`),width:this.options.get(`maxSize`).width,height:this.options.get(`maxSize`).height}},a=cn.get();a.setLevel(this.options.get(`logLevel`)),a.setDebug(!1),this.logger=a,this.webCodecsRenditionSupport=new Gx(a),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let o=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;o!==void 0&&(this.options.set(`streamToMediaElementEnabled`,o),this.options.set(`iosMediaElementEnabled`,o));let s=t.mseEnabled!==void 0,c=t.decoders!==void 0;s&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),s&&!c&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let l=ax.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),u=Hn.create(),d=Oy.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),f=_x.create(this.logger.createContext(`SubscriptionModule`),this.emitter,i),p=px.create(this.emitter,f),h=dx.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),p),g=sx.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Da(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let _=pb.create(this.emitter),v=this.options.get(`poster`),y=v===!0?this.getThumbnailUrl():v||void 0,b,x,ee;if(this.willUseMediaSource()){let e=new al({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:y});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,b)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Da.isSupported()&&this.encryptedMediaExtensions.attach(e.element),b=Xb.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(x=Ax.create(this.logger.createContext(`UnpauseModule`),e,_)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.options.get(`streamToMediaElementEnabled`)&&Et(this.browser)){let e=Rb.create(this.emitter,this.logger.createContext(`ModernCanvasModule`),this.pool,this,{type:this.options.get(`media`)===`audio`?`audio`:`video`,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),poster:y,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`)}),t=e.element();this.element=t.element,this.playbackSource=e,ee=e;let n=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!n&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(x=Ax.create(this.logger.createContext(`UnpauseModule`),t,_))}else{let e;e=Ib.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ee=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Yc)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>u.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>l.requestPictureInPicture(),exit:()=>l.exitPictureInPicture(),isActive:()=>l.isPictureInPictureActive(),isSupported:()=>l.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let te=this.willUseMediaSource(),ne=te?!this.browser.platform.isWebKit:!0,re={getTargetBufferTime:()=>g.getTargetBufferTime(),getNextBufferedRangeStart:b?e=>b.getNextBufferedRangeStart(e):void 0},ae=wx.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,re,ne,te),S=xb.create(this.logger.createContext(`JitterModule`)),oe=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),C=new URL(`/telemetry`,oe).toString();this.modules={telemetry:Ox.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:C,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:yl.create(this.emitter,this.logger.createContext(`BufferTimeModule`),h,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:vb.create(this.emitter),adaptivity:gl.create(this.emitter,this.logger.createContext(`AdaptivityModule`),h,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:Ny.create(this.emitter,this.element,p,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:gb.create(this.emitter,this.logger.createContext(`EventModule`),ae),sync:ae,jitter:S,documentState:_,connection:d,playback:g,pictureInPicture:l,timer:u,subscription:f,renditions:p,qualityOfService:h,mseModule:b,unpause:x,canvasModule:ee},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`page active`,t=>{if(t&&typeof this.disconnectTimeout==`number`&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),t)this.playbackSource.isPaused||(this.logger.debug(`Unsuspending`),this.unsuspend());else if(this.logger.debug(`Suspending`),this.suspend(),this.modules.decoder)if(this.options.get(`iosBackgroundPlayEnabled`)){var n;this.modules.decoder.unsuspend(),(n=this.modules.canvasModule)==null||n.unsuspend()}else this.modules.connection.disconnect();else this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{let e=this.playbackState===`paused`||this.muted;this.connectionState===`connected`&&e&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Page inactive timeout`))},e.DISCONNECT_TIMEOUT)});let se;this.emitter.on(`context switch complete`,()=>{se||(se=window.setTimeout(()=>{window.clearTimeout(se),se=void 0,this.emit(`context switch`,`completed`),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on(`context switch started`,()=>this.emit(`context switch`,`started`)),this.emitter.on(`needs user input`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=Ox.create(this.logger.createContext(`TelemetryModule`),this.emitter,z(z({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{this.logger.debug(`adapt level`,{direction:e});let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?gr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!==`connected`)return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info(`Reconnecting due to poor qos`),this.modules.connection.reconnect(`Fatal QOS`),this.emitter.emit(`adapted level`);return}else a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(z(z({},this.targetSubscription),{},{video:z(z({},this.targetSubscription.video),d==null?void 0:d.video),audio:z(z({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=j(qx,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-j(Kx,this);if(k(Kx,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,z({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),k(Jx,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{k(Jx,this,void 0)}));break;case`subscription changed`:var r;try{Wx(t.subscription)}catch(e){this.emitter.emit(`error`,new U(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,wi(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,wi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=Kc(e);if(!t){this.logger.warn(`Received unwanted message`,z({},n));return}ce(z(z({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload);if(t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Ti(`Switching between DRM and non-DRM channels is not supported`,!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:`channel switch`,channelId:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Za(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var a,o;let p=(a=i.header().init().moov.traks[0])==null?void 0:a.mdia.minf.stbl.stsd,m=(o=p==null?void 0:p.codec)==null?`h264`:o,h;if(m===`h264`){var s;h=p==null||(s=p.avc1)==null?void 0:s.avcC.bytes}else if(m===`h265`){var c,l,u;let e=(c=p==null||(l=p.hvc1)==null?void 0:l.data())==null?p==null||(u=p.hev1)==null?void 0:u.data():c;e&&(h=Ya(e))}else if(m===`av1`&&p!=null&&p.av01)h=cc(p.av01.data());else if(m===`aac`){var d;h=p==null||(d=p.mp4a)==null||(d=d.esds)==null?void 0:d.decoderConfig}else if(m===`opus`){var f;h=Ic(p==null||(f=p.opus)==null?void 0:f.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);t&&this.emitter.emit(`coded sample`,z(z({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let w=this.options.get(`container`);w&&this.attach(w),this.logger.info(`Created Vindral instance`,{options:this.options});let ce=function(){var e=N(function*(e){let t=e.channelId;j(Jx,n)&&(yield j(Jx,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Uc(e.flags)){if(Wc(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=Zn(t);if(e&&e.language!==void 0){let t=new tl().parse(e.content||``),i=r/1e3,a=j(qx,n).find(t=>t.language===e.language),o=i-j(Kx,n);if(k(Kx,n,i),a){if(a.cues)for(let e of a.cues)e.startTime-=o,e.endTime-=o;for(let e of t){let t=new VTTCue(e.startTime-i,e.endTime-i,e.text);a.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=lr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),Hc(e.flags)){let a=z(z({type:i,data:e.payload,codec:r.codec},e),{},{channelId:t}),o=kc(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=hr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=Bx(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=Fx(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Vt(this.options.get(`maxSize`),_r())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&f.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;let t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get(`media`)}get videoBitRate(){return this.modules.incomingData.averageBitRate(`video`)}get audioBitRate(){return this.modules.incomingData.averageBitRate(`audio`)}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get(`sizeBasedResolutionCapEnabled`):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get(`burstEnabled`,this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(j(qx,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return j(qx,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=j(qx,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?_r():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?gr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?gr():e}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(z(z({},e),{},{video:z({},e.video),audio:z({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return zx(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}};m(Yx,`MAX_POOL_SIZE`,10),m(Yx,`DISCONNECT_TIMEOUT`,15*1e3),m(Yx,`REMOVE_CUE_THRESHOLD`,1e3*10);var Xx={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},Zx=`_withThumbnails_suenn_19`,Qx={"channel-selection-item":`_channel-selection-item_suenn_1`,"channel-selection-item-selected":`_channel-selection-item-selected_suenn_8`,"channel-selection-item-image":`_channel-selection-item-image_suenn_13`,withThumbnails:Zx,"hide-on-small":`_hide-on-small_suenn_27`},$x={"icon-button":`_icon-button_5fg7v_1`},eS={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1224
1224
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" clip-rule="evenodd" />
1225
1225
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2" />
1226
1226
  </g>`},tS={viewBox:`-160 -160 832 832`,content:`<path fill="white" d="M208,432H160a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,208,432Z"/><path fill="white" d="M352,432H304a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,352,432Z"/>`},nS={viewBox:`-6 -6 36 36`,content:`<path d="M7 17.259V6.74104C7 5.96925 7.83721 5.48837 8.50387 5.87726L18.2596 11.5681C18.5904 11.761 18.5904 12.2389 18.2596 12.4319L8.50387 18.1227C7.83721 18.5116 7 18.0308 7 17.259Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>`},rS={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.3.0-9-g13d8cb8f",
2
+ "version": "4.3.1",
3
3
  "name": "@vindral/web-sdk",
4
4
  "main": "./legacy.umd.js",
5
5
  "module": "./legacy.es.js",
package/player.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { t as e } from "./BFPgdE3l.js";
2
- import "./BWe37SYR.js";
3
- import { t } from "./CnyY6hCE.js";
2
+ import "./Dfj0VbOY.js";
3
+ import { t } from "./BNxcJNN7.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
@@ -1,5 +1,5 @@
1
- import "./BWe37SYR.js";
2
- import { t as e } from "./CnyY6hCE.js";
1
+ import "./Dfj0VbOY.js";
2
+ import { t as e } from "./BNxcJNN7.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion