From 5165505c445fcdda1c531541b92327c17dc727e2 Mon Sep 17 00:00:00 2001 From: autosubmit Date: Wed, 5 Jun 2024 21:44:23 +0800 Subject: [PATCH] Auto Submit --- 36422.async.js | 1 - 39863.async.js | 2 +- 77373.async.js | 1 + 95426.async.js | 2 +- index.html | 2 +- layouts__GraduationsDetail__index.async.js | 2 +- layouts__SimpleLayouts.async.js | 2 +- p__Classrooms__Lists__CommonHomework__Comment__index.async.js | 2 +- p__Classrooms__Lists__Exercise__Detail__index.async.js | 2 +- p__Classrooms__Lists__Exercise__ReviewGroup__index.async.js | 2 +- p__Classrooms__Lists__Polls__Answer__index.async.js | 2 +- p__Classrooms__Lists__Polls__Detail__index.async.js | 2 +- p__Classrooms__Lists__Polls__QuestionnaireInfo__index.async.js | 2 +- p__Classrooms__Lists__ProgramHomework__Comment__index.async.js | 2 +- ...oms__Lists__ProgramHomework__Detail__Ranking__index.async.js | 2 +- ...ooms__Lists__ProgramHomework__Detail__answer__index.async.js | 2 +- p__Classrooms__Lists__Template__detail__index.async.js | 2 +- p__Guidance__index.async.js | 2 +- p__Messages__Private__index.async.js | 2 +- p__MoopCases__InfoPanel__index.async.js | 2 +- p__MyProblem__RecordDetail__index.async.js | 2 +- p__Paths__Detail__id.async.js | 2 +- p__Problems__OjForm__NewEdit__index.async.js | 2 +- p__Problems__OjForm__index.async.js | 2 +- p__Problemset__NewItem__index.async.js | 2 +- p__Question__Index__index.async.js | 2 +- p__Question__OjProblem__RecordDetail__index.async.js | 2 +- p__Question__OjProblem__index.async.js | 2 +- p__RestFul__index.async.js | 2 +- p__Shixuns__Detail__Challenges__index.async.js | 2 +- p__Shixuns__Exports__index.async.js | 2 +- p__User__Detail__Topics__Detail__index.async.js | 2 +- p__User__Detail__Topics__Poll__Detail__index.async.js | 2 +- p__User__Detail__Topics__Poll__Edit__index.async.js | 2 +- p__index.async.js | 2 +- p__tasks__Jupyter__index.async.js | 2 +- p__virtualSpaces__Lists__Announcement__Detail__index.async.js | 2 +- p__virtualSpaces__Lists__Announcement__index.async.js | 2 +- p__virtualSpaces__Lists__Material__index.async.js | 2 +- p__virtualSpaces__Lists__Settings__index.async.js | 2 +- umi.js | 2 +- 41 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 36422.async.js create mode 100644 77373.async.js diff --git a/36422.async.js b/36422.async.js deleted file mode 100644 index ac3e82d5c2..0000000000 --- a/36422.async.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[36422],{36422:function(t,e,s){function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}s.d(e,{ZP:function(){return Ca}});var r,n,a,o,l,h={exports:{}};r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,a=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,h.exports=l={buildAbsoluteURL:function(t,e,s){if(s=s||{},t=t.trim(),!(e=e.trim())){if(!s.alwaysNormalize)return t;var i=l.parseURL(t);if(!i)throw new Error("Error trying to parse base URL.");return i.path=l.normalizePath(i.path),l.buildURLFromParts(i)}var r=l.parseURL(e);if(!r)throw new Error("Error trying to parse relative URL.");if(r.scheme)return s.alwaysNormalize?(r.path=l.normalizePath(r.path),l.buildURLFromParts(r)):e;var a=l.parseURL(t);if(!a)throw new Error("Error trying to parse base URL.");if(!a.netLoc&&a.path&&"/"!==a.path[0]){var o=n.exec(a.path);a.netLoc=o[1],a.path=o[2]}a.netLoc&&!a.path&&(a.path="/");var h={scheme:a.scheme,netLoc:r.netLoc,path:null,params:r.params,query:r.query,fragment:r.fragment};if(!r.netLoc&&(h.netLoc=a.netLoc,"/"!==r.path[0]))if(r.path){var d=a.path,c=d.substring(0,d.lastIndexOf("/")+1)+r.path;h.path=l.normalizePath(c)}else h.path=a.path,r.params||(h.params=a.params,r.query||(h.query=a.query));return null===h.path&&(h.path=s.alwaysNormalize?l.normalizePath(r.path):r.path),l.buildURLFromParts(h)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(o,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};var d=h.exports;function c(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,i)}return s}function u(t){for(var e=1;e`):L}(e)}))}const k=R,D=/^(\d+)x(\d+)$/,I=/(.+?)=(".*?"|.*?)(?:,|$)/g;class w{constructor(t){"string"==typeof t&&(t=w.parseAttrList(t)),m(this,t)}get clientAttrs(){return Object.keys(this).filter((t=>"X-"===t.substring(0,2)))}decimalInteger(t){const e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e}hexadecimalInteger(t){if(this[t]){let e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;const s=new Uint8Array(e.length/2);for(let t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}decimalFloatingPoint(t){return parseFloat(this[t])}optionalFloat(t,e){const s=this[t];return s?parseFloat(s):e}enumeratedString(t){return this[t]}bool(t){return"YES"===this[t]}decimalResolution(t){const e=D.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}static parseAttrList(t){let e;const s={};for(I.lastIndex=0;null!==(e=I.exec(t));){let t=e[2];0===t.indexOf('"')&&t.lastIndexOf('"')===t.length-1&&(t=t.slice(1,-1));s[e[1].trim()]=t}return s}}function C(t){return"SCTE35-OUT"===t||"SCTE35-IN"===t}class _{constructor(t,e){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,e){const s=e.attr;for(const e in s)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==s[e]){k.warn(`DATERANGE tag attribute: "${e}" does not match for tags with ID: "${t.ID}"`),this._badValueForSameId=e;break}t=m(new w({}),s,t)}if(this.attr=t,this._startDate=new Date(t["START-DATE"]),"END-DATE"in this.attr){const t=new Date(this.attr["END-DATE"]);p(t.getTime())&&(this._endDate=t)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const t=this.duration;return null!==t?new Date(this._startDate.getTime()+1e3*t):null}get duration(){if("DURATION"in this.attr){const t=this.attr.decimalFloatingPoint("DURATION");if(p(t))return t}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&p(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class x{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var P="audio",F="video",M="audiovideo";class O{constructor(t){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[P]:null,[F]:null,[M]:null},this.baseurl=t}setByteRange(t,e){const s=t.split("@",2);let i;i=1===s.length?(null==e?void 0:e.byteRangeEndOffset)||0:parseInt(s[1]),this._byteRange=[i,parseInt(s[0])+i]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=d.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(t){this._url=t}}class N extends O{constructor(t,e){super(e),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new x,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=t}get decryptdata(){const{levelkeys:t}=this;if(!t&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{const t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!p(this.programDateTime))return null;const t=p(this.duration)?this.duration:0;return this.programDateTime+1e3*t}get encrypted(){var t;if(null!=(t=this._decryptdata)&&t.encrypted)return!0;if(this.levelkeys){const t=Object.keys(this.levelkeys),e=t.length;if(e>1||1===e&&this.levelkeys[t[0]].encrypted)return!0}return!1}setKeyFormat(t){if(this.levelkeys){const e=this.levelkeys[t];e&&!this._decryptdata&&(this._decryptdata=e.getDecryptData(this.sn))}}abortRequests(){var t,e;null==(t=this.loader)||t.abort(),null==(e=this.keyLoader)||e.abort()}setElementaryStreamInfo(t,e,s,i,r,n=!1){const{elementaryStreams:a}=this,o=a[t];o?(o.startPTS=Math.min(o.startPTS,e),o.endPTS=Math.max(o.endPTS,s),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,r)):a[t]={startPTS:e,endPTS:s,startDTS:i,endDTS:r,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:t}=this;t[P]=null,t[F]=null,t[M]=null}}class U extends O{constructor(t,e,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new x,this.duration=t.decimalFloatingPoint("DURATION"),this.gap=t.bool("GAP"),this.independent=t.bool("INDEPENDENT"),this.relurl=t.enumeratedString("URI"),this.fragment=e,this.index=i;const n=t.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:t}=this;return!!(t.audio||t.video||t.audiovideo)}}class B{constructor(t){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=t}reloaded(t){if(!t)return this.advanced=!0,void(this.updated=!0);const e=this.lastPartSn-t.lastPartSn,s=this.lastPartIndex-t.lastPartIndex;this.updated=this.endSN!==t.endSN||!!s||!!e||!this.live,this.advanced=this.endSN>t.endSN||e>0||0===e&&s>0,this.updated||this.advanced?this.misses=Math.floor(.6*t.misses):this.misses=t.misses+1,this.availabilityDelay=t.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&p(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const t=this.driftEndTime-this.driftStartTime;if(t>0){return 1e3*(this.driftEnd-this.driftStart)/t}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var t;return null!=(t=this.fragments)&&t.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function $(t){return Uint8Array.from(atob(t),(t=>t.charCodeAt(0)))}function G(t){const e=t.split(":");let s=null;if("data"===e[0]&&2===e.length){const t=e[1].split(";"),i=t[t.length-1].split(",");if(2===i.length){const e="base64"===i[0],r=i[1];e?(t.splice(-1,1),s=$(r)):s=function(t){const e=K(t).subarray(0,16),s=new Uint8Array(16);return s.set(e,16-e.length),s}(r)}}return s}function K(t){return Uint8Array.from(unescape(encodeURIComponent(t)),(t=>t.charCodeAt(0)))}const H="undefined"!=typeof self?self:void 0;var V={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Y="org.w3.clearkey",W="com.apple.streamingkeydelivery",j="com.microsoft.playready",q="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function X(t){switch(t){case W:return V.FAIRPLAY;case j:return V.PLAYREADY;case q:return V.WIDEVINE;case Y:return V.CLEARKEY}}var z="edef8ba979d64acea3c827dcd51d21ed";function Q(t){switch(t){case V.FAIRPLAY:return W;case V.PLAYREADY:return j;case V.WIDEVINE:return q;case V.CLEARKEY:return Y}}function J(t){const{drmSystems:e,widevineLicenseUrl:s}=t,i=e?[V.FAIRPLAY,V.WIDEVINE,V.PLAYREADY,V.CLEARKEY].filter((t=>!!e[t])):[];return!i[V.WIDEVINE]&&s&&i.push(V.WIDEVINE),i}const Z=null!=H&&null!=(tt=H.navigator)&&tt.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var tt;function et(t,e,s){return Uint8Array.prototype.slice?t.slice(e,s):new Uint8Array(Array.prototype.slice.call(t,e,s))}const st=(t,e)=>e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,it=(t,e)=>e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,rt=(t,e)=>{const s=e;let i=0;for(;st(t,e);){i+=10;i+=nt(t,e+6),it(t,e+10)&&(i+=10),e+=i}if(i>0)return t.subarray(s,s+i)},nt=(t,e)=>{let s=0;return s=(127&t[e])<<21,s|=(127&t[e+1])<<14,s|=(127&t[e+2])<<7,s|=127&t[e+3],s},at=(t,e)=>st(t,e)&&nt(t,e+6)+10<=t.length-e,ot=t=>{const e=dt(t);for(let t=0;tt&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info,ht=t=>{const e=String.fromCharCode(t[0],t[1],t[2],t[3]),s=nt(t,4);return{type:e,size:s,data:t.subarray(10,10+s)}},dt=t=>{let e=0;const s=[];for(;st(t,e);){const i=nt(t,e+6);e+=10;const r=e+i;for(;e+8"PRIV"===t.type?ut(t):"W"===t.type[0]?gt(t):ft(t),ut=t=>{if(t.size<2)return;const e=pt(t.data,!0),s=new Uint8Array(t.data.subarray(e.length+1));return{key:t.type,info:e,data:s.buffer}},ft=t=>{if(t.size<2)return;if("TXXX"===t.type){let e=1;const s=pt(t.data.subarray(e),!0);e+=s.length+1;const i=pt(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=pt(t.data.subarray(1));return{key:t.type,data:e}},gt=t=>{if("WXXX"===t.type){if(t.size<2)return;let e=1;const s=pt(t.data.subarray(e),!0);e+=s.length+1;const i=pt(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=pt(t.data);return{key:t.type,data:e}},mt=t=>{if(8===t.data.byteLength){const e=new Uint8Array(t.data),s=1&e[3];let i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,s&&(i+=47721858.84),Math.round(i)}},pt=(t,e=!1)=>{const s=yt();if(s){const i=s.decode(t);if(e){const t=i.indexOf("\0");return-1!==t?i.substring(0,t):i}return i.replace(/\0/g,"")}const i=t.length;let r,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(r);break;case 12:case 13:n=t[l++],o+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=t[l++],a=t[l++],o+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&a)<<0)}}return o};let vt;function yt(){if(!navigator.userAgent.includes("PlayStation 4"))return vt||void 0===self.TextDecoder||(vt=new self.TextDecoder("utf-8")),vt}const Et=function(t){let e="";for(let s=0;s>24,t[e+1]=s>>16&255,t[e+2]=s>>8&255,t[e+3]=255&s}function wt(t,e){const s=[];if(!e.length)return s;const i=t.byteLength;for(let r=0;r1?r+n:i;if(At(t.subarray(r+4,r+8))===e[0])if(1===e.length)s.push(t.subarray(r+8,a));else{const i=wt(t.subarray(r+8,a),e.slice(1));i.length&&St.apply(s,i)}r=a}return s}function Ct(t){const e=[],s=t[0];let i=8;const r=bt(t,i);i+=4;let n=0,a=0;0===s?(n=bt(t,i),a=bt(t,i+4),i+=8):(n=kt(t,i),a=kt(t,i+8),i+=16),i+=2;let o=t.length+a;const l=Rt(t,i);i+=2;for(let s=0;s>>31)return k.warn("SIDX has hierarchical references (not supported)"),null;const l=bt(t,s);s+=4,e.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:o,end:o+a-1}}),o+=a,s+=4,i=s}return{earliestPresentationTime:n,timescale:r,version:s,referencesCount:l,references:e}}function _t(t){const e=[],s=wt(t,["moov","trak"]);for(let t=0;t{const s=bt(t,4),i=e[s];i&&(i.default={duration:bt(t,12),flags:bt(t,20)})})),e}function xt(t){const e=t.subarray(8),s=e.subarray(86),i=At(e.subarray(4,8));let r=i;const n="enca"===i||"encv"===i;if(n){const t=wt(e,[i])[0];wt(t.subarray("enca"===i?28:78),["sinf"]).forEach((t=>{const e=wt(t,["schm"])[0];if(e){const s=At(e.subarray(4,8));if("cbcs"===s||"cenc"===s){const e=wt(t,["frma"])[0];e&&(r=At(e))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const t=wt(s,["avcC"])[0];r+="."+Ft(t[1])+Ft(t[2])+Ft(t[3]);break}case"mp4a":{const t=wt(e,[i])[0],s=wt(t.subarray(28),["esds"])[0];if(s&&s.length>12){let t=4;if(3!==s[t++])break;t=Pt(s,t),t+=2;const e=s[t++];if(128&e&&(t+=2),64&e&&(t+=s[t++]),4!==s[t++])break;t=Pt(s,t);const i=s[t++];if(64!==i)break;if(r+="."+Ft(i),t+=12,5!==s[t++])break;t=Pt(s,t);const n=s[t++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&s[t])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const t=wt(s,["hvcC"])[0],e=t[1],i=["","A","B","C"][e>>6],n=31&e,a=bt(t,2),o=(32&e)>>5?"H":"L",l=t[12],h=t.subarray(6,12);r+="."+i+n,r+="."+a.toString(16).toUpperCase(),r+="."+o+l;let d="";for(let t=h.length;t--;){const e=h[t];if(e||d){d="."+e.toString(16).toUpperCase()+d}}r+=d;break}case"dvh1":case"dvhe":{const t=wt(s,["dvcC"])[0],e=t[2]>>1&127,i=t[2]<<5&32|t[3]>>3&31;r+="."+Mt(e)+"."+Mt(i);break}case"vp09":{const t=wt(s,["vpcC"])[0],e=t[4],i=t[5],n=t[6]>>4&15;r+="."+Mt(e)+"."+Mt(i)+"."+Mt(n);break}case"av01":{const t=wt(s,["av1C"])[0],e=t[1]>>>5,i=31&t[1],n=t[2]>>>7?"H":"M",a=(64&t[2])>>6,o=(32&t[2])>>5,l=2===e&&a?o?12:10:a?10:8,h=(16&t[2])>>4,d=(8&t[2])>>3,c=(4&t[2])>>2,u=3&t[2],f=1,g=1,m=1,p=0;r+="."+e+"."+Mt(i)+n+"."+Mt(l)+"."+h+"."+d+c+u+"."+Mt(f)+"."+Mt(g)+"."+Mt(m)+"."+p;break}}return{codec:r,encrypted:n}}function Pt(t,e){const s=e+5;for(;128&t[e++]&&e{const l=o.byteOffset-8;wt(o,["traf"]).map((o=>{const h=wt(o,["tfdt"]).map((t=>{const e=t[0];let s=bt(t,4);return 1===e&&(s*=Math.pow(2,32),s+=bt(t,8)),s/r}))[0];return void 0!==h&&(t=h),wt(o,["tfhd"]).map((h=>{const d=bt(h,4),c=16777215&bt(h,0);let u=0;const f=0!=(16&c);let g=0;const m=0!=(32&c);let p=8;d===n&&(0!=(1&c)&&(p+=8),0!=(2&c)&&(p+=4),0!=(8&c)&&(u=bt(h,p),p+=4),f&&(g=bt(h,p),p+=4),m&&(p+=4),"video"===e.type&&(a=function(t){if(!t)return!1;const e=t.indexOf("."),s=e<0?t:t.substring(0,e);return"hvc1"===s||"hev1"===s||"dvh1"===s||"dvhe"===s}(e.codec)),wt(o,["trun"]).map((n=>{const o=n[0],h=16777215&bt(n,0),d=0!=(1&h);let c=0;const f=0!=(4&h),m=0!=(256&h);let p=0;const v=0!=(512&h);let y=0;const E=0!=(1024&h),T=0!=(2048&h);let S=0;const L=bt(n,4);let A=8;d&&(c=bt(n,A),A+=4),f&&(A+=4);let R=c+l;for(let l=0;l>1&63;return 39===t||40===t}return 6===(31&e)}function Gt(t,e,s,i){const r=Kt(t);let n=0;n+=e;let a=0,o=0,l=0;for(;n=r.length)break;l=r[n++],a+=l}while(255===l);o=0;do{if(n>=r.length)break;l=r[n++],o+=l}while(255===l);const t=r.length-n;let e=n;if(ot){k.error(`Malformed SEI payload. ${o} is too small, only ${t} bytes left to parse.`);break}if(4===a){if(181===r[e++]){const t=Rt(r,e);if(e+=2,49===t){const t=bt(r,e);if(e+=4,1195456820===t){const t=r[e++];if(3===t){const n=r[e++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let t=1;t16){const t=[];for(let s=0;s<16;s++){const i=r[e++].toString(16);t.push(1==i.length?"0"+i:i),3!==s&&5!==s&&7!==s&&9!==s||t.push("-")}const n=o-16,l=new Uint8Array(n);for(let t=0;t0?(n=new Uint8Array(4),e.length>0&&new DataView(n.buffer).setUint32(0,e.length,!1)):n=new Uint8Array;const a=new Uint8Array(4);return s&&s.byteLength>0&&new DataView(a.buffer).setUint32(0,s.byteLength,!1),function(t,...e){const s=e.length;let i=8,r=s;for(;r--;)i+=e[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(t,4),r=0,i=8;r>8*(15-s)&255;return e}(t);return new Yt(this.method,this.uri,"identity",this.keyFormatVersions,e)}const e=G(this.uri);if(e)switch(this.keyFormat){case q:this.pssh=e,e.length>=22&&(this.keyId=e.subarray(e.length-22,e.length-6));break;case j:{const t=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Ht(t,null,e);const s=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),i=String.fromCharCode.apply(null,Array.from(s)),r=i.substring(i.indexOf("<"),i.length),n=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(n){const t=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(t){const e=$(t).subarray(0,16);!function(t){const e=function(t,e,s){const i=t[e];t[e]=t[s],t[s]=i};e(t,0,3),e(t,1,2),e(t,4,5),e(t,6,7)}(e),this.keyId=e}}break}default:{let t=e.subarray(0,16);if(16!==t.length){const e=new Uint8Array(16);e.set(t,16-t.length),t=e}this.keyId=t;break}}if(!this.keyId||16!==this.keyId.byteLength){let t=Vt[this.uri];if(!t){const e=Object.keys(Vt).length%Number.MAX_SAFE_INTEGER;t=new Uint8Array(16);new DataView(t.buffer,12,4).setUint32(0,e),Vt[this.uri]=t}this.keyId=t}return this}}const Wt=/\{\$([a-zA-Z0-9-_]+)\}/g;function jt(t){return Wt.test(t)}function qt(t,e,s){if(null!==t.variableList||t.hasVariableRefs)for(let i=s.length;i--;){const r=s[i],n=e[r];n&&(e[r]=Xt(t,n))}}function Xt(t,e){if(null!==t.variableList||t.hasVariableRefs){const s=t.variableList;return e.replace(Wt,(e=>{const i=e.substring(2,e.length-1),r=null==s?void 0:s[i];return void 0===r?(t.playlistParsingError||(t.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),e):r}))}return e}function zt(t,e,s){let i,r,n=t.variableList;if(n||(t.variableList=n={}),"QUERYPARAM"in e){i=e.QUERYPARAM;try{const t=new self.URL(s).searchParams;if(!t.has(i))throw new Error(`"${i}" does not match any query parameter in URI: "${s}"`);r=t.get(i)}catch(e){t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${e.message}`))}}else i=e.NAME,r=e.VALUE;i in n?t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):n[i]=r||""}function Qt(t,e,s){const i=e.IMPORT;if(s&&i in s){let e=t.variableList;e||(t.variableList=e={}),e[i]=s[i]}else t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${i}"`))}function Jt(t=!0){if("undefined"==typeof self)return;return(t||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const Zt={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function te(t,e,s=!0){return!t.split(",").some((t=>!ee(t,e,s)))}function ee(t,e,s=!0){var i;const r=Jt(s);return null!=(i=null==r?void 0:r.isTypeSupported(se(t,e)))&&i}function se(t,e){return`${e}/mp4;codecs="${t}"`}function ie(t){if(t){const e=t.substring(0,4);return Zt.video[e]}return 2}function re(t){return t.split(",").reduce(((t,e)=>{const s=Zt.video[e];return s?(2*s+t)/(t?3:2):(Zt.audio[e]+t)/(t?2:1)}),0)}const ne={};const ae=/flac|opus/i;function oe(t,e=!0){return t.replace(ae,(t=>function(t,e=!0){if(ne[t])return ne[t];const s={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[t];for(let i=0;i0&&i.length({id:t.attrs.AUDIO,audioCodec:t.audioCodec}))),SUBTITLES:n.map((t=>({id:t.attrs.SUBTITLES,textCodec:t.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(de.lastIndex=0;null!==(i=de.exec(t));){const t=new w(i[1]),n=t.TYPE;if(n){const i=a[n],l=r[n]||[];r[n]=l,qt(s,t,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=t.LANGUAGE,d=t["ASSOC-LANGUAGE"],c=t.CHANNELS,u=t.CHARACTERISTICS,f=t["INSTREAM-ID"],g={attrs:t,bitrate:0,id:o++,groupId:t["GROUP-ID"]||"",name:t.NAME||h||"",type:n,default:t.bool("DEFAULT"),autoselect:t.bool("AUTOSELECT"),forced:t.bool("FORCED"),lang:h,url:t.URI?ge.resolve(t.URI,e):""};if(d&&(g.assocLang=d),c&&(g.channels=c),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=i&&i.length){const t=ge.findGroup(i,g.groupId)||i[0];ye(g,t,"audioCodec"),ye(g,t,"textCodec")}l.push(g)}}return r}static parseLevelPlaylist(t,e,s,i,r,n){const a=new B(e),o=a.fragments;let l,h,d,c=null,u=0,f=0,g=0,v=0,y=null,E=new N(i,e),T=-1,S=!1,L=null;for(ue.lastIndex=0,a.m3u8=t,a.hasVariableRefs=jt(t);null!==(l=ue.exec(t));){S&&(S=!1,E=new N(i,e),E.start=g,E.sn=u,E.cc=v,E.level=s,c&&(E.initSegment=c,E.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,L&&(E.setByteRange(L),L=null)));const t=l[1];if(t){E.duration=parseFloat(t);const e=(" "+l[2]).slice(1);E.title=e||null,E.tagList.push(e?["INF",t,e]:["INF",t])}else if(l[3]){if(p(E.duration)){E.start=g,d&&Se(E,d,a),E.sn=u,E.level=s,E.cc=v,o.push(E);const t=(" "+l[3]).slice(1);E.relurl=Xt(a,t),Ee(E,y),y=E,g+=E.duration,u++,f=0,S=!0}}else if(l[4]){const t=(" "+l[4]).slice(1);y?E.setByteRange(t,y):E.setByteRange(t)}else if(l[5])E.rawProgramDateTime=(" "+l[5]).slice(1),E.tagList.push(["PROGRAM-DATE-TIME",E.rawProgramDateTime]),-1===T&&(T=o.length);else{if(l=l[0].match(fe),!l){k.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&t.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=t.optionalFloat("PART-HOLD-BACK",0),a.holdBack=t.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const t=new w(r);a.partTarget=t.decimalFloatingPoint("PART-TARGET");break}case"PART":{let t=a.partList;t||(t=a.partList=[]);const s=f>0?t[t.length-1]:void 0,i=f++,n=new w(r);qt(a,n,["BYTERANGE","URI"]);const o=new U(n,E,e,i,s);t.push(o),E.duration+=o.duration;break}case"PRELOAD-HINT":{const t=new w(r);qt(a,t,["URI"]),a.preloadHint=t;break}case"RENDITION-REPORT":{const t=new w(r);qt(a,t,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(t);break}default:k.warn(`line parsed but not handled: ${l}`)}}}y&&!y.relurl?(o.pop(),g-=y.duration,a.partList&&(a.fragmentHint=y)):a.partList&&(Ee(E,y),E.cc=v,a.fragmentHint=E,d&&Se(E,d,a));const A=o.length,R=o[0],b=o[A-1];if(g+=a.skippedSegments*a.targetduration,g>0&&A&&b){a.averagetargetduration=g/A;const t=b.sn;a.endSN="initSegment"!==t?t:0,a.live||(b.endList=!0),R&&(a.startCC=R.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=v,T>0&&function(t,e){let s=t[e];for(let i=e;i--;){const e=t[i];if(!e)return;e.programDateTime=s.programDateTime-1e3*e.duration,s=e}}(o,T),a}}function me(t,e,s){var i,r;const n=new w(t);qt(s,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(i=n.METHOD)?i:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,d=null!=(r=n.KEYFORMAT)?r:"identity";o&&n.IV&&!l&&k.error(`Invalid IV: ${n.IV}`);const c=o?ge.resolve(o,e):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new Yt(a,c,d,u,l)}function pe(t){const e=new w(t).decimalFloatingPoint("TIME-OFFSET");return p(e)?e:null}function ve(t,e){let s=(t||"").split(/[ ,]+/).filter((t=>t));["video","audio","text"].forEach((t=>{const i=s.filter((e=>function(t,e){const s=Zt[e];return!!s&&!!s[t.slice(0,4)]}(e,t)));i.length&&(e[`${t}Codec`]=i.join(","),s=s.filter((t=>-1===i.indexOf(t))))})),e.unknownCodecs=s}function ye(t,e,s){const i=e[s];i&&(t[s]=i)}function Ee(t,e){t.rawProgramDateTime?t.programDateTime=Date.parse(t.rawProgramDateTime):null!=e&&e.programDateTime&&(t.programDateTime=e.endProgramDateTime),p(t.programDateTime)||(t.programDateTime=null,t.rawProgramDateTime=null)}function Te(t,e,s,i){t.relurl=e.URI,e.BYTERANGE&&t.setByteRange(e.BYTERANGE),t.level=s,t.sn="initSegment",i&&(t.levelkeys=i),t.initSegment=null}function Se(t,e,s){t.levelkeys=e;const{encryptedFragments:i}=s;i.length&&i[i.length-1].levelkeys===e||!Object.keys(e).some((t=>e[t].isCommonEncryption))||i.push(t)}var Le="manifest",Ae="level",Re="audioTrack",be="subtitleTrack",ke="main",De="audio",Ie="subtitle";function we(t){const{type:e}=t;switch(e){case Re:return De;case be:return Ie;default:return ke}}function Ce(t,e){let s=t.url;return void 0!==s&&0!==s.indexOf("data:")||(s=e.url),s}class _e{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.LEVEL_LOADING,this.onLevelLoading,this),t.on(E.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(E.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:t}=this;t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.LEVEL_LOADING,this.onLevelLoading,this),t.off(E.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(E.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(t){const e=this.hls.config,s=e.pLoader,i=e.loader,r=new(s||i)(e);return this.loaders[t.type]=r,r}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,e){const{url:s}=e;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Le,url:s,deliveryDirectives:null})}onLevelLoading(t,e){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:a}=e;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:Ae,url:n,deliveryDirectives:a})}onAudioTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:Re,url:r,deliveryDirectives:n})}onSubtitleTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:be,url:r,deliveryDirectives:n})}load(t){var e;const s=this.hls.config;let i,r=this.getInternalLoader(t);if(r){const e=r.context;if(e&&e.url===t.url&&e.level===t.level)return void k.trace("[playlist-loader]: playlist request ongoing");k.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),r.abort()}if(i=t.type===Le?s.manifestLoadPolicy.default:m({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(t),p(null==(e=t.deliveryDirectives)?void 0:e.part)){let e;if(t.type===Ae&&null!==t.level?e=this.hls.levels[t.level].details:t.type===Re&&null!==t.id?e=this.hls.audioTracks[t.id].details:t.type===be&&null!==t.id&&(e=this.hls.subtitleTracks[t.id].details),e){const t=e.partTarget,s=e.targetduration;if(t&&s){const e=1e3*Math.max(3*t,.8*s);i=m({},i,{maxTimeToFirstByteMs:Math.min(e,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(e,i.maxTimeToFirstByteMs)})}}}const n=i.errorRetry||i.timeoutRetry||{},a={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(t,e,s,i)=>{const r=this.getInternalLoader(s);this.resetInternalLoader(s.type);const n=t.data;0===n.indexOf("#EXTM3U")?(e.parsing.start=performance.now(),ge.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(t,e,s,i||null,r):this.handleMasterPlaylist(t,e,s,i)):this.handleManifestParsingError(t,s,new Error("no EXTM3U delimiter"),i||null,e)},onError:(t,e,s,i)=>{this.handleNetworkError(e,s,!1,t,i)},onTimeout:(t,e,s)=>{this.handleNetworkError(e,s,!0,void 0,t)}};r.load(t,a,o)}handleMasterPlaylist(t,e,s,i){const r=this.hls,n=t.data,a=Ce(t,s),o=ge.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(t,s,o.playlistParsingError,i,e);const{contentSteering:l,levels:h,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=ge.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((t=>!t.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(k.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new w({}),bitrate:0,url:""}))}r.trigger(E.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:e,networkDetails:i,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(t,e,s,i,r){const n=this.hls,{id:a,level:o,type:l}=s,h=Ce(t,s),d=p(o)?o:p(a)?a:0,c=we(s),u=ge.parseLevelPlaylist(t.data,h,d,c,0,this.variableList);if(l===Le){const t={attrs:new w({}),bitrate:0,details:u,name:"",url:h};n.trigger(E.MANIFEST_LOADED,{levels:[t],audioTracks:[],url:h,stats:e,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}e.parsing.end=performance.now(),s.levelDetails=u,this.handlePlaylistLoaded(u,t,e,s,i,r)}handleManifestParsingError(t,e,s,i,r){this.hls.trigger(E.ERROR,{type:T.NETWORK_ERROR,details:S.MANIFEST_PARSING_ERROR,fatal:e.type===Le,url:t.url,err:s,error:s,reason:s.message,response:t,context:e,networkDetails:i,stats:r})}handleNetworkError(t,e,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${t.type}`;t.type===Ae?n+=`: ${t.level} id: ${t.id}`:t.type!==Re&&t.type!==be||(n+=` id: ${t.id} group-id: "${t.groupId}"`);const a=new Error(n);k.warn(`[playlist-loader]: ${n}`);let o=S.UNKNOWN,l=!1;const h=this.getInternalLoader(t);switch(t.type){case Le:o=s?S.MANIFEST_LOAD_TIMEOUT:S.MANIFEST_LOAD_ERROR,l=!0;break;case Ae:o=s?S.LEVEL_LOAD_TIMEOUT:S.LEVEL_LOAD_ERROR,l=!1;break;case Re:o=s?S.AUDIO_TRACK_LOAD_TIMEOUT:S.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case be:o=s?S.SUBTITLE_TRACK_LOAD_TIMEOUT:S.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(t.type);const d={type:T.NETWORK_ERROR,details:o,fatal:l,url:t.url,loader:h,context:t,error:a,networkDetails:e,stats:r};if(i){const s=(null==e?void 0:e.url)||t.url;d.response=u({url:s,data:void 0},i)}this.hls.trigger(E.ERROR,d)}handlePlaylistLoaded(t,e,s,i,r,n){const a=this.hls,{type:o,level:l,id:h,groupId:d,deliveryDirectives:c}=i,u=Ce(e,i),f=we(i),g="number"==typeof i.level&&f===ke?l:void 0;if(!t.fragments.length){const t=new Error("No Segments found in Playlist");return void a.trigger(E.ERROR,{type:T.NETWORK_ERROR,details:S.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:t,reason:t.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s})}t.targetduration||(t.playlistParsingError=new Error("Missing Target Duration"));const m=t.playlistParsingError;if(m)a.trigger(E.ERROR,{type:T.NETWORK_ERROR,details:S.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s});else switch(t.live&&n&&(n.getCacheAge&&(t.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(t.ageHeader)||(t.ageHeader=0)),o){case Le:case Ae:a.trigger(E.LEVEL_LOADED,{details:t,level:g||0,id:h||0,stats:s,networkDetails:r,deliveryDirectives:c});break;case Re:a.trigger(E.AUDIO_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c});break;case be:a.trigger(E.SUBTITLE_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c})}}}function xe(t,e){let s;try{s=new Event("addtrack")}catch(t){s=document.createEvent("Event"),s.initEvent("addtrack",!1,!1)}s.track=t,e.dispatchEvent(s)}function Pe(t,e){const s=t.mode;if("disabled"===s&&(t.mode="hidden"),t.cues&&!t.cues.getCueById(e.id))try{if(t.addCue(e),!t.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){k.debug(`[texttrack-utils]: ${s}`);try{const s=new self.TextTrackCue(e.startTime,e.endTime,e.text);s.id=e.id,t.addCue(s)}catch(t){k.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${t}`)}}"disabled"===s&&(t.mode=s)}function Fe(t){const e=t.mode;if("disabled"===e&&(t.mode="hidden"),t.cues)for(let e=t.cues.length;e--;)t.removeCue(t.cues[e]);"disabled"===e&&(t.mode=e)}function Me(t,e,s,i){const r=t.mode;if("disabled"===r&&(t.mode="hidden"),t.cues&&t.cues.length>0){const r=function(t,e,s){const i=[],r=function(t,e){if(et[s].endTime)return-1;let i=0,r=s;for(;i<=r;){const n=Math.floor((r+i)/2);if(et[n].startTime&&i-1)for(let n=r,a=t.length;n=e&&r.endTime<=s)i.push(r);else if(r.startTime>s)return i}return i}(t.cues,e,s);for(let e=0;e{const t=$e();try{t&&new t(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function He(t,e){return t.getTime()/1e3-e}class Ve{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:t}=this;t.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(E.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:t}=this;t.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(E.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(t,e){this.media=e.media}onMediaDetaching(){this.id3Track&&(Fe(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const e=this.getID3Track(t.textTracks);return e.mode="hidden",e}getID3Track(t){if(this.media){for(let e=0;eKe&&(i=Ke);i-s<=0&&(i=s+.25);for(let t=0;tt.type===Ne&&o:"video"===i?t=>t.type===Be&&a:t=>t.type===Ne&&o||t.type===Be&&a,Me(r,e,s,t)}}onLevelUpdated(t,{details:e}){if(!this.media||!e.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:s,id3Track:i}=this,{dateRanges:r}=e,n=Object.keys(r);if(i){const t=Object.keys(s).filter((t=>!n.includes(t)));for(let e=t.length;e--;){const r=t[e];Object.keys(s[r].cues).forEach((t=>{i.removeCue(s[r].cues[t])})),delete s[r]}}const a=e.fragments[e.fragments.length-1];if(0===n.length||!p(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=$e();for(let t=0;t{if(e!==i.id){const s=r[e];if(s.class===i.class&&s.startDate>i.startDate&&(!t||i.startDatethis.timeupdate(),this.hls=t,this.config=t.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:t,levelDetails:e}=this;return void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:e?t.liveMaxLatencyDurationCount*e.targetduration:0}get targetLatency(){const{levelDetails:t}=this;if(null===t)return null;const{holdBack:e,partHoldBack:s,targetduration:i}=t,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&s||e;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:n*i);const h=i;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const t=this.estimateLiveEdge(),e=this.targetLatency,s=this.levelDetails;if(null===t||null===e||null===s)return null;const i=s.edge,r=t-e-this.edgeStalled,n=i-s.totalduration,a=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),a)}get drift(){const{levelDetails:t}=this;return null===t?1:t.drift}get edgeStalled(){const{levelDetails:t}=this;if(null===t)return 0;const e=3*(this.config.lowLatencyMode&&t.partTarget||t.targetduration);return Math.max(t.age-e,0)}get forwardBufferLength(){const{media:t,levelDetails:e}=this;if(!t||!e)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):e.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(E.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(E.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(E.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(E.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(E.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(E.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:e}){this.levelDetails=e,e.advanced&&this.timeupdate(),!e.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(t,e){var s;e.details===S.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(s=this.levelDetails)&&s.live&&k.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:t,levelDetails:e}=this;if(!t||!e)return;this.currentTime=t.currentTime;const s=this.computeLatency();if(null===s)return;this._latency=s;const{lowLatencyMode:i,maxLiveSyncPlaybackRate:r}=this.config;if(!i||1===r||!e.live)return;const n=this.targetLatency;if(null===n)return;const a=s-n;if(a.05&&this.forwardBufferLength>1){const e=Math.min(2,Math.max(1,r)),s=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;t.playbackRate=Math.min(e,Math.max(1,s))}else 1!==t.playbackRate&&0!==t.playbackRate&&(t.playbackRate=1)}estimateLiveEdge(){const{levelDetails:t}=this;return null===t?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return null===t?null:t-this.currentTime}}const We=["NONE","TYPE-0","TYPE-1",null];const je=["SDR","PQ","HLG"];var qe="",Xe="YES",ze="v2";function Qe(t){const{canSkipUntil:e,canSkipDateRanges:s,age:i}=t;return e&&i!!t)).map((t=>t.substring(0,4))).join(","),this.addGroupId("audio",t.attrs.AUDIO),this.addGroupId("text",t.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(t){return ts(this._audioGroups,t)}hasSubtitleGroup(t){return ts(this._subtitleGroups,t)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(t,e){if(e)if("audio"===t){let t=this._audioGroups;t||(t=this._audioGroups=[]),-1===t.indexOf(e)&&t.push(e)}else if("text"===t){let t=this._subtitleGroups;t||(t=this._subtitleGroups=[]),-1===t.indexOf(e)&&t.push(e)}}get urlId(){return 0}set urlId(t){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var t;return null==(t=this.audioGroups)?void 0:t[0]}get textGroupId(){var t;return null==(t=this.subtitleGroups)?void 0:t[0]}addFallback(){}}function ts(t,e){return!(!e||!t)&&-1!==t.indexOf(e)}function es(t,e){const s=e.startPTS;if(p(s)){let i,r=0;e.sn>t.sn?(r=s-t.start,i=t):(r=t.start-s,i=e),i.duration!==r&&(i.duration=r)}else if(e.sn>t.sn){t.cc===e.cc&&t.minEndPTS?e.start=t.start+(t.minEndPTS-t.start):e.start=t.start+t.duration}else e.start=Math.max(t.start-e.duration,0)}function ss(t,e,s,i,r,n){i-s<=0&&(k.warn("Fragment should have a positive duration",e),i=s+e.duration,n=r+e.duration);let a=s,o=i;const l=e.startPTS,h=e.endPTS;if(p(l)){const t=Math.abs(l-s);p(e.deltaPTS)?e.deltaPTS=Math.max(t,e.deltaPTS):e.deltaPTS=t,a=Math.max(s,l),s=Math.min(s,l),r=Math.min(r,e.startDTS),o=Math.min(i,h),i=Math.max(i,h),n=Math.max(n,e.endDTS)}const d=s-e.start;0!==e.start&&(e.start=s),e.duration=i-e.start,e.startPTS=s,e.maxStartPTS=a,e.startDTS=r,e.endPTS=i,e.minEndPTS=o,e.endDTS=n;const c=e.sn;if(!t||ct.endSN)return 0;let u;const f=c-t.startSN,g=t.fragments;for(g[f]=e,u=f;u>0;u--)es(g[u],g[u-1]);for(u=f;u=0;t--){const e=i[t].initSegment;if(e){s=e;break}}t.fragmentHint&&delete t.fragmentHint.endPTS;let r,n=0;if(function(t,e,s){const i=e.skippedSegments,r=Math.max(t.startSN,e.startSN)-e.startSN,n=(t.fragmentHint?1:0)+(i?e.endSN:Math.min(t.endSN,e.endSN))-e.startSN,a=e.startSN-t.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,l=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments;for(let t=r;t<=n;t++){const r=l[a+t];let n=o[t];i&&!n&&t{t.relurl&&(n=t.cc-i.cc),p(t.startPTS)&&p(t.endPTS)&&(i.start=i.startPTS=t.startPTS,i.startDTS=t.startDTS,i.maxStartPTS=t.maxStartPTS,i.endPTS=t.endPTS,i.endDTS=t.endDTS,i.minEndPTS=t.minEndPTS,i.duration=t.endPTS-t.startPTS,i.duration&&(r=i),e.PTSKnown=e.alignedSliding=!0),i.elementaryStreams=t.elementaryStreams,i.loader=t.loader,i.stats=t.stats,t.initSegment&&(i.initSegment=t.initSegment,s=t.initSegment)})),s){(e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments).forEach((t=>{var e;!t||t.initSegment&&t.initSegment.relurl!==(null==(e=s)?void 0:e.relurl)||(t.initSegment=s)}))}if(e.skippedSegments)if(e.deltaUpdateFailed=e.fragments.some((t=>!t)),e.deltaUpdateFailed){k.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let t=e.skippedSegments;t--;)e.fragments.shift();e.startSN=e.fragments[0].sn,e.startCC=e.fragments[0].cc}else e.canSkipDateRanges&&(e.dateRanges=function(t,e,s){const i=m({},t);s&&s.forEach((t=>{delete i[t]}));return Object.keys(e).forEach((t=>{const s=new _(e[t].attr,i[t]);s.isValid?i[t]=s:k.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(e[t].attr)}"`)})),i}(t.dateRanges,e.dateRanges,e.recentlyRemovedDateranges));const a=e.fragments;if(n){k.warn("discontinuity sliding from playlist, take drift into account");for(let t=0;t{e.elementaryStreams=t.elementaryStreams,e.stats=t.stats})),r?ss(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):rs(t,e),a.length&&(e.totalduration=e.edge-a[0].start),e.driftStartTime=t.driftStartTime,e.driftStart=t.driftStart;const o=e.advancedDateTime;if(e.advanced&&o){const t=e.edge;e.driftStart||(e.driftStartTime=o,e.driftStart=t),e.driftEndTime=o,e.driftEnd=t}else e.driftEndTime=t.driftEndTime,e.driftEnd=t.driftEnd,e.advancedDateTime=t.advancedDateTime}function rs(t,e){const s=e.startSN+e.skippedSegments-t.startSN,i=t.fragments;s<0||s>=i.length||ns(e,i[s].start)}function ns(t,e){if(e){const s=t.fragments;for(let i=t.skippedSegments;i{const{details:s}=t;null!=s&&s.fragments&&s.fragments.forEach((t=>{t.level=e}))}))}function hs(t){switch(t.details){case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_TIMEOUT:case S.LEVEL_LOAD_TIMEOUT:case S.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function ds(t,e){const s=hs(e);return t.default[(s?"timeout":"error")+"Retry"]}function cs(t,e){const s="linear"===t.backoff?1:Math.pow(2,e);return Math.min(s*t.retryDelayMs,t.maxRetryDelayMs)}function us(t){return u(u({},t),{errorRetry:null,timeoutRetry:null})}function fs(t,e,s,i){if(!t)return!1;const r=null==i?void 0:i.code,n=e499)}(r)||!!s);return t.shouldRetry?t.shouldRetry(t,e,s,i,n):n}const gs=function(t,e){let s=0,i=t.length-1,r=null,n=null;for(;s<=i;){r=(s+i)/2|0,n=t[r];const a=e(n);if(a>0)s=r+1;else{if(!(a<0))return n;i=r-1}}return null};function ms(t,e,s=0,i=0){let r=null;if(t){r=e[t.sn-e[0].sn+1]||null;const i=t.endDTS-s;i>0&&i<15e-7&&(s+=15e-7)}else 0===s&&0===e[0].start&&(r=e[0]);if(r&&(!t||t.level===r.level)&&0===ps(s,i,r))return r;const n=gs(e,ps.bind(null,s,i));return!n||n===t&&r?r:n}function ps(t=0,e=0,s){if(s.start<=t&&s.start+s.duration>t)return 0;const i=Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return s.start+s.duration-i<=t?1:s.start-i>t&&s.start?-1:0}function vs(t,e,s){const i=1e3*Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return(s.endProgramDateTime||0)-i>t}var ys=0,Es=2,Ts=3,Ss=5,Ls=0,As=1,Rs=2;class bs{constructor(t,e){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=k.log.bind(k,`${e}:`),this.warn=k.warn.bind(k,`${e}:`),this.hls=t}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(t,e,s){const i=null==e?void 0:e.renditionReports;if(i){let r=-1;for(let s=0;s=0&&t>e.partTarget&&(a+=1)}const o=s&&Qe(s);return new Je(n,a>=0?a:void 0,o)}}}loadPlaylist(t){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(t){return this.canLoad&&!!t&&!!t.url&&(!t.details||t.details.live)}shouldReloadPlaylist(t){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(t)}playlistLoaded(t,e,s){const{details:i,stats:r}=e,n=self.performance.now(),a=r.loading.first?Math.max(0,n-r.loading.first):0;if(i.advancedDateTime=Date.now()-a,i.live||null!=s&&s.live){if(i.reloaded(s),s&&this.log(`live playlist ${t} ${i.advanced?"REFRESHED "+i.lastPartSn+"-"+i.lastPartIndex:i.updated?"UPDATED":"MISSED"}`),s&&i.fragments.length>0&&is(s,i),!this.canLoad||!i.live)return;let a,o,l;if(i.canBlockReload&&i.endSN&&i.advanced){const t=this.hls.config.lowLatencyMode,r=i.lastPartSn,n=i.endSN,h=i.lastPartIndex,d=r===n;-1!==h?(o=d?n+1:r,l=d?t?0:h:h+1):o=n+1;const c=i.age,u=c+i.ageHeader;let f=Math.min(u-i.partTarget,1.5*i.targetduration);if(f>0){if(s&&f>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${f} with playlist age: ${i.age}`),f=0;else{const t=Math.floor(f/i.targetduration);if(o+=t,void 0!==l){l+=Math.round(f%i.targetduration/i.partTarget)}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${c.toFixed(2)}s goal: ${f} skip sn ${t} to part ${l}`)}i.tuneInGoal=f}if(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l),t||!d)return void this.loadPlaylist(a)}else(i.canBlockReload||i.canSkipUntil)&&(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,d=h?h.end-h.len:0,c=function(t,e=1/0){let s=1e3*t.targetduration;if(t.updated){const i=t.fragments,r=4;if(i.length&&s*r>e){const t=1e3*i[i.length-1].duration;tthis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==o&&i.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*i.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(t,e,s,i){let r=Qe(t);return null!=e&&e.skip&&t.deltaUpdateFailed&&(s=e.msn,i=e.part,r=qe),new Je(s,i,r)}checkRetry(t){const e=t.details,s=hs(t),i=t.errorAction,{action:r,retryCount:n=0,retryConfig:a}=i||{},o=!!i&&!!a&&(r===Ss||!i.resolved&&r===Es);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(s&&null!=(l=t.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" without delivery-directives`),this.loadPlaylist();else{const t=cs(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),t),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" in ${t}ms`)}t.levelRetry=!0,i.resolved=!0}return o}}class ks{constructor(t,e=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=t,this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=e,this.totalWeight_=s}sample(t,e){const s=Math.pow(this.alpha_,t);this.estimate_=e*(1-s)+s*this.estimate_,this.totalWeight_+=t}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const t=1-Math.pow(this.alpha_,this.totalWeight_);if(t)return this.estimate_/t}return this.estimate_}}class Ds{constructor(t,e,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new ks(t),this.fast_=new ks(e),this.defaultTTFB_=i,this.ttfb_=new ks(t)}update(t,e){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==t&&(this.slow_=new ks(t,s.getEstimate(),s.getTotalWeight())),i.halfLife!==e&&(this.fast_=new ks(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.ttfb_=new ks(t,r.getEstimate(),r.getTotalWeight()))}sample(t,e){const s=(t=Math.max(t,this.minDelayMs_))/1e3,i=8*e/s;this.fast_.sample(s,i),this.slow_.sample(s,i)}sampleTTFB(t){const e=t/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(e,2)/2);this.ttfb_.sample(s,Math.max(t,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Is={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},ws={};function Cs(t,e,s,i,r,n){const a=t.audioCodec?t.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let d=null;if(null!=a&&a.length)try{d=1===a.length&&a[0]?e.groups[a[0]].channels:a.reduce(((t,s)=>{if(s){const i=e.groups[s];if(!i)throw new Error(`Audio track group ${s} not found`);Object.keys(i.channels).forEach((e=>{t[e]=(t[e]||0)+i.channels[e]}))}return t}),{2:0})}catch(t){return!0}return void 0!==t.videoCodec&&(t.width>1920&&t.height>1088||t.height>1920&&t.width>1088||t.frameRate>Math.max(i,30)||"SDR"!==t.videoRange&&t.videoRange!==s||t.bitrate>Math.max(r,8e6))||!!d&&p(h)&&Object.keys(d).some((t=>parseInt(t)>h))}function _s(t,e,s){const i=t.videoCodec,r=t.audioCodec;if(!i||!r||!s)return Promise.resolve(Is);const n={width:t.width,height:t.height,bitrate:Math.ceil(Math.max(.9*t.bitrate,t.averageBitrate)),framerate:t.frameRate||30},a=t.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=i.split(",").map((t=>({type:"media-source",video:u(u({},n),{},{contentType:se(t,"video")})})));return r&&t.audioGroups&&t.audioGroups.forEach((t=>{var s;t&&(null==(s=e.groups[t])||s.tracks.forEach((e=>{if(e.groupId===t){const t=e.channels||"",s=parseFloat(t);p(s)&&s>2&&o.push.apply(o,r.split(",").map((t=>({type:"media-source",audio:{contentType:se(t,"audio"),channels:""+s}}))))}})))})),Promise.all(o.map((t=>{const e=function(t){const{audio:e,video:s}=t,i=s||e;if(i){const t=i.contentType.split('"')[1];if(s)return`r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${t}_${Math.ceil(s.bitrate/1e5)}`;if(e)return`c${e.channels}${e.spatialRendering?"s":"n"}_${t}`}return""}(t);return ws[e]||(ws[e]=s.decodingInfo(t))}))).then((t=>({supported:!t.some((t=>!t.supported)),configurations:o,decodingInfoResults:t}))).catch((t=>({supported:!1,configurations:o,decodingInfoResults:[],error:t})))}function xs(t,e){let s=!1,i=[];return t&&(s="SDR"!==t,i=[t]),e&&(i=e.allowedVideoRanges||je.slice(0),s=void 0!==e.preferHDR?e.preferHDR:function(){if("function"==typeof matchMedia){const t=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(t.media!==e.media)return!0===t.matches}return!1}(),i=s?i.filter((t=>"SDR"!==t)):["SDR"]),{preferHDR:s,allowedVideoRanges:i}}function Ps(t,e){k.log(`[abr] start candidates with "${t}" ignored because ${e}`)}function Fs(t,e,s){if("attrs"in t){const s=e.indexOf(t);if(-1!==s)return s}for(let i=0;i-1===i.indexOf(t)))}(o,e.characteristics))&&(void 0===s||s(t,e))}function Os(t,e){const{audioCodec:s,channels:i}=t;return!(void 0!==s&&(e.audioCodec||"").substring(0,4)!==s.substring(0,4)||void 0!==i&&i!==(e.channels||"2"))}function Ns(t,e,s){for(let i=e;i;i--)if(s(t[i]))return i;for(let i=e+1;i1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var Bs="NOT_LOADED",$s="APPENDING",Gs="PARTIAL",Ks="OK";class Hs{constructor(t){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=t,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(E.BUFFER_APPENDED,this.onBufferAppended,this),t.on(E.FRAG_BUFFERED,this.onFragBuffered,this),t.on(E.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:t}=this;t.off(E.BUFFER_APPENDED,this.onBufferAppended,this),t.off(E.FRAG_BUFFERED,this.onFragBuffered,this),t.off(E.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(t,e){const s=this.activePartLists[e];if(s)for(let e=s.length;e--;){const i=s[e];if(!i)break;const r=i.end;if(i.start<=t&&null!==r&&t<=r)return i}return this.getBufferedFrag(t,e)}getBufferedFrag(t,e){const{fragments:s}=this,i=Object.keys(s);for(let r=i.length;r--;){const n=s[i[r]];if((null==n?void 0:n.body.type)===e&&n.buffered){const e=n.body;if(e.start<=t&&t<=e.end)return e}}return null}detectEvictedFragments(t,e,s,i){this.timeRanges&&(this.timeRanges[t]=e);const r=(null==i?void 0:i.fragment.sn)||-1;Object.keys(this.fragments).forEach((i=>{const n=this.fragments[i];if(!n)return;if(r>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===s&&this.removeFragment(n.body));const a=n.range[t];a&&a.time.some((t=>{const s=!this.isTimeBuffered(t.startPTS,t.endPTS,e);return s&&this.removeFragment(n.body),s}))}))}detectPartialFragments(t){const e=this.timeRanges,{frag:s,part:i}=t;if(!e||"initSegment"===s.sn)return;const r=Ys(s),n=this.fragments[r];if(!n||n.buffered&&s.gap)return;const a=!s.relurl;if(Object.keys(e).forEach((t=>{const r=s.elementaryStreams[t];if(!r)return;const o=e[t],l=a||!0===r.partial;n.range[t]=this.getBufferedTimes(s,i,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=s.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Vs(n)||this.removeParts(s.sn-1,s.type)}else this.removeFragment(n.body)}removeParts(t,e){const s=this.activePartLists[e];s&&(this.activePartLists[e]=s.filter((e=>e.fragment.sn>=t)))}fragBuffered(t,e){const s=Ys(t);let i=this.fragments[s];!i&&e&&(i=this.fragments[s]={body:t,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},t.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,i.buffered=!0)}getBufferedTimes(t,e,s,i){const r={time:[],partial:s},n=t.start,a=t.end,o=t.minEndPTS||a,l=t.maxStartPTS||n;for(let t=0;t=e&&o<=s){r.time.push({startPTS:Math.max(n,i.start(t)),endPTS:Math.min(a,i.end(t))});break}if(ne){const e=Math.max(n,i.start(t)),s=Math.min(a,i.end(t));s>e&&(r.partial=!0,r.time.push({startPTS:e,endPTS:s}))}else if(a<=e)break}return r}getPartialFragment(t){let e,s,i,r=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&Vs(h)&&(s=h.body.start-a,i=h.body.end+a,t>=s&&t<=i&&(e=Math.min(t-s,i-t),n<=e&&(r=h.body,n=e)))})),r}isEndListAppended(t){const e=this.endListFragments[t];return void 0!==e&&(e.buffered||Vs(e))}getState(t){const e=Ys(t),s=this.fragments[e];return s?s.buffered?Vs(s)?Gs:Ks:$s:Bs}isTimeBuffered(t,e,s){let i,r;for(let n=0;n=i&&e<=r)return!0;if(e<=i)return!1}return!1}onFragLoaded(t,e){const{frag:s,part:i}=e;if("initSegment"===s.sn||s.bitrateTest)return;const r=i?null:e,n=Ys(s);this.fragments[n]={body:s,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(t,e){const{frag:s,part:i,timeRanges:r}=e;if("initSegment"===s.sn)return;const n=s.type;if(i){let t=this.activePartLists[n];t||(this.activePartLists[n]=t=[]),t.push(i)}this.timeRanges=r,Object.keys(r).forEach((t=>{const e=r[t];this.detectEvictedFragments(t,e,n,i)}))}onFragBuffered(t,e){this.detectPartialFragments(e)}hasFragment(t){const e=Ys(t);return!!this.fragments[e]}hasParts(t){var e;return!(null==(e=this.activePartLists[t])||!e.length)}removeFragmentsInRange(t,e,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==s||i&&!o.gap||o.startt&&(a.buffered||r)&&this.removeFragment(o)}))}removeFragment(t){const e=Ys(t);t.stats.loaded=0,t.clearElementaryStreamInfo();const s=this.activePartLists[t.type];if(s){const e=t.sn;this.activePartLists[t.type]=s.filter((t=>t.fragment.sn!==e))}delete this.fragments[e],t.endList&&delete this.endListFragments[t.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function Vs(t){var e,s,i;return t.buffered&&(t.body.gap||(null==(e=t.range.video)?void 0:e.partial)||(null==(s=t.range.audio)?void 0:s.partial)||(null==(i=t.range.audiovideo)?void 0:i.partial))}function Ys(t){return`${t.type}_${t.level}_${t.sn}`}const Ws={length:0,start:()=>0,end:()=>0};class js{static isBuffered(t,e){try{if(t){const s=js.getBuffered(t);for(let t=0;t=s.start(t)&&e<=s.end(t))return!0}}catch(t){}return!1}static bufferInfo(t,e,s){try{if(t){const i=js.getBuffered(t),r=[];let n;for(n=0;nn&&(i[r-1].end=t[e].end):i.push(t[e])}else i.push(t[e])}else i=t;let r,n=0,a=e,o=e;for(let t=0;t=l&&es.startCC||t&&t.cc{if(this.loader&&this.loader.destroy(),t.gap){if(t.tagList.some((t=>"GAP"===t[0])))return void o(ii(t));t.gap=!1}const l=this.loader=t.loader=r?new r(i):new n(i),h=si(t),d=us(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===t.sn?1/0:ti};t.stats=l.stats,l.load(h,c,{onSuccess:(e,s,i,r)=>{this.resetLoader(t,l);let n=e.data;i.resetIV&&t.decryptdata&&(t.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:t,part:null,payload:n,networkDetails:r})},onError:(e,i,r,n)=>{this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,response:u({url:s,data:void 0},e),error:new Error(`HTTP Error ${e.code} ${e.text}`),networkDetails:r,stats:n}))},onAbort:(e,s,i)=>{this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,error:new Error("Aborted"),networkDetails:i,stats:e}))},onTimeout:(e,s,i)=>{this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:i,stats:e}))},onProgress:(s,i,r,n)=>{e&&e({frag:t,part:null,payload:r,networkDetails:n})}})}))}loadPart(t,e,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),t.gap||e.gap)return void o(ii(t,e));const l=this.loader=t.loader=r?new r(i):new n(i),h=si(t,e),d=us(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:ti};e.stats=l.stats,l.load(h,c,{onSuccess:(i,r,n,o)=>{this.resetLoader(t,l),this.updateStatsFromPart(t,e);const h={frag:t,part:e,payload:i.data,networkDetails:o};s(h),a(h)},onError:(s,i,r,n)=>{this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,part:e,response:u({url:h.url,data:void 0},s),error:new Error(`HTTP Error ${s.code} ${s.text}`),networkDetails:r,stats:n}))},onAbort:(s,i,r)=>{t.stats.aborted=e.stats.aborted,this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,part:e,error:new Error("Aborted"),networkDetails:r,stats:s}))},onTimeout:(s,i,r)=>{this.resetLoader(t,l),o(new ri({type:T.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,part:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:s}))}})}))}updateStatsFromPart(t,e){const s=t.stats,i=e.stats,r=i.total;if(s.loaded+=i.loaded,r){const i=Math.round(t.duration/e.duration),n=Math.min(Math.round(s.loaded/r),i),a=(i-n)*Math.round(s.loaded/n);s.total=s.loaded+a}else s.total=Math.max(s.loaded,s.total);const n=s.loading,a=i.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(t,e){t.loader=null,this.loader===e&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),e.destroy()}}function si(t,e=null){const s=e||t,i={frag:t,part:e,responseType:"arraybuffer",url:s.url,headers:{},rangeStart:0,rangeEnd:0},r=s.byteRangeStartOffset,n=s.byteRangeEndOffset;if(p(r)&&p(n)){var a;let e=r,s=n;if("initSegment"===t.sn&&"AES-128"===(null==(a=t.decryptdata)?void 0:a.method)){const t=n-r;t%16&&(s=n+(16-t%16)),0!==r&&(i.resetIV=!0,e=r-16)}i.rangeStart=e,i.rangeEnd=s}return i}function ii(t,e){const s=new Error(`GAP ${t.gap?"tag":"attribute"} found`),i={type:T.MEDIA_ERROR,details:S.FRAG_GAP,fatal:!1,frag:t,error:s,networkDetails:null};return e&&(i.part=e),(e||t).stats.aborted=!0,new ri(i)}class ri extends Error{constructor(t){super(t.error.message),this.data=void 0,this.data=t}}class ni{constructor(t,e){this.subtle=void 0,this.aesIV=void 0,this.subtle=t,this.aesIV=e}decrypt(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)}}class ai{constructor(t,e){this.subtle=void 0,this.key=void 0,this.subtle=t,this.key=e}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class oi{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(t){const e=new DataView(t),s=new Uint32Array(4);for(let t=0;t<4;t++)s[t]=e.getUint32(4*t);return s}initTable(){const t=this.sBox,e=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],a=s[3],o=this.invSubMix,l=o[0],h=o[1],d=o[2],c=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let s=g^g<<1^g<<2^g<<3^g<<4;s=s>>>8^255&s^99,t[f]=s,e[s]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[s]^16843008*s;i[f]=v<<24|v>>>8,r[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[s]=v<<24|v>>>8,h[s]=v<<16|v>>>16,d[s]=v<<8|v>>>24,c[s]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(t){const e=this.uint8ArrayToUint32Array_(t);let s=!0,i=0;for(;i{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new ni(this.subtle,new Uint8Array(s)).decrypt(t.buffer,e)})).catch((i=>(k.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${i.name}: ${i.message}`),this.onWebCryptoError(t,e,s))))}onWebCryptoError(t,e,s){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(t,e,s);const i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(t){let e=t;const s=t.length-t.length%16;return s!==t.length&&(e=et(t,0,s),this.remainderData=et(t,s)),e}logOnce(t){this.logEnabled&&(k.log(`[decrypter]: ${t}`),this.logEnabled=!1)}}const hi=function(t){let e="";const s=t.length;for(let i=0;ia.end){const t=n>r;(n{if(this.fragContextChanged(t))return this.warn(`Fragment ${t.sn}${e.part?" p: "+e.part.index:""} of level ${t.level} was dropped during download.`),void this.fragmentTracker.removeFragment(t);t.stats.chunkCount++,this._handleFragmentLoadProgress(e)})).then((e=>{if(!e)return;const s=this.state;this.fragContextChanged(t)?(s===fi||!this.fragCurrent&&s===pi)&&(this.fragmentTracker.removeFragment(t),this.state=ci):("payload"in e&&(this.log(`Loaded fragment ${t.sn} of level ${t.level}`),this.hls.trigger(E.FRAG_LOADED,e)),this._handleFragmentLoadComplete(e))})).catch((e=>{this.state!==di&&this.state!==Ei&&(this.warn(e),this.resetFragmentLoading(t))}))}clearTrackerIfNeeded(t){var e;const{fragmentTracker:s}=this;if(s.getState(t)===$s){const e=t.type,i=this.getFwdBufferInfo(this.mediaBuffer,e),r=Math.max(t.duration,i?i.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?t.sn-n.sn:0)||this.reduceMaxBufferLength(r))&&s.removeFragment(t)}else 0===(null==(e=this.mediaBuffer)?void 0:e.buffered.length)?s.removeAllFragments():s.hasParts(t.type)&&(s.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type}),s.getState(t)===Gs&&s.removeFragment(t))}checkLiveUpdate(t){if(t.updated&&!t.live){const e=t.fragments[t.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type})}t.fragments[0]||(t.deltaUpdateFailed=!0)}flushMainBuffer(t,e,s=null){if(!(t-e))return;const i={startOffset:t,endOffset:e,type:s};this.hls.trigger(E.BUFFER_FLUSHING,i)}_loadInitSegment(t,e){this._doFragLoad(t,e).then((e=>{if(!e||this.fragContextChanged(t)||!this.levels)throw new Error("init load aborted");return e})).then((e=>{const{hls:s}=this,{payload:i}=e,r=t.decryptdata;if(i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=self.performance.now();return s.trigger(E.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:n,tdecrypt:r}}),e.payload=i,this.completeInitSegmentLoad(e)}))}return this.completeInitSegmentLoad(e)})).catch((e=>{this.state!==di&&this.state!==Ei&&(this.warn(e),this.resetFragmentLoading(t))}))}completeInitSegmentLoad(t){const{levels:e}=this;if(!e)throw new Error("init load aborted, missing levels");const s=t.frag.stats;this.state=ci,t.frag.data=new Uint8Array(t.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}fragContextChanged(t){const{fragCurrent:e}=this;return!t||!e||t.sn!==e.sn||t.level!==e.level}fragBufferedComplete(t,e){var s,i,r,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${t.type} sn: ${t.sn}${e?" part: "+e.index:""} of ${this.playlistType===ke?"level":"track"} ${t.level} (frag:[${(null!=(s=t.startPTS)?s:NaN).toFixed(3)}-${(null!=(i=t.endPTS)?i:NaN).toFixed(3)}] > buffer:${a?hi(js.getBuffered(a)):"(detached)"})`),"initSegment"!==t.sn){var o;if(t.type!==Ie){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return void(this.state=ci)}const e=null==(o=this.levels)?void 0:o[t.level];null!=e&&e.fragmentError&&(this.log(`Resetting level fragment error count of ${e.fragmentError} on frag buffered`),e.fragmentError=0)}this.state=ci,a&&(!this.loadedmetadata&&t.type==ke&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(t){const{transmuxer:e}=this;if(!e)return;const{frag:s,part:i,partsLoaded:r}=t,n=!r||0===r.length||r.some((t=>!t)),a=new qs(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);e.flush(a)}_handleFragmentLoadProgress(t){}_doFragLoad(t,e,s=null,i){var r;const n=null==e?void 0:e.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!t.encrypted||null!=(r=t.decryptdata)&&r.key?!t.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(t,n.encryptedFragments):(this.log(`Loading key for ${t.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${t.level}`),this.state=ui,this.fragCurrent=t,a=this.keyLoader.load(t).then((t=>{if(!this.fragContextChanged(t.frag))return this.hls.trigger(E.KEY_LOADED,t),this.state===ui&&(this.state=ci),t})),this.hls.trigger(E.KEY_LOADING,{frag:t}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),s=Math.max(t.start,s||0),this.config.lowLatencyMode&&"initSegment"!==t.sn){const r=n.partList;if(r&&i){s>t.end&&n.fragmentHint&&(t=n.fragmentHint);const o=this.getNextPart(r,t,s);if(o>-1){const l=r[o];let h;return this.log(`Loading part sn: ${t.sn} p: ${l.index} cc: ${t.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=fi,h=a?a.then((s=>!s||this.fragContextChanged(s.frag)?null:this.doFragPartsLoad(t,l,e,i))).catch((t=>this.handleFragLoadError(t))):this.doFragPartsLoad(t,l,e,i).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(E.FRAG_LOADING,{frag:t,part:l,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!t.url||this.loadedEndOfParts(r,s))return Promise.resolve(null)}}this.log(`Loading fragment ${t.sn} cc: ${t.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),p(t.sn)&&!this.bitrateTest&&(this.nextLoadPosition=t.start+t.duration),this.state=fi;const o=this.config.progressive;let l;return l=o&&a?a.then((e=>!e||this.fragContextChanged(null==e?void 0:e.frag)?null:this.fragmentLoader.load(t,i))).catch((t=>this.handleFragLoadError(t))):Promise.all([this.fragmentLoader.load(t,o?i:void 0),a]).then((([t])=>(!o&&t&&i&&i(t),t))).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(E.FRAG_LOADING,{frag:t,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(t,e,s,i){return new Promise(((r,n)=>{var a;const o=[],l=null==(a=s.details)?void 0:a.partList,h=e=>{this.fragmentLoader.loadPart(t,e,i).then((i=>{o[e.index]=i;const n=i.part;this.hls.trigger(E.FRAG_LOADED,i);const a=as(s,t.sn,e.index+1)||os(l,t.sn,e.index+1);if(!a)return r({frag:t,part:n,partsLoaded:o});h(a)})).catch(n)};h(e)}))}handleFragLoadError(t){if("data"in t){const e=t.data;t.data&&e.details===S.INTERNAL_ABORTED?this.handleFragLoadAborted(e.frag,e.part):this.hls.trigger(E.ERROR,e)}else this.hls.trigger(E.ERROR,{type:T.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,err:t,error:t,fatal:!0});return null}_handleTransmuxerFlush(t){const e=this.getCurrentContext(t);if(!e||this.state!==pi)return void(this.fragCurrent||this.state===di||this.state===Ei||(this.state=ci));const{frag:s,part:i,level:r}=e,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n),this.updateLevelTiming(s,i,r,t.partial)}getCurrentContext(t){const{levels:e,fragCurrent:s}=this,{level:i,sn:r,part:n}=t;if(null==e||!e[i])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${i}. The current chunk will not be buffered.`),null;const a=e[i],o=n>-1?as(a,r,n):null,l=o?o.fragment:function(t,e,s){if(null==t||!t.details)return null;const i=t.details;let r=i.fragments[e-i.startSN];return r||(r=i.fragmentHint,r&&r.sn===e?r:en&&this.flushMainBuffer(a,t.start)}getFwdBufferInfo(t,e){const s=this.getLoadPosition();return p(s)?this.getFwdBufferInfoAtPos(t,s,e):null}getFwdBufferInfoAtPos(t,e,s){const{config:{maxBufferHole:i}}=this,r=js.bufferInfo(t,e,i);if(0===r.len&&void 0!==r.nextStart){const n=this.fragmentTracker.getBufferedFrag(e,s);if(n&&r.nextStart=s&&(e.maxMaxBufferLength=i,this.warn(`Reduce max buffer length to ${i}s`),!0)}getAppendedFrag(t,e=ke){const s=this.fragmentTracker.getAppendedFrag(t,ke);return s&&"fragment"in s?s.fragment:s}getNextFragment(t,e){const s=e.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start;let a;if(e.live){const o=r.initialLiveManifestSize;if(ie}getNextFragmentLoopLoading(t,e,s,i,r){const n=t.gap,a=this.getNextFragment(this.nextLoadPosition,e);if(null===a)return a;if(t=a,n&&t&&!t.gap&&s.nextStart){const e=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i);if(null!==e&&s.len+e.len>=r)return this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${t.sn}`),null}return t}mapToInitFragWhenRequired(t){return null==t||!t.initSegment||null!=t&&t.initSegment.data||this.bitrateTest?t:t.initSegment}getNextPart(t,e,s){let i=-1,r=!1,n=!0;for(let a=0,o=t.length;a-1&&ss.start&&s.loaded}getInitialLiveFragment(t,e){const s=this.fragPrevious;let i=null;if(s){if(t.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=function(t,e,s){if(null===e||!Array.isArray(t)||!t.length||!p(e))return null;if(e<(t[0].programDateTime||0))return null;if(e>=(t[t.length-1].endProgramDateTime||0))return null;s=s||0;for(let i=0;i=t.startSN&&r<=t.endSN){const n=e[r-t.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=function(t,e){return gs(t,(t=>t.cce?-1:0))}(e,s.cc),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const e=this.hls.liveSyncPosition;null!==e&&(i=this.getFragmentAtPosition(e,this.bitrateTest?t.fragmentEnd:t.edge,t))}return i}getFragmentAtPosition(t,e,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:a}=s;const{fragmentHint:o}=s,l=i.maxFragLookUpTolerance,h=s.partList,d=!!(i.lowLatencyMode&&null!=h&&h.length&&o);let c;if(d&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),te-l?0:l)}else c=n[n.length-1];if(c){const t=c.sn-s.startSN,e=this.fragmentTracker.getState(c);if((e===Ks||e===Gs&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!d||h[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const e=n[t+1];c=c.sn=n-e.maxFragLookUpTolerance&&r<=a;if(null!==i&&s.duration>i&&(r${t.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${i}`),n}return r}waitForCdnTuneIn(t){return t.live&&t.canBlockReload&&t.partTarget&&t.tuneInGoal>Math.max(t.partHoldBack,3*t.partTarget)}setStartPosition(t,e){let s=this.startPosition;if(s ${null==(i=this.fragCurrent)?void 0:i.url}`);const r=e.details===S.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(s,!0);const n=e.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===Ss&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const i=cs(l,o);this.warn(`Fragment ${s.sn} of ${t} ${s.level} errored with ${e.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${i}ms`),n.resolved=!0,this.retryDate=self.performance.now()+i,this.state=gi}else if(l&&n){if(this.resetFragmentErrors(t),!(o.5;i&&this.reduceMaxBufferLength(s.len);const r=!i;return r&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${e} buffer`),t.frag&&(this.fragmentTracker.removeFragment(t.frag),this.nextLoadPosition=t.frag.start),this.resetLoadingState(),r}return!1}resetFragmentErrors(t){t===De&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==di&&(this.state=ci)}afterBufferFlushed(t,e,s){if(!t)return;const i=js.getBuffered(t);this.fragmentTracker.detectEvictedFragments(e,i,s),this.state===yi&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=ci}resetStartWhenNotLoaded(t){if(!this.loadedmetadata){this.startFragRequested=!1;const e=t?t.details:null;null!=e&&e.live?(this.startPosition=-1,this.setStartPosition(e,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(t){this.warn(`The loading context changed while buffering fragment ${t.sn} of level ${t.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(t=0){this.fragmentTracker.removeFragmentsInRange(t,1/0,this.playlistType,!1,!0)}updateLevelTiming(t,e,s,i){var r;const n=s.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(t.elementaryStreams).reduce(((e,r)=>{const a=t.elementaryStreams[r];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${t.sn} ${r} duration reliably (${o})`),e||!1;const l=i?0:ss(n,t,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(E.LEVEL_PTS_UPDATED,{details:n,level:s,drift:l,type:r,frag:t,start:a.startPTS,end:a.endPTS}),!0}return e}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const e=new Error(`Found no media in fragment ${t.sn} of level ${t.level} resetting transmuxer to fallback to playlist timing`);if(0===s.fragmentError&&(s.fragmentError++,t.gap=!0,this.fragmentTracker.removeFragment(t),this.fragmentTracker.fragBuffered(t,!0)),this.warn(e.message),this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:e,frag:t,reason:`Found no media in msn ${t.sn} of level "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=vi,this.hls.trigger(E.FRAG_PARSED,{frag:t,part:e})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(t){"demuxerWorker"===t.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(t){const e=this._state;e!==t&&(this._state=t,this.log(`${e}->${t}`))}get state(){return this._state}}class Ai{constructor(){this.chunks=[],this.dataLength=0}push(t){this.chunks.push(t),this.dataLength+=t.length}flush(){const{chunks:t,dataLength:e}=this;let s;return t.length?(s=1===t.length?t[0]:function(t,e){const s=new Uint8Array(e);let i=0;for(let e=0;e0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:Ne,duration:Number.POSITIVE_INFINITY});r{if(p(t))return 90*t;return 9e4*e+(s?9e4*s.baseTime/s.timescale:0)};function Di(t,e){return 255===t[e]&&240==(246&t[e+1])}function Ii(t,e){return 1&t[e+1]?7:9}function wi(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function Ci(t,e){return e+1=t.length)return!1;const i=wi(t,e);if(i<=s)return!1;const r=e+i;return r===t.length||Ci(t,r)}return!1}function xi(t,e,s,i,r){if(!t.samplerate){const n=function(t,e,s,i){let r,n,a,o;const l=navigator.userAgent.toLowerCase(),h=i,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&e[s+2])>>>6);const c=(60&e[s+2])>>>2;if(!(c>d.length-1))return a=(1&e[s+2])<<2,a|=(192&e[s+3])>>>6,k.log(`manifest codec:${i}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,o=new Array(4),n=c-3):(r=2,o=new Array(2),n=c):-1!==l.indexOf("android")?(r=2,o=new Array(2),n=c):(r=5,o=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&c>=6?n=c-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!i&&1===a)&&(r=2,o=new Array(2)),n=c)),o[0]=r<<3,o[0]|=(14&c)>>1,o[1]|=(1&c)<<7,o[1]|=a<<3,5===r&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:d[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:h};{const e=new Error(`invalid ADTS sampling index:${c}`);t.emit(E.ERROR,E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!0,error:e,reason:e.message})}}(e,s,i,r);if(!n)return;t.config=n.config,t.samplerate=n.samplerate,t.channelCount=n.channelCount,t.codec=n.codec,t.manifestCodec=n.manifestCodec,k.log(`parsed codec:${t.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function Pi(t){return 9216e4/t}function Fi(t,e,s,i,r){const n=i+r*Pi(t.samplerate),a=function(t,e){const s=Ii(t,e);if(e+s<=t.length){const i=wi(t,e)-s;if(i>0)return{headerLength:s,frameLength:i}}}(e,s);let o;if(a){const{frameLength:i,headerLength:r}=a,l=r+i,h=Math.max(0,s+l-e.length);h?(o=new Uint8Array(l-r),o.set(e.subarray(s+r,e.length),0)):o=e.subarray(s+r,s+l);const d={unit:o,pts:n};return h||t.samples.push(d),{sample:d,length:l,missing:h}}const l=e.length-s;o=new Uint8Array(l),o.set(e.subarray(s,e.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let Mi=null;const Oi=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ni=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Ui=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Bi=[0,1,1,4];function $i(t,e,s,i,r){if(s+24>e.length)return;const n=Gi(e,s);if(n&&s+n.frameLength<=e.length){const a=i+r*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:e.subarray(s,s+n.frameLength),pts:a,dts:a};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Gi(t,e){const s=t[e+1]>>3&3,i=t[e+1]>>1&3,r=t[e+2]>>4&15,n=t[e+2]>>2&3;if(1!==s&&0!==r&&15!==r&&3!==n){const a=t[e+2]>>1&1,o=t[e+3]>>6,l=1e3*Oi[14*(3===s?3-i:3===i?3:4)+r-1],h=Ni[3*(3===s?0:2===s?1:2)+n],d=3===o?1:2,c=Ui[s][i],u=Bi[i],f=8*c*u,g=Math.floor(c*l/h+a)*u;if(null===Mi){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Mi=t?parseInt(t[1]):0}return!!Mi&&Mi<=87&&2===i&&l>=224e3&&0===o&&(t[e+3]=128|t[e+3]),{sampleRate:h,channelCount:d,frameLength:g,samplesPerFrame:f}}}function Ki(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])}function Hi(t,e){return e+1{let s=0,i=5;e+=i;const r=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;i>0;){a[0]=t[e];const o=Math.min(i,8),l=8-o;n[0]=4278190080>>>24+l<>l,s=s?s<e.length)return-1;if(11!==e[s]||119!==e[s+1])return-1;const n=e[s+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&e[s+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+n];if(s+l>e.length)return-1;const h=e[s+6]>>5;let d=0;2===h?d+=2:(1&h&&1!==h&&(d+=2),4&h&&(d+=2));const c=(e[s+6]<<8|e[s+7])>>12-d&1,u=[2,1,2,3,3,4,4,5][h]+c,f=e[s+5]>>3,g=7&e[s+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|c<<2|o>>4,o<<4&224]),p=i+r*(1536/a*9e4),v=e.subarray(s,s+l);return t.config=m,t.channelCount=u,t.samplerate=a,t.samples.push({unit:v,pts:p}),l}class Xi{constructor(){this.VideoSample=null}createVideoSample(t,e,s,i){return{key:t,frame:!1,pts:e,dts:s,units:[],debug:i,length:0}}getLastNalUnit(t){var e;let s,i=this.VideoSample;if(i&&0!==i.units.length||(i=t[t.length-1]),null!=(e=i)&&e.units){const t=i.units;s=t[t.length-1]}return s}pushAccessUnit(t,e){if(t.units.length&&t.frame){if(void 0===t.pts){const s=e.samples,i=s.length;if(!i)return void e.dropped++;{const e=s[i-1];t.pts=e.pts,t.dts=e.dts}}e.samples.push(t)}t.debug.length&&k.log(t.pts+"/"+t.dts+":"+t.debug)}}class zi{constructor(t){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const t=this.data,e=this.bytesAvailable,s=t.byteLength-e,i=new Uint8Array(4),r=Math.min(4,e);if(0===r)throw new Error("no bytes available");i.set(t.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(t){let e;t=Math.min(t,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(e=(t-=this.bitsAvailable)>>3,t-=e<<3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)}readBits(t){let e=Math.min(this.bitsAvailable,t);const s=this.word>>>32-e;if(t>32&&k.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0)this.word<<=e;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return e=t-e,e>0&&this.bitsAvailable?s<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const t=this.skipLZ();return this.readBits(t+1)-1}readEG(){const t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(t){let e,s=8,i=8;for(let r=0;r{var n;switch(i.type){case 1:{let e=!1;a=!0;const r=i.data;if(l&&r.length>4){const t=new zi(r).readSliceType();2!==t&&4!==t&&7!==t&&9!==t||(e=!0)}var h;if(e)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.frame=!0,o.key=e;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Gt(i.data,1,s.pts,e.samples);break;case 7:{var d,c;a=!0,l=!0;const e=i.data,s=new zi(e).readSPS();if(!t.sps||t.width!==s.width||t.height!==s.height||(null==(d=t.pixelRatio)?void 0:d[0])!==s.pixelRatio[0]||(null==(c=t.pixelRatio)?void 0:c[1])!==s.pixelRatio[1]){t.width=s.width,t.height=s.height,t.pixelRatio=s.pixelRatio,t.sps=[e],t.duration=r;const i=e.subarray(1,4);let n="avc1.";for(let t=0;t<3;t++){let e=i[t].toString(16);e.length<2&&(e="0"+e),n+=e}t.codec=n}break}case 8:a=!0,t.pps=[i.data];break;case 9:a=!0,t.audFound=!0,o&&this.pushAccessUnit(o,t),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}if(o&&a){o.units.push(i)}})),i&&o&&(this.pushAccessUnit(o,t),this.VideoSample=null)}parseAVCNALu(t,e){const s=e.byteLength;let i=t.naluState||0;const r=i,n=[];let a,o,l,h=0,d=-1,c=0;for(-1===i&&(d=0,c=31&e[0],i=0,h=1);h=0){const t={data:e.subarray(d,o),type:c};n.push(t)}else{const s=this.getLastNalUnit(t.samples);s&&(r&&h<=4-r&&s.state&&(s.data=s.data.subarray(0,s.data.byteLength-r)),o>0&&(s.data=Ut(s.data,e.subarray(0,o)),s.state=0))}h=0&&i>=0){const t={data:e.subarray(d,s),type:c,state:i};n.push(t)}if(0===n.length){const s=this.getLastNalUnit(t.samples);s&&(s.data=Ut(s.data,e))}return t.naluState=i,n}}class Ji{constructor(t,e,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new li(e,{removePKCS7Padding:!1})}decryptBuffer(t){return this.decrypter.decrypt(t,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(t,e,s){const i=t[e].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then((r=>{const n=new Uint8Array(r);i.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(t,e+1,s)}))}decryptAacSamples(t,e,s){for(;;e++){if(e>=t.length)return void s();if(!(t[e].unit.length<32)&&(this.decryptAacSample(t,e,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(t){const e=16*Math.floor((t.length-48)/160)+16,s=new Int8Array(e);let i=0;for(let e=32;e{r.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(t,e,s+1,i)}))}decryptAvcSamples(t,e,s,i){if(t instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;e++,s=0){if(e>=t.length)return void i();const r=t[e].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(t,e,s,i,n),this.decrypter.isSync())))return}}}}const Zi=188;class tr{constructor(t,e,s){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.videoParser=new Qi}static probe(t){const e=tr.syncOffset(t);return e>0&&k.warn(`MPEG2-TS detected but first sync word found @ offset ${e}`),-1!==e}static syncOffset(t){const e=t.length;let s=Math.min(940,e-Zi)+1,i=0;for(;i1&&(0===n&&a>2||o+Zi>s))return n}i++}return-1}static createTrack(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:Lt[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===t?e:void 0}}resetInitSegment(t,e,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=tr.createTrack("video"),this._audioTrack=tr.createTrack("audio",i),this._id3Track=tr.createTrack("id3"),this._txtTrack=tr.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=e,this.videoCodec=s,this._duration=i}resetTimeStamp(){}resetContiguity(){const{_audioTrack:t,_videoTrack:e,_id3Track:s}=this;t&&(t.pesData=null),e&&(e.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(t,e,s=!1,i=!1){let r;s||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,d=n.pesData,c=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=t.length;if(this.remainderData&&(y=(t=Ut(this.remainderData,t)).length,this.remainderData=null),y>4>1){if(E=e+5+t[e+4],E===e+Zi)continue}else E=e+4;switch(y){case h:i&&(d&&(r=nr(d))&&this.videoParser.parseAVCPES(n,l,r,!1,this._duration),d={data:[],size:0}),d&&(d.data.push(t.subarray(E,e+Zi)),d.size+=e+Zi-E);break;case c:if(i){if(f&&(r=nr(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}f={data:[],size:0}}f&&(f.data.push(t.subarray(E,e+Zi)),f.size+=e+Zi-E);break;case u:i&&(g&&(r=nr(g))&&this.parseID3PES(o,r),g={data:[],size:0}),g&&(g.data.push(t.subarray(E,e+Zi)),g.size+=e+Zi-E);break;case 0:i&&(E+=t[E]+1),v=this._pmtId=sr(t,E);break;case v:{i&&(E+=t[E]+1);const r=ir(t,E,this.typeSupported,s);h=r.videoPid,h>0&&(n.pid=h,n.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(o.pid=u),null===m||p||(k.warn(`MPEG-TS PMT found at ${e} after unknown PID '${m}'. Backtracking to sync byte @${L} to parse all TS packets.`),m=null,e=L-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else A++;if(A>0){const t=new Error(`Found ${A} TS packet/s that do not start with 0x47`);this.observer.emit(E.ERROR,E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:t,reason:t.message})}n.pesData=d,a.pesData=f,o.pesData=g;const R={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return i&&this.extractRemainingSamples(R),R}flush(){const{remainderData:t}=this;let e;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e}extractRemainingSamples(t){const{audioTrack:e,videoTrack:s,id3Track:i,textTrack:r}=t,n=s.pesData,a=e.pesData,o=i.pesData;let l;if(n&&(l=nr(n))?(this.videoParser.parseAVCPES(s,r,l,!0,this._duration),s.pesData=null):s.pesData=n,a&&(l=nr(a))){switch(e.segmentCodec){case"aac":this.parseAACPES(e,l);break;case"mp3":this.parseMPEGPES(e,l);break;case"ac3":this.parseAC3PES(e,l)}e.pesData=null}else null!=a&&a.size&&k.log("last AAC PES packet truncated,might overlap between fragments"),e.pesData=a;o&&(l=nr(o))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=o}demuxSampleAes(t,e,s){const i=this.demux(t,s,!0,!this.config.progressive),r=this.sampleAes=new Ji(this.observer,this.config,e);return this.decrypt(i,r)}decrypt(t,e){return new Promise((s=>{const{audioTrack:i,videoTrack:r}=t;i.samples&&"aac"===i.segmentCodec?e.decryptAacSamples(i.samples,0,(()=>{r.samples?e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)})):s(t)})):r.samples&&e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)}))}))}destroy(){this._duration=0}parseAACPES(t,e){let s=0;const i=this.aacOverFlow;let r,n,a,o=e.data;if(i){this.aacOverFlow=null;const e=i.missing,r=i.sample.unit.byteLength;if(-1===e)o=Ut(i.sample.unit,o);else{const n=r-e;i.sample.unit.set(o.subarray(0,e),n),t.samples.push(i.sample),s=i.missing}}for(r=s,n=o.length;r0;)o+=n}}parseID3PES(t,e){if(void 0===e.pts)return void k.warn("[tsdemuxer]: ID3 PES unknown PTS");const s=m({},e,{type:this._videoTrack?Be:Ne,duration:Number.POSITIVE_INFINITY});t.samples.push(s)}}function er(t,e){return((31&t[e+1])<<8)+t[e+2]}function sr(t,e){return(31&t[e+10])<<8|t[e+11]}function ir(t,e,s,i){const r={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},n=e+3+((15&t[e+1])<<8|t[e+2])-4;for(e+=12+((15&t[e+10])<<8|t[e+11]);e0){let i=e+5,o=a;for(;o>2;){if(106===t[i])!0!==s.ac3?k.log("AC-3 audio found, not supported in this browser for now"):(r.audioPid=n,r.segmentAudioCodec="ac3");const e=t[i+1]+2;i+=e,o-=e}}break;case 194:case 135:throw new Error("Unsupported EC-3 in M2TS found");case 36:throw new Error("Unsupported HEVC in M2TS found")}e+=a+5}return r}function rr(t){k.log(`${t} with AES-128-CBC encryption found in unencrypted stream`)}function nr(t){let e,s,i,r,n,a=0;const o=t.data;if(!t||0===t.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Ut(o[0],o[1]),o.splice(1,1);e=o[0];if(1===(e[0]<<16)+(e[1]<<8)+e[2]){if(s=(e[4]<<8)+e[5],s&&s>t.size-6)return null;const l=e[7];192&l&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&l?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-n>54e5&&(k.warn(`${Math.round((r-n)/9e4)}s delta between PTS and DTS, align them`),r=n)):n=r),i=e[8];let h=i+9;if(t.size<=h)return null;t.size-=h;const d=new Uint8Array(t.size);for(let t=0,s=o.length;ts){h-=s;continue}e=e.subarray(h),s-=h,h=0}d.set(e,a),a+=s}return s&&(s-=i+3),{data:d,pts:r,dts:n,len:s}}return null}class ar{static getSilentFrame(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const or=Math.pow(2,32)-1;class lr{static init(){let t;for(t in lr.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},lr.types)lr.types.hasOwnProperty(t)&&(lr.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);const e=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);lr.HDLR_TYPES={video:e,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);lr.STTS=lr.STSC=lr.STCO=r,lr.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),lr.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),lr.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),lr.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);lr.FTYP=lr.box(lr.types.ftyp,n,o,n,a),lr.DINF=lr.box(lr.types.dinf,lr.box(lr.types.dref,i))}static box(t,...e){let s=8,i=e.length;const r=i;for(;i--;)s+=e[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=255&s,n.set(t,4),i=0,s=8;i>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))}static mdia(t){return lr.box(lr.types.mdia,lr.mdhd(t.timescale,t.duration),lr.hdlr(t.type),lr.minf(t))}static mfhd(t){return lr.box(lr.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}static minf(t){return"audio"===t.type?lr.box(lr.types.minf,lr.box(lr.types.smhd,lr.SMHD),lr.DINF,lr.stbl(t)):lr.box(lr.types.minf,lr.box(lr.types.vmhd,lr.VMHD),lr.DINF,lr.stbl(t))}static moof(t,e,s){return lr.box(lr.types.moof,lr.mfhd(t),lr.traf(s,e))}static moov(t){let e=t.length;const s=[];for(;e--;)s[e]=lr.trak(t[e]);return lr.box.apply(null,[lr.types.moov,lr.mvhd(t[0].timescale,t[0].duration)].concat(s).concat(lr.mvex(t)))}static mvex(t){let e=t.length;const s=[];for(;e--;)s[e]=lr.trex(t[e]);return lr.box.apply(null,[lr.types.mvex,...s])}static mvhd(t,e){e*=t;const s=Math.floor(e/(or+1)),i=Math.floor(e%(or+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return lr.box(lr.types.mvhd,r)}static sdtp(t){const e=t.samples||[],s=new Uint8Array(4+e.length);let i,r;for(i=0;i>>8&255),r.push(255&i),r=r.concat(Array.prototype.slice.call(s));for(e=0;e>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(s));const a=lr.box(lr.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|t.sps.length].concat(r).concat([t.pps.length]).concat(n))),o=t.width,l=t.height,h=t.pixelRatio[0],d=t.pixelRatio[1];return lr.box(lr.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,lr.box(lr.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),lr.box(lr.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,d>>24,d>>16&255,d>>8&255,255&d])))}static esds(t){const e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}static audioStsd(t){const e=t.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,e>>8&255,255&e,0,0])}static mp4a(t){return lr.box(lr.types.mp4a,lr.audioStsd(t),lr.box(lr.types.esds,lr.esds(t)))}static mp3(t){return lr.box(lr.types[".mp3"],lr.audioStsd(t))}static ac3(t){return lr.box(lr.types["ac-3"],lr.audioStsd(t),lr.box(lr.types.dac3,t.config))}static stsd(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?lr.box(lr.types.stsd,lr.STSD,lr.mp3(t)):"ac3"===t.segmentCodec?lr.box(lr.types.stsd,lr.STSD,lr.ac3(t)):lr.box(lr.types.stsd,lr.STSD,lr.mp4a(t)):lr.box(lr.types.stsd,lr.STSD,lr.avc1(t))}static tkhd(t){const e=t.id,s=t.duration*t.timescale,i=t.width,r=t.height,n=Math.floor(s/(or+1)),a=Math.floor(s%(or+1));return lr.box(lr.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))}static traf(t,e){const s=lr.sdtp(t),i=t.id,r=Math.floor(e/(or+1)),n=Math.floor(e%(or+1));return lr.box(lr.types.traf,lr.box(lr.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),lr.box(lr.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n])),lr.trun(t,s.length+16+20+8+16+8+8),s)}static trak(t){return t.duration=t.duration||4294967295,lr.box(lr.types.trak,lr.tkhd(t),lr.mdia(t))}static trex(t){const e=t.id;return lr.box(lr.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(t,e){const s=t.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let a,o,l,h,d,c;for(e+=8+r,n.set(["video"===t.type?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,e>>>24&255,e>>>16&255,e>>>8&255,255&e],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,61440&d.degradPrio,15&d.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return lr.box(lr.types.trun,n)}static initSegment(t){lr.types||lr.init();const e=lr.moov(t);return Ut(lr.FTYP,e)}}lr.types=void 0,lr.HDLR_TYPES=void 0,lr.STTS=void 0,lr.STSC=void 0,lr.STCO=void 0,lr.STSZ=void 0,lr.VMHD=void 0,lr.SMHD=void 0,lr.STSD=void 0,lr.FTYP=void 0,lr.DINF=void 0;function hr(t,e,s=1,i=!1){const r=t*e*s;return i?Math.round(r):r}function dr(t,e=!1){return hr(t,1e3,1/9e4,e)}let cr,ur=null,fr=null;class gr{constructor(t,e,s,i=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.ISGenerated=!1,null===ur){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);ur=t?parseInt(t[1]):0}if(null===fr){const t=navigator.userAgent.match(/Safari\/(\d+)/i);fr=t?parseInt(t[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(t){k.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=t}resetNextTimestamp(){k.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){k.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(t){let e=!1;const s=t.reduce(((t,s)=>{const i=s.pts-t;return i<-4294967296?(e=!0,mr(t,s.pts)):i>0?t:s.pts}),t[0].pts);return e&&k.debug("PTS rollover detected"),s}remux(t,e,s,i,r,n,a,o){let l,h,d,c,u,f,g=r,m=r;const p=t.pid>-1,v=e.pid>-1,y=e.samples.length,E=t.samples.length>0,T=a&&y>0||y>1;if((!p||E)&&(!v||T)||this.ISGenerated||a){if(this.ISGenerated){var S,L,A,R;const t=this.videoTrackConfig;!t||e.width===t.width&&e.height===t.height&&(null==(S=e.pixelRatio)?void 0:S[0])===(null==(L=t.pixelRatio)?void 0:L[0])&&(null==(A=e.pixelRatio)?void 0:A[1])===(null==(R=t.pixelRatio)?void 0:R[1])||this.resetInitSegment()}else d=this.generateIS(t,e,r,n);const s=this.isVideoContiguous;let i,a=-1;if(T&&(a=function(t){for(let e=0;e0){k.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const t=this.getVideoStartPts(e.samples);e.samples=e.samples.slice(a),e.dropped+=a,m+=(e.samples[0].pts-t)/e.inputTimeScale,i=m}else-1===a&&(k.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(E&&T){const s=this.getVideoStartPts(e.samples),i=(mr(t.samples[0].pts,s)-s)/e.inputTimeScale;g+=Math.max(0,i),m+=Math.max(0,-i)}if(E){if(t.samplerate||(k.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(t,e,r,n)),h=this.remuxAudio(t,g,this.isAudioContiguous,n,v||T||o===De?m:void 0),T){const i=h?h.endPTS-h.startPTS:0;e.inputTimeScale||(k.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(t,e,r,n)),l=this.remuxVideo(e,m,s,i)}}else T&&(l=this.remuxVideo(e,m,s,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=i)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(u=pr(s,r,this._initPTS,this._initDTS)),i.samples.length&&(c=vr(i,r,this._initPTS))),{audio:h,video:l,initSegment:d,independent:f,text:c,id3:u}}generateIS(t,e,s,i){const r=t.samples,n=e.samples,a=this.typeSupported,o={},l=this._initPTS;let h,d,c,u=!l||i,f="audio/mp4";if(u&&(h=d=1/0),t.config&&r.length){switch(t.timescale=t.samplerate,t.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",t.codec=""):a.mp3&&(t.codec="mp3");break;case"ac3":t.codec="ac-3"}o.audio={id:"audio",container:f,codec:t.codec,initSegment:"mp3"===t.segmentCodec&&a.mpeg?new Uint8Array(0):lr.initSegment([t]),metadata:{channelCount:t.channelCount}},u&&(c=t.inputTimeScale,l&&c===l.timescale?u=!1:h=d=r[0].pts-Math.round(c*s))}if(e.sps&&e.pps&&n.length){if(e.timescale=e.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:e.codec,initSegment:lr.initSegment([e]),metadata:{width:e.width,height:e.height}},u)if(c=e.inputTimeScale,l&&c===l.timescale)u=!1;else{const t=this.getVideoStartPts(n),e=Math.round(c*s);d=Math.min(d,mr(n[0].dts,t)-e),h=Math.min(h,t-e)}this.videoTrackConfig={width:e.width,height:e.height,pixelRatio:e.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:c},this._initDTS={baseTime:d,timescale:c}):h=c=void 0,{tracks:o,initPTS:h,timescale:c}}remuxVideo(t,e,s,i){const r=t.inputTimeScale,n=t.samples,a=[],o=n.length,l=this._initPTS;let h,d,c=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,v=!1;if(!s||null===c){const t=e*r,i=n[0].pts-mr(n[0].dts,n[0].pts);ur&&null!==c&&Math.abs(t-i-c)<15e3?s=!0:c=t-i}const y=l.baseTime*r/l.timescale;for(let t=0;t0?t-1:t].dts&&(v=!0)}v&&n.sort((function(t,e){const s=t.dts-e.dts,i=t.pts-e.pts;return s||i})),h=n[0].dts,d=n[n.length-1].dts;const L=d-h,A=L?Math.round(L/(o-1)):f||t.inputTimeScale/30;if(s){const t=h-c,s=t>A,i=t<-1;if((s||i)&&(s?k.warn(`AVC: ${dr(t,!0)} ms (${t}dts) hole between fragments detected at ${e.toFixed(3)}`):k.warn(`AVC: ${dr(-t,!0)} ms (${t}dts) overlapping between fragments detected at ${e.toFixed(3)}`),!i||c>=n[0].pts||ur)){h=c;const e=n[0].pts-t;if(s)n[0].dts=h,n[0].pts=e;else for(let s=0;se);s++)n[s].dts-=t,n[s].pts-=t;k.log(`Video: Initial PTS/DTS adjusted: ${dr(e,!0)}/${dr(h,!0)}, delta: ${dr(t,!0)} ms`)}}h=Math.max(0,h);let R=0,b=0,D=h;for(let t=0;t0?e.dts-n[t-1].dts:A;if(l=t>0?e.pts-n[t-1].pts:A,s.stretchShortVideoTrack&&null!==this.nextAudioPts){const t=Math.floor(s.maxBufferHole*r),n=(i?g+i*r:this.nextAudioPts)-e.pts;n>t?(f=n-a,f<0?f=a:_=!0,k.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const d=Math.round(e.pts-e.dts);x=Math.min(x,f),F=Math.max(F,f),P=Math.min(P,l),M=Math.max(M,l),a.push(new yr(e.key,f,h,d))}if(a.length)if(ur){if(ur<70){const t=a[0].flags;t.dependsOn=2,t.isNonSync=0}}else if(fr&&M-P0&&(i&&Math.abs(v-p)<9e3||Math.abs(mr(f[0].pts-y,v)-p)<20*l),f.forEach((function(t){t.pts=mr(t.pts-y,v)})),!s||p<0){if(f=f.filter((t=>t.pts>=0)),!f.length)return;p=0===r?0:i&&!u?Math.max(0,v):f[0].pts}if("aac"===t.segmentCodec){const e=this.config.maxAudioFramesDrift;for(let s=0,i=p;s=e*l&&h<1e4&&u){let e=Math.round(o/l);i=a-e*l,i<0&&(e--,i+=l),0===s&&(this.nextAudioPts=p=i),k.warn(`[mp4-remuxer]: Injecting ${e} audio frame @ ${(i/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;b+=g;try{L=new Uint8Array(b)}catch(t){return void this.observer.emit(E.ERROR,E.ERROR,{type:T.MUX_ERROR,details:S.REMUX_ALLOC_ERROR,fatal:!1,error:t,bytes:b,reason:`fail allocating audio mdat ${b}`})}if(!d){new DataView(L.buffer).setUint32(0,b),L.set(lr.types.mdat,4)}}L.set(r,g);const l=r.byteLength;g+=l,c.push(new yr(!0,o,l,0)),R=n}const I=c.length;if(!I)return;const w=c[c.length-1];this.nextAudioPts=p=R+a*w.duration;const C=d?new Uint8Array(0):lr.moof(t.sequenceNumber++,A/a,m({},t,{samples:c}));t.samples=[];const _=A/n,x=p/n,P={data1:C,data2:L,startPTS:_,endPTS:x,startDTS:_,endDTS:x,type:"audio",hasAudio:!0,hasVideo:!1,nb:I};return this.isAudioContiguous=!0,P}remuxEmptyAudio(t,e,s,i){const r=t.inputTimeScale,n=r/(t.samplerate?t.samplerate:r),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:i.startDTS*r)+l,d=i.endDTS*r+l,c=1024*n,u=Math.ceil((d-h)/c),f=ar.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(k.warn("[mp4-remuxer]: remux empty Audio"),!f)return void k.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let t=0;t4294967296;)t+=s;return t}function pr(t,e,s,i){const r=t.samples.length;if(!r)return;const n=t.inputTimeScale;for(let a=0;at.pts-e.pts));const n=t.samples;return t.samples=[],{samples:n}}class yr{constructor(t,e,s,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=e,this.size=s,this.cts=i,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:t?2:1,isNonSync:t?0:1}}}function Er(t,e){const s=null==t?void 0:t.codec;if(s&&s.length>4)return s;if(e===P){if("ec-3"===s||"ac-3"===s||"alac"===s)return s;if("fLaC"===s||"Opus"===s){return oe(s,!1)}const t="mp4a.40.5";return k.info(`Parsed audio codec "${s}" or audio object type not handled. Using "${t}"`),t}return k.warn(`Unhandled video codec "${s}"`),"hvc1"===s||"hev1"===s?"hvc1.1.6.L120.90":"av01"===s?"av01.0.04M.08":"avc1.42e01e"}try{cr=self.performance.now.bind(self.performance)}catch(t){k.debug("Unable to use Performance API on this environment"),cr=null==H?void 0:H.Date.now}const Tr=[{demux:class{constructor(t,e){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=e}resetTimeStamp(){}resetInitSegment(t,e,s,i){const r=this.videoTrack=Ri("video",1),n=this.audioTrack=Ri("audio",1),a=this.txtTrack=Ri("text",1);if(this.id3Track=Ri("id3",1),this.timeOffset=0,null==t||!t.byteLength)return;const o=_t(t);if(o.video){const{id:t,timescale:e,codec:s}=o.video;r.id=t,r.timescale=a.timescale=e,r.codec=s}if(o.audio){const{id:t,timescale:e,codec:s}=o.audio;n.id=t,n.timescale=e,n.codec=s}a.id=Lt.text,r.sampleDuration=0,r.duration=n.duration=i}resetContiguity(){this.remainderData=null}static probe(t){return function(t){const e=t.byteLength;for(let s=0;s8&&109===t[s+4]&&111===t[s+5]&&111===t[s+6]&&102===t[s+7])return!0;s=i>1?s+i:e}return!1}(t)}demux(t,e){this.timeOffset=e;let s=t;const i=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(s=Ut(this.remainderData,t));const e=function(t){const e={valid:null,remainder:null},s=wt(t,["moof"]);if(s.length<2)return e.remainder=t,e;const i=s[s.length-1];return e.valid=et(t,0,i.byteOffset-8),e.remainder=et(t,i.byteOffset-8),e}(s);this.remainderData=e.remainder,i.samples=e.valid||new Uint8Array}else i.samples=s;const n=this.extractID3Track(i,e);return r.samples=Bt(e,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const t=this.timeOffset,e=this.videoTrack,s=this.txtTrack;e.samples=this.remainderData||new Uint8Array,this.remainderData=null;const i=this.extractID3Track(e,this.timeOffset);return s.samples=Bt(t,e),{videoTrack:e,audioTrack:Ri(),id3Track:i,textTrack:Ri()}}extractID3Track(t,e){const s=this.id3Track;if(t.samples.length){const i=wt(t.samples,["emsg"]);i&&i.forEach((t=>{const i=function(t){const e=t[0];let s="",i="",r=0,n=0,a=0,o=0,l=0,h=0;if(0===e){for(;"\0"!==At(t.subarray(h,h+1));)s+=At(t.subarray(h,h+1)),h+=1;for(s+=At(t.subarray(h,h+1)),h+=1;"\0"!==At(t.subarray(h,h+1));)i+=At(t.subarray(h,h+1)),h+=1;i+=At(t.subarray(h,h+1)),h+=1,r=bt(t,12),n=bt(t,16),o=bt(t,20),l=bt(t,24),h=28}else if(1===e){h+=4,r=bt(t,h),h+=4;const e=bt(t,h);h+=4;const n=bt(t,h);for(h+=4,a=2**32*e+n,v(a)||(a=Number.MAX_SAFE_INTEGER,k.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=bt(t,h),h+=4,l=bt(t,h),h+=4;"\0"!==At(t.subarray(h,h+1));)s+=At(t.subarray(h,h+1)),h+=1;for(s+=At(t.subarray(h,h+1)),h+=1;"\0"!==At(t.subarray(h,h+1));)i+=At(t.subarray(h,h+1)),h+=1;i+=At(t.subarray(h,h+1)),h+=1}return{schemeIdUri:s,value:i,timeScale:r,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:t.subarray(h,t.byteLength)}}(t);if(Yi.test(i.schemeIdUri)){const t=p(i.presentationTime)?i.presentationTime/i.timeScale:e+i.presentationTimeDelta/i.timeScale;let r=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const n=i.payload;s.samples.push({data:n,len:n.byteLength,dts:t,pts:t,type:Be,duration:r})}}))}return s}demuxSampleAes(t,e,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(t){this.initPTS=t,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(t,e,s,i){this.audioCodec=e,this.videoCodec=s,this.generateInitSegment(function(t,e){if(!t||!e)return t;const s=e.keyId;s&&e.isCommonEncryption&&wt(t,["moov","trak"]).forEach((t=>{const e=wt(t,["mdia","minf","stbl","stsd"])[0].subarray(8);let i=wt(e,["enca"]);const r=i.length>0;r||(i=wt(e,["encv"])),i.forEach((t=>{wt(r?t.subarray(28):t.subarray(78),["sinf"]).forEach((t=>{const e=Ot(t);if(e){const t=e.subarray(8,24);t.some((t=>0!==t))||(k.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Et(t)} -> ${Et(s)}`),e.set(s,8))}}))}))}));return t}(t,i)),this.emitInitSegment=!0}generateInitSegment(t){let{audioCodec:e,videoCodec:s}=this;if(null==t||!t.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const i=this.initData=_t(t);i.audio&&(e=Er(i.audio,P)),i.video&&(s=Er(i.video,F));const r={};i.audio&&i.video?r.audiovideo={container:"video/mp4",codec:e+","+s,initSegment:t,id:"main"}:i.audio?r.audio={container:"audio/mp4",codec:e,initSegment:t,id:"audio"}:i.video?r.video={container:"video/mp4",codec:s,initSegment:t,id:"main"}:k.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(t,e,s,i,r,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const d={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};p(h)||(h=this.lastEndTime=r||0);const c=e.samples;if(null==c||!c.length)return d;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(c),f=this.initData),null==(o=f)||!o.length)return k.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(t,e){let s=0,i=0,r=0;const n=wt(t,["moof","traf"]);for(let t=0;tt+e.info.duration||0),0);s=Math.max(s,t+n.earliestPresentationTime/n.timescale),i=s-e}}if(i&&p(i))return i}return i||r}(c,f),m=function(t,e){return wt(e,["moof","traf"]).reduce(((e,s)=>{const i=wt(s,["tfdt"])[0],r=i[0],n=wt(s,["tfhd"]).reduce(((e,s)=>{const n=bt(s,4),a=t[n];if(a){let t=bt(i,4);if(1===r){if(t===Tt)return k.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),e;t*=Tt+1,t+=bt(i,8)}const s=t/(a.timescale||9e4);if(p(s)&&(null===e||sr}(l,v,r,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=v-r,l&&1===l.timescale&&k.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=t?v-l.baseTime/l.timescale:h,E=y+g;!function(t,e,s){wt(e,["moof","traf"]).forEach((e=>{wt(e,["tfhd"]).forEach((i=>{const r=bt(i,4),n=t[r];if(!n)return;const a=n.timescale||9e4;wt(e,["tfdt"]).forEach((t=>{const e=t[0],i=s*a;if(i){let s=bt(t,4);if(0===e)s-=i,s=Math.max(s,0),It(t,4,s);else{s*=Math.pow(2,32),s+=bt(t,8),s-=i,s=Math.max(s,0);const e=Math.floor(s/(Tt+1)),r=Math.floor(s%(Tt+1));It(t,4,e),It(t,8,r)}}}))}))}))}(f,c,l.baseTime/l.timescale),g>0?this.lastEndTime=E:(k.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const T=!!f.audio,S=!!f.video;let L="";T&&(L+="audio"),S&&(L+="video");const A={data1:c,startPTS:y,startDTS:y,endPTS:E,endDTS:E,type:L,hasAudio:T,hasVideo:S,nb:1,dropped:0};return d.audio="audio"===A.type?A:void 0,d.video="audio"!==A.type?A:void 0,d.initSegment=u,d.id3=pr(s,r,l,l),i.samples.length&&(d.text=vr(i,r,l)),d}}},{demux:tr,remux:gr},{demux:class extends bi{constructor(t,e){super(),this.observer=void 0,this.config=void 0,this.observer=t,this.config=e}resetInitSegment(t,e,s,i){super.resetInitSegment(t,e,s,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:e,duration:i,inputTimeScale:9e4,dropped:0}}static probe(t){if(!t)return!1;const e=rt(t,0);let s=(null==e?void 0:e.length)||0;if(Vi(t,s))return!1;for(let e=t.length;s0&&null!=(null==e?void 0:e.key)&&null!==e.iv&&null!=e.method&&(s=e);return s}(n,e);if(L&&"AES-128"===L.method){const t=this.getDecrypter();if(!t.isSync())return this.decryptionPromise=t.webCryptoDecrypt(n,L.key.buffer,L.iv.buffer).then((t=>{const e=this.push(t,null,s);return this.decryptionPromise=null,e})),this.decryptionPromise;{let e=t.softwareDecrypt(n,L.key.buffer,L.iv.buffer);if(s.part>-1&&(e=t.flush()),!e)return r.executeEnd=cr(),Lr(s);n=new Uint8Array(e)}}const A=this.needsProbing(h,d);if(A){const t=this.configureTransmuxer(n);if(t)return k.warn(`[transmuxer] ${t.message}`),this.observer.emit(E.ERROR,E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:t,reason:t.message}),r.executeEnd=cr(),Lr(s)}(h||d||f||A)&&this.resetInitSegment(y,g,m,v,e),(h||f||A)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const R=this.transmux(n,L,u,c,s),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,r.executeEnd=cr(),R}flush(t){const e=t.transmuxing;e.executeStart=cr();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(t)));const n=[],{timeOffset:a}=i;if(s){const e=s.flush();e&&n.push(this.push(e,null,t))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return e.executeEnd=cr(),[Lr(t)];const h=o.flush(a);return Ar(h)?h.then((e=>(this.flushRemux(n,e,t),n))):(this.flushRemux(n,h,t),n)}flushRemux(t,e,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:a}=e,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;k.log(`[transmuxer.ts]: Flushed fragment ${s.sn}${s.part>-1?" p: "+s.part:""} of level ${s.level}`);const h=this.remuxer.remux(i,r,n,a,l,o,!0,this.id);t.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=cr()}resetInitialTimestamp(t){const{demuxer:e,remuxer:s}=this;e&&s&&(e.resetTimeStamp(t),s.resetTimeStamp(t))}resetContiguity(){const{demuxer:t,remuxer:e}=this;t&&e&&(t.resetContiguity(),e.resetNextTimestamp())}resetInitSegment(t,e,s,i,r){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(t,e,s,i),a.resetInitSegment(t,e,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(t,e,s,i,r){let n;return n=e&&"SAMPLE-AES"===e.method?this.transmuxSampleAes(t,e,s,i,r):this.transmuxUnencrypted(t,s,i,r),n}transmuxUnencrypted(t,e,s,i){const{audioTrack:r,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(t,e,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,a,o,e,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(t,e,s,i,r){return this.demuxer.demuxSampleAes(t,e,s).then((t=>({remuxResult:this.remuxer.remux(t.audioTrack,t.videoTrack,t.id3Track,t.textTrack,s,i,!1,this.id),chunkMeta:r})))}configureTransmuxer(t){const{config:e,observer:s,typeSupported:i,vendor:r}=this;let n;for(let e=0,s=Tr.length;e({remuxResult:{},chunkMeta:t});function Ar(t){return"then"in t&&t.then instanceof Function}class Rr{constructor(t,e,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=t,this.videoCodec=e,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class br{constructor(t,e,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=t,this.contiguous=e,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}var kr={exports:{}};!function(t){var e=Object.prototype.hasOwnProperty,s="~";function i(){}function r(t,e,s){this.fn=t,this.context=e,this.once=s||!1}function n(t,e,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new r(i,n||t,a),l=s?s+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],o]:t._events[l].push(o):(t._events[l]=o,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(s=!1)),o.prototype.eventNames=function(){var t,i,r=[];if(0===this._eventsCount)return r;for(i in t=this._events)e.call(t,i)&&r.push(s?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},o.prototype.listeners=function(t){var e=s?s+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r{(e=e||{}).frag=this.frag,e.id=this.id,t===E.ERROR&&(this.error=e.error),this.hls.trigger(t,e)};this.observer=new Dr,this.observer.on(E.FRAG_DECRYPTED,n),this.observer.on(E.ERROR,n);const a=Jt(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')},l=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(k.log(`loading Web Worker ${r.workerPath} for "${e}"`),this.workerContext=function(t){const e=new self.URL(t,self.location.href).href;return{worker:new self.Worker(e),scriptURL:e}}(r.workerPath)):(k.log(`injecting Web Worker for "${e}"`),this.workerContext=function(){const t=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),e=self.URL.createObjectURL(t);return{worker:new self.Worker(e),objectURL:e}}()),this.onwmsg=t=>this.onWorkerMessage(t);const{worker:t}=this.workerContext;t.addEventListener("message",this.onwmsg),t.onerror=t=>{const s=new Error(`${t.message} (${t.filename}:${t.lineno})`);r.enableWorker=!1,k.warn(`Error in "${e}" Web Worker, fallback to inline`),this.hls.trigger(E.ERROR,{type:T.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:s})},t.postMessage({cmd:"init",typeSupported:o,vendor:l,id:e,config:JSON.stringify(r)})}catch(t){k.warn(`Error setting up "${e}" Web Worker, fallback to inline`,t),this.resetWorker(),this.error=null,this.transmuxer=new Sr(this.observer,o,r,l,e)}return}}this.transmuxer=new Sr(this.observer,o,r,l,e)}resetWorker(){if(this.workerContext){const{worker:t,objectURL:e}=this.workerContext;e&&self.URL.revokeObjectURL(e),t.removeEventListener("message",this.onwmsg),t.onerror=null,t.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const t=this.observer;t&&t.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(t,e,s,i,r,n,a,o,l,h){var d,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:r.start,g=r.decryptdata,m=this.frag,p=!(m&&r.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,E=this.part?l.part-this.part.index:-1,T=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===E||T&&E<=0)),L=self.performance.now();(v||y||0===r.stats.parsing.start)&&(r.stats.parsing.start=L),!n||!E&&S||(n.stats.parsing.start=L);const A=!(m&&(null==(d=r.initSegment)?void 0:d.url)===(null==(c=m.initSegment)?void 0:c.url)),R=new br(p,S,o,v,f,A);if(!S||p||A){k.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${A}`);const t=new Rr(s,i,e,a,h);this.configureTransmuxer(t)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:t,decryptdata:g,chunkMeta:l,state:R},t instanceof ArrayBuffer?[t]:[]);else if(u){const e=u.push(t,g,l,R);Ar(e)?(u.async=!0,e.then((t=>{this.handleTransmuxComplete(t)})).catch((t=>{this.transmuxerError(t,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(e))}}flush(t){t.transmuxing.start=self.performance.now();const{transmuxer:e}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:t});else if(e){let s=e.flush(t);Ar(s)||e.async?(Ar(s)||(s=Promise.resolve(s)),s.then((e=>{this.handleFlushResult(e,t)})).catch((e=>{this.transmuxerError(e,t,"transmuxer-interface flush error")}))):this.handleFlushResult(s,t)}}transmuxerError(t,e,s){this.hls&&(this.error=t,this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,chunkMeta:e,frag:this.frag||void 0,fatal:!1,error:t,err:t,reason:s}))}handleFlushResult(t,e){t.forEach((t=>{this.handleTransmuxComplete(t)})),this.onFlush(e)}onWorkerMessage(t){const e=t.data,s=this.hls;switch(e.event){case"init":{var i;const t=null==(i=this.workerContext)?void 0:i.objectURL;t&&self.URL.revokeObjectURL(t);break}case"transmuxComplete":this.handleTransmuxComplete(e.data);break;case"flush":this.onFlush(e.data);break;case"workerLog":k[e.data.logType]&&k[e.data.logType](e.data.message);break;default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,s.trigger(e.event,e.data)}}configureTransmuxer(t){const{transmuxer:e}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:t}):e&&e.configure(t)}handleTransmuxComplete(t){t.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(t)}}function wr(t,e){if(t.length!==e.length)return!1;for(let s=0;st[s]!==e[s]))}function _r(t,e){return e.label.toLowerCase()===t.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(t.lang||"").toLowerCase())}class xr{constructor(t){this.buffered=void 0;const e=(e,s,i)=>{if((s>>>=0)>i-1)throw new DOMException(`Failed to execute '${e}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${i})`);return t[s][e]};this.buffered={get length(){return t.length},end(s){return e("end",s,t.length)},start(s){return e("start",s,t.length)}}}}class Pr{constructor(t){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=t}append(t,e,s){const i=this.queues[e];i.push(t),1!==i.length||s||this.executeNext(e)}insertAbort(t,e){this.queues[e].unshift(t),this.executeNext(e)}appendBlocker(t){let e;const s=new Promise((t=>{e=t})),i={execute:e,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(i,t),s}executeNext(t){const e=this.queues[t];if(e.length){const s=e[0];try{s.execute()}catch(e){k.warn(`[buffer-operation-queue]: Exception executing "${t}" SourceBuffer operation: ${e}`),s.onError(e);const i=this.buffers[t];null!=i&&i.updating||this.shiftAndExecuteNext(t)}}}shiftAndExecuteNext(t){this.queues[t].shift(),this.executeNext(t)}current(t){return this.queues[t][0]}}const Fr=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Mr(t){const e=t.querySelectorAll("source");[].slice.call(e).forEach((e=>{t.removeChild(e)}))}const Or={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Nr=t=>String.fromCharCode(Or[t]||t),Ur=15,Br=100,$r={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Gr={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Kr={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Hr={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Vr=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Yr{constructor(){this.time=null,this.verboseLevel=0}log(t,e){if(this.verboseLevel>=t){const s="function"==typeof e?e():e;k.log(`${this.time} [${t}] ${s}`)}}}const Wr=function(t){const e=[];for(let s=0;sBr&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=Br)}moveCursor(t){const e=this.pos+t;if(t>1)for(let t=this.pos+1;t=144&&this.backSpace();const e=Nr(t);this.pos>=Br?this.logger.log(0,(()=>"Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1))}clearFromPos(t){let e;for(e=t;e"pacData = "+JSON.stringify(t)));let e=t.row-1;if(this.nrRollUpRows&&e"bkgData = "+JSON.stringify(t))),this.backSpace(),this.setPen(t),this.insertChar(32)}setRollUpRows(t){this.nrRollUpRows=t}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),this.logger.log(2,"Rolling up")}getDisplayText(t){t=t||!1;const e=[];let s="",i=-1;for(let s=0;s0&&(s=t?"["+e.join(" | ")+"]":e.join("\n")),s}getTextAndFormat(){return this.rows}}class Qr{constructor(t,e,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=t,this.outputFilter=e,this.mode=null,this.verbose=0,this.displayedMemory=new zr(s),this.nonDisplayedMemory=new zr(s),this.lastOutputScreen=new zr(s),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(t){this.outputFilter=t}setPAC(t){this.writeScreen.setPAC(t)}setBkgData(t){this.writeScreen.setBkgData(t)}setMode(t){t!==this.mode&&(this.mode=t,this.logger.log(2,(()=>"MODE="+t)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)}insertChars(t){for(let e=0;ee+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(t){this.logger.log(2,"RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(t){this.logger.log(2,"TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)}ccMIDROW(t){const e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{const s=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[s]}this.logger.log(2,"MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)}outputDataUpdate(t=!1){const e=this.logger.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))}}class Jr{constructor(t,e,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const i=this.logger=new Yr;this.channels=[null,new Qr(t,e,i),new Qr(t+1,s,i)]}getHandler(t){return this.channels[t].getHandler()}setHandler(t,e){this.channels[t].setHandler(e)}addData(t,e){this.logger.time=t;for(let t=0;t"["+Wr([e[t],e[t+1]])+"] -> ("+Wr([s,i])+")"));const a=this.cmdHistory;if(s>=16&&s<=31){if(tn(s,i,a)){Zr(null,null,a),this.logger.log(3,(()=>"Repeated command ("+Wr([s,i])+") is dropped"));continue}Zr(s,i,this.cmdHistory),r=this.parseCmd(s,i),r||(r=this.parseMidrow(s,i)),r||(r=this.parsePAC(s,i)),r||(r=this.parseBackgroundAttributes(s,i))}else Zr(null,null,a);if(!r&&(n=this.parseChars(s,i),n)){const t=this.currentChannel;if(t&&t>0){this.channels[t].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+Wr([s,i])+" orig: "+Wr([e[t],e[t+1]])))}}parseCmd(t,e){if(!((20===t||28===t||21===t||29===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=33&&e<=35))return!1;const s=20===t||21===t||23===t?1:2,i=this.channels[s];return 20===t||21===t||28===t||29===t?32===e?i.ccRCL():33===e?i.ccBS():34===e?i.ccAOF():35===e?i.ccAON():36===e?i.ccDER():37===e?i.ccRU(2):38===e?i.ccRU(3):39===e?i.ccRU(4):40===e?i.ccFON():41===e?i.ccRDC():42===e?i.ccTR():43===e?i.ccRTD():44===e?i.ccEDM():45===e?i.ccCR():46===e?i.ccENM():47===e&&i.ccEOC():i.ccTO(e-32),this.currentChannel=s,!0}parseMidrow(t,e){let s=0;if((17===t||25===t)&&e>=32&&e<=47){if(s=17===t?1:2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return!!i&&(i.ccMIDROW(e),this.logger.log(3,(()=>"MIDROW ("+Wr([t,e])+")")),!0)}return!1}parsePAC(t,e){let s;if(!((t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127)&&!((16===t||24===t)&&e>=64&&e<=95))return!1;const i=t<=23?1:2;s=e>=64&&e<=95?1===i?$r[t]:Kr[t]:1===i?Gr[t]:Hr[t];const r=this.channels[i];return!!r&&(r.setPAC(this.interpretPAC(s,e)),this.currentChannel=i,!0)}interpretPAC(t,e){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:t};return s=e>95?e-96:e-64,i.underline=1==(1&s),s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((s-16)/2),i}parseChars(t,e){let s,i=null,r=null;if(t>=25?(s=2,r=t-8):(s=1,r=t),r>=17&&r<=19){let t;t=17===r?e+80:18===r?e+112:e+144,this.logger.log(2,(()=>"Special char '"+Nr(t)+"' in channel "+s)),i=[t]}else t>=32&&t<=127&&(i=0===e?[t]:[t,e]);return i&&this.logger.log(3,(()=>"Char codes = "+Wr(i).join(","))),i}parseBackgroundAttributes(t,e){if(!((16===t||24===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=45&&e<=47))return!1;let s;const i={};16===t||24===t?(s=Math.floor((e-32)/2),i.background=Vr[s],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0));const r=t<=23?1:2;return this.channels[r].setBkgData(i),!0}reset(){for(let t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var sn=function(){if(null!=H&&H.VTTCue)return self.VTTCue;const t=["","lr","rl"],e=["start","middle","end","left","right"];function s(t,e){if("string"!=typeof e)return!1;if(!Array.isArray(t))return!1;const s=e.toLowerCase();return!!~t.indexOf(s)&&s}function i(t){return s(e,t)}function r(t,...e){let s=1;for(;s100)throw new Error("Position must be between 0 and 100.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",r({},l,{get:function(){return T},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");T=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",r({},l,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",r({},l,{get:function(){return L},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");L=e,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class rn{decode(t,e){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}function nn(t){function e(t,e,s,i){return 3600*(0|t)+60*(0|e)+(0|s)+parseFloat(i||0)}const s=t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return s?parseFloat(s[2])>59?e(s[2],s[3],0,s[4]):e(s[1],s[2],s[3],s[4]):null}class an{constructor(){this.values=Object.create(null)}set(t,e){this.get(t)||""===e||(this.values[t]=e)}get(t,e,s){return s?this.has(t)?this.values[t]:e[s]:this.has(t)?this.values[t]:e}has(t){return t in this.values}alt(t,e,s){for(let i=0;i=0&&s<=100)return this.set(t,s),!0}return!1}}function on(t,e,s,i){const r=i?t.split(i):[t];for(const t in r){if("string"!=typeof r[t])continue;const i=r[t].split(s);if(2!==i.length)continue;e(i[0],i[1])}}const ln=new sn(0,0,""),hn="middle"===ln.align?"middle":"center";function dn(t,e,s){const i=t;function r(){const e=nn(t);if(null===e)throw new Error("Malformed timestamp: "+i);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function n(){t=t.replace(/^\s+/,"")}if(n(),e.startTime=r(),n(),"--\x3e"!==t.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);t=t.slice(3),n(),e.endTime=r(),n(),function(t,e){const i=new an;on(t,(function(t,e){let r;switch(t){case"region":for(let r=s.length-1;r>=0;r--)if(s[r].id===e){i.set(t,s[r].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":r=e.split(","),i.integer(t,r[0]),i.percent(t,r[0])&&i.set("snapToLines",!1),i.alt(t,r[0],["auto"]),2===r.length&&i.alt("lineAlign",r[1],["start",hn,"end"]);break;case"position":r=e.split(","),i.percent(t,r[0]),2===r.length&&i.alt("positionAlign",r[1],["start",hn,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",hn,"end","left","right"])}}),/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");let r=i.get("line","auto");"auto"===r&&-1===ln.line&&(r=-1),e.line=r,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",hn);let n=i.get("position","auto");"auto"===n&&50===ln.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function cn(t){return t.replace(//gi,"\n")}class un{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new rn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(t){const e=this;function s(){let t=e.buffer,s=0;for(t=cn(t);s>>0).toString()};function pn(t,e,s){return mn(t.toString())+mn(e.toString())+mn(s)}function vn(t,e,s,i,r,n,a){const o=new un,l=pt(new Uint8Array(t)).trim().replace(fn,"\n").split("\n"),h=[],d=e?function(t,e=1){return hr(t,9e4,1/e)}(e.baseTime,e.timescale):0;let c,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(t){const n=s[i];let a=s.ccOffset;const o=(f-d)/9e4;if(null!=n&&n.new&&(void 0!==g?a=s.ccOffset=n.start:function(t,e,s){let i=t[e],r=t[i.prevCC];if(!r||!r.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;null!=(n=r)&&n.new;){var n;t.ccOffset+=i.start-r.start,i.new=!1,i=r,r=t[i.prevCC]}t.presentationOffset=s}(s,i,o)),o){if(!e)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=o-s.presentationOffset}const l=t.endTime-t.startTime,u=mr(9e4*(t.startTime+a-g),9e4*r)/9e4;t.startTime=Math.max(u,0),t.endTime=Math.max(u+l,0);const m=t.text.trim();t.text=decodeURIComponent(encodeURIComponent(m)),t.id||(t.id=pn(t.startTime,t.endTime,m)),t.endTime>0&&h.push(t)},o.onparsingerror=function(t){c=t},o.onflush=function(){c?a(c):n(h)},l.forEach((t=>{if(m){if(gn(t,"X-TIMESTAMP-MAP=")){m=!1,t.slice(16).split(",").forEach((t=>{gn(t,"LOCAL:")?u=t.slice(6):gn(t,"MPEGTS:")&&(f=parseInt(t.slice(7)))}));try{g=function(t){let e=parseInt(t.slice(-3));const s=parseInt(t.slice(-6,-4)),i=parseInt(t.slice(-9,-7)),r=t.length>9?parseInt(t.substring(0,t.indexOf(":"))):0;if(!(p(e)&&p(s)&&p(i)&&p(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${t}`);return e+=1e3*s,e+=6e4*i,e+=36e5*r,e}(u)/1e3}catch(t){c=t}return}""===t&&(m=!1)}o.parse(t+"\n")})),o.flush()}const yn="stpp.ttml.im1t",En=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Tn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Sn={left:"start",center:"center",right:"end",start:"start",end:"end"};function Ln(t,e,s,i){const r=wt(new Uint8Array(t),["mdat"]);if(0===r.length)return void i(new Error("Could not parse IMSC1 mdat"));const n=r.map((t=>pt(t))),a=function(t,e,s=1,i=!1){return hr(t,e,1/s,i)}(e.baseTime,1,e.timescale);try{n.forEach((t=>s(function(t,e){const s=(new DOMParser).parseFromString(t,"text/xml"),i=s.getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce(((t,e)=>(t[e]=i.getAttribute(`ttp:${e}`)||r[e],t)),{}),a="preserve"!==i.getAttribute("xml:space"),o=Rn(An(i,"styling","style")),l=Rn(An(i,"layout","region")),h=An(i,"body","[begin]");return[].map.call(h,(t=>{const s=bn(t,a);if(!s||!t.hasAttribute("begin"))return null;const i=In(t.getAttribute("begin"),n),r=In(t.getAttribute("dur"),n);let h=In(t.getAttribute("end"),n);if(null===i)throw Dn(t);if(null===h){if(null===r)throw Dn(t);h=i+r}const d=new sn(i-e,h-e,s);d.id=pn(d.startTime,d.endTime,d.text);const c=function(t,e,s){const i="http://www.w3.org/ns/ttml#styling";let r=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=t&&t.hasAttribute("style")?t.getAttribute("style"):null;a&&s.hasOwnProperty(a)&&(r=s[a]);return n.reduce(((s,n)=>{const a=kn(e,i,n)||kn(t,i,n)||kn(r,i,n);return a&&(s[n]=a),s}),{})}(l[t.getAttribute("region")],o[t.getAttribute("style")],o),{textAlign:u}=c;if(u){const t=Sn[u];t&&(d.lineAlign=t),d.align=u}return m(d,c),d})).filter((t=>null!==t))}(t,a))))}catch(t){i(t)}}function An(t,e,s){const i=t.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(s)):[]}function Rn(t){return t.reduce(((t,e)=>{const s=e.getAttribute("xml:id");return s&&(t[s]=e),t}),{})}function bn(t,e){return[].slice.call(t.childNodes).reduce(((t,s,i)=>{var r;return"br"===s.nodeName&&i?t+"\n":null!=(r=s.childNodes)&&r.length?bn(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent}),"")}function kn(t,e,s){return t&&t.hasAttributeNS(e,s)?t.getAttributeNS(e,s):null}function Dn(t){return new Error(`Could not parse ttml timestamp ${t}`)}function In(t,e){if(!t)return null;let s=nn(t);return null===s&&(En.test(t)?s=function(t,e){const s=En.exec(t),i=(0|s[4])+(0|s[5])/e.subFrameRate;return 3600*(0|s[1])+60*(0|s[2])+(0|s[3])+i/e.frameRate}(t,e):Tn.test(t)&&(s=function(t,e){const s=Tn.exec(t),i=Number(s[1]);switch(s[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}(t,e))),s}function wn(t){return t.characteristics&&/transcribes-spoken-dialog/gi.test(t.characteristics)&&/describes-music-and-sound/gi.test(t.characteristics)?"captions":"subtitles"}function Cn(t,e){return!!t&&t.kind===wn(e)&&_r(e,t)}class _n{constructor(t){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=t,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(t){this.streamController=t}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:t}=this;t.on(E.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.on(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(E.MANIFEST_PARSED,this.onManifestParsed,this),t.on(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(E.BUFFER_CODECS,this.onBufferCodecs,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:t}=this;t.off(E.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.off(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(E.MANIFEST_PARSED,this.onManifestParsed,this),t.off(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(E.BUFFER_CODECS,this.onBufferCodecs,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(t,e){const s=this.hls.levels[e.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(t,e){this.media=e.media instanceof HTMLVideoElement?e.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(t,e){const s=this.hls;this.restrictedLevels=[],this.firstLevel=e.firstLevel,s.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onLevelsUpdated(t,e){this.timer&&p(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(t,e){this.hls.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const t=this.hls.levels;if(t.length){const e=this.hls,s=this.getMaxLevel(t.length-1);s!==this.autoLevelCapping&&k.log(`Setting autoLevelCapping to ${s}: ${t[s].height}p@${t[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),e.autoLevelCapping=s,e.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}}getMaxLevel(t){const e=this.hls.levels;if(!e.length)return-1;const s=e.filter(((e,s)=>this.isLevelAllowed(e)&&s<=t));return this.clientRect=null,_n.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const t=this.media,e={width:0,height:0};if(t){const s=t.getBoundingClientRect();e.width=s.width,e.height=s.height,e.width||e.height||(e.width=s.right-s.left||t.width||0,e.height=s.bottom-s.top||t.height||0)}return this.clientRect=e,e}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let t=1;if(!this.hls.config.ignoreDevicePixelRatio)try{t=self.devicePixelRatio}catch(t){}return t}isLevelAllowed(t){return!this.restrictedLevels.some((e=>t.bitrate===e.bitrate&&t.width===e.width&&t.height===e.height))}static getMaxLevelByMediaSize(t,e,s){if(null==t||!t.length)return-1;let i=t.length-1;const r=Math.max(e,s);for(let e=0;e=r||s.height>=r)&&(n=s,!(a=t[e+1])||n.width!==a.width||n.height!==a.height)){i=e;break}}var n,a;return i}}const xn="[eme]";class Pn{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Pn.CDMCleanupPromise?[Pn.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=k.debug.bind(k,xn),this.log=k.log.bind(k,xn),this.warn=k.warn.bind(k,xn),this.error=k.error.bind(k,xn),this.hls=t,this.config=t.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const t=this.config;t.requestMediaKeySystemAccessFunc=null,t.licenseXhrSetup=t.licenseResponseCallback=void 0,t.drmSystems=t.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(E.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(E.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(E.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(E.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(E.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(E.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(t){const{drmSystems:e,widevineLicenseUrl:s}=this.config,i=e[t];if(i)return i.licenseUrl;if(t===V.WIDEVINE&&s)return s;throw new Error(`no license server URL configured for key-system "${t}"`)}getServerCertificateUrl(t){const{drmSystems:e}=this.config,s=e[t];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${t}"]`)}attemptKeySystemAccess(t){const e=this.hls.levels,s=(t,e,s)=>!!t&&s.indexOf(t)===e,i=e.map((t=>t.audioCodec)).filter(s),r=e.map((t=>t.videoCodec)).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((e,s)=>{const n=t=>{const a=t.shift();this.getMediaKeysPromise(a,i,r).then((t=>e({keySystem:a,mediaKeys:t}))).catch((e=>{t.length?n(t):s(e instanceof Fn?e:new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_ACCESS,error:e,fatal:!0},e.message))}))};n(t)}))}requestMediaKeySystemAccess(t,e){const{requestMediaKeySystemAccessFunc:s}=this.config;if("function"!=typeof s){let t=`Configured requestMediaKeySystemAccess is not a function ${s}`;return null===Z&&"http:"===self.location.protocol&&(t=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(t))}return s(t,e)}getMediaKeysPromise(t,e,s){const i=function(t,e,s,i){let r;switch(t){case V.FAIRPLAY:r=["cenc","sinf"];break;case V.WIDEVINE:case V.PLAYREADY:r=["cenc"];break;case V.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${t}`)}return function(t,e,s,i){return[{initDataTypes:t,persistentState:i.persistentState||"optional",distinctiveIdentifier:i.distinctiveIdentifier||"optional",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:e.map((t=>({contentType:`audio/mp4; codecs="${t}"`,robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}))),videoCapabilities:s.map((t=>({contentType:`video/mp4; codecs="${t}"`,robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null})))}]}(r,e,s,i)}(t,e,s,this.config.drmSystemOptions),r=this.keySystemAccessPromises[t];let n=null==r?void 0:r.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${t}" key-system access with config: ${JSON.stringify(i)}`),n=this.requestMediaKeySystemAccess(t,i);const e=this.keySystemAccessPromises[t]={keySystemAccess:n};return n.catch((e=>{this.log(`Failed to obtain access to key-system "${t}": ${e}`)})),n.then((s=>{this.log(`Access for key-system "${s.keySystem}" obtained`);const i=this.fetchServerCertificate(t);return this.log(`Create media-keys for "${t}"`),e.mediaKeys=s.createMediaKeys().then((e=>(this.log(`Media-keys created for "${t}"`),i.then((s=>s?this.setMediaKeysServerCertificate(e,t,s):e))))),e.mediaKeys.catch((e=>{this.error(`Failed to create media-keys for "${t}"}: ${e}`)})),e.mediaKeys}))}return n.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:t,keySystem:e,mediaKeys:s}){this.log(`Creating key-system session "${e}" keyId: ${Et(t.keyId||[])}`);const i=s.createSession(),r={decryptdata:t,keySystem:e,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(t){const e=t.decryptdata;if(e.pssh){const s=this.createMediaKeySessionContext(t),i=this.getKeyIdString(e),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,e.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(t)}getKeyIdString(t){if(!t)throw new Error("Could not read keyId of undefined decryptdata");if(null===t.keyId)throw new Error("keyId is null");return Et(t.keyId)}updateKeySession(t,e){var s;const i=t.mediaKeysSession;return this.log(`Updating key-session "${i.sessionId}" for keyID ${Et((null==(s=t.decryptdata)?void 0:s.keyId)||[])}\n } (data length: ${e?e.byteLength:e})`),i.update(e)}selectKeySystemFormat(t){const e=Object.keys(t.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${t.sn} ${t.type}: ${t.level}) key formats ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)),this.keyFormatPromise}getKeyFormatPromise(t){return new Promise(((e,s)=>{const i=J(this.config),r=t.map(X).filter((t=>!!t&&-1!==i.indexOf(t)));return this.getKeySystemSelectionPromise(r).then((({keySystem:t})=>{const i=Q(t);i?e(i):s(new Error(`Unable to find format for key-system "${t}"`))})).catch(s)}))}loadKey(t){const e=t.keyInfo.decryptdata,s=this.getKeyIdString(e),i=`(keyId: ${s} format: "${e.keyFormat}" method: ${e.method} uri: ${e.uri})`;this.log(`Starting session for key ${i}`);let r=this.keyIdToKeySessionPromise[s];return r||(r=this.keyIdToKeySessionPromise[s]=this.getKeySystemForKeyPromise(e).then((({keySystem:s,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${t.frag.sn} ${t.frag.type}: ${t.frag.level} using key ${i}`),this.attemptSetMediaKeys(s,r).then((()=>{this.throwIfDestroyed();const t=this.createMediaKeySessionContext({keySystem:s,mediaKeys:r,decryptdata:e});return this.generateRequestWithPreferredKeySession(t,"cenc",e.pssh,"playlist-key")}))))),r.catch((t=>this.handleError(t)))),r}throwIfDestroyed(t="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(t){this.hls&&(this.error(t.message),t instanceof Fn?this.hls.trigger(E.ERROR,t.data):this.hls.trigger(E.ERROR,{type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_KEYS,error:t,fatal:!0}))}getKeySystemForKeyPromise(t){const e=this.getKeyIdString(t),s=this.keyIdToKeySessionPromise[e];if(!s){const e=X(t.keyFormat),s=e?[e]:J(this.config);return this.attemptKeySystemAccess(s)}return s}getKeySystemSelectionPromise(t){if(t.length||(t=J(this.config)),0===t.length)throw new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(t)}_onMediaEncrypted(t){const{initDataType:e,initData:s}=t;if(this.debug(`"${t.type}" event: init data type: "${e}"`),null===s)return;let i,r;if("sinf"===e&&this.config.drmSystems[V.FAIRPLAY]){const t=At(new Uint8Array(s));try{const e=$(JSON.parse(t).sinf),s=Ot(new Uint8Array(e));if(!s)return;i=s.subarray(8,24),r=V.FAIRPLAY}catch(t){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const t=function(t){if(!(t instanceof ArrayBuffer)||t.byteLength<32)return null;const e={version:0,systemId:"",kids:null,data:null},s=new DataView(t),i=s.getUint32(0);if(t.byteLength!==i&&i>44)return null;if(1886614376!==s.getUint32(4))return null;if(e.version=s.getUint32(8)>>>24,e.version>1)return null;e.systemId=Et(new Uint8Array(t,12,16));const r=s.getUint32(28);if(0===e.version){if(i-32this.generateRequestWithPreferredKeySession(r,e,s,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([r]).then((({keySystem:t,mediaKeys:r})=>{var a;this.throwIfDestroyed();const o=new Yt("ISO-23001-7",n,null!=(a=Q(t))?a:"");return o.pssh=new Uint8Array(s),o.keyId=i,this.attemptSetMediaKeys(t,r).then((()=>{this.throwIfDestroyed();const i=this.createMediaKeySessionContext({decryptdata:o,keySystem:t,mediaKeys:r});return this.generateRequestWithPreferredKeySession(i,e,s,"encrypted-event-no-match")}))}))),l.catch((t=>this.handleError(t)))}_onWaitingForKey(t){this.log(`"${t.type}" event`)}attemptSetMediaKeys(t,e){const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${t}"`);const i=Promise.all(s).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(e)}));return this.setMediaKeysQueue.push(i),i.then((()=>{this.log(`Media-keys set for "${t}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((t=>-1===s.indexOf(t)))}))}generateRequestWithPreferredKeySession(t,e,s,i){var r,n;const a=null==(r=this.config.drmSystems)||null==(n=r[t.keySystem])?void 0:n.generateRequest;if(a)try{const i=a.call(this.hls,e,s,t);if(!i)throw new Error("Invalid response from configured generateRequest filter");e=i.initDataType,s=t.decryptdata.pssh=i.initData?new Uint8Array(i.initData):null}catch(t){var o;if(this.warn(t.message),null!=(o=this.hls)&&o.config.debug)throw t}if(null===s)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(t);const l=this.getKeyIdString(t.decryptdata);this.log(`Generating key-session request for "${i}": ${l} (init data type: ${e} length: ${s?s.byteLength:null})`);const h=new Dr,d=t._onmessage=e=>{const s=t.mediaKeysSession;if(!s)return void h.emit("error",new Error("invalid state"));const{messageType:i,message:r}=e;this.log(`"${i}" message event for session "${s.sessionId}" message size: ${r.byteLength}`),"license-request"===i||"license-renewal"===i?this.renewLicense(t,r).catch((t=>{this.handleError(t),h.emit("error",t)})):"license-release"===i?t.keySystem===V.FAIRPLAY&&(this.updateKeySession(t,K("acknowledged")),this.removeSession(t)):this.warn(`unhandled media key message type "${i}"`)},c=t._onkeystatuseschange=e=>{if(!t.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(t);const s=t.keyStatus;h.emit("keyStatus",s),"expired"===s&&(this.warn(`${t.keySystem} expired for key ${l}`),this.renewKeySession(t))};t.mediaKeysSession.addEventListener("message",d),t.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((t,e)=>{h.on("error",e),h.on("keyStatus",(s=>{s.startsWith("usable")?t():"output-restricted"===s?e(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===s?e(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${s}"`)):"expired"===s?e(new Error("key expired while generating request")):this.warn(`unhandled key status change "${s}"`)}))}));return t.mediaKeysSession.generateRequest(e,s).then((()=>{var e;this.log(`Request generated for key-session "${null==(e=t.mediaKeysSession)?void 0:e.sessionId}" keyId: ${l}`)})).catch((t=>{throw new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_SESSION,error:t,fatal:!1},`Error generating key-session request: ${t}`)})).then((()=>u)).catch((e=>{throw h.removeAllListeners(),this.removeSession(t),e})).then((()=>(h.removeAllListeners(),t)))}onKeyStatusChange(t){t.mediaKeysSession.keyStatuses.forEach(((e,s)=>{this.log(`key status change "${e}" for keyStatuses keyId: ${Et("buffer"in s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):new Uint8Array(s))} session keyId: ${Et(new Uint8Array(t.decryptdata.keyId||[]))} uri: ${t.decryptdata.uri}`),t.keyStatus=e}))}fetchServerCertificate(t){const e=this.config,s=new(0,e.loader)(e),i=this.getServerCertificateUrl(t);return i?(this.log(`Fetching server certificate for "${t}"`),new Promise(((r,n)=>{const a={responseType:"arraybuffer",url:i},o=e.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{r(t.data)},onError:(e,s,r,o)=>{n(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:u({url:a.url,data:void 0},e)},`"${t}" certificate request failed (${i}). Status: ${e.code} (${e.text})`))},onTimeout:(e,s,r)=>{n(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${t}" certificate request timed out (${i})`))},onAbort:(t,e,s)=>{n(new Error("aborted"))}};s.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(t,e,s){return new Promise(((i,r)=>{t.setServerCertificate(s).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==s?void 0:s.byteLength}) on "${e}"`),i(t)})).catch((t=>{r(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:t,fatal:!0},t.message))}))}))}renewLicense(t,e){return this.requestLicense(t,new Uint8Array(e)).then((e=>this.updateKeySession(t,new Uint8Array(e)).catch((t=>{throw new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:t,fatal:!0},t.message)}))))}unpackPlayReadyKeyMessage(t,e){const s=String.fromCharCode.apply(null,new Uint16Array(e.buffer));if(!s.includes("PlayReadyKeyMessage"))return t.setRequestHeader("Content-Type","text/xml; charset=utf-8"),e;const i=(new DOMParser).parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let e;for(let s=0,i=r.length;s in key message");return K(atob(l))}setupLicenseXHR(t,e,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,t,e,s,i)})).catch((n=>{if(!s.decryptdata)throw n;return t.open("POST",e,!0),r.call(this.hls,t,e,s,i)})).then((s=>{t.readyState||t.open("POST",e,!0);return{xhr:t,licenseChallenge:s||i}})):(t.open("POST",e,!0),Promise.resolve({xhr:t,licenseChallenge:i}))}requestLicense(t,e){const s=this.config.keyLoadPolicy.default;return new Promise(((i,r)=>{const n=this.getLicenseServerUrl(t.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!t.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let e=a.response;this.log(`License received ${e instanceof ArrayBuffer?e.byteLength:e}`);const s=this.config.licenseResponseCallback;if(s)try{e=s.call(this.hls,a,n,t)}catch(t){this.error(t)}i(e)}else{const o=s.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new Fn({type:T.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const s=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${s} attempts left`),this.requestLicense(t,e).then(i,r)}}},t.licenseXhr&&t.licenseXhr.readyState!==XMLHttpRequest.DONE&&t.licenseXhr.abort(),t.licenseXhr=a,this.setupLicenseXHR(a,n,t,e).then((({xhr:e,licenseChallenge:s})=>{t.keySystem==V.PLAYREADY&&(s=this.unpackPlayReadyKeyMessage(e,s)),e.send(s)}))}))}onMediaAttached(t,e){if(!this.config.emeEnabled)return;const s=e.media;this.media=s,s.addEventListener("encrypted",this.onMediaEncrypted),s.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const t=this.media,e=this.mediaKeySessions;t&&(t.removeEventListener("encrypted",this.onMediaEncrypted),t.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Yt.clearKeyUriToKeyIdMap();const s=e.length;Pn.CDMCleanupPromise=Promise.all(e.map((t=>this.removeSession(t))).concat(null==t?void 0:t.setMediaKeys(null).catch((t=>{this.log(`Could not clear media keys: ${t}`)})))).then((()=>{s&&(this.log("finished closing key sessions and clearing media keys"),e.length=0)})).catch((t=>{this.log(`Could not close sessions and clear media keys: ${t}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(t,{sessionKeys:e}){if(e&&this.config.emeEnabled&&!this.keyFormatPromise){const t=e.reduce(((t,e)=>(-1===t.indexOf(e.keyFormat)&&t.push(e.keyFormat),t)),[]);this.log(`Selecting key-system from session-keys ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)}}removeSession(t){const{mediaKeysSession:e,licenseXhr:s}=t;if(e){this.log(`Remove licenses and keys and close session ${e.sessionId}`),t._onmessage&&(e.removeEventListener("message",t._onmessage),t._onmessage=void 0),t._onkeystatuseschange&&(e.removeEventListener("keystatuseschange",t._onkeystatuseschange),t._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),t.mediaKeysSession=t.decryptdata=t.licenseXhr=void 0;const i=this.mediaKeySessions.indexOf(t);return i>-1&&this.mediaKeySessions.splice(i,1),e.remove().catch((t=>{this.log(`Could not remove session: ${t}`)})).then((()=>e.close())).catch((t=>{this.log(`Could not close session: ${t}`)}))}}}Pn.CDMCleanupPromise=void 0;class Fn extends Error{constructor(t,e){super(e),this.data=void 0,t.error||(t.error=new Error(e)),this.data=t,t.err=t.error}}var Mn,On,Nn;!function(t){t.MANIFEST="m",t.AUDIO="a",t.VIDEO="v",t.MUXED="av",t.INIT="i",t.CAPTION="c",t.TIMED_TEXT="tt",t.KEY="k",t.OTHER="o"}(Mn||(Mn={})),function(t){t.DASH="d",t.HLS="h",t.SMOOTH="s",t.OTHER="o"}(On||(On={})),function(t){t.OBJECT="CMCD-Object",t.REQUEST="CMCD-Request",t.SESSION="CMCD-Session",t.STATUS="CMCD-Status"}(Nn||(Nn={}));const Un={[Nn.OBJECT]:["br","d","ot","tb"],[Nn.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Nn.SESSION]:["cid","pr","sf","sid","st","v"],[Nn.STATUS]:["bs","rtp"]};class Bn{constructor(t,e){this.value=void 0,this.params=void 0,Array.isArray(t)&&(t=t.map((t=>t instanceof Bn?t:new Bn(t)))),this.value=t,this.params=e}}class $n{constructor(t){this.description=void 0,this.description=t}}function Gn(t,e,s,i){return new Error(`failed to ${t} "${r=e,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${s}`,{cause:i});var r}const Kn="Bare Item";const Hn=/[\x00-\x1f\x7f]+/;function Vn(t,e,s){return Gn("serialize",t,e,s)}function Yn(t){if(!1===ArrayBuffer.isView(t))throw Vn(t,"Byte Sequence");return`:${e=t,btoa(String.fromCharCode(...e))}:`;var e}function Wn(t){if(function(t){return t<-999999999999999||99999999999999912)throw Vn(t,"Decimal");const s=e.toString();return s.includes(".")?s:`${s}.0`}function Xn(t){const e=(s=t).description||s.toString().slice(7,-1);var s;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e))throw Vn(e,"Token");return e}function zn(t){switch(typeof t){case"number":if(!p(t))throw Vn(t,Kn);return Number.isInteger(t)?Wn(t):qn(t);case"string":return function(t){if(Hn.test(t))throw Vn(t,"String");return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(t);case"symbol":return Xn(t);case"boolean":return function(t){if("boolean"!=typeof t)throw Vn(t,"Boolean");return t?"?1":"?0"}(t);case"object":if(t instanceof Date)return function(t){return`@${Wn(t.getTime()/1e3)}`}(t);if(t instanceof Uint8Array)return Yn(t);if(t instanceof $n)return Xn(t);default:throw Vn(t,Kn)}}function Qn(t){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(t))throw Vn(t,"Key");return t}function Jn(t){return null==t?"":Object.entries(t).map((([t,e])=>!0===e?`;${Qn(t)}`:`;${Qn(t)}=${zn(e)}`)).join("")}function Zn(t){return t instanceof Bn?`${zn(t.value)}${Jn(t.params)}`:zn(t)}function ta(t,e={whitespace:!0}){if("object"!=typeof t)throw Vn(t,"Dict");const s=t instanceof Map?t.entries():Object.entries(t),i=null!=e&&e.whitespace?" ":"";return Array.from(s).map((([t,e])=>{e instanceof Bn==!1&&(e=new Bn(e));let s=Qn(t);var i;return!0===e.value?s+=Jn(e.params):(s+="=",Array.isArray(e.value)?s+=`(${(i=e).value.map(Zn).join(" ")})${Jn(i.params)}`:s+=Zn(e)),s})).join(`,${i}`)}const ea=t=>Math.round(t),sa=t=>100*ea(t/100),ia={br:ea,d:ea,bl:sa,dl:sa,mtp:sa,nor:(t,e)=>(null!=e&&e.baseUrl&&(t=function(t,e){const s=new URL(t),i=new URL(e);if(s.origin!==i.origin)return t;const r=s.pathname.split("/").slice(1),n=i.pathname.split("/").slice(1,-1);for(;r[0]===n[0];)r.shift(),n.shift();for(;n.length;)n.shift(),r.unshift("..");return r.join("/")}(t,e.baseUrl)),encodeURIComponent(t)),rtp:sa,tb:ea};function ra(t,e){const s={};if(null==t||"object"!=typeof t)return s;const i=Object.keys(t).sort(),r=m({},ia,null==e?void 0:e.formatters),n=null==e?void 0:e.filter;return i.forEach((i=>{if(null!=n&&n(i))return;let a=t[i];const o=r[i];o&&(a=o(a,e)),"v"===i&&1===a||"pr"==i&&1===a||(t=>"number"==typeof t?p(t):null!=t&&""!==t&&!1!==t)(a)&&((t=>"ot"===t||"sf"===t||"st"===t)(i)&&"string"==typeof a&&(a=new $n(a)),s[i]=a)})),s}function na(t,e={}){return t?function(t,e){return ta(t,e)}(ra(t,e),m({whitespace:!1},e)):""}function aa(t,e,s){return m(t,function(t,e={}){if(!t)return{};const s=Object.entries(t),i=Object.entries(Un).concat(Object.entries((null==e?void 0:e.customHeaderMap)||{})),r=s.reduce(((t,e)=>{var s;const[r,n]=e,a=(null==(s=i.find((t=>t[1].includes(r))))?void 0:s[0])||Nn.REQUEST;return null!=t[a]||(t[a]={}),t[a][r]=n,t}),{});return Object.entries(r).reduce(((t,[s,i])=>(t[s]=na(i,e),t)),{})}(e,s))}const oa=/CMCD=[^&#]+/;function la(t,e,s){const i=function(t,e={}){if(!t)return"";const s=na(t,e);return`CMCD=${encodeURIComponent(s)}`}(e,s);if(!i)return t;if(oa.test(t))return t.replace(oa,i);const r=t.includes("?")?"&":"?";return`${t}${r}${i}`}function ha(t,e,s,i){t&&Object.keys(e).forEach((r=>{const n=t.filter((t=>t.groupId===r)).map((t=>{const n=m({},t);return n.details=void 0,n.attrs=new w(n.attrs),n.url=n.attrs.URI=da(t.url,t.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",s),n.groupId=n.attrs["GROUP-ID"]=e[r],n.attrs["PATHWAY-ID"]=i,n}));t.push(...n)}))}function da(t,e,s,i){const{HOST:r,PARAMS:n,[s]:a}=i;let o;e&&(o=null==a?void 0:a[e],o&&(t=o));const l=new self.URL(t);return r&&!o&&(l.host=r),n&&Object.keys(n).sort().forEach((t=>{t&&l.searchParams.set(t,n[t])})),l.href}const ca=/^age:\s*[\d.]+\s*$/im;class ua{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new x,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null,this.stats=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,4!==t.readyState&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,e,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=e,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:e}=this;if(!t||!e)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(!this.stats.aborted)return r(s,e.url)})).catch((t=>(s.open("GET",e.url,!0),r(s,e.url)))).then((()=>{this.stats.aborted||this.openAndSendXhr(s,e,t)})).catch((t=>{this.callbacks.onError({code:s.status,text:t.message},e,s,i)})):this.openAndSendXhr(s,e,t)}openAndSendXhr(t,e,s){t.readyState||t.open("GET",e.url,!0);const i=e.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const e in i)t.setRequestHeader(e,i[e]);e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&p(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:e,stats:s}=this;if(!t||!e)return;const i=e.readyState,r=this.config;if(!s.aborted&&i>=2&&(0===s.loading.first&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),4===i)){self.clearTimeout(this.requestTimeout),e.onreadystatechange=null,e.onprogress=null;const i=e.status,n="text"!==e.responseType;if(i>=200&&i<300&&(n&&e.response||null!==e.responseText)){s.loading.end=Math.max(self.performance.now(),s.loading.first);const r=n?e.response:e.responseText,a="arraybuffer"===e.responseType?r.byteLength:r.length;if(s.loaded=s.total=a,s.bwEstimate=8e3*s.total/(s.loading.end-s.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(s,t,r,e),!this.callbacks)return;const l={url:e.responseURL,data:r,code:i};this.callbacks.onSuccess(l,s,t,e)}else{const n=r.loadPolicy.errorRetry;fs(n,s.retry,!1,{url:t.url,data:void 0,code:i})?this.retry(n):(k.error(`${i} while loading ${t.url}`),this.callbacks.onError({code:i,text:e.statusText},t,e,s))}}}loadtimeout(){var t;const e=null==(t=this.config)?void 0:t.loadPolicy.timeoutRetry;if(fs(e,this.stats.retry,!0))this.retry(e);else{var s;k.warn(`timeout while loading ${null==(s=this.context)?void 0:s.url}`);const t=this.callbacks;t&&(this.abortInternal(),t.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:e,stats:s}=this;this.retryDelay=cs(t,s.retry),s.retry++,k.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==e?void 0:e.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const e=this.stats;e.loaded=t.loaded,t.lengthComputable&&(e.total=t.total)}getCacheAge(){let t=null;if(this.loader&&ca.test(this.loader.getAllResponseHeaders())){const e=this.loader.getResponseHeader("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const fa=/(\d+)-(\d+)\/(\d+)/;class ga{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||ma,this.controller=new self.AbortController,this.stats=new x}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,e,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=function(t,e){const s={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(m({},t.headers))};t.rangeEnd&&s.headers.set("Range","bytes="+t.rangeStart+"-"+String(t.rangeEnd-1));return s}(t,this.controller.signal),n=s.onProgress,a="arraybuffer"===t.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=e.loadPolicy;this.context=t,this.config=e,this.callbacks=s,this.request=this.fetchSetup(t,r),self.clearTimeout(this.requestTimeout),e.timeout=l&&p(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),e.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const o=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),h-(o-i.loading.start)),!r.ok){const{status:t,statusText:e}=r;throw new pa(e||"fetch, bad network response",t,r)}return i.loading.first=o,i.total=function(t){const e=t.get("Content-Range");if(e){const t=function(t){const e=fa.exec(t);if(e)return parseInt(e[2])-parseInt(e[1])+1}(e);if(p(t))return t}const s=t.get("Content-Length");if(s)return parseInt(s)}(r.headers)||i.total,n&&p(e.highWaterMark)?this.loadProgressively(r,i,t,e.highWaterMark,n):a?r.arrayBuffer():"json"===t.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const l=r[o];l&&(i.loaded=i.total=l);const h={url:a.url,data:r,code:a.status};n&&!p(e.highWaterMark)&&n(i,t,r,a),s.onSuccess(h,i,t,a)})).catch((e=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;const r=e&&e.code||0,n=e?e.message:null;s.onError({code:r,text:n},t,e?e.details:null,i)}))}getCacheAge(){let t=null;if(this.response){const e=this.response.headers.get("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,e,s,i=0,r){const n=new Ai,a=t.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&r(e,s,n.flush(),t),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return e.loaded+=h,h=i&&r(e,s,n.flush(),t)):r(e,s,l,t),o()})).catch((()=>Promise.reject()));return o()}}function ma(t,e){return new self.Request(t.url,e)}class pa extends Error{constructor(t,e,s){super(t),this.code=void 0,this.details=void 0,this.code=e,this.details=s}}const va=/\s/,ya={newCue(t,e,s,i){const r=[];let n,a,o,l,h;const d=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const i=cn(h.trim()),f=pn(e,s,i);null!=t&&null!=(c=t.cues)&&c.getCueById(f)||(a=new d(e,s,i),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return t&&r.length&&(r.sort(((t,e)=>"auto"===t.line||"auto"===e.line?0:t.line>8&&e.line>8?e.line-t.line:t.line-e.line)),r.forEach((e=>Pe(t,e)))),r}},Ea=u(u({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:ua,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(t){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:t,partCurrent:e,hls:s}=this,{autoLevelEnabled:i,media:r}=s;if(!t||!r)return;const n=performance.now(),a=e?e.stats:t.stats,o=e?e.duration:t.duration,l=n-a.loading.start,h=s.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||t.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!i||r.paused||!r.playbackRate||!r.readyState)return;const d=s.mainForwardBufferInfo;if(null===d)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,o/(2*u)*1e3))return;const f=d.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,v=this.getBwEstimate(),y=s.levels,T=y[t.level],S=a.total||Math.max(a.loaded,Math.round(o*T.averageBitrate/8));let L=m?l-g:l;L<1&&m&&(L=Math.min(l,8*a.loaded/v));const A=m?1e3*a.loaded/L:0,R=A?(S-a.loaded)/A:8*S/v+c/1e3;if(R<=f)return;const b=A?8*A:v;let D,I=Number.POSITIVE_INFINITY;for(D=t.level-1;D>h;D--){const t=y[D].maxBitrate;if(I=this.getTimeToLoadFrag(c/1e3,b,o*t,!y[D].details),I=R)return;if(I>10*o)return;s.nextLoadLevel=s.nextAutoLevel=D,m?this.bwEstimator.sample(l-Math.min(c,g),a.loaded):this.bwEstimator.sampleTTFB(l);const w=y[D].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>w&&this.resetEstimator(w),this.clearTimer(),k.warn(`[abr] Fragment ${t.sn}${e?" part "+e.index:""} of level ${t.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${R.toFixed(3)} s\n Estimated load time for down switch fragment: ${I.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${p(v)?0|v:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${D} @ ${0|w} bps`),s.trigger(E.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:e,stats:a})},this.hls=t,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(t){t&&(k.log(`setting initial bwe to ${t}`),this.hls.config.abrEwmaDefaultEstimate=t),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const t=this.hls.config;return new Ds(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate)}registerListeners(){const{hls:t}=this;t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.FRAG_LOADING,this.onFragLoading,this),t.on(E.FRAG_LOADED,this.onFragLoaded,this),t.on(E.FRAG_BUFFERED,this.onFragBuffered,this),t.on(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(E.LEVEL_LOADED,this.onLevelLoaded,this),t.on(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(E.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.on(E.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t&&(t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.FRAG_LOADING,this.onFragLoading,this),t.off(E.FRAG_LOADED,this.onFragLoaded,this),t.off(E.FRAG_BUFFERED,this.onFragBuffered,this),t.off(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(E.LEVEL_LOADED,this.onLevelLoaded,this),t.off(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(E.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.off(E.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(t,e){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(t,e){const s=e.frag;if(!this.ignoreFragment(s)){var i;if(!s.bitrateTest)this.fragCurrent=s,this.partCurrent=null!=(i=e.part)?i:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(t,e){this.clearTimer()}onError(t,e){if(!e.fatal)switch(e.details){case S.BUFFER_ADD_CODEC_ERROR:case S.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case S.FRAG_LOAD_TIMEOUT:{const t=e.frag,{fragCurrent:s,partCurrent:i}=this;if(t&&s&&t.sn===s.sn&&t.level===s.level){const e=performance.now(),s=i?i.stats:t.stats,r=e-s.loading.start,n=s.loading.first?s.loading.first-s.loading.start:-1;if(s.loaded&&n>-1){const t=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(t,n),s.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(t,e,s,i){return t+s/e+(i?this.lastLevelLoadSec:0)}onLevelLoaded(t,e){const s=this.hls.config,{loading:i}=e.stats,r=i.end-i.start;p(r)&&(this.lastLevelLoadSec=r/1e3),e.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD)}onFragLoaded(t,{frag:e,part:s}){const i=s?s.stats:e.stats;if(e.type===ke&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(e)){if(this.clearTimer(),e.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const t=s?s.duration:e.duration,r=this.hls.levels[e.level],n=(r.loaded?r.loaded.bytes:0)+i.loaded,a=(r.loaded?r.loaded.duration:0)+t;r.loaded={bytes:n,duration:a},r.realBitrate=Math.round(8*n/a)}if(e.bitrateTest){const t={stats:i,frag:e,part:s,id:e.type};this.onFragBuffered(E.FRAG_BUFFERED,t),e.bitrateTest=!1}else this.lastLoadedFragLevel=e.level}}onFragBuffered(t,e){const{frag:s,part:i}=e,r=null!=i&&i.stats.loaded?i.stats:s.stats;if(r.aborted)return;if(this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(t){return t.type!==ke||"initSegment"===t.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:t,minAutoLevel:e}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,e,t,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,a=Math.min(Math.max(n,e),t);return k.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const t=this.forcedAutoLevel,e=this.bwEstimator.canEstimate(),s=this.lastLoadedFragLevel>-1;if(!(-1===t||e&&s&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return t;const i=e&&s?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==t){const e=this.hls.levels;if(e.length>Math.max(t,i)&&e[t].loadError<=e[i].loadError)return t}return this._nextAutoLevel=i,this.nextAutoLevelKey=this.getAutoLevelKey(),i}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:t,partCurrent:e,hls:s}=this,{maxAutoLevel:i,config:r,minAutoLevel:n}=s,a=e?e.duration:t?t.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,d=r.abrBandWidthUpFactor;if(l){const t=this.findBestLevel(o,n,i,l,0,h,d);if(t>=0)return t}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const t=this.bitrateTestDelay;if(t){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-t,k.info(`[abr] bitrate test took ${Math.round(1e3*t)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),h=d=1}}const u=this.findBestLevel(o,n,i,l,c,h,d);if(k.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=s.levels[n],g=s.levels[s.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:s.loadLevel}getStarvationDelay(){const t=this.hls,e=t.media;if(!e)return 1/0;const s=e&&0!==e.playbackRate?Math.abs(e.playbackRate):1,i=t.mainForwardBufferInfo;return(i?i.len:0)/s}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(t,e,s,i,r,n,a){var o;const l=i+r,h=this.lastLoadedFragLevel,d=-1===h?this.hls.firstLevel:h,{fragCurrent:c,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:v}=this.hls;if(1===f.length)return 0;const y=f[d],E=!(null==y||null==(o=y.details)||!o.live),T=-1===m||-1===h;let S,L="SDR",A=(null==y?void 0:y.frameRate)||0;const{audioPreference:R,videoPreference:b}=v,D=this.audioTracksByGroup||(this.audioTracksByGroup=function(t){return t.reduce(((t,e)=>{let s=t.groups[e.groupId];s||(s=t.groups[e.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(e);const i=e.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||e.default,s.hasAutoSelect=s.hasAutoSelect||e.autoselect,s.hasDefault&&(t.hasDefaultAudio=!0),s.hasAutoSelect&&(t.hasAutoSelectAudio=!0),t}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(T){if(-1!==this.firstSelection)return this.firstSelection;const i=this.codecTiers||(this.codecTiers=function(t,e,s,i){return t.slice(s,i+1).reduce(((t,s)=>{if(!s.codecSet)return t;const i=s.audioGroups;let r=t[s.codecSet];r||(t[s.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!i,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,s.bitrate);const n=Math.min(s.height,s.width);return r.minHeight=Math.min(r.minHeight,n),r.minFramerate=Math.min(r.minFramerate,s.frameRate),r.maxScore=Math.max(r.maxScore,s.score),r.fragmentError+=s.fragmentError,r.videoRanges[s.videoRange]=(r.videoRanges[s.videoRange]||0)+1,i&&i.forEach((t=>{if(!t)return;const s=e.groups[t];s&&(r.hasDefaultAudio=r.hasDefaultAudio||e.hasDefaultAudio?s.hasDefault:s.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(s.channels).forEach((t=>{r.channels[t]=(r.channels[t]||0)+s.channels[t]})))})),t}),{})}(f,D,e,s)),r=function(t,e,s,i,r){const n=Object.keys(t),a=null==i?void 0:i.channels,o=null==i?void 0:i.audioCodec,l=a&&2===parseInt(a);let h=!0,d=!1,c=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:v,allowedVideoRanges:y}=xs(e,r);for(let e=n.length;e--;){const s=t[n[e]];h=s.channels[2]>0,c=Math.min(c,s.minHeight),u=Math.min(u,s.minFramerate),f=Math.min(f,s.minBitrate);const i=y.filter((t=>s.videoRanges[t]>0));i.length>0&&(d=!0,m=i)}c=p(c)?c:0,u=p(u)?u:0;const E=Math.max(1080,c),T=Math.max(30,u);return f=p(f)?f:s,s=Math.max(f,s),d||(e=void 0,m=[]),{codecSet:n.reduce(((e,i)=>{const r=t[i];if(i===e)return e;if(r.minBitrate>s)return Ps(i,`min bitrate of ${r.minBitrate} > current estimate of ${s}`),e;if(!r.hasDefaultAudio)return Ps(i,"no renditions with default or auto-select sound found"),e;if(o&&i.indexOf(o.substring(0,4))%5!=0)return Ps(i,`audio codec preference "${o}" not found`),e;if(a&&!l){if(!r.channels[a])return Ps(i,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),e}else if((!o||l)&&h&&0===r.channels[2])return Ps(i,"no renditions with stereo sound found"),e;return r.minHeight>E?(Ps(i,`min resolution of ${r.minHeight} > maximum of ${E}`),e):r.minFramerate>T?(Ps(i,`min framerate of ${r.minFramerate} > maximum of ${T}`),e):m.some((t=>r.videoRanges[t]>0))?r.maxScore=re(e)||r.fragmentError>t[e].fragmentError)?e:(g=r.maxScore,i):(Ps(i,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),e)}),void 0),videoRanges:m,preferHDR:v,minFramerate:u,minBitrate:f}}(i,L,t,R,b),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=r;S=n,L=h?a[a.length-1]:a[0],A=o,t=Math.max(t,l),k.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else S=null==y?void 0:y.codecSet,L=null==y?void 0:y.videoRange;const I=u?u.duration:c?c.duration:0,w=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let o=s;o>=e;o--){var _;const e=f[o],c=o>d;if(!e)continue;if(v.useMediaCapabilities&&!e.supportedResult&&!e.supportedPromise){const s=navigator.mediaCapabilities;"function"==typeof(null==s?void 0:s.decodingInfo)&&Cs(e,D,L,A,t,R)?(e.supportedPromise=_s(e,D,s),e.supportedPromise.then((t=>{if(!this.hls)return;e.supportedResult=t;const s=this.hls.levels,i=s.indexOf(e);t.error?k.warn(`[abr] MediaCapabilities decodingInfo error: "${t.error}" for level ${i} ${JSON.stringify(t)}`):t.supported||(k.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${i} ${JSON.stringify(t)}`),i>-1&&s.length>1&&(k.log(`[abr] Removing unsupported level ${i}`),this.hls.removeLevel(i)))}))):e.supportedResult=Is}if(S&&e.codecSet!==S||L&&e.videoRange!==L||c&&A>e.frameRate||!c&&A>0&&A=2*I&&0===r?f[o].averageBitrate:f[o].maxBitrate,F=this.getTimeToLoadFrag(w,x,P*b,void 0===g);if(x>=P&&(o===h||0===e.loadError&&0===e.fragmentError)&&(F<=w||!p(F)||E&&!this.bitrateTestDelay||F${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-P)} ttfb:${w.toFixed(1)} avgDuration:${b.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${F.toFixed(1)} firstSelection:${T} codecSet:${S} videoRange:${L} hls.loadLevel:${m}`)),T&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(t){const{maxAutoLevel:e,minAutoLevel:s}=this.hls,i=Math.min(Math.max(t,s),e);this._nextAutoLevel!==i&&(this.nextAutoLevelKey="",this._nextAutoLevel=i)}},bufferController:class{constructor(t){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=t=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=t=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:t,mediaSource:e}=this;this.log("Media source opened"),t&&(t.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(E.MEDIA_ATTACHED,{media:t,mediaSource:e})),e&&e.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:t,_objectUrl:e}=this;t!==e&&k.error(`Media element src was set while attaching MediaSource (${e} > ${t})`)},this.hls=t;const e="[buffer-controller]";var s;this.appendSource=(s=Jt(t.config.preferManagedMediaSource),"undefined"!=typeof self&&s===self.ManagedMediaSource),this.log=k.log.bind(k,e),this.warn=k.warn.bind(k,e),this.error=k.error.bind(k,e),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:t}=this;t.on(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_PARSED,this.onManifestParsed,this),t.on(E.BUFFER_RESET,this.onBufferReset,this),t.on(E.BUFFER_APPENDING,this.onBufferAppending,this),t.on(E.BUFFER_CODECS,this.onBufferCodecs,this),t.on(E.BUFFER_EOS,this.onBufferEos,this),t.on(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(E.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(E.FRAG_PARSED,this.onFragParsed,this),t.on(E.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:t}=this;t.off(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_PARSED,this.onManifestParsed,this),t.off(E.BUFFER_RESET,this.onBufferReset,this),t.off(E.BUFFER_APPENDING,this.onBufferAppending,this),t.off(E.BUFFER_CODECS,this.onBufferCodecs,this),t.off(E.BUFFER_EOS,this.onBufferEos,this),t.off(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(E.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(E.FRAG_PARSED,this.onFragParsed,this),t.off(E.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Pr(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(t,e){let s=2;(e.audio&&!e.video||!e.altAudio)&&(s=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=s,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(t,e){const s=this.media=e.media,i=Jt(this.appendSource);if(s&&i){var r;const t=this.mediaSource=new i;this.log(`created media source: ${null==(r=t.constructor)?void 0:r.name}`),t.addEventListener("sourceopen",this._onMediaSourceOpen),t.addEventListener("sourceended",this._onMediaSourceEnded),t.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.addEventListener("startstreaming",this._onStartStreaming),t.addEventListener("endstreaming",this._onEndStreaming));const e=this._objectUrl=self.URL.createObjectURL(t);if(this.appendSource)try{s.removeAttribute("src");const i=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||i&&t instanceof i,Mr(s),function(t,e){const s=self.document.createElement("source");s.type="video/mp4",s.src=e,t.appendChild(s)}(s,e),s.load()}catch(t){s.src=e}else s.src=e;s.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:t,mediaSource:e,_objectUrl:s}=this;if(e){if(this.log("media source detaching"),"open"===e.readyState)try{e.endOfStream()}catch(t){this.warn(`onMediaDetaching: ${t.message} while calling endOfStream`)}this.onBufferReset(),e.removeEventListener("sourceopen",this._onMediaSourceOpen),e.removeEventListener("sourceended",this._onMediaSourceEnded),e.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming)),t&&(t.removeEventListener("emptied",this._onMediaEmptied),s&&self.URL.revokeObjectURL(s),this.mediaSrc===s?(t.removeAttribute("src"),this.appendSource&&Mr(t),t.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(E.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((t=>{this.resetBuffer(t)})),this._initSourceBuffer()}resetBuffer(t){const e=this.sourceBuffer[t];try{var s;if(e)this.removeBufferListeners(t),this.sourceBuffer[t]=void 0,null!=(s=this.mediaSource)&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(e)}catch(e){this.warn(`onBufferReset ${t}`,e)}}onBufferCodecs(t,e){const s=this.getSourceBufferTypes().length,i=Object.keys(e);if(i.forEach((t=>{if(s){const s=this.tracks[t];if(s&&"function"==typeof s.buffer.changeType){var i;const{id:r,codec:n,levelCodec:a,container:o,metadata:l}=e[t],h=le(s.codec,s.levelCodec),d=null==h?void 0:h.replace(Fr,"$1");let c=le(n,a);const u=null==(i=c)?void 0:i.replace(Fr,"$1");if(c&&d!==u){"audio"===t.slice(0,5)&&(c=oe(c,this.appendSource));const e=`${o};codecs=${c}`;this.appendChangeType(t,e),this.log(`switching codec ${h} to ${c}`),this.tracks[t]={buffer:s.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[t]=e[t]})),s)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${i.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(t,e){const{operationQueue:s}=this,i={execute:()=>{const i=this.sourceBuffer[t];i&&(this.log(`changing ${t} sourceBuffer type to ${e}`),i.changeType(e)),s.shiftAndExecuteNext(t)},onStart:()=>{},onComplete:()=>{},onError:e=>{this.warn(`Failed to change ${t} SourceBuffer type`,e)}};s.append(i,t,!!this.pendingTracks[t])}onBufferAppending(t,e){const{hls:s,operationQueue:i,tracks:r}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=e,d=h.buffering[a],c=self.performance.now();d.start=c;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=c),f&&0===f.start&&(f.start=c);const g=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(d.executeStart=self.performance.now(),m){const t=this.sourceBuffer[a];if(t){const e=p-t.timestampOffset;Math.abs(e)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${e}) sn: ${o.sn})`),t.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const t=self.performance.now();d.executeEnd=d.end=t,0===u.first&&(u.first=t),f&&0===f.first&&(f.first=t);const{sourceBuffer:e}=this,s={};for(const t in e)s[t]=js.getBuffered(e[t]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(E.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:s})},onError:t=>{const e={type:T.MEDIA_ERROR,parent:o.type,details:S.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:t,err:t,fatal:!1};if(t.code===DOMException.QUOTA_EXCEEDED_ERR)e.details=S.BUFFER_FULL_ERROR;else{const t=++this.appendErrors[a];e.details=S.BUFFER_APPEND_ERROR,this.warn(`Failed ${t}/${s.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),t>=s.config.appendErrorMaxRetry&&(e.fatal=!0)}s.trigger(E.ERROR,e)}};i.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(t,e){const{operationQueue:s}=this,i=t=>({execute:this.removeExecutor.bind(this,t,e.startOffset,e.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(E.BUFFER_FLUSHED,{type:t})},onError:e=>{this.warn(`Failed to remove from ${t} SourceBuffer`,e)}});e.type?s.append(i(e.type),e.type):this.getSourceBufferTypes().forEach((t=>{s.append(i(t),t)}))}onFragParsed(t,e){const{frag:s,part:i}=e,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[M]?r.push("audiovideo"):(n[P]&&r.push("audio"),n[F]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers((()=>{const t=self.performance.now();s.stats.buffering.end=t,i&&(i.stats.buffering.end=t);const e=i?i.stats:s.stats;this.hls.trigger(E.FRAG_BUFFERED,{frag:s,part:i,stats:e,id:s.type})}),r)}onFragChanged(t,e){this.trimBuffers()}onBufferEos(t,e){this.getSourceBufferTypes().reduce(((t,s)=>{const i=this.sourceBuffer[s];return!i||e.type&&e.type!==s||(i.ending=!0,i.ended||(i.ended=!0,this.log(`${s} sourceBuffer now EOS`))),t&&!(i&&!i.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((t=>{const e=this.sourceBuffer[t];e&&(e.ending=!1)}));const{mediaSource:t}=this;t&&"open"===t.readyState?(this.log("Calling mediaSource.endOfStream()"),t.endOfStream()):t&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${t.readyState}`)})))}onLevelUpdated(t,{details:e}){e.fragments.length&&(this.details=e,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:t,details:e,media:s}=this;if(!s||null===e)return;if(!this.getSourceBufferTypes().length)return;const i=t.config,r=s.currentTime,n=e.levelTargetDuration,a=e.live&&null!==i.liveBackBufferLength?i.liveBackBufferLength:i.backBufferLength;if(p(a)&&a>0){const t=Math.max(a,n),e=Math.floor(r/n)*n-t;this.flushBackBuffer(r,n,e)}if(p(i.frontBufferFlushThreshold)&&i.frontBufferFlushThreshold>0){const t=Math.max(i.maxBufferLength,i.frontBufferFlushThreshold),e=Math.max(t,n),s=Math.floor(r/n)*n+e;this.flushFrontBuffer(r,n,s)}}flushBackBuffer(t,e,s){const{details:i,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((n=>{const a=r[n];if(a){const r=js.getBuffered(a);if(r.length>0&&s>r.start(0)){if(this.hls.trigger(E.BACK_BUFFER_REACHED,{bufferEnd:s}),null!=i&&i.live)this.hls.trigger(E.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(a.ended&&r.end(r.length-1)-t<2*e)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(E.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:n})}}}))}flushFrontBuffer(t,e,s){const{sourceBuffer:i}=this;this.getSourceBufferTypes().forEach((r=>{const n=i[r];if(n){const i=js.getBuffered(n),a=i.length;if(a<2)return;const o=i.start(a-1),l=i.end(a-1);if(s>o||t>=o&&t<=l)return;if(n.ended&&t-l<2*e)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(E.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:t,hls:e,media:s,mediaSource:i}=this,r=t.fragments[0].start+t.totalduration,n=s.duration,a=p(i.duration)?i.duration:0;t.live&&e.config.liveDurationInfinity?(i.duration=1/0,this.updateSeekableRange(t)):(r>a&&r>n||!p(n))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),i.duration=r)}updateSeekableRange(t){const e=this.mediaSource,s=t.fragments;if(s.length&&t.live&&null!=e&&e.setLiveSeekableRange){const i=Math.max(0,s[0].start),r=Math.max(i,i+t.totalduration);this.log(`Media Source duration is set to ${e.duration}. Setting seekable range to ${i}-${r}.`),e.setLiveSeekableRange(i,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:t,operationQueue:e,pendingTracks:s}=this,i=Object.keys(s).length;if(i&&(!t||2===i||"audiovideo"in s)){this.createSourceBuffers(s),this.pendingTracks={};const t=this.getSourceBufferTypes();if(t.length)this.hls.trigger(E.BUFFER_CREATED,{tracks:this.tracks}),t.forEach((t=>{e.executeNext(t)}));else{const t=new Error("could not create source buffer for media codec(s)");this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:t,reason:t.message})}}}createSourceBuffers(t){const{sourceBuffer:e,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(const r in t)if(!e[r]){var i;const n=t[r];if(!n)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(i=n.levelCodec)?void 0:i.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===r.slice(0,5)&&(a=oe(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const t=e[r]=s.addSourceBuffer(o),i=r;this.addBufferListener(i,"updatestart",this._onSBUpdateStart),this.addBufferListener(i,"updateend",this._onSBUpdateEnd),this.addBufferListener(i,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(i,"bufferedchange",((t,e)=>{const s=e.removedRanges;null!=s&&s.length&&this.hls.trigger(E.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:t,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(t){this.error(`error while trying to add sourceBuffer: ${t.message}`),this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:t,sourceBufferName:r,mimeType:o})}}}get mediaSrc(){var t;const e=(null==(t=this.media)?void 0:t.firstChild)||this.media;return null==e?void 0:e.src}_onSBUpdateStart(t){const{operationQueue:e}=this;e.current(t).onStart()}_onSBUpdateEnd(t){var e;if("closed"===(null==(e=this.mediaSource)?void 0:e.readyState))return void this.resetBuffer(t);const{operationQueue:s}=this;s.current(t).onComplete(),s.shiftAndExecuteNext(t)}_onSBUpdateError(t,e){var s;const i=new Error(`${t} SourceBuffer error. MediaSource readyState: ${null==(s=this.mediaSource)?void 0:s.readyState}`);this.error(`${i}`,e),this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.BUFFER_APPENDING_ERROR,sourceBufferName:t,error:i,fatal:!1});const r=this.operationQueue.current(t);r&&r.onError(i)}removeExecutor(t,e,s){const{media:i,mediaSource:r,operationQueue:n,sourceBuffer:a}=this,o=a[t];if(!i||!r||!o)return this.warn(`Attempting to remove from the ${t} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(t);const l=p(i.duration)?i.duration:1/0,h=p(r.duration)?r.duration:1/0,d=Math.max(0,e),c=Math.min(s,l,h);c>d&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${d},${c}] from the ${t} SourceBuffer`),o.remove(d,c)):n.shiftAndExecuteNext(t)}appendExecutor(t,e){const s=this.sourceBuffer[e];if(s)s.ended=!1,s.appendBuffer(t);else if(!this.pendingTracks[e])throw new Error(`Attempting to append to the ${e} SourceBuffer, but it does not exist`)}blockBuffers(t,e=this.getSourceBufferTypes()){if(!e.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(t);const{operationQueue:s}=this,i=e.map((t=>s.appendBlocker(t)));Promise.all(i).then((()=>{t(),e.forEach((t=>{const e=this.sourceBuffer[t];null!=e&&e.updating||s.shiftAndExecuteNext(t)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(t,e,s){const i=this.sourceBuffer[t];if(!i)return;const r=s.bind(this,t);this.listeners[t].push({event:e,listener:r}),i.addEventListener(e,r)}removeBufferListeners(t){const e=this.sourceBuffer[t];e&&this.listeners[t].forEach((t=>{e.removeEventListener(t.event,t.listener)}))}},capLevelController:_n,errorController:class{constructor(t){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=t,this.log=k.log.bind(k,"[info]:"),this.warn=k.warn.bind(k,"[warning]:"),this.error=k.error.bind(k,"[error]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(E.ERROR,this.onError,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const t=this.hls;t&&(t.off(E.ERROR,this.onError,this),t.off(E.ERROR,this.onErrorOut,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(t){}stopLoad(){this.playlistError=0}getVariantLevelIndex(t){return(null==t?void 0:t.type)===ke?t.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(t,e){var s,i;if(e.fatal)return;const r=this.hls,n=e.context;switch(e.details){case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:return void(e.errorAction=this.getFragRetryOrSwitchAction(e));case S.FRAG_PARSING_ERROR:if(null!=(s=e.frag)&&s.gap)return void(e.errorAction={action:ys,flags:Ls});case S.FRAG_GAP:case S.FRAG_DECRYPT_ERROR:return e.errorAction=this.getFragRetryOrSwitchAction(e),void(e.errorAction.action=Es);case S.LEVEL_EMPTY_ERROR:case S.LEVEL_PARSING_ERROR:{var a,o;const t=e.parent===ke?e.level:r.loadLevel;e.details===S.LEVEL_EMPTY_ERROR&&null!=(a=e.context)&&null!=(o=a.levelDetails)&&o.live?e.errorAction=this.getPlaylistRetryOrSwitchAction(e,t):(e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t))}return;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(e.errorAction=this.getPlaylistRetryOrSwitchAction(e,n.level)));case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.SUBTITLE_LOAD_ERROR:case S.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const t=r.levels[r.loadLevel];if(t&&(n.type===Re&&t.hasAudioGroup(n.groupId)||n.type===be&&t.hasSubtitleGroup(n.groupId)))return e.errorAction=this.getPlaylistRetryOrSwitchAction(e,r.loadLevel),e.errorAction.action=Es,void(e.errorAction.flags=As)}return;case S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const t=r.levels[r.loadLevel],s=null==t?void 0:t.attrs["HDCP-LEVEL"];s?e.errorAction={action:Es,flags:Rs,hdcpLevel:s}:this.keySystemError(e)}return;case S.BUFFER_ADD_CODEC_ERROR:case S.REMUX_ALLOC_ERROR:case S.BUFFER_APPEND_ERROR:return void(e.errorAction=this.getLevelSwitchAction(e,null!=(i=e.level)?i:r.loadLevel));case S.INTERNAL_EXCEPTION:case S.BUFFER_APPENDING_ERROR:case S.BUFFER_FULL_ERROR:case S.LEVEL_SWITCH_ERROR:case S.BUFFER_STALLED_ERROR:case S.BUFFER_SEEK_OVER_HOLE:case S.BUFFER_NUDGE_ON_STALL:return void(e.errorAction={action:ys,flags:Ls})}e.type===T.KEY_SYSTEM_ERROR&&this.keySystemError(e)}keySystemError(t){const e=this.getVariantLevelIndex(t.frag);t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e)}getPlaylistRetryOrSwitchAction(t,e){const s=ds(this.hls.config.playlistLoadPolicy,t),i=this.playlistError++;if(fs(s,i,hs(t),t.response))return{action:Ss,flags:Ls,retryConfig:s,retryCount:i};const r=this.getLevelSwitchAction(t,e);return s&&(r.retryConfig=s,r.retryCount=i),r}getFragRetryOrSwitchAction(t){const e=this.hls,s=this.getVariantLevelIndex(t.frag),i=e.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=e.config,a=ds(t.details.startsWith("key")?n:r,t),o=e.levels.reduce(((t,e)=>t+e.fragmentError),0);if(i){t.details!==S.FRAG_GAP&&i.fragmentError++;if(fs(a,o,hs(t),t.response))return{action:Ss,flags:Ls,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(t,s);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(t,e){const s=this.hls;null==e&&(e=s.loadLevel);const i=this.hls.levels[e];if(i){var r,n;const e=t.details;i.loadError++,e===S.BUFFER_APPEND_ERROR&&i.fragmentError++;let l=-1;const{levels:h,loadLevel:d,minAutoLevel:c,maxAutoLevel:u}=s;s.autoLevelEnabled||(s.loadLevel=-1);const f=null==(r=t.frag)?void 0:r.type,g=(f===De&&e===S.FRAG_PARSING_ERROR||"audio"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:t})=>i.audioCodec!==t)),m="video"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR)&&h.some((({codecSet:t,audioCodec:e})=>i.codecSet!==t&&i.audioCodec===e)),{type:p,groupId:v}=null!=(n=t.context)?n:{};for(let s=h.length;s--;){const r=(s+d)%h.length;if(r!==d&&r>=c&&r<=u&&0===h[r].loadError){var a,o;const s=h[r];if(e===S.FRAG_GAP&&t.frag){const e=h[r].details;if(e){const s=ms(t.frag,e.fragments,t.frag.start);if(null!=s&&s.gap)continue}}else{if(p===Re&&s.hasAudioGroup(v)||p===be&&s.hasSubtitleGroup(v))continue;if(f===De&&null!=(a=i.audioGroups)&&a.some((t=>s.hasAudioGroup(t)))||f===Ie&&null!=(o=i.subtitleGroups)&&o.some((t=>s.hasSubtitleGroup(t)))||g&&i.audioCodec===s.audioCodec||!g&&i.audioCodec!==s.audioCodec||m&&i.codecSet===s.codecSet)continue}l=r;break}}if(l>-1&&s.loadLevel!==l)return t.levelRetry=!0,this.playlistError=0,{action:Es,flags:Ls,nextAutoLevel:l}}return{action:Es,flags:As}}onErrorOut(t,e){var s;switch(null==(s=e.errorAction)?void 0:s.action){case ys:break;case Es:this.sendAlternateToPenaltyBox(e),e.errorAction.resolved||e.details===S.FRAG_GAP?/MediaSource readyState: ended/.test(e.error.message)&&(this.warn(`MediaSource ended after "${e.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):e.fatal=!0}e.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(t){const e=this.hls,s=t.errorAction;if(!s)return;const{flags:i,hdcpLevel:r,nextAutoLevel:n}=s;switch(i){case Ls:this.switchLevel(t,n);break;case Rs:r&&(e.maxHdcpLevel=We[We.indexOf(r)-1],s.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${e.maxHdcpLevel}" or lower`)}s.resolved||this.switchLevel(t,n)}switchLevel(t,e){void 0!==e&&t.errorAction&&(this.warn(`switching to level ${e} after ${t.details}`),this.hls.nextAutoLevel=e,t.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(t){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=t,this.registerListeners()}setStreamController(t){this.streamController=t}registerListeners(){this.hls.on(E.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(E.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(t,e){const s=this.hls.config;if(s.capLevelOnFPSDrop){const t=e.media instanceof self.HTMLVideoElement?e.media:null;this.media=t,t&&"function"==typeof t.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}checkFPS(t,e,s){const i=performance.now();if(e){if(this.lastTime){const t=i-this.lastTime,r=s-this.lastDroppedFrames,n=e-this.lastDecodedFrames,a=1e3*r/t,o=this.hls;if(o.trigger(E.FPS_DROP,{currentDropped:r,currentDecoded:n,totalDroppedFrames:s}),a>0&&r>o.config.fpsDroppedMonitoringThreshold*n){let t=o.currentLevel;k.warn("drop FPS ratio greater than max allowed value for currentLevel: "+t),t>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=t)&&(t-=1,o.trigger(E.FPS_DROP_LEVEL_CAPPING,{level:t,droppedLevel:o.currentLevel}),o.autoLevelCapping=t,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=e}}checkFPSInterval(){const t=this.media;if(t)if(this.isVideoPlaybackQualityAvailable){const e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Z,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:ya,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Li{constructor(t,e,s){super(t,e,s,"[subtitle-stream-controller]",Ie),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:t}=this;t.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.LEVEL_LOADED,this.onLevelLoaded,this),t.on(E.ERROR,this.onError,this),t.on(E.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(E.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.on(E.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(E.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.on(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(E.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:t}=this;t.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.LEVEL_LOADED,this.onLevelLoaded,this),t.off(E.ERROR,this.onError,this),t.off(E.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(E.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.off(E.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(E.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.off(E.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(E.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(t){this.stopLoad(),this.state=ci,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(t,e){this.mainDetails=e.details}onSubtitleFragProcessed(t,e){const{frag:s,success:i}=e;if(this.fragPrevious=s,this.state=ci,!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const a=s.start;for(let t=0;t=r[t].start&&a<=r[t].end){n=r[t];break}const o=s.start+s.duration;n?n.end=o:(n={start:a,end:o},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null)}onBufferFlushing(t,e){const{startOffset:s,endOffset:i}=e;if(0===s&&i!==Number.POSITIVE_INFINITY){const t=i-1;if(t<=0)return;e.endOffsetSubtitles=Math.max(0,t),this.tracksBuffered.forEach((e=>{for(let s=0;snew Ze(t))):(this.tracksBuffered=[],this.levels=e.map((t=>{const e=new Ze(t);return this.tracksBuffered[e.id]=[],e})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Ie),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(t,e){var s;if(this.currentTrackId=e.id,null==(s=this.levels)||!s.length||-1===this.currentTrackId)return void this.clearInterval();const i=this.levels[this.currentTrackId];null!=i&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.setInterval(500)}onSubtitleTrackLoaded(t,e){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:a}=e;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=r[a];if(a>=r.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(s=o.details)&&s.live){const t=this.mainDetails;if(n.deltaUpdateFailed||!t)return;const e=t.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&e&&(l=e.start,ns(n,l));else n.hasProgramDateTime&&t.hasProgramDateTime?(Zs(n,t),l=n.fragments[0].start):e&&(l=e.start,ns(n,l))}if(o.details=n,this.levelLastLoaded=o,a===i&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===ci)){ms(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(t){const{frag:e,payload:s}=t,i=e.decryptdata,r=this.hls;if(!this.fragContextChanged(e)&&s&&s.byteLength>0&&null!=i&&i.key&&i.iv&&"AES-128"===i.method){const t=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer).catch((t=>{throw r.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const i=performance.now();r.trigger(E.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:t,tdecrypt:i}})})).catch((t=>{this.warn(`${t.name}: ${t.message}`),this.state=ci}))}}doTick(){if(this.media){if(this.state===ci){const{currentTrackId:t,levels:e}=this,s=null==e?void 0:e[t];if(!s||!e.length||!s.details)return;const{config:i}=this,r=this.getLoadPosition(),n=js.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,ke),h=s.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const d=h.fragments,c=d.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-t?0:t;f=ms(g,d,Math.max(d[0].start,a),e),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const e=Oe(this.media.textTracks);for(let s=0;s-1&&this.toggleTrackModes()}registerListeners(){const{hls:t}=this;t.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_PARSED,this.onManifestParsed,this),t.on(E.LEVEL_LOADING,this.onLevelLoading,this),t.on(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(E.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(E.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_PARSED,this.onManifestParsed,this),t.off(E.LEVEL_LOADING,this.onLevelLoading,this),t.off(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(E.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(E.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(t){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,t)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);Oe(this.media.textTracks).forEach((t=>{Fe(t)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.subtitleTracks}onSubtitleTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.subtitlePreference;if(!r&&e){this.selectDefaultTrack=!1;const s=Fs(e,t);if(s>-1)r=t[s];else{const t=Fs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const n={subtitleTracks:t};this.log(`Updating subtitle tracks, ${t.length} track(s) found in "${null==s?void 0:s.join(",")}" group-id`),this.hls.trigger(E.SUBTITLE_TRACKS_UPDATED,n),-1!==i&&-1===this.trackId&&this.setSubtitleTrack(i)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(t){const e=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const t=this.tracksInGroup[i];return this.setSubtitleTrack(i),t}if(s)return null;{const s=Fs(t,e);if(s>-1)return e[s]}}}return null}loadPlaylist(t){super.loadPlaylist();const e=this.currentTrack;if(this.shouldLoadPlaylist(e)&&e){const s=e.id,i=e.groupId;let r=e.url;if(t)try{r=t.addDirectives(r)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}this.log(`Loading subtitle playlist for id ${s}`),this.hls.trigger(E.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null})}}toggleTrackModes(){const{media:t}=this;if(!t)return;const e=Oe(t.textTracks),s=this.currentTrack;let i;if(s&&(i=e.filter((t=>_r(s,t)))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(e).forEach((t=>{"disabled"!==t.mode&&t!==i&&(t.mode="disabled")})),i){const t=this.subtitleDisplay?"showing":"hidden";i.mode!==t&&(i.mode=t)}}setSubtitleTrack(t){const e=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=t);if(t<-1||t>=e.length||!p(t))return void this.warn(`Invalid subtitle track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t]||null;if(this.trackId=t,this.currentTrack=i,this.toggleTrackModes(),!i)return void this.hls.trigger(E.SUBTITLE_TRACK_SWITCH,{id:t});const r=!!i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${t}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=i;this.hls.trigger(E.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const d=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(d)}},timelineController:class{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(E.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(E.FRAG_LOADING,this.onFragLoading,this),t.on(E.FRAG_LOADED,this.onFragLoaded,this),t.on(E.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(E.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(E.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(E.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(E.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(E.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(E.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(E.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(E.FRAG_LOADING,this.onFragLoading,this),t.off(E.FRAG_LOADED,this.onFragLoaded,this),t.off(E.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(E.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(E.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(E.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(E.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const t=new en(this,"textTrack1"),e=new en(this,"textTrack2"),s=new en(this,"textTrack3"),i=new en(this,"textTrack4");this.cea608Parser1=new Jr(1,t,e),this.cea608Parser2=new Jr(3,s,i)}}addCues(t,e,s,i,r){let n=!1;for(let t=r.length;t--;){const i=r[t],d=(a=i[0],o=i[1],l=e,h=s,Math.min(o,h)-Math.max(a,l));if(d>=0&&(i[0]=Math.min(i[0],e),i[1]=Math.max(i[1],s),n=!0,d/(s-e)>.5))return}var a,o,l,h;if(n||r.push([e,s]),this.config.renderTextTracksNatively){const r=this.captionsTracks[t];this.Cues.newCue(r,e,s,i)}else{const r=this.Cues.newCue(null,e,s,i);this.hls.trigger(E.CUES_PARSED,{type:"captions",cues:r,track:t})}}onInitPtsFound(t,{frag:e,id:s,initPTS:i,timescale:r}){const{unparsedVttFrags:n}=this;"main"===s&&(this.initPTS[e.cc]={baseTime:i,timescale:r}),n.length&&(this.unparsedVttFrags=[],n.forEach((t=>{this.onFragLoaded(E.FRAG_LOADED,t)})))}getExistingTrack(t,e){const{media:s}=this;if(s)for(let i=0;i{Fe(t[e]),delete t[e]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const e=t.textTracks;if(e)for(let t=0;tt.textCodec===yn));if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(wr(this.tracks,s))return void(this.tracks=s);if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const t=this.media,e=t?Oe(t.textTracks):null;if(this.tracks.forEach(((t,s)=>{let i;if(e){let s=null;for(let i=0;inull!==t)).map((t=>t.label));t.length&&k.warn(`Media element contains unused subtitle tracks: ${t.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const t=this.tracks.map((t=>({label:t.name,kind:t.type.toLowerCase(),default:t.default,subtitleTrack:t})));this.hls.trigger(E.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:t})}}}onManifestLoaded(t,e){this.config.enableCEA708Captions&&e.captions&&e.captions.forEach((t=>{const e=/(?:CC|SERVICE)([1-4])/.exec(t.instreamId);if(!e)return;const s=`textTrack${e[1]}`,i=this.captionsProperties[s];i&&(i.label=t.name,t.lang&&(i.languageCode=t.lang),i.media=t)}))}closedCaptionsForLevel(t){const e=this.hls.levels[t.level];return null==e?void 0:e.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,e){if(this.enabled&&e.frag.type===ke){var s,i;const{cea608Parser1:t,cea608Parser2:r,lastSn:n}=this,{cc:a,sn:o}=e.frag,l=null!=(s=null==(i=e.part)?void 0:i.index)?s:-1;t&&r&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(t.reset(),r.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(t,e){const{frag:s,payload:i}=e;if(s.type===Ie)if(i.byteLength){const t=s.decryptdata,r="stats"in e;if(null==t||!t.encrypted||r){const t=this.tracks[s.level],r=this.vttCCs;r[s.cc]||(r[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),t&&t.textCodec===yn?this._parseIMSC1(s,i):this._parseVTTs(e)}}else this.hls.trigger(E.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,e){const s=this.hls;Ln(e,this.initPTS[t.cc],(e=>{this._appendCues(e,t.level),s.trigger(E.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})}),(e=>{k.log(`Failed to parse IMSC1: ${e}`),s.trigger(E.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:e})}))}_parseVTTs(t){var e;const{frag:s,payload:i}=t,{initPTS:r,unparsedVttFrags:n}=this,a=r.length-1;if(!r[s.cc]&&-1===a)return void n.push(t);const o=this.hls;vn(null!=(e=s.initSegment)&&e.data?Ut(s.initSegment.data,new Uint8Array(i)):i,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,(t=>{this._appendCues(t,s.level),o.trigger(E.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})}),(e=>{const r="Missing initPTS for VTT MPEGTS"===e.message;r?n.push(t):this._fallbackToIMSC1(s,i),k.log(`Failed to parse VTT cue: ${e}`),r&&a>s.cc||o.trigger(E.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:e})}))}_fallbackToIMSC1(t,e){const s=this.tracks[t.level];s.textCodec||Ln(e,this.initPTS[t.cc],(()=>{s.textCodec=yn,this._parseIMSC1(t,e)}),(()=>{s.textCodec="wvtt"}))}_appendCues(t,e){const s=this.hls;if(this.config.renderTextTracksNatively){const s=this.textTracks[e];if(!s||"disabled"===s.mode)return;t.forEach((t=>Pe(s,t)))}else{const i=this.tracks[e];if(!i)return;const r=i.default?"default":"subtitles"+e;s.trigger(E.CUES_PARSED,{type:"subtitles",cues:t,track:r})}}onFragDecrypted(t,e){const{frag:s}=e;s.type===Ie&&this.onFragLoaded(E.FRAG_LOADED,e)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,e){this.initCea608Parsers();const{cea608Parser1:s,cea608Parser2:i}=this;if(!this.enabled||!s||!i)return;const{frag:r,samples:n}=e;if(r.type!==ke||"NONE"!==this.closedCaptionsForLevel(r))for(let t=0;tMe(t[i],e,s)))}if(this.config.renderTextTracksNatively&&0===e&&void 0!==i){const{textTracks:t}=this;Object.keys(t).forEach((s=>Me(t[s],e,i)))}}}extractCea608Data(t){const e=[[],[]],s=31&t[0];let i=2;for(let r=0;r0&&-1===t?(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e,this.state=ci):(this.loadedmetadata=!1,this.state=mi),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}doTick(){switch(this.state){case ci:this.doTickIdle();break;case mi:{var t;const{levels:e,trackId:s}=this,i=null==e||null==(t=e[s])?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=Ti}break}case gi:{var e;const t=performance.now(),s=this.retryDate;if(!s||t>=s||null!=(e=this.media)&&e.seeking){const{levels:t,trackId:e}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==t?void 0:t[e])||null),this.state=ci}break}case Ti:{const t=this.waitingData;if(t){const{frag:e,part:s,cache:i,complete:r}=t;if(void 0!==this.initPTS[e.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=fi;const t={frag:e,part:s,payload:i.flush(),networkDetails:null};this._handleFragmentLoadProgress(t),r&&super._handleFragmentLoadComplete(t)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${e.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const t=this.getLoadPosition(),s=js.bufferInfo(this.mediaBuffer,t,this.config.maxBufferHole);ps(s.end,this.config.maxFragLookUpTolerance,e)<0&&(this.log(`Waiting fragment cc (${e.cc}) @ ${e.start} cancelled because another fragment at ${s.end} is needed`),this.clearWaitingFragment())}}else this.state=ci}}this.onTickEnd()}clearWaitingFragment(){const t=this.waitingData;t&&(this.fragmentTracker.removeFragment(t.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=ci)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:t}=this;null!=t&&t.readyState&&(this.lastCurrentTime=t.currentTime)}doTickIdle(){const{hls:t,levels:e,media:s,trackId:i}=this,r=t.config;if(!s&&(this.startFragRequested||!r.startFragPrefetch)||null==e||!e[i])return;const n=e[i],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=mi);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,P,De));const l=this.getFwdBufferInfo(o,De);if(null===l)return;const{bufferedTrack:h,switchingTrack:d}=this;if(!d&&this._streamEnded(l,a))return t.trigger(E.BUFFER_EOS,{type:"audio"}),void(this.state=yi);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,ke),u=l.len,f=this.getMaxBufferLength(null==c?void 0:c.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(d&&s){const t=this.getLoadPosition();h&&!Cr(d.attrs,h.attrs)&&(p=t),a.PTSKnown&&tm||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),s.currentTime=m+.05)}if(u>=f&&!d&&pc.end+a.targetduration;if(T||(null==c||!c.len)&&l.len){const t=this.getAppendedFrag(v.start,ke);if(null===t)return;if(y||(y=!!t.gap||!!T&&0===c.len),T&&!y||y&&l.nextStart&&l.nextStartnew Ze(t)))}onAudioTrackSwitching(t,e){const s=!!e.url;this.trackId=e.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?this.setInterval(100):this.resetTransmuxer(),s?(this.switchingTrack=e,this.state=ci,this.flushAudioIfNeeded(e)):(this.switchingTrack=null,this.bufferedTrack=e,this.state=di),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(t,e){this.mainDetails=e.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(E.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(t,e){var s;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=e);const{levels:i}=this,{details:r,id:n}=e;if(!i)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=i[n];let o=0;if(r.live||null!=(s=a.details)&&s.live){this.checkLiveUpdate(r);const t=this.mainDetails;if(r.deltaUpdateFailed||!t)return;var l;if(!a.details&&r.hasProgramDateTime&&t.hasProgramDateTime)Zs(r,t),o=r.fragments[0].start;else o=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,o),this.state!==mi||this.waitForCdnTuneIn(r)||(this.state=ci),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(s.start);const d=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new Ir(this.hls,De,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[s.cc],f=null==(e=s.initSegment)?void 0:e.data;if(void 0!==u){const t=!1,e=i?i.index:-1,n=-1!==e,a=new qs(s.level,s.sn,s.stats.chunkCount,r.byteLength,e,n);c.push(r,f,d,"",s,i,h.totalduration,t,a,u)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:t}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ai,complete:!1};t.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Ti}}_handleFragmentLoadComplete(t){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(t)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(t,e){const s=e.tracks.audio;s&&(this.mediaBuffer=s.buffer||null),e.tracks.video&&(this.videoBuffer=e.tracks.video.buffer||null)}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s.type===De)if(this.fragContextChanged(s))this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==s.sn){this.fragPrevious=s;const t=this.switchingTrack;t&&(this.bufferedTrack=t,this.switchingTrack=null,this.hls.trigger(E.AUDIO_TRACK_SWITCHED,u({},t)))}this.fragBufferedComplete(s,i)}else if(!this.loadedmetadata&&s.type===ke){const t=this.videoBuffer||this.media;if(t){js.getBuffered(t).length&&(this.loadedmetadata=!0)}}}onError(t,e){var s;if(e.fatal)this.state=Ei;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(De,e);break;case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==mi||(null==(s=e.context)?void 0:s.type)!==Re||(this.state=ci);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"audio"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}onBufferFlushing(t,{type:e}){e!==F&&(this.flushing=!0)}onBufferFlushed(t,{type:e}){if(e!==F){this.flushing=!1,this.bufferFlushed=!0,this.state===yi&&(this.state=ci);const t=this.mediaBuffer||this.media;t&&(this.afterBufferFlushed(t,e,De),this.tick())}}_handleTransmuxComplete(t){var e;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:d}=h,{audio:c,text:u,id3:f,initSegment:g}=r;if(!this.fragContextChanged(o)&&d){if(this.state=pi,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,g.tracks,t,n),i.trigger(E.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:g.tracks})}if(c){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=c;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(c,o,l,n)}if(null!=f&&null!=(e=f.samples)&&e.length){const t=m({id:s,frag:o,details:d},f);i.trigger(E.FRAG_PARSING_METADATA,t)}if(u){const t=m({id:s,frag:o,details:d},u);i.trigger(E.FRAG_PARSING_USERDATA,t)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(t,e,s,i){if(this.state!==pi)return;e.video&&delete e.video;const r=e.audio;if(!r)return;r.id="audio";const n=t.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&1===n.split(",").length&&(r.levelCodec=n),this.hls.trigger(E.BUFFER_CODECS,e);const a=r.initSegment;if(null!=a&&a.byteLength){const t={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:a};this.hls.trigger(E.BUFFER_APPENDING,t)}this.tickImmediate()}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);var r;if(this.fragCurrent=t,this.switchingTrack||i===Bs||i===Gs)if("initSegment"===t.sn)this._loadInitSegment(t,e);else if(null!=(r=e.details)&&r.live&&!this.initPTS[t.cc]){this.log(`Waiting for video PTS in continuity counter ${t.cc} of live stream before loading audio fragment ${t.sn} of level ${this.trackId}`),this.state=Ti;const s=this.mainDetails;s&&s.fragments[0].start!==e.details.fragments[0].start&&Zs(e.details,s)}else this.startFragRequested=!0,super.loadFragment(t,e,s);else this.clearTrackerIfNeeded(t)}flushAudioIfNeeded(t){const{media:e,bufferedTrack:s}=this,i=null==s?void 0:s.attrs,r=t.attrs;e&&i&&(i.CHANNELS!==r.CHANNELS||s.name!==t.name||s.lang!==t.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(t){const{hls:e}=this;this.flushAudioIfNeeded(t),this.bufferedTrack=t,this.switchingTrack=null,e.trigger(E.AUDIO_TRACK_SWITCHED,u({},t))}},audioTrackController:class extends bs{constructor(t){super(t,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:t}=this;t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_PARSED,this.onManifestParsed,this),t.on(E.LEVEL_LOADING,this.onLevelLoading,this),t.on(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(E.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.on(E.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_PARSED,this.onManifestParsed,this),t.off(E.LEVEL_LOADING,this.onLevelLoading,this),t.off(E.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(E.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.off(E.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.audioTracks||[]}onAudioTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Audio track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.audioPreference;if(!r&&e){const s=Fs(e,t,Os);if(s>-1)r=t[s];else{const t=Fs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const a={audioTracks:t};this.log(`Updating audio tracks, ${t.length} track(s) found in group(s): ${null==s?void 0:s.join(",")}`),this.hls.trigger(E.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==i&&-1===o)this.setAudioTrack(i);else if(t.length&&-1===o){var n;const e=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${t.length}`);this.warn(e.message),this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:e})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(t,e){!e.fatal&&e.context&&(e.context.type!==Re||e.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(e.context.groupId)||(this.requestScheduled=-1,this.checkRetry(e)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(t){this.selectDefaultTrack=!1,this.setAudioTrack(t)}setAudioOption(t){const e=this.hls;if(e.config.audioPreference=t,t){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&Ms(t,i,Os))return i;const r=Fs(t,this.tracksInGroup,Os);if(r>-1){const t=this.tracksInGroup[r];return this.setAudioTrack(r),t}if(i){let i=e.loadLevel;-1===i&&(i=e.firstAutoLevel);const r=function(t,e,s,i,r){const n=e[i],a=e.reduce(((t,e,s)=>{const i=e.uri;return(t[i]||(t[i]=[])).push(s),t}),{})[n.uri];a.length>1&&(i=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),d=Ns(e,i,(e=>{if(e.videoRange!==o||e.frameRate!==l||e.codecSet.substring(0,4)!==h)return!1;const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Fs(t,n,r)>-1}));return d>-1?d:Ns(e,i,(e=>{const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Fs(t,n,r)>-1}))}(t,e.levels,s,i,Os);if(-1===r)return null;e.nextLoadLevel=r}if(t.channels||t.audioCodec){const e=Fs(t,s);if(e>-1)return s[e]}}}return null}setAudioTrack(t){const e=this.tracksInGroup;if(t<0||t>=e.length)return void this.warn(`Invalid audio track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t],r=i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;if(this.log(`Switching to audio-track ${t} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=t,this.currentTrack=i,this.hls.trigger(E.AUDIO_TRACK_SWITCHING,u({},i)),r)return;const n=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(n)}findTrackId(t){const e=this.tracksInGroup;for(let s=0;s{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=t=>{try{this.apply(t,{ot:Mn.MANIFEST,su:!this.initialized})}catch(t){k.warn("Could not generate manifest CMCD data.",t)}},this.applyFragmentData=t=>{try{const e=t.frag,s=this.hls.levels[e.level],i=this.getObjectType(e),r={d:1e3*e.duration,ot:i};i!==Mn.VIDEO&&i!==Mn.AUDIO&&i!=Mn.MUXED||(r.br=s.bitrate/1e3,r.tb=this.getTopBandwidth(i)/1e3,r.bl=this.getBufferLength(i)),this.apply(t,r)}catch(t){k.warn("Could not generate segment CMCD data.",t)}},this.hls=t;const e=this.config=t.config,{cmcd:s}=e;null!=s&&(e.pLoader=this.createPlaylistLoader(),e.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||function(){try{return crypto.randomUUID()}catch(t){try{const t=URL.createObjectURL(new Blob),e=t.toString();return URL.revokeObjectURL(t),e.slice(e.lastIndexOf("/")+1)}catch(t){let e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const s=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?s:3&s|8).toString(16)}))}}}(),this.cid=s.contentId,this.useHeaders=!0===s.useHeaders,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const t=this.hls;t.on(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(E.MEDIA_DETACHED,this.onMediaDetached,this),t.on(E.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const t=this.hls;t.off(E.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(E.MEDIA_DETACHED,this.onMediaDetached,this),t.off(E.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(t,e){var s,i;this.audioBuffer=null==(s=e.tracks.audio)?void 0:s.buffer,this.videoBuffer=null==(i=e.tracks.video)?void 0:i.buffer}createData(){var t;return{v:1,sf:On.HLS,sid:this.sid,cid:this.cid,pr:null==(t=this.media)?void 0:t.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(t,e={}){m(e,this.createData());const s=e.ot===Mn.INIT||e.ot===Mn.VIDEO||e.ot===Mn.MUXED;this.starved&&s&&(e.bs=!0,e.su=!0,this.starved=!1),null==e.su&&(e.su=this.buffering);const{includeKeys:i}=this;i&&(e=Object.keys(e).reduce(((t,s)=>(i.includes(s)&&(t[s]=e[s]),t)),{})),this.useHeaders?(t.headers||(t.headers={}),aa(t.headers,e)):t.url=la(t.url,e)}getObjectType(t){const{type:e}=t;return"subtitle"===e?Mn.TIMED_TEXT:"initSegment"===t.sn?Mn.INIT:"audio"===e?Mn.AUDIO:"main"===e?this.hls.audioTracks.length?Mn.VIDEO:Mn.MUXED:void 0}getTopBandwidth(t){let e,s=0;const i=this.hls;if(t===Mn.AUDIO)e=i.audioTracks;else{const t=i.maxAutoLevel,s=t>-1?t+1:i.levels.length;e=i.levels.slice(0,s)}for(const t of e)t.bitrate>s&&(s=t.bitrate);return s>0?s:NaN}getBufferLength(t){const e=this.hls.media,s=t===Mn.AUDIO?this.audioBuffer:this.videoBuffer;if(!s||!e)return NaN;return 1e3*js.bufferInfo(s,e.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:t}=this.config,e=this.applyPlaylistData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}createFragmentLoader(){const{fLoader:t}=this.config,e=this.applyFragmentData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}},contentSteeringController:class{constructor(t){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=t,this.log=k.log.bind(k,"[content-steering]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(E.MANIFEST_PARSED,this.onManifestParsed,this),t.on(E.ERROR,this.onError,this)}unregisterListeners(){const t=this.hls;t&&(t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(E.MANIFEST_PARSED,this.onManifestParsed,this),t.off(E.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const t=1e3*this.timeToLoad-(performance.now()-this.updated);if(t>0)return void this.scheduleRefresh(this.uri,t)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(t){const e=this.levels;e&&(this.levels=e.filter((e=>e!==t)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(t,e){const{contentSteering:s}=e;null!==s&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(t,e){this.audioTracks=e.audioTracks,this.subtitleTracks=e.subtitleTracks}onError(t,e){const{errorAction:s}=e;if((null==s?void 0:s.action)===Es&&s.flags===As){const t=this.levels;let i=this.pathwayPriority,r=this.pathwayId;if(e.context){const{groupId:s,pathwayId:i,type:n}=e.context;s&&t?r=this.getPathwayForGroupId(s,n,r):i&&(r=i)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!i&&t&&(i=t.reduce(((t,e)=>(-1===t.indexOf(e.pathwayId)&&t.push(e.pathwayId),t)),[])),i&&i.length>1&&(this.updatePathwayPriority(i),s.resolved=this.pathwayId!==r),s.resolved||k.warn(`Could not resolve ${e.details} ("${e.error.message}") with content-steering for Pathway: ${r} levels: ${t?t.length:t} priorities: ${JSON.stringify(i)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(t){this.levels=t;let e=this.getLevelsForPathway(this.pathwayId);if(0===e.length){const s=t[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),e=this.getLevelsForPathway(s),this.pathwayId=s}return e.length!==t.length?(this.log(`Found ${e.length}/${t.length} levels in Pathway "${this.pathwayId}"`),e):t}getLevelsForPathway(t){return null===this.levels?[]:this.levels.filter((e=>t===e.pathwayId))}updatePathwayPriority(t){let e;this.pathwayPriority=t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach((t=>{i-s[t]>3e5&&delete s[t]}));for(let i=0;i0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,ls(e),this.hls.trigger(E.LEVELS_UPDATED,{levels:e});const t=this.hls.levels[n];a&&t&&this.levels&&(t.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&t.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${t.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(t,e,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let s=0;s{const{ID:r,"BASE-ID":n,"URI-REPLACEMENT":a}=t;if(e.some((t=>t.pathwayId===r)))return;const o=this.getLevelsForPathway(n).map((t=>{const e=new w(t.attrs);e["PATHWAY-ID"]=r;const n=e.AUDIO&&`${e.AUDIO}_clone_${r}`,o=e.SUBTITLES&&`${e.SUBTITLES}_clone_${r}`;n&&(s[e.AUDIO]=n,e.AUDIO=n),o&&(i[e.SUBTITLES]=o,e.SUBTITLES=o);const l=da(t.uri,e["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Ze({attrs:e,audioCodec:t.audioCodec,bitrate:t.bitrate,height:t.height,name:t.name,url:l,videoCodec:t.videoCodec,width:t.width});if(t.audioGroups)for(let e=1;e{this.log(`Loaded steering manifest: "${i}"`);const n=t.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,i).href}catch(t){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||s.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:i.toString()};this.hls.trigger(E.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(t,e,s,i)=>{if(this.log(`Error loading steering manifest: ${t.code} ${t.text} (${e.url})`),this.stopLoad(),410===t.code)return this.enabled=!1,void this.log(`Steering manifest ${e.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==t.code)this.scheduleRefresh(this.uri||e.url,r);else{const t=this.loader;if("function"==typeof(null==t?void 0:t.getResponseHeader)){const e=t.getResponseHeader("Retry-After");e&&(r=1e3*parseFloat(e))}this.log(`Steering manifest ${e.url} rate limited`)}},onTimeout:(t,e,s)=>{this.log(`Timeout loading steering manifest (${e.url})`),this.scheduleRefresh(this.uri||e.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,o,l)}scheduleRefresh(t,e=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var e;const s=null==(e=this.hls)?void 0:e.media;!s||s.ended?this.scheduleRefresh(t,1e3*this.timeToLoad):this.loadSteeringManifest(t)}),e)}}});function Ta(t){return t&&"object"==typeof t?Array.isArray(t)?t.map(Ta):Object.keys(t).reduce(((e,s)=>(e[s]=Ta(t[s]),e)),{}):t}function Sa(t){const e=t.loader;if(e!==ga&&e!==ua)k.log("[config]: Custom loader detected, cannot enable progressive streaming"),t.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(t){}return!1})()&&(t.loader=ga,t.progressive=!0,t.enableSoftwareAES=!0,k.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let La;class Aa extends bs{constructor(t,e){super(t,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=e,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(E.MANIFEST_LOADING,this.onManifestLoading,this),t.on(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(E.LEVEL_LOADED,this.onLevelLoaded,this),t.on(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(E.FRAG_BUFFERED,this.onFragBuffered,this),t.on(E.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(E.MANIFEST_LOADING,this.onManifestLoading,this),t.off(E.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(E.LEVEL_LOADED,this.onLevelLoaded,this),t.off(E.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(E.FRAG_BUFFERED,this.onFragBuffered,this),t.off(E.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((t=>{t.loadError=0,t.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,e){this.resetLevels()}onManifestLoaded(t,e){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let a=!1,o=!1,l=!1;e.levels.forEach((t=>{var e,h;const d=t.attrs;let{audioCodec:c,videoCodec:u}=t;-1!==(null==(e=c)?void 0:e.indexOf("mp4a.40.34"))&&(La||(La=/chrome|firefox/i.test(navigator.userAgent)),La&&(t.audioCodec=c=void 0)),c&&(t.audioCodec=c=oe(c,s)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=t.videoCodec=function(t){const e=t.split(".");if(e.length>2){let t=e.shift()+".";return t+=parseInt(e.shift()).toString(16),t+=("000"+parseInt(e.shift()).toString(16)).slice(-4),t}return t}(u));const{width:f,height:g,unknownCodecs:m}=t;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!c),null!=m&&m.length||c&&!te(c,"audio",s)||u&&!te(u,"video",s))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":E,RESOLUTION:T,"VIDEO-RANGE":S}=d,L=`${`${E||"."}-`}${t.bitrate}-${T}-${v}-${p}-${S}-${y}`;if(r[L])if(r[L].uri===t.url||t.attrs["PATHWAY-ID"])r[L].addGroupId("audio",d.AUDIO),r[L].addGroupId("text",d.SUBTITLES);else{const e=n[L]+=1;t.attrs["PATHWAY-ID"]=new Array(e+1).join(".");const s=new Ze(t);r[L]=s,i.push(s)}else{const e=new Ze(t);r[L]=e,n[L]=1,i.push(e)}})),this.filterAndSortMediaOptions(i,e,a,o,l)}filterAndSortMediaOptions(t,e,s,i,r){let n=[],a=[],o=t;if((s||i)&&r&&(o=o.filter((({videoCodec:t,videoRange:e,width:s,height:i})=>{return(!!t||!(!s||!i))&&(!!(r=e)&&je.indexOf(r)>-1);var r}))),0===o.length)return void Promise.resolve().then((()=>{if(this.hls){e.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(e.levels[0].attrs)}`);const t=new Error("no level with compatible codecs found in manifest");this.hls.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:e.url,error:t,reason:t.message})}}));if(e.audioTracks){const{preferManagedMediaSource:t}=this.hls.config;n=e.audioTracks.filter((e=>!e.audioCodec||te(e.audioCodec,"audio",t))),Ra(n)}e.subtitles&&(a=e.subtitles,Ra(a));const l=o.slice(0);o.sort(((t,e)=>{if(t.attrs["HDCP-LEVEL"]!==e.attrs["HDCP-LEVEL"])return(t.attrs["HDCP-LEVEL"]||"")>(e.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&t.height!==e.height)return t.height-e.height;if(t.frameRate!==e.frameRate)return t.frameRate-e.frameRate;if(t.videoRange!==e.videoRange)return je.indexOf(t.videoRange)-je.indexOf(e.videoRange);if(t.videoCodec!==e.videoCodec){const s=ie(t.videoCodec),i=ie(e.videoCodec);if(s!==i)return i-s}if(t.uri===e.uri&&t.codecSet!==e.codecSet){const s=re(t.codecSet),i=re(e.codecSet);if(s!==i)return i-s}return t.averageBitrate!==e.averageBitrate?t.averageBitrate-e.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let t=0;ts&&s===Ea.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=t)}break}const c=r&&!i,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:e.sessionData,sessionKeys:e.sessionKeys,firstLevel:this._firstLevel,stats:e.stats,audio:r,video:i,altAudio:!c&&n.some((t=>!!t.url))};this.hls.trigger(E.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(t){const e=this._levels;if(0===e.length)return;if(t<0||t>=e.length){const s=new Error("invalid level idx"),i=t<0;if(this.hls.trigger(E.ERROR,{type:T.OTHER_ERROR,details:S.LEVEL_SWITCH_ERROR,level:t,fatal:i,error:s,reason:s.message}),i)return;t=Math.min(t,e.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=e[t],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=n,s===t&&n.details&&i&&r===a)return;this.log(`Switching to level ${t} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${s}${r?" with Pathway "+r:""}`);const o={level:t,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(E.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const t=this.switchParams(n.uri,null==i?void 0:i.details,l);this.loadPlaylist(t)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(void 0===this._startLevel){const t=this.hls.config.startLevel;return void 0!==t?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}onError(t,e){!e.fatal&&e.context&&e.context.type===Ae&&e.context.level===this.level&&this.checkRetry(e)}onFragBuffered(t,{frag:e}){if(void 0!==e&&e.type===ke){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return;const s=this._levels[e.level];null!=s&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(t,e){var s;const{level:i,details:r}=e,n=this._levels[i];var a;if(!n)return this.warn(`Invalid level index ${i}`),void(null!=(a=e.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));i===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(i,e,n.details)):null!=(s=e.deliveryDirectives)&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist();const e=this.currentLevelIndex,s=this.currentLevel;if(s&&this.shouldLoadPlaylist(s)){let i=s.uri;if(t)try{i=t.addDirectives(i)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}const r=s.attrs["PATHWAY-ID"];this.log(`Loading level index ${e}${void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:""} with${r?" Pathway "+r:""} ${i}`),this.clearTimer(),this.hls.trigger(E.LEVEL_LOADING,{url:i,level:e,pathwayId:s.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}removeLevel(t){var e;const s=this._levels.filter(((e,s)=>s!==t||(this.steering&&this.steering.removeLevel(e),e===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,e.details&&e.details.fragments.forEach((t=>t.level=-1))),!1)));ls(s),this._levels=s,this.currentLevelIndex>-1&&null!=(e=this.currentLevel)&&e.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(E.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:e}){this._levels=e}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:e,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==e&&(this._maxAutoLevel=e,this.hls.trigger(E.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:e,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function Ra(t){const e={};t.forEach((t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++}))}class ba{constructor(t){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyUriToKeyInfo){const i=this.keyUriToKeyInfo[s].loader;if(i){var e;if(t&&t!==(null==(e=i.context)?void 0:e.frag.type))return;i.abort()}}}detach(){for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t];(e.mediaKeySessionContext||e.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t].loader;e&&e.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(t,e=S.KEY_LOAD_ERROR,s,i,r){return new ri({type:T.NETWORK_ERROR,details:e,fatal:!1,frag:t,response:r,error:s,networkDetails:i})}loadClear(t,e){if(this.emeController&&this.config.emeEnabled){const{sn:s,cc:i}=t;for(let t=0;t{r.setKeyFormat(t)}));break}}}}load(t){return!t.decryptdata&&t.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(t).then((e=>this.loadInternal(t,e))):this.loadInternal(t)}loadInternal(t,e){var s,i;e&&t.setKeyFormat(e);const r=t.decryptdata;if(!r){const s=new Error(e?`Expected frag.decryptdata to be defined after setting format ${e}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,s))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(s=a)&&s.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:t,keyInfo:a});var o;if(null!=(i=a)&&i.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((e=>(r.key=e.keyInfo.decryptdata.key,{frag:t,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,t):this.loadKeyEME(a,t);case"AES-128":return this.loadKeyHTTP(a,t);default:return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(t,e){const s={frag:e,keyInfo:t};if(this.emeController&&this.config.emeEnabled){const e=this.emeController.loadKey(s);if(e)return(t.keyLoadPromise=e.then((e=>(t.mediaKeySessionContext=e,s)))).catch((e=>{throw t.keyLoadPromise=null,e}))}return Promise.resolve(s)}loadKeyHTTP(t,e){const s=this.config,i=new(0,s.loader)(s);return e.keyLoader=t.loader=i,t.keyLoadPromise=new Promise(((r,n)=>{const a={keyInfo:t,frag:e,responseType:"arraybuffer",url:t.decryptdata.uri},o=s.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{const{frag:a,keyInfo:o,url:l}=s;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,S.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),i));o.decryptdata.key=a.decryptdata.key=new Uint8Array(t.data),a.keyLoader=null,o.loader=null,r({frag:a,keyInfo:o})},onError:(t,s,i,r)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_ERROR,new Error(`HTTP Error ${t.code} loading key ${t.text}`),i,u({url:a.url,data:void 0},t)))},onTimeout:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),i))},onAbort:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.INTERNAL_ABORTED,new Error("key loading aborted"),i))}};i.load(a,l,h)}))}resetLoader(t){const{frag:e,keyInfo:s,url:i}=t,r=s.loader;e.keyLoader===r&&(e.keyLoader=null,s.loader=null),delete this.keyUriToKeyInfo[i],r&&r.destroy()}}function ka(){return self.SourceBuffer||self.WebKitSourceBuffer}function Da(){if(!Jt())return!1;const t=ka();return!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove}class Ia{constructor(t,e,s,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=t,this.media=e,this.fragmentTracker=s,this.hls=i}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(t,e){const{config:s,media:i,stalled:r}=this;if(null===i)return;const{currentTime:n,seeking:a}=i,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==t){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const t=self.performance.now()-r;k.warn(`playback not stuck anymore @${n}, after ${Math.round(t)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(i.paused&&!a||i.ended||0===i.playbackRate||!js.getBuffered(i).length)return void(this.nudgeRetry=0);const h=js.bufferInfo(i,n,0),d=h.nextStart||0;if(a){const t=h.len>2,s=!d||e&&e.start<=n||d-n>2&&!this.fragmentTracker.getPartialFragment(n);if(t||s)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(h.len>0)&&!d)return;const t=Math.max(d,h.start||0)-n,e=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,s=(null==e||null==(c=e.details)?void 0:c.live)?2*e.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(n);if(t>0&&(t<=s||r))return void(i.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const f=u-r;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=js.bufferInfo(i,n,s.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(t,e){const{config:s,fragmentTracker:i,media:r}=this;if(null===r)return;const n=r.currentTime,a=i.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(t.len>s.maxBufferHole||t.nextStart&&t.nextStart-n1e3*s.highBufferWatchdogPeriod&&(k.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(t){const{hls:e,media:s,stallReported:i}=this;if(!i&&s){this.stallReported=!0;const i=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${JSON.stringify(t)})`);k.warn(i.message),e.trigger(E.ERROR,{type:T.MEDIA_ERROR,details:S.BUFFER_STALLED_ERROR,fatal:!1,error:i,buffer:t.len})}}_trySkipBufferHole(t){const{config:e,hls:s,media:i}=this;if(null===i)return 0;const r=i.currentTime,n=js.bufferInfo(i,r,0),a=r0&&n.len<1&&i.readyState<3,h=a-r;if(h>0&&(o||l)){if(h>e.maxBufferHole){const{fragmentTracker:e}=this;let s=!1;if(0===r){const t=e.getAppendedFrag(0,ke);t&&a1?(t=0,this.bitrateTest=!0):t=s.firstAutoLevel),s.nextLoadLevel=t,this.level=s.loadLevel,this.loadedmetadata=!1}e>0&&-1===t&&(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e),this.state=ci,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this._forceStartLoad=!0,this.state=di}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Si:{const{levels:t,level:e}=this,s=null==t?void 0:t[e],i=null==s?void 0:s.details;if(i&&(!i.live||this.levelLastLoaded===s)){if(this.waitForCdnTuneIn(i))break;this.state=ci;break}if(this.hls.nextLoadLevel!==this.level){this.state=ci;break}break}case gi:{var t;const e=self.performance.now(),s=this.retryDate;if(!s||e>=s||null!=(t=this.media)&&t.seeking){const{levels:t,level:e}=this,s=null==t?void 0:t[e];this.resetStartWhenNotLoaded(s||null),this.state=ci}}}this.state===ci&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:e,levels:s,media:i}=this;if(null===e||!i&&(this.startFragRequested||!t.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=t.nextLoadLevel;if(null==s||!s[r])return;const n=s[r],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const t={};return this.altAudio&&(t.type="video"),this.hls.trigger(E.BUFFER_EOS,t),void(this.state=yi)}t.loadLevel!==r&&-1===t.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=t.nextLoadLevel=r;const l=n.details;if(!l||this.state===Si||l.live&&this.levelLastLoaded!==n)return this.level=r,void(this.state=Si);const h=a.len,d=this.getMaxBufferLength(n.maxBitrate);if(h>=d)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Ks){var f;const t=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,e=l.fragments[t-1];e&&u.cc===e.cc&&(u=e,this.fragmentTracker.removeFragment(e))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const t=this.audioOnly&&!this.altAudio?P:F,e=(t===F?this.videoBuffer:this.mediaBuffer)||this.media;e&&this.afterBufferFlushed(e,t,ke)}u=this.getNextFragmentLoopLoading(u,l,a,ke,d)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,c))}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===Bs||i===Gs?"initSegment"===t.sn?this._loadInitSegment(t,e):this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,e)):(this.startFragRequested=!0,super.loadFragment(t,e,s)):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,ke)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:e}=this;if(null!=e&&e.readyState){let s;const i=this.getAppendedFrag(e.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const t=this.getMainFwdBufferInfo();if(!t||t.len<2*r.targetduration)return}if(!e.paused&&t){const e=t[this.hls.nextLoadLevel],i=this.fragLastKbps;s=i&&this.fragCurrent?this.fragCurrent.duration*e.maxBitrate/(1e3*i)+1:0}else s=0;const n=this.getBufferedFrag(e.currentTime+s);if(n){const t=this.followingBufferedFrag(n);if(t){this.abortCurrentFrag();const e=t.maxStartPTS?t.maxStartPTS:t.start,s=t.duration,i=Math.max(n.end,e+Math.min(Math.max(s-this.config.maxFragLookUpTolerance,s*(this.couldBacktrack?.5:.125)),s*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(i,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const t=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,t&&(t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.state){case ui:case fi:case gi:case pi:case vi:this.state=ci}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(t,e){super.flushMainBuffer(t,e,this.altAudio?"video":null)}onMediaAttached(t,e){super.onMediaAttached(t,e);const s=e.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),s.addEventListener("playing",this.onvplaying),s.addEventListener("seeked",this.onvseeked),this.gapController=new Ia(this.config,s,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:t}=this;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const t=this.media,e=t?t.currentTime:null;p(e)&&this.log(`Media seeked to ${e.toFixed(3)}`);const s=this.getMainFwdBufferInfo();null!==s&&0!==s.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${s?s.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(E.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(t,e){let s=!1,i=!1;e.levels.forEach((t=>{const e=t.audioCodec;e&&(s=s||-1!==e.indexOf("mp4a.40.2"),i=i||-1!==e.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=s&&i&&!function(){var t;const e=ka();return"function"==typeof(null==e||null==(t=e.prototype)?void 0:t.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startFragRequested=!1}onLevelLoading(t,e){const{levels:s}=this;if(!s||this.state!==ci)return;const i=s[e.level];(!i.details||i.details.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(i.details))&&(this.state=Si)}onLevelLoaded(t,e){var s;const{levels:i}=this,r=e.level,n=e.details,a=n.totalduration;if(!i)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=i[r],l=this.fragCurrent;!l||this.state!==fi&&this.state!==gi||l.level!==e.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(s=o.details)&&s.live){var d;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(d=this.levelLastLoaded)?void 0:d.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(E.LEVEL_UPDATED,{details:n,level:r}),this.state===Si){if(this.waitForCdnTuneIn(n))return;this.state=ci}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const a=n[s.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),void this.fragmentTracker.removeFragment(s);const l=a.videoCodec,h=o.PTSKnown||!o.live,d=null==(e=s.initSegment)?void 0:e.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new Ir(this.hls,ke,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,m=new qs(s.level,s.sn,s.stats.chunkCount,r.byteLength,f,g),p=this.initPTS[s.cc];u.push(r,d,c,l,s,i,o.totalduration,h,m,p)}onAudioTrackSwitching(t,e){const s=this.altAudio;if(!!!e.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const t=this.fragCurrent;t&&(this.log("Switching to main audio track, cancel main fragment load"),t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const t=this.hls;s&&(t.trigger(E.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),t.trigger(E.AUDIO_TRACK_SWITCHED,e)}}onAudioTrackSwitched(t,e){const s=e.id,i=!!this.hls.audioTracks[s].url;if(i){const t=this.videoBuffer;t&&this.mediaBuffer!==t&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=t)}this.altAudio=i,this.tick()}onBufferCreated(t,e){const s=e.tracks;let i,r,n=!1;for(const t in s){const e=s[t];if("main"===e.id){if(r=t,i=e,"video"===t){const e=s[t];e&&(this.videoBuffer=e.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s&&s.type!==ke)return;if(this.fragContextChanged(s))return this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===vi&&(this.state=ci));const r=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==s.sn&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}onError(t,e){var s;if(e.fatal)this.state=Ei;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ke,e);break;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==Si||(null==(s=e.context)?void 0:s.type)!==Ae||(this.state=ci);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"main"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}checkBuffer(){const{media:t,gapController:e}=this;if(t&&e&&t.readyState){if(this.loadedmetadata||!js.getBuffered(t).length){const t=this.state!==ci?this.fragCurrent:null;e.poll(this.lastCurrentTime,t)}this.lastCurrentTime=t.currentTime}}onFragLoadEmergencyAborted(){this.state=ci,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(t,{type:e}){if(e!==P||this.audioOnly&&!this.altAudio){const t=(e===F?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(t,e,ke),this.tick()}}onLevelsUpdated(t,e){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=e.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const e=t.currentTime;let s=this.startPosition;if(s>=0&&e0&&(r{const{hls:i}=this;if(!s||this.fragContextChanged(t))return;e.fragmentError=0,this.state=ci,this.startFragRequested=!1,this.bitrateTest=!1;const r=t.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),i.trigger(E.FRAG_LOADED,s),t.bitrateTest=!1}))}_handleTransmuxComplete(t){var e;const s="main",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:d,text:c,id3:u,initSegment:f}=r,{details:g}=h,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=pi,f){if(null!=f&&f.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,f.tracks,t,n),i.trigger(E.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:f.tracks})}const t=f.initPTS,e=f.timescale;p(t)&&(this.initPTS[o.cc]={baseTime:t,timescale:e},i.trigger(E.INIT_PTS_FOUND,{frag:o,id:s,initPTS:t,timescale:e}))}if(d&&g&&"initSegment"!==o.sn){const t=g.fragments[o.sn-1-g.startSN],e=o.sn===g.startSN,s=!t||o.cc>t.cc;if(!1!==r.independent){const{startPTS:t,endPTS:i,startDTS:r,endDTS:a}=d;if(l)l.elementaryStreams[d.type]={startPTS:t,endPTS:i,startDTS:r,endDTS:a};else if(d.firstKeyFrame&&d.independent&&1===n.id&&!s&&(this.couldBacktrack=!0),d.dropped&&d.independent){const r=this.getMainFwdBufferInfo(),n=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=d.firstKeyFramePTS?d.firstKeyFramePTS:t;if(!e&&n2&&(o.gap=!0);o.setElementaryStreamInfo(d.type,t,i,r,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(d,o,l,n,e||s)}else{if(!e&&!s)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=m;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(e=u.samples)&&e.length){const t={id:s,frag:o,details:g,samples:u.samples};i.trigger(E.FRAG_PARSING_METADATA,t)}if(g&&c){const t={id:s,frag:o,details:g,samples:c.samples};i.trigger(E.FRAG_PARSING_USERDATA,t)}}}_bufferInitSegment(t,e,s,i){if(this.state!==pi)return;this.audioOnly=!!e.audio&&!e.video,this.altAudio&&!this.audioOnly&&delete e.audio;const{audio:r,video:n,audiovideo:a}=e;if(r){let e=t.audioCodec;const s=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(e&&(e=-1!==e.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==r.metadata.channelCount&&-1===s.indexOf("firefox")&&(e="mp4a.40.5")),e&&-1!==e.indexOf("mp4a.40.5")&&-1!==s.indexOf("android")&&"audio/mpeg"!==r.container&&(e="mp4a.40.2",this.log(`Android: force audio codec to ${e}`)),t.audioCodec&&t.audioCodec!==e&&this.log(`Swapping manifest audio codec "${t.audioCodec}" for "${e}"`),r.levelCodec=e,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${e||""}/${t.audioCodec||""}/${r.codec}]`)}n&&(n.levelCodec=t.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${t.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${t.codecs}/${a.codec}]`),this.hls.trigger(E.BUFFER_CODECS,e),Object.keys(e).forEach((t=>{const r=e[t].initSegment;null!=r&&r.byteLength&&this.hls.trigger(E.BUFFER_APPENDING,{type:t,data:r,frag:s,part:null,chunkMeta:i,parent:s.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,ke)}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=ci}checkFragmentChanged(){const t=this.media;let e=null;if(t&&t.readyState>1&&!1===t.seeking){const s=t.currentTime;if(js.isBuffered(t,s)?e=this.getAppendedFrag(s):js.isBuffered(t,s+.1)&&(e=this.getAppendedFrag(s+.1)),e){this.backtrackFragment=null;const t=this.fragPlaying,s=e.level;t&&e.sn===t.sn&&t.level===s||(this.fragPlaying=e,this.hls.trigger(E.FRAG_CHANGED,{frag:e}),t&&t.level===s||this.hls.trigger(E.LEVEL_SWITCHED,{level:s}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){const t=this.media;return t?this.fragPlaying||this.getAppendedFrag(t.currentTime):null}get currentProgramDateTime(){const t=this.media;if(t){const e=t.currentTime,s=this.currentFrag;if(s&&p(e)&&p(s.programDateTime)){const t=s.programDateTime+1e3*(e-s.start);return new Date(t)}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class Ca{static get version(){return"1.5.9"}static isMSESupported(){return Da()}static isSupported(){return function(){if(!Da())return!1;const t=Jt();return"function"==typeof(null==t?void 0:t.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((e=>t.isTypeSupported(se(e,"video"))))||["mp4a.40.2","fLaC"].some((e=>t.isTypeSupported(se(e,"audio")))))}()}static getMediaSource(){return Jt()}static get Events(){return E}static get ErrorTypes(){return T}static get ErrorDetails(){return S}static get DefaultConfig(){return Ca.defaultConfig?Ca.defaultConfig:Ea}static set DefaultConfig(t){Ca.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Dr,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(t,e){if("object"==typeof console&&!0===t||"object"==typeof t){b(t,"debug","log","info","warn","error");try{R.log(`Debug logs enabled for "${e}" in hls.js version 1.5.9`)}catch(t){R=A}}else R=A}(t.debug||!1,"Hls instance");const e=this.config=function(t,e){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==e.liveMaxLatencyDurationCount&&(void 0===e.liveSyncDurationCount||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==e.liveMaxLatencyDuration&&(void 0===e.liveSyncDuration||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Ta(t),i=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((t=>{const r=`${"level"===t?"playlist":t}LoadPolicy`,n=void 0===e[r],a=[];i.forEach((i=>{const o=`${t}Loading${i}`,l=e[o];if(void 0!==l&&n){a.push(o);const t=s[r].default;switch(e[r]={default:t},i){case"TimeOut":t.maxLoadTimeMs=l,t.maxTimeToFirstByteMs=l;break;case"MaxRetry":t.errorRetry.maxNumRetry=l,t.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":t.errorRetry.retryDelayMs=l,t.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":t.errorRetry.maxRetryDelayMs=l,t.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&k.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(e[r])}`)})),u(u({},s),e)}(Ca.DefaultConfig,t);this.userConfig=t,e.progressive&&Sa(e);const{abrController:s,bufferController:i,capLevelController:r,errorController:n,fpsController:a}=e,o=new n(this),l=this.abrController=new s(this),h=this.bufferController=new i(this),d=this.capLevelController=new r(this),c=new a(this),f=new _e(this),g=new Ve(this),m=e.contentSteeringController,p=m?new m(this):null,v=this.levelController=new Aa(this,p),y=new Hs(this),T=new ba(this.config),S=this.streamController=new wa(this,y,T);d.setStreamController(S),c.setStreamController(S);const L=[f,v,S];p&&L.splice(1,0,p),this.networkControllers=L;const D=[l,h,d,c,g,y];this.audioTrackController=this.createController(e.audioTrackController,L);const I=e.audioStreamController;I&&L.push(new I(this,y,T)),this.subtitleTrackController=this.createController(e.subtitleTrackController,L);const w=e.subtitleStreamController;w&&L.push(new w(this,y,T)),this.createController(e.timelineController,D),T.emeController=this.emeController=this.createController(e.emeController,D),this.cmcdController=this.createController(e.cmcdController,D),this.latencyController=this.createController(Ye,D),this.coreComponents=D,L.push(o);const C=o.onErrorOut;"function"==typeof C&&this.on(E.ERROR,C,o)}createController(t,e){if(t){const s=new t(this);return e&&e.push(s),s}return null}on(t,e,s=this){this._emitter.on(t,e,s)}once(t,e,s=this){this._emitter.once(t,e,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,e,s=this,i){this._emitter.off(t,e,s,i)}listeners(t){return this._emitter.listeners(t)}emit(t,e,s){return this._emitter.emit(t,e,s)}trigger(t,e){if(this.config.debug)return this.emit(t,t,e);try{return this.emit(t,t,e)}catch(e){if(k.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),!this.triggeringException){this.triggeringException=!0;const s=t===E.ERROR;this.trigger(E.ERROR,{type:T.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:s,event:t,error:e}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){k.log("destroy"),this.trigger(E.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((t=>t.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((t=>t.destroy())),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){k.log("attachMedia"),this._media=t,this.trigger(E.MEDIA_ATTACHING,{media:t})}detachMedia(){k.log("detachMedia"),this.trigger(E.MEDIA_DETACHING,void 0),this._media=null}loadSource(t){this.stopLoad();const e=this.media,s=this.url,i=this.url=d.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,k.log(`loadSource:${i}`),e&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(e)),this.trigger(E.MANIFEST_LOADING,{url:t})}startLoad(t=-1){k.log(`startLoad(${t})`),this.started=!0,this.networkControllers.forEach((e=>{e.startLoad(t)}))}stopLoad(){k.log("stopLoad"),this.started=!1,this.networkControllers.forEach((t=>{t.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.stopLoad()}))}swapAudioCodec(){k.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){k.log("recoverMediaError");const t=this._media;this.detachMedia(),t&&this.attachMedia(t)}removeLevel(t){this.levelController.removeLevel(t)}get levels(){const t=this.levelController.levels;return t||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){k.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){k.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){k.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){k.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return-1===t&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){k.log(`set startLevel:${t}`),-1!==t&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const e=!!t;e!==this.config.capLevelToPlayerSize&&(e?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=e)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(k.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){(function(t){return We.indexOf(t)>-1})(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:e}}=this;if(!t)return 0;const s=t.length;for(let i=0;i=e)return i;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:e,maxHdcpLevel:s}=this;let i;if(i=-1===e&&null!=t&&t.length?t.length-1:e,s)for(let e=i;e--;){const i=t[e].attrs["HDCP-LEVEL"];if(i&&i<=s)return e}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(t){var e;return null==(e=this.audioTrackController)?void 0:e.setAudioOption(t)}setSubtitleOption(t){var e;return null==(e=this.subtitleTrackController)||e.setSubtitleOption(t),null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const e=this.audioTrackController;e&&(e.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return!!t&&t.subtitleDisplay}set subtitleDisplay(t){const e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}Ca.defaultConfig=void 0}}]); \ No newline at end of file diff --git a/39863.async.js b/39863.async.js index 1fd89b4408..81c65da6f2 100644 --- a/39863.async.js +++ b/39863.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[39863],{39863:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(79800),c=n.n(r),o=n(7557),u=n.n(o),i=n(41498),s=n.n(i),a=n(59301),l=n(8591),d=n(38854),v=n(65954),m=n(36422),p=n(85677),h=n(56102),f=n(25170),y={watermark:"watermark___hNYlv",videovideo:"videovideo___ovOkV",animate__loop:"animate__loop___mvL6s",upDown:"upDown___SlgHv",container:"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq",hide:"hide___NA3DV","video-progress":"video-progress___gqHsd",seek:"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r",rateOverlay:"rateOverlay___HHBWe",controlText:"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq",volume:"volume___OTmpP",hidden:"hidden___o7GkT"},x=n(37712);function b(e){if(isNaN(e))return{minutes:"00",seconds:"00"};var t=new Date(1e3*e).toISOString().substr(11,8);return{hour:t.substr(0,2),minutes:t.substr(3,2),seconds:t.substr(6,2)}}function _(e,t){return e-t}function k(e){e.sort(_);for(var t=0,n=0;n0&&!this.paused&&!this.ended&&this.readyState>2)}});var g=/(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i,w=(0,a.forwardRef)((function(e,t){var n,r,o=e.allow_skip,i=e.src,_=e.toLog,w=e.videoId,j=e.logWatchHistory,E=e.courseId,z=void 0===E?null:E,M=e.startTime,T=e.handlePause,L=void 0===T?function(){}:T,N=e.handlePlay,R=void 0===N?function(){}:N,q=e.handlePlayEnded,C=void 0===q?function(){}:q,P=e.autoPlay,S=void 0!==P&&P,F=e.onPlayEnded,A=void 0===F?function(){}:F,B="flv"===(null===(r=i=null===(n=i)||void 0===n?void 0:n.replace("http://","https://"))||void 0===r||null===(r=r.split("."))||void 0===r?void 0:r.pop()),D=(0,a.useRef)(),Z=(0,a.useRef)(),I=(0,a.useRef)(),H=(0,a.useRef)(),O=(0,a.useRef)(),W=(0,a.useRef)(),U=(0,a.useRef)(),X=(0,a.useRef)(),G=(0,a.useRef)(),Y=(0,a.useRef)(),V=(0,a.useRef)(),J=(0,a.useRef)(),K=(0,a.useRef)(),Q=(0,a.useRef)(),$=navigator.userAgent.toLowerCase().match(g),ee=$?$[0]:"pc",te=(0,a.useRef)(!1),ne=(0,p.eY)(),re=0,ce=0,oe=0,ue=null,ie=!1,se=20,ae=1,le=!1,de=!1,ve=[];(0,a.useImperativeHandle)(t,(function(){return{getLastUpdatedTime:function(){return D.current.currentTime},getDuration:function(){return D.current.duration}}})),l.ZP.config({maxCount:1,getContainer:function(){return I.current}});var me=(0,a.useCallback)((function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={point:D.current.currentTime};function r(){return c.apply(this,arguments)}function c(){return(c=s()(u()().mark((function t(){var r;return u()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return le=!0,t.next=3,null==j?void 0:j(n);case 3:r=t.sent,ue=r,le=!1,e&&e();case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}ue?(n.log_id=ue,n.watch_duration=k(ve),n.total_duration=ce):(z?(n.video_id=parseInt(w,10),n.course_id=z):n.video_id=w,n.duration=re,n.device=ee),t&&(n.ed="1"),r()}),[w,z]);function pe(){D.current.paused?(H.current.style.display="none",O.current.style.display="block"):(H.current.style.display="block",O.current.style.display="none")}function he(){V.current.style.display="none",K.current.style.display="none",J.current.style.display="none",D.current.muted||0===D.current.volume?V.current.style.display="block":D.current.volume>0&&D.current.volume<=.5?K.current.style.display="block":J.current.style.display="block"}(0,a.useEffect)((function(){var e;D.current&&(H.current.style.display="none",O.current.style.display="block"),l.ZP.destroy();var t=null;return v.Z.isSupported&&B&&i&&(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))<0?(t=v.Z.createPlayer({type:"flv",volume:.8,cors:!0,url:i,muted:!1}),D.current&&(t.attachMediaElement(D.current),t.load())):D.current.setAttribute("src",i),he(),function(){t&&(t.unload(),t.pause(),t.destroy(),t=null)}}),[D,B,i]),(0,a.useEffect)((function(){document.getElementById("play"),document.querySelectorAll(".playback-icons use");function e(){R(),M&&!te.current&&(D.current.currentTime=M),te.current=!0,ve.push(D.current.currentTime),ie||(ie=!0,_&&me())}function t(){return n.apply(this,arguments)}function n(){return(n=s()(u()().mark((function e(){return u()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:pe(),ve.push(D.current.currentTime),_&&me((function(){ue=null,oe=0,ie=!1,le=!1,de=!1,ve=[],ce=0,ae=1}),!0),A();case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function r(){W.current.value=Math.round(D.current.currentTime),U.current.value=Math.round(D.current.currentTime)}function c(){var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s"))}function i(){try{var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s")),r(),function(){var e=b(Math.round(D.current.currentTime));G.current.innerText="".concat(e.hour>0?e.hour+":":"").concat(e.minutes,":").concat(e.seconds),G.current.setAttribute("datetime","".concat(e.hour>0?" "+e.hour+" ":"").concat(e.minutes,"m ").concat(e.seconds,"s"))}();var n=Z.current.getBoundingClientRect(),c=n.width,o=(n.height,n.x),u=n.y;if(o<0||u<0||!c)return;if(!de){var i=D.current.currentTime,s=i-oe;Math.abs(s)<10?(ce+=Math.abs(s),oe=i,le||ce-ae*se>=0&&(ae++,ve.push(oe),_&&me())):(oe=i,_&&me())}}catch(e){console.log(e)}}function a(){de=!0}function d(){D.current.playing&&ve.push(D.current.currentTime,oe),oe=D.current.currentTime,de=!1}function v(){(re=D.current.duration)<=20&&(se=re/3),D.current.addEventListener("play",e)}function m(){L()}function p(e){if(o){var t=e.target.dataset.seek?e.target.dataset.seek:e.target.value;D.current.currentTime=t,U.current.value=t,W.current.value=t}else l.ZP.warning("该视频禁止快进/后退播放")}function h(e){var t=Math.round(e.offsetX/e.target.clientWidth*parseInt(e.target.getAttribute("max"),10));W.current.setAttribute("data-seek",t);var n=b(t);Y.current.textContent="".concat(n.hour>0?n.hour+":":"").concat(n.minutes,":").concat(n.seconds);var r=D.current.getBoundingClientRect();Y.current.style.left="".concat(e.pageX-r.left,"px")}function y(e){switch(e.code){case"Space":e.preventDefault(),be();break;case"ArrowRight":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(D.current.currentTime>=D.current.duration)break;D.current.currentTime=parseInt(D.current.currentTime)+5,r();break;case"ArrowLeft":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(0===D.current.currentTime)break;D.current.currentTime=parseInt(D.current.currentTime)-5,r();break;case"ArrowUp":e.preventDefault(),D.current.volume<1&&(D.current.volume=(parseInt(10*D.current.volume)+1)/10);break;case"ArrowDown":e.preventDefault(),D.current.volume>0&&(D.current.volume=(parseInt(10*D.current.volume)-1)/10)}}return I.current.addEventListener((0,f.gH)(),(function(e){e.preventDefault(),(0,f.vp)()?(D.current.style.width="100%",D.current.style.height="100%"):D.current.style.cssText=""})),D.current.addEventListener("canplay",v),D.current.addEventListener("ended",t),D.current.addEventListener("seeking",a),D.current.addEventListener("seeked",d),D.current.addEventListener("loadedmetadata",c),W.current.addEventListener("mousemove",h),W.current.addEventListener("input",p),D.current.addEventListener("timeupdate",i),D.current.addEventListener("pause",m),D.current.addEventListener("volumechange",he),document.addEventListener("keydown",y),function(){var n,r,o,u,s,l,f,x,b,k,g,w;null===(n=D.current)||void 0===n||n.removeEventListener("canplay",v),null===(r=D.current)||void 0===r||r.removeEventListener("play",e),null===(o=D.current)||void 0===o||o.removeEventListener("ended",t),null===(u=D.current)||void 0===u||u.removeEventListener("seeking",a),null===(s=D.current)||void 0===s||s.removeEventListener("seeked",d),null===(l=W.current)||void 0===l||l.removeEventListener("mousemove",h),null===(f=W.current)||void 0===f||f.removeEventListener("input",p),null===(x=D.current)||void 0===x||x.removeEventListener("timeupdate",i),null===(b=D.current)||void 0===b||b.removeEventListener("pause",m),null===(k=D.current)||void 0===k||k.removeEventListener("loadedmetadata",c),null===(g=D.current)||void 0===g||g.removeEventListener("volumechange",he),document.removeEventListener("keydown",y),null!==(w=D.current)&&void 0!==w&&w.playing&&(ve.push(oe,D.current.currentTime),_&&me())}}),[D,i]),(0,a.useEffect)((function(){var e;if(D.current.onended=function(){C(D)},D.current.oncontextmenu=function(){return!1},(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))>-1)if(D.current.canPlayType("application/vnd.apple.mpegurl"))D.current.src=i;else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(i),t.attachMedia(D.current)}}),[i]);var fe=(0,a.useState)(1),ye=c()(fe,2),xe=(ye[0],ye[1]),be=function(){D.current.paused||D.current.ended?D.current.play():D.current.pause(),pe()};return(0,x.jsxs)("div",{style:{position:"relative"},ref:I,children:[(0,x.jsx)("div",{ref:Z,className:"".concat(y.watermark," animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(y.animate__loop),children:ne?ne.login:" "}),(0,x.jsx)("div",{className:y.container,children:(0,x.jsxs)("div",{className:y["video-container"],id:"video-container",children:[(0,x.jsx)("div",{className:y["playback-animation"],id:"playback-animation",children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{className:"hidden",href:"#play-icon"}),(0,x.jsx)("use",{href:"#pause"})]})}),(0,x.jsx)("video",{className:y.video,id:"video",preload:"auto",disablePictureInPicture:!0,ref:D,autoPlay:S}),(0,x.jsxs)("div",{className:"".concat(y["video-controls"]," "),id:"video-controls",children:[(0,x.jsxs)("div",{className:y["bottom-controls"],children:[(0,x.jsxs)("div",{className:y["left-controls"],children:[(0,x.jsx)("button",{"data-title":"播放/暂停",id:"play",onClick:be,children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{ref:O,href:"#play-icon"}),(0,x.jsx)("use",{ref:H,style:{display:"none"},href:"#pause"})]})}),(0,x.jsxs)("div",{className:y.time,children:[(0,x.jsx)("time",{id:"time-elapsed",ref:G,children:"00:00"}),(0,x.jsx)("span",{children:" / "}),(0,x.jsx)("time",{id:"duration",ref:X,children:"00:00"})]})]}),(0,x.jsxs)("div",{className:y["right-controls"],children:[o&&(0,x.jsx)(d.Z,{placement:"top",overlayClassName:y.rateOverlay,getPopupContainer:function(e){return e.parentNode},menu:{items:[{key:"1",label:(0,x.jsx)("span",{onClick:function(){xe(1),D.current.playbackRate=1},children:"1.0x"})},{key:"2",label:(0,x.jsx)("span",{onClick:function(){xe(1.5),D.current.playbackRate=1.5},children:"1.5x"})},{key:"3",label:(0,x.jsx)("span",{onClick:function(){xe(2),D.current.playbackRate=2},children:"2.0x"})}]},children:(0,x.jsx)("div",{className:"".concat(y.controlText," mr5"),children:"倍速"})}),(0,x.jsx)(h.CopyToClipboard,{text:i,onCopy:function(){return l.ZP.success("复制成功")},children:(0,x.jsx)("button",{"data-title":"复制链接",children:(0,x.jsx)("i",{className:"icon-lianjie2 iconfont",style:{fontSize:"12px",color:"white"}})})}),(0,x.jsxs)("div",{className:y["volume-controls"],children:[(0,x.jsxs)("button",{"data-title":"开启/关闭声音",className:y["volume-button"],id:"volume-button",onClick:function(){D.current.muted=!D.current.muted,D.current.muted?(Q.current.setAttribute("data-volume",volume.value),Q.current.value=0):Q.current.value=Q.current.dataset.volume},children:[(0,x.jsx)("i",{ref:V,className:"icon-a-bianzu8 iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:K,className:"icon-shengyinkaibeifen iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:J,className:"icon-shengyinkai iconfont",style:{fontSize:"14px",color:"white"}})]}),(0,x.jsx)("input",{className:y.volume,id:"volume",value:"1","data-mute":"0.5",type:"range",max:"1",min:"0",step:"0.01",ref:Q,style:{display:"none"},onClick:he})]}),(0,x.jsx)("button",{"data-title":"全屏/退出全屏",className:y["fullscreen-button"],onClick:function(){(0,f.vp)()?(0,f.BU)():(0,f.Dj)(I.current)},children:(0,x.jsx)("i",{className:"icon-fangda1 iconfont",style:{fontSize:"12px",color:"white"}})})]})]}),(0,x.jsxs)("div",{className:y["video-progress"],children:[(0,x.jsx)("progress",{ref:U,value:"0",min:"0"}),(0,x.jsx)("input",{className:y.seek,ref:W,value:"0",min:"0",type:"range",step:"1"}),(0,x.jsx)("div",{className:y["seek-tooltip"],ref:Y,id:"seek-tooltip",children:"00:00"})]})]})]})}),(0,x.jsx)("svg",{style:{display:"none"},children:(0,x.jsxs)("defs",{children:[(0,x.jsx)("symbol",{id:"pause",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z"})}),(0,x.jsx)("symbol",{id:"play-icon",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z"})}),(0,x.jsx)("symbol",{id:"volume-high",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z"})}),(0,x.jsx)("symbol",{id:"volume-low",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z"})}),(0,x.jsx)("symbol",{id:"volume-mute",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z"})}),(0,x.jsx)("symbol",{id:"fullscreen",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z"})}),(0,x.jsx)("symbol",{id:"fullscreen-exit",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z"})}),(0,x.jsx)("symbol",{id:"pip",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z"})})]})})]})}))},25170:function(e,t,n){function r(e){try{e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()}catch(e){console.log(e,":e")}}function c(){window.top.document.webkitExitFullscreen?window.top.document.webkitExitFullscreen():document.exitFullscreen?window.top.document.exitFullscreen():document.msExitFullscreen?window.top.document.msExitFullscreen():document.mozCancelFullScreen&&window.top.document.mozCancelFullScreen()}n.d(t,{BU:function(){return c},Dj:function(){return r},gH:function(){return o},vp:function(){return u}});var o=function(){return document.webkitExitFullscreen?"webkitfullscreenchange":document.exitFullscreen?"fullscreenchange":document.msExitFullscreen?"msfullscreenchange":document.mozCancelFullScreen?"mozfullscreenchange":void 0};function u(){var e=window.top.document.fullscreenElement||window.top.document.mozFullscreenElement||window.top.document.webkitFullscreenElement;document.fullscreenEnabled||document.mozFullscreenEnabled||document.webkitFullscreenEnabled;return console.log("fullscreenElement",e),null!=e}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[39863],{39863:function(e,t,n){n.d(t,{Z:function(){return w}});var r=n(79800),c=n.n(r),o=n(7557),u=n.n(o),i=n(41498),s=n.n(i),a=n(59301),l=n(8591),d=n(38854),v=n(65954),m=n(77373),p=n(85677),h=n(56102),f=n(25170),y={watermark:"watermark___hNYlv",videovideo:"videovideo___ovOkV",animate__loop:"animate__loop___mvL6s",upDown:"upDown___SlgHv",container:"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq",hide:"hide___NA3DV","video-progress":"video-progress___gqHsd",seek:"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r",rateOverlay:"rateOverlay___HHBWe",controlText:"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq",volume:"volume___OTmpP",hidden:"hidden___o7GkT"},x=n(37712);function b(e){if(isNaN(e))return{minutes:"00",seconds:"00"};var t=new Date(1e3*e).toISOString().substr(11,8);return{hour:t.substr(0,2),minutes:t.substr(3,2),seconds:t.substr(6,2)}}function _(e,t){return e-t}function k(e){e.sort(_);for(var t=0,n=0;n0&&!this.paused&&!this.ended&&this.readyState>2)}});var g=/(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i,w=(0,a.forwardRef)((function(e,t){var n,r,o=e.allow_skip,i=e.src,_=e.toLog,w=e.videoId,j=e.logWatchHistory,E=e.courseId,z=void 0===E?null:E,M=e.startTime,T=e.handlePause,L=void 0===T?function(){}:T,N=e.handlePlay,R=void 0===N?function(){}:N,q=e.handlePlayEnded,C=void 0===q?function(){}:q,P=e.autoPlay,S=void 0!==P&&P,F=e.onPlayEnded,A=void 0===F?function(){}:F,B="flv"===(null===(r=i=null===(n=i)||void 0===n?void 0:n.replace("http://","https://"))||void 0===r||null===(r=r.split("."))||void 0===r?void 0:r.pop()),D=(0,a.useRef)(),Z=(0,a.useRef)(),I=(0,a.useRef)(),H=(0,a.useRef)(),O=(0,a.useRef)(),W=(0,a.useRef)(),U=(0,a.useRef)(),X=(0,a.useRef)(),G=(0,a.useRef)(),Y=(0,a.useRef)(),V=(0,a.useRef)(),J=(0,a.useRef)(),K=(0,a.useRef)(),Q=(0,a.useRef)(),$=navigator.userAgent.toLowerCase().match(g),ee=$?$[0]:"pc",te=(0,a.useRef)(!1),ne=(0,p.eY)(),re=0,ce=0,oe=0,ue=null,ie=!1,se=20,ae=1,le=!1,de=!1,ve=[];(0,a.useImperativeHandle)(t,(function(){return{getLastUpdatedTime:function(){return D.current.currentTime},getDuration:function(){return D.current.duration}}})),l.ZP.config({maxCount:1,getContainer:function(){return I.current}});var me=(0,a.useCallback)((function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={point:D.current.currentTime};function r(){return c.apply(this,arguments)}function c(){return(c=s()(u()().mark((function t(){var r;return u()().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return le=!0,t.next=3,null==j?void 0:j(n);case 3:r=t.sent,ue=r,le=!1,e&&e();case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}ue?(n.log_id=ue,n.watch_duration=k(ve),n.total_duration=ce):(z?(n.video_id=parseInt(w,10),n.course_id=z):n.video_id=w,n.duration=re,n.device=ee),t&&(n.ed="1"),r()}),[w,z]);function pe(){D.current.paused?(H.current.style.display="none",O.current.style.display="block"):(H.current.style.display="block",O.current.style.display="none")}function he(){V.current.style.display="none",K.current.style.display="none",J.current.style.display="none",D.current.muted||0===D.current.volume?V.current.style.display="block":D.current.volume>0&&D.current.volume<=.5?K.current.style.display="block":J.current.style.display="block"}(0,a.useEffect)((function(){var e;D.current&&(H.current.style.display="none",O.current.style.display="block"),l.ZP.destroy();var t=null;return v.Z.isSupported&&B&&i&&(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))<0?(t=v.Z.createPlayer({type:"flv",volume:.8,cors:!0,url:i,muted:!1}),D.current&&(t.attachMediaElement(D.current),t.load())):D.current.setAttribute("src",i),he(),function(){t&&(t.unload(),t.pause(),t.destroy(),t=null)}}),[D,B,i]),(0,a.useEffect)((function(){document.getElementById("play"),document.querySelectorAll(".playback-icons use");function e(){R(),M&&!te.current&&(D.current.currentTime=M),te.current=!0,ve.push(D.current.currentTime),ie||(ie=!0,_&&me())}function t(){return n.apply(this,arguments)}function n(){return(n=s()(u()().mark((function e(){return u()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:pe(),ve.push(D.current.currentTime),_&&me((function(){ue=null,oe=0,ie=!1,le=!1,de=!1,ve=[],ce=0,ae=1}),!0),A();case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function r(){W.current.value=Math.round(D.current.currentTime),U.current.value=Math.round(D.current.currentTime)}function c(){var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s"))}function i(){try{var e=Math.round(D.current.duration);W.current.setAttribute("max",e),U.current.setAttribute("max",e);var t=b(e);X.current.innerText="".concat(t.hour>0?t.hour+":":"").concat(t.minutes,":").concat(t.seconds),X.current.setAttribute("datetime","".concat(t.hour>0?" "+t.hour+" ":"").concat(t.minutes,"m ").concat(t.seconds,"s")),r(),function(){var e=b(Math.round(D.current.currentTime));G.current.innerText="".concat(e.hour>0?e.hour+":":"").concat(e.minutes,":").concat(e.seconds),G.current.setAttribute("datetime","".concat(e.hour>0?" "+e.hour+" ":"").concat(e.minutes,"m ").concat(e.seconds,"s"))}();var n=Z.current.getBoundingClientRect(),c=n.width,o=(n.height,n.x),u=n.y;if(o<0||u<0||!c)return;if(!de){var i=D.current.currentTime,s=i-oe;Math.abs(s)<10?(ce+=Math.abs(s),oe=i,le||ce-ae*se>=0&&(ae++,ve.push(oe),_&&me())):(oe=i,_&&me())}}catch(e){console.log(e)}}function a(){de=!0}function d(){D.current.playing&&ve.push(D.current.currentTime,oe),oe=D.current.currentTime,de=!1}function v(){(re=D.current.duration)<=20&&(se=re/3),D.current.addEventListener("play",e)}function m(){L()}function p(e){if(o){var t=e.target.dataset.seek?e.target.dataset.seek:e.target.value;D.current.currentTime=t,U.current.value=t,W.current.value=t}else l.ZP.warning("该视频禁止快进/后退播放")}function h(e){var t=Math.round(e.offsetX/e.target.clientWidth*parseInt(e.target.getAttribute("max"),10));W.current.setAttribute("data-seek",t);var n=b(t);Y.current.textContent="".concat(n.hour>0?n.hour+":":"").concat(n.minutes,":").concat(n.seconds);var r=D.current.getBoundingClientRect();Y.current.style.left="".concat(e.pageX-r.left,"px")}function y(e){switch(e.code){case"Space":e.preventDefault(),be();break;case"ArrowRight":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(D.current.currentTime>=D.current.duration)break;D.current.currentTime=parseInt(D.current.currentTime)+5,r();break;case"ArrowLeft":if(e.preventDefault(),!o){l.ZP.warning("该视频禁止快进/后退播放");break}if(0===D.current.currentTime)break;D.current.currentTime=parseInt(D.current.currentTime)-5,r();break;case"ArrowUp":e.preventDefault(),D.current.volume<1&&(D.current.volume=(parseInt(10*D.current.volume)+1)/10);break;case"ArrowDown":e.preventDefault(),D.current.volume>0&&(D.current.volume=(parseInt(10*D.current.volume)-1)/10)}}return I.current.addEventListener((0,f.gH)(),(function(e){e.preventDefault(),(0,f.vp)()?(D.current.style.width="100%",D.current.style.height="100%"):D.current.style.cssText=""})),D.current.addEventListener("canplay",v),D.current.addEventListener("ended",t),D.current.addEventListener("seeking",a),D.current.addEventListener("seeked",d),D.current.addEventListener("loadedmetadata",c),W.current.addEventListener("mousemove",h),W.current.addEventListener("input",p),D.current.addEventListener("timeupdate",i),D.current.addEventListener("pause",m),D.current.addEventListener("volumechange",he),document.addEventListener("keydown",y),function(){var n,r,o,u,s,l,f,x,b,k,g,w;null===(n=D.current)||void 0===n||n.removeEventListener("canplay",v),null===(r=D.current)||void 0===r||r.removeEventListener("play",e),null===(o=D.current)||void 0===o||o.removeEventListener("ended",t),null===(u=D.current)||void 0===u||u.removeEventListener("seeking",a),null===(s=D.current)||void 0===s||s.removeEventListener("seeked",d),null===(l=W.current)||void 0===l||l.removeEventListener("mousemove",h),null===(f=W.current)||void 0===f||f.removeEventListener("input",p),null===(x=D.current)||void 0===x||x.removeEventListener("timeupdate",i),null===(b=D.current)||void 0===b||b.removeEventListener("pause",m),null===(k=D.current)||void 0===k||k.removeEventListener("loadedmetadata",c),null===(g=D.current)||void 0===g||g.removeEventListener("volumechange",he),document.removeEventListener("keydown",y),null!==(w=D.current)&&void 0!==w&&w.playing&&(ve.push(oe,D.current.currentTime),_&&me())}}),[D,i]),(0,a.useEffect)((function(){var e;if(D.current.onended=function(){C(D)},D.current.oncontextmenu=function(){return!1},(null===(e=i)||void 0===e?void 0:e.indexOf(".m3u8"))>-1)if(D.current.canPlayType("application/vnd.apple.mpegurl"))D.current.src=i;else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(i),t.attachMedia(D.current)}}),[i]);var fe=(0,a.useState)(1),ye=c()(fe,2),xe=(ye[0],ye[1]),be=function(){D.current.paused||D.current.ended?D.current.play():D.current.pause(),pe()};return(0,x.jsxs)("div",{style:{position:"relative"},ref:I,children:[(0,x.jsx)("div",{ref:Z,className:"".concat(y.watermark," animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(y.animate__loop),children:ne?ne.login:" "}),(0,x.jsx)("div",{className:y.container,children:(0,x.jsxs)("div",{className:y["video-container"],id:"video-container",children:[(0,x.jsx)("div",{className:y["playback-animation"],id:"playback-animation",children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{className:"hidden",href:"#play-icon"}),(0,x.jsx)("use",{href:"#pause"})]})}),(0,x.jsx)("video",{className:y.video,id:"video",preload:"auto",disablePictureInPicture:!0,ref:D,autoPlay:S}),(0,x.jsxs)("div",{className:"".concat(y["video-controls"]," "),id:"video-controls",children:[(0,x.jsxs)("div",{className:y["bottom-controls"],children:[(0,x.jsxs)("div",{className:y["left-controls"],children:[(0,x.jsx)("button",{"data-title":"播放/暂停",id:"play",onClick:be,children:(0,x.jsxs)("svg",{className:y["playback-icons"],children:[(0,x.jsx)("use",{ref:O,href:"#play-icon"}),(0,x.jsx)("use",{ref:H,style:{display:"none"},href:"#pause"})]})}),(0,x.jsxs)("div",{className:y.time,children:[(0,x.jsx)("time",{id:"time-elapsed",ref:G,children:"00:00"}),(0,x.jsx)("span",{children:" / "}),(0,x.jsx)("time",{id:"duration",ref:X,children:"00:00"})]})]}),(0,x.jsxs)("div",{className:y["right-controls"],children:[o&&(0,x.jsx)(d.Z,{placement:"top",overlayClassName:y.rateOverlay,getPopupContainer:function(e){return e.parentNode},menu:{items:[{key:"1",label:(0,x.jsx)("span",{onClick:function(){xe(1),D.current.playbackRate=1},children:"1.0x"})},{key:"2",label:(0,x.jsx)("span",{onClick:function(){xe(1.5),D.current.playbackRate=1.5},children:"1.5x"})},{key:"3",label:(0,x.jsx)("span",{onClick:function(){xe(2),D.current.playbackRate=2},children:"2.0x"})}]},children:(0,x.jsx)("div",{className:"".concat(y.controlText," mr5"),children:"倍速"})}),(0,x.jsx)(h.CopyToClipboard,{text:i,onCopy:function(){return l.ZP.success("复制成功")},children:(0,x.jsx)("button",{"data-title":"复制链接",children:(0,x.jsx)("i",{className:"icon-lianjie2 iconfont",style:{fontSize:"12px",color:"white"}})})}),(0,x.jsxs)("div",{className:y["volume-controls"],children:[(0,x.jsxs)("button",{"data-title":"开启/关闭声音",className:y["volume-button"],id:"volume-button",onClick:function(){D.current.muted=!D.current.muted,D.current.muted?(Q.current.setAttribute("data-volume",volume.value),Q.current.value=0):Q.current.value=Q.current.dataset.volume},children:[(0,x.jsx)("i",{ref:V,className:"icon-a-bianzu8 iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:K,className:"icon-shengyinkaibeifen iconfont",style:{fontSize:"14px",color:"white"}}),(0,x.jsx)("i",{ref:J,className:"icon-shengyinkai iconfont",style:{fontSize:"14px",color:"white"}})]}),(0,x.jsx)("input",{className:y.volume,id:"volume",value:"1","data-mute":"0.5",type:"range",max:"1",min:"0",step:"0.01",ref:Q,style:{display:"none"},onClick:he})]}),(0,x.jsx)("button",{"data-title":"全屏/退出全屏",className:y["fullscreen-button"],onClick:function(){(0,f.vp)()?(0,f.BU)():(0,f.Dj)(I.current)},children:(0,x.jsx)("i",{className:"icon-fangda1 iconfont",style:{fontSize:"12px",color:"white"}})})]})]}),(0,x.jsxs)("div",{className:y["video-progress"],children:[(0,x.jsx)("progress",{ref:U,value:"0",min:"0"}),(0,x.jsx)("input",{className:y.seek,ref:W,value:"0",min:"0",type:"range",step:"1"}),(0,x.jsx)("div",{className:y["seek-tooltip"],ref:Y,id:"seek-tooltip",children:"00:00"})]})]})]})}),(0,x.jsx)("svg",{style:{display:"none"},children:(0,x.jsxs)("defs",{children:[(0,x.jsx)("symbol",{id:"pause",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z"})}),(0,x.jsx)("symbol",{id:"play-icon",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z"})}),(0,x.jsx)("symbol",{id:"volume-high",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z"})}),(0,x.jsx)("symbol",{id:"volume-low",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z"})}),(0,x.jsx)("symbol",{id:"volume-mute",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z"})}),(0,x.jsx)("symbol",{id:"fullscreen",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z"})}),(0,x.jsx)("symbol",{id:"fullscreen-exit",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z"})}),(0,x.jsx)("symbol",{id:"pip",viewBox:"0 0 24 24",children:(0,x.jsx)("path",{d:"M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z"})})]})})]})}))},25170:function(e,t,n){function r(e){try{e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()}catch(e){console.log(e,":e")}}function c(){window.top.document.webkitExitFullscreen?window.top.document.webkitExitFullscreen():document.exitFullscreen?window.top.document.exitFullscreen():document.msExitFullscreen?window.top.document.msExitFullscreen():document.mozCancelFullScreen&&window.top.document.mozCancelFullScreen()}n.d(t,{BU:function(){return c},Dj:function(){return r},gH:function(){return o},vp:function(){return u}});var o=function(){return document.webkitExitFullscreen?"webkitfullscreenchange":document.exitFullscreen?"fullscreenchange":document.msExitFullscreen?"msfullscreenchange":document.mozCancelFullScreen?"mozfullscreenchange":void 0};function u(){var e=window.top.document.fullscreenElement||window.top.document.mozFullscreenElement||window.top.document.webkitFullscreenElement;document.fullscreenEnabled||document.mozFullscreenEnabled||document.webkitFullscreenEnabled;return console.log("fullscreenElement",e),null!=e}}}]); \ No newline at end of file diff --git a/77373.async.js b/77373.async.js new file mode 100644 index 0000000000..68e3aecb3b --- /dev/null +++ b/77373.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[77373],{77373:function(t,e,s){function i(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}s.d(e,{ZP:function(){return _a}});var r,n,a,o,l,h={exports:{}};r=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,a=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,h.exports=l={buildAbsoluteURL:function(t,e,s){if(s=s||{},t=t.trim(),!(e=e.trim())){if(!s.alwaysNormalize)return t;var i=l.parseURL(t);if(!i)throw new Error("Error trying to parse base URL.");return i.path=l.normalizePath(i.path),l.buildURLFromParts(i)}var r=l.parseURL(e);if(!r)throw new Error("Error trying to parse relative URL.");if(r.scheme)return s.alwaysNormalize?(r.path=l.normalizePath(r.path),l.buildURLFromParts(r)):e;var a=l.parseURL(t);if(!a)throw new Error("Error trying to parse base URL.");if(!a.netLoc&&a.path&&"/"!==a.path[0]){var o=n.exec(a.path);a.netLoc=o[1],a.path=o[2]}a.netLoc&&!a.path&&(a.path="/");var h={scheme:a.scheme,netLoc:r.netLoc,path:null,params:r.params,query:r.query,fragment:r.fragment};if(!r.netLoc&&(h.netLoc=a.netLoc,"/"!==r.path[0]))if(r.path){var d=a.path,c=d.substring(0,d.lastIndexOf("/")+1)+r.path;h.path=l.normalizePath(c)}else h.path=a.path,r.params||(h.params=a.params,r.query||(h.query=a.query));return null===h.path&&(h.path=s.alwaysNormalize?l.normalizePath(r.path):r.path),l.buildURLFromParts(h)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(o,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};var d=h.exports;function c(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,i)}return s}function u(t){for(var e=1;e`):L}(e)}))}const k=R,D=/^(\d+)x(\d+)$/,I=/(.+?)=(".*?"|.*?)(?:,|$)/g;class w{constructor(t){"string"==typeof t&&(t=w.parseAttrList(t)),m(this,t)}get clientAttrs(){return Object.keys(this).filter((t=>"X-"===t.substring(0,2)))}decimalInteger(t){const e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e}hexadecimalInteger(t){if(this[t]){let e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;const s=new Uint8Array(e.length/2);for(let t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}decimalFloatingPoint(t){return parseFloat(this[t])}optionalFloat(t,e){const s=this[t];return s?parseFloat(s):e}enumeratedString(t){return this[t]}bool(t){return"YES"===this[t]}decimalResolution(t){const e=D.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}static parseAttrList(t){let e;const s={};for(I.lastIndex=0;null!==(e=I.exec(t));){let t=e[2];0===t.indexOf('"')&&t.lastIndexOf('"')===t.length-1&&(t=t.slice(1,-1));s[e[1].trim()]=t}return s}}function C(t){return"SCTE35-OUT"===t||"SCTE35-IN"===t}class _{constructor(t,e){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,e){const s=e.attr;for(const e in s)if(Object.prototype.hasOwnProperty.call(t,e)&&t[e]!==s[e]){k.warn(`DATERANGE tag attribute: "${e}" does not match for tags with ID: "${t.ID}"`),this._badValueForSameId=e;break}t=m(new w({}),s,t)}if(this.attr=t,this._startDate=new Date(t["START-DATE"]),"END-DATE"in this.attr){const t=new Date(this.attr["END-DATE"]);p(t.getTime())&&(this._endDate=t)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const t=this.duration;return null!==t?new Date(this._startDate.getTime()+1e3*t):null}get duration(){if("DURATION"in this.attr){const t=this.attr.decimalFloatingPoint("DURATION");if(p(t))return t}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&p(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class x{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var P="audio",F="video",M="audiovideo";class O{constructor(t){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[P]:null,[F]:null,[M]:null},this.baseurl=t}setByteRange(t,e){const s=t.split("@",2);let i;i=1===s.length?(null==e?void 0:e.byteRangeEndOffset)||0:parseInt(s[1]),this._byteRange=[i,parseInt(s[0])+i]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=d.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(t){this._url=t}}class N extends O{constructor(t,e){super(e),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new x,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=t}get decryptdata(){const{levelkeys:t}=this;if(!t&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const t=this.levelkeys.identity;if(t)this._decryptdata=t.getDecryptData(this.sn);else{const t=Object.keys(this.levelkeys);if(1===t.length)return this._decryptdata=this.levelkeys[t[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!p(this.programDateTime))return null;const t=p(this.duration)?this.duration:0;return this.programDateTime+1e3*t}get encrypted(){var t;if(null!=(t=this._decryptdata)&&t.encrypted)return!0;if(this.levelkeys){const t=Object.keys(this.levelkeys),e=t.length;if(e>1||1===e&&this.levelkeys[t[0]].encrypted)return!0}return!1}setKeyFormat(t){if(this.levelkeys){const e=this.levelkeys[t];e&&!this._decryptdata&&(this._decryptdata=e.getDecryptData(this.sn))}}abortRequests(){var t,e;null==(t=this.loader)||t.abort(),null==(e=this.keyLoader)||e.abort()}setElementaryStreamInfo(t,e,s,i,r,n=!1){const{elementaryStreams:a}=this,o=a[t];o?(o.startPTS=Math.min(o.startPTS,e),o.endPTS=Math.max(o.endPTS,s),o.startDTS=Math.min(o.startDTS,i),o.endDTS=Math.max(o.endDTS,r)):a[t]={startPTS:e,endPTS:s,startDTS:i,endDTS:r,partial:n}}clearElementaryStreamInfo(){const{elementaryStreams:t}=this;t[P]=null,t[F]=null,t[M]=null}}class U extends O{constructor(t,e,s,i,r){super(s),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new x,this.duration=t.decimalFloatingPoint("DURATION"),this.gap=t.bool("GAP"),this.independent=t.bool("INDEPENDENT"),this.relurl=t.enumeratedString("URI"),this.fragment=e,this.index=i;const n=t.enumeratedString("BYTERANGE");n&&this.setByteRange(n,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:t}=this;return!!(t.audio||t.video||t.audiovideo)}}class B{constructor(t){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=t}reloaded(t){if(!t)return this.advanced=!0,void(this.updated=!0);const e=this.lastPartSn-t.lastPartSn,s=this.lastPartIndex-t.lastPartIndex;this.updated=this.endSN!==t.endSN||!!s||!!e||!this.live,this.advanced=this.endSN>t.endSN||e>0||0===e&&s>0,this.updated||this.advanced?this.misses=Math.floor(.6*t.misses):this.misses=t.misses+1,this.availabilityDelay=t.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&p(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const t=this.driftEndTime-this.driftStartTime;if(t>0){return 1e3*(this.driftEnd-this.driftStart)/t}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var t;return null!=(t=this.fragments)&&t.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var t;return null!=(t=this.partList)&&t.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function $(t){return Uint8Array.from(atob(t),(t=>t.charCodeAt(0)))}function G(t){const e=t.split(":");let s=null;if("data"===e[0]&&2===e.length){const t=e[1].split(";"),i=t[t.length-1].split(",");if(2===i.length){const e="base64"===i[0],r=i[1];e?(t.splice(-1,1),s=$(r)):s=function(t){const e=K(t).subarray(0,16),s=new Uint8Array(16);return s.set(e,16-e.length),s}(r)}}return s}function K(t){return Uint8Array.from(unescape(encodeURIComponent(t)),(t=>t.charCodeAt(0)))}const H="undefined"!=typeof self?self:void 0;var V={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Y="org.w3.clearkey",W="com.apple.streamingkeydelivery",j="com.microsoft.playready",q="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function X(t){switch(t){case W:return V.FAIRPLAY;case j:return V.PLAYREADY;case q:return V.WIDEVINE;case Y:return V.CLEARKEY}}var z="edef8ba979d64acea3c827dcd51d21ed";function Q(t){switch(t){case V.FAIRPLAY:return W;case V.PLAYREADY:return j;case V.WIDEVINE:return q;case V.CLEARKEY:return Y}}function J(t){const{drmSystems:e,widevineLicenseUrl:s}=t,i=e?[V.FAIRPLAY,V.WIDEVINE,V.PLAYREADY,V.CLEARKEY].filter((t=>!!e[t])):[];return!i[V.WIDEVINE]&&s&&i.push(V.WIDEVINE),i}const Z=null!=H&&null!=(tt=H.navigator)&&tt.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var tt;function et(t,e,s){return Uint8Array.prototype.slice?t.slice(e,s):new Uint8Array(Array.prototype.slice.call(t,e,s))}const st=(t,e)=>e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,it=(t,e)=>e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128,rt=(t,e)=>{const s=e;let i=0;for(;st(t,e);){i+=10;i+=nt(t,e+6),it(t,e+10)&&(i+=10),e+=i}if(i>0)return t.subarray(s,s+i)},nt=(t,e)=>{let s=0;return s=(127&t[e])<<21,s|=(127&t[e+1])<<14,s|=(127&t[e+2])<<7,s|=127&t[e+3],s},at=(t,e)=>st(t,e)&&nt(t,e+6)+10<=t.length-e,ot=t=>{const e=dt(t);for(let t=0;tt&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info,ht=t=>{const e=String.fromCharCode(t[0],t[1],t[2],t[3]),s=nt(t,4);return{type:e,size:s,data:t.subarray(10,10+s)}},dt=t=>{let e=0;const s=[];for(;st(t,e);){const i=nt(t,e+6);e+=10;const r=e+i;for(;e+8"PRIV"===t.type?ut(t):"W"===t.type[0]?gt(t):ft(t),ut=t=>{if(t.size<2)return;const e=pt(t.data,!0),s=new Uint8Array(t.data.subarray(e.length+1));return{key:t.type,info:e,data:s.buffer}},ft=t=>{if(t.size<2)return;if("TXXX"===t.type){let e=1;const s=pt(t.data.subarray(e),!0);e+=s.length+1;const i=pt(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=pt(t.data.subarray(1));return{key:t.type,data:e}},gt=t=>{if("WXXX"===t.type){if(t.size<2)return;let e=1;const s=pt(t.data.subarray(e),!0);e+=s.length+1;const i=pt(t.data.subarray(e));return{key:t.type,info:s,data:i}}const e=pt(t.data);return{key:t.type,data:e}},mt=t=>{if(8===t.data.byteLength){const e=new Uint8Array(t.data),s=1&e[3];let i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,s&&(i+=47721858.84),Math.round(i)}},pt=(t,e=!1)=>{const s=yt();if(s){const i=s.decode(t);if(e){const t=i.indexOf("\0");return-1!==t?i.substring(0,t):i}return i.replace(/\0/g,"")}const i=t.length;let r,n,a,o="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(r);break;case 12:case 13:n=t[l++],o+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=t[l++],a=t[l++],o+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&a)<<0)}}return o};let vt;function yt(){if(!navigator.userAgent.includes("PlayStation 4"))return vt||void 0===self.TextDecoder||(vt=new self.TextDecoder("utf-8")),vt}const Tt=function(t){let e="";for(let s=0;s>24,t[e+1]=s>>16&255,t[e+2]=s>>8&255,t[e+3]=255&s}function wt(t,e){const s=[];if(!e.length)return s;const i=t.byteLength;for(let r=0;r1?r+n:i;if(At(t.subarray(r+4,r+8))===e[0])if(1===e.length)s.push(t.subarray(r+8,a));else{const i=wt(t.subarray(r+8,a),e.slice(1));i.length&&St.apply(s,i)}r=a}return s}function Ct(t){const e=[],s=t[0];let i=8;const r=bt(t,i);i+=4;let n=0,a=0;0===s?(n=bt(t,i),a=bt(t,i+4),i+=8):(n=kt(t,i),a=kt(t,i+8),i+=16),i+=2;let o=t.length+a;const l=Rt(t,i);i+=2;for(let s=0;s>>31)return k.warn("SIDX has hierarchical references (not supported)"),null;const l=bt(t,s);s+=4,e.push({referenceSize:a,subsegmentDuration:l,info:{duration:l/r,start:o,end:o+a-1}}),o+=a,s+=4,i=s}return{earliestPresentationTime:n,timescale:r,version:s,referencesCount:l,references:e}}function _t(t){const e=[],s=wt(t,["moov","trak"]);for(let t=0;t{const s=bt(t,4),i=e[s];i&&(i.default={duration:bt(t,12),flags:bt(t,20)})})),e}function xt(t){const e=t.subarray(8),s=e.subarray(86),i=At(e.subarray(4,8));let r=i;const n="enca"===i||"encv"===i;if(n){const t=wt(e,[i])[0];wt(t.subarray("enca"===i?28:78),["sinf"]).forEach((t=>{const e=wt(t,["schm"])[0];if(e){const s=At(e.subarray(4,8));if("cbcs"===s||"cenc"===s){const e=wt(t,["frma"])[0];e&&(r=At(e))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const t=wt(s,["avcC"])[0];r+="."+Ft(t[1])+Ft(t[2])+Ft(t[3]);break}case"mp4a":{const t=wt(e,[i])[0],s=wt(t.subarray(28),["esds"])[0];if(s&&s.length>12){let t=4;if(3!==s[t++])break;t=Pt(s,t),t+=2;const e=s[t++];if(128&e&&(t+=2),64&e&&(t+=s[t++]),4!==s[t++])break;t=Pt(s,t);const i=s[t++];if(64!==i)break;if(r+="."+Ft(i),t+=12,5!==s[t++])break;t=Pt(s,t);const n=s[t++];let a=(248&n)>>3;31===a&&(a+=1+((7&n)<<3)+((224&s[t])>>5)),r+="."+a}break}case"hvc1":case"hev1":{const t=wt(s,["hvcC"])[0],e=t[1],i=["","A","B","C"][e>>6],n=31&e,a=bt(t,2),o=(32&e)>>5?"H":"L",l=t[12],h=t.subarray(6,12);r+="."+i+n,r+="."+a.toString(16).toUpperCase(),r+="."+o+l;let d="";for(let t=h.length;t--;){const e=h[t];if(e||d){d="."+e.toString(16).toUpperCase()+d}}r+=d;break}case"dvh1":case"dvhe":{const t=wt(s,["dvcC"])[0],e=t[2]>>1&127,i=t[2]<<5&32|t[3]>>3&31;r+="."+Mt(e)+"."+Mt(i);break}case"vp09":{const t=wt(s,["vpcC"])[0],e=t[4],i=t[5],n=t[6]>>4&15;r+="."+Mt(e)+"."+Mt(i)+"."+Mt(n);break}case"av01":{const t=wt(s,["av1C"])[0],e=t[1]>>>5,i=31&t[1],n=t[2]>>>7?"H":"M",a=(64&t[2])>>6,o=(32&t[2])>>5,l=2===e&&a?o?12:10:a?10:8,h=(16&t[2])>>4,d=(8&t[2])>>3,c=(4&t[2])>>2,u=3&t[2],f=1,g=1,m=1,p=0;r+="."+e+"."+Mt(i)+n+"."+Mt(l)+"."+h+"."+d+c+u+"."+Mt(f)+"."+Mt(g)+"."+Mt(m)+"."+p;break}}return{codec:r,encrypted:n}}function Pt(t,e){const s=e+5;for(;128&t[e++]&&e{const l=o.byteOffset-8;wt(o,["traf"]).map((o=>{const h=wt(o,["tfdt"]).map((t=>{const e=t[0];let s=bt(t,4);return 1===e&&(s*=Math.pow(2,32),s+=bt(t,8)),s/r}))[0];return void 0!==h&&(t=h),wt(o,["tfhd"]).map((h=>{const d=bt(h,4),c=16777215&bt(h,0);let u=0;const f=0!=(16&c);let g=0;const m=0!=(32&c);let p=8;d===n&&(0!=(1&c)&&(p+=8),0!=(2&c)&&(p+=4),0!=(8&c)&&(u=bt(h,p),p+=4),f&&(g=bt(h,p),p+=4),m&&(p+=4),"video"===e.type&&(a=function(t){if(!t)return!1;const e=t.indexOf("."),s=e<0?t:t.substring(0,e);return"hvc1"===s||"hev1"===s||"dvh1"===s||"dvhe"===s}(e.codec)),wt(o,["trun"]).map((n=>{const o=n[0],h=16777215&bt(n,0),d=0!=(1&h);let c=0;const f=0!=(4&h),m=0!=(256&h);let p=0;const v=0!=(512&h);let y=0;const T=0!=(1024&h),E=0!=(2048&h);let S=0;const L=bt(n,4);let A=8;d&&(c=bt(n,A),A+=4),f&&(A+=4);let R=c+l;for(let l=0;l>1&63;return 39===t||40===t}return 6===(31&e)}function Gt(t,e,s,i){const r=Kt(t);let n=0;n+=e;let a=0,o=0,l=0;for(;n=r.length)break;l=r[n++],a+=l}while(255===l);o=0;do{if(n>=r.length)break;l=r[n++],o+=l}while(255===l);const t=r.length-n;let e=n;if(ot){k.error(`Malformed SEI payload. ${o} is too small, only ${t} bytes left to parse.`);break}if(4===a){if(181===r[e++]){const t=Rt(r,e);if(e+=2,49===t){const t=bt(r,e);if(e+=4,1195456820===t){const t=r[e++];if(3===t){const n=r[e++],o=64&n,l=o?2+3*(31&n):0,h=new Uint8Array(l);if(o){h[0]=n;for(let t=1;t16){const t=[];for(let s=0;s<16;s++){const i=r[e++].toString(16);t.push(1==i.length?"0"+i:i),3!==s&&5!==s&&7!==s&&9!==s||t.push("-")}const n=o-16,l=new Uint8Array(n);for(let t=0;t0?(n=new Uint8Array(4),e.length>0&&new DataView(n.buffer).setUint32(0,e.length,!1)):n=new Uint8Array;const a=new Uint8Array(4);return s&&s.byteLength>0&&new DataView(a.buffer).setUint32(0,s.byteLength,!1),function(t,...e){const s=e.length;let i=8,r=s;for(;r--;)i+=e[r].byteLength;const n=new Uint8Array(i);for(n[0]=i>>24&255,n[1]=i>>16&255,n[2]=i>>8&255,n[3]=255&i,n.set(t,4),r=0,i=8;r>8*(15-s)&255;return e}(t);return new Yt(this.method,this.uri,"identity",this.keyFormatVersions,e)}const e=G(this.uri);if(e)switch(this.keyFormat){case q:this.pssh=e,e.length>=22&&(this.keyId=e.subarray(e.length-22,e.length-6));break;case j:{const t=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Ht(t,null,e);const s=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2),i=String.fromCharCode.apply(null,Array.from(s)),r=i.substring(i.indexOf("<"),i.length),n=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(n){const t=n.childNodes[0]?n.childNodes[0].nodeValue:n.getAttribute("VALUE");if(t){const e=$(t).subarray(0,16);!function(t){const e=function(t,e,s){const i=t[e];t[e]=t[s],t[s]=i};e(t,0,3),e(t,1,2),e(t,4,5),e(t,6,7)}(e),this.keyId=e}}break}default:{let t=e.subarray(0,16);if(16!==t.length){const e=new Uint8Array(16);e.set(t,16-t.length),t=e}this.keyId=t;break}}if(!this.keyId||16!==this.keyId.byteLength){let t=Vt[this.uri];if(!t){const e=Object.keys(Vt).length%Number.MAX_SAFE_INTEGER;t=new Uint8Array(16);new DataView(t.buffer,12,4).setUint32(0,e),Vt[this.uri]=t}this.keyId=t}return this}}const Wt=/\{\$([a-zA-Z0-9-_]+)\}/g;function jt(t){return Wt.test(t)}function qt(t,e,s){if(null!==t.variableList||t.hasVariableRefs)for(let i=s.length;i--;){const r=s[i],n=e[r];n&&(e[r]=Xt(t,n))}}function Xt(t,e){if(null!==t.variableList||t.hasVariableRefs){const s=t.variableList;return e.replace(Wt,(e=>{const i=e.substring(2,e.length-1),r=null==s?void 0:s[i];return void 0===r?(t.playlistParsingError||(t.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${i}"`)),e):r}))}return e}function zt(t,e,s){let i,r,n=t.variableList;if(n||(t.variableList=n={}),"QUERYPARAM"in e){i=e.QUERYPARAM;try{const t=new self.URL(s).searchParams;if(!t.has(i))throw new Error(`"${i}" does not match any query parameter in URI: "${s}"`);r=t.get(i)}catch(e){t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${e.message}`))}}else i=e.NAME,r=e.VALUE;i in n?t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${i}"`)):n[i]=r||""}function Qt(t,e,s){const i=e.IMPORT;if(s&&i in s){let e=t.variableList;e||(t.variableList=e={}),e[i]=s[i]}else t.playlistParsingError||(t.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${i}"`))}function Jt(t=!0){if("undefined"==typeof self)return;return(t||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const Zt={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function te(t,e,s=!0){return!t.split(",").some((t=>!ee(t,e,s)))}function ee(t,e,s=!0){var i;const r=Jt(s);return null!=(i=null==r?void 0:r.isTypeSupported(se(t,e)))&&i}function se(t,e){return`${e}/mp4;codecs="${t}"`}function ie(t){if(t){const e=t.substring(0,4);return Zt.video[e]}return 2}function re(t){return t.split(",").reduce(((t,e)=>{const s=Zt.video[e];return s?(2*s+t)/(t?3:2):(Zt.audio[e]+t)/(t?2:1)}),0)}const ne={};const ae=/flac|opus/i;function oe(t,e=!0){return t.replace(ae,(t=>function(t,e=!0){if(ne[t])return ne[t];const s={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[t];for(let i=0;i0&&i.length({id:t.attrs.AUDIO,audioCodec:t.audioCodec}))),SUBTITLES:n.map((t=>({id:t.attrs.SUBTITLES,textCodec:t.textCodec}))),"CLOSED-CAPTIONS":[]};let o=0;for(de.lastIndex=0;null!==(i=de.exec(t));){const t=new w(i[1]),n=t.TYPE;if(n){const i=a[n],l=r[n]||[];r[n]=l,qt(s,t,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const h=t.LANGUAGE,d=t["ASSOC-LANGUAGE"],c=t.CHANNELS,u=t.CHARACTERISTICS,f=t["INSTREAM-ID"],g={attrs:t,bitrate:0,id:o++,groupId:t["GROUP-ID"]||"",name:t.NAME||h||"",type:n,default:t.bool("DEFAULT"),autoselect:t.bool("AUTOSELECT"),forced:t.bool("FORCED"),lang:h,url:t.URI?ge.resolve(t.URI,e):""};if(d&&(g.assocLang=d),c&&(g.channels=c),u&&(g.characteristics=u),f&&(g.instreamId=f),null!=i&&i.length){const t=ge.findGroup(i,g.groupId)||i[0];ye(g,t,"audioCodec"),ye(g,t,"textCodec")}l.push(g)}}return r}static parseLevelPlaylist(t,e,s,i,r,n){const a=new B(e),o=a.fragments;let l,h,d,c=null,u=0,f=0,g=0,v=0,y=null,T=new N(i,e),E=-1,S=!1,L=null;for(ue.lastIndex=0,a.m3u8=t,a.hasVariableRefs=jt(t);null!==(l=ue.exec(t));){S&&(S=!1,T=new N(i,e),T.start=g,T.sn=u,T.cc=v,T.level=s,c&&(T.initSegment=c,T.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,L&&(T.setByteRange(L),L=null)));const t=l[1];if(t){T.duration=parseFloat(t);const e=(" "+l[2]).slice(1);T.title=e||null,T.tagList.push(e?["INF",t,e]:["INF",t])}else if(l[3]){if(p(T.duration)){T.start=g,d&&Se(T,d,a),T.sn=u,T.level=s,T.cc=v,o.push(T);const t=(" "+l[3]).slice(1);T.relurl=Xt(a,t),Te(T,y),y=T,g+=T.duration,u++,f=0,S=!0}}else if(l[4]){const t=(" "+l[4]).slice(1);y?T.setByteRange(t,y):T.setByteRange(t)}else if(l[5])T.rawProgramDateTime=(" "+l[5]).slice(1),T.tagList.push(["PROGRAM-DATE-TIME",T.rawProgramDateTime]),-1===E&&(E=o.length);else{if(l=l[0].match(fe),!l){k.warn("No matches on slow regex match for level playlist!");continue}for(h=1;h0&&t.bool("CAN-SKIP-DATERANGES"),a.partHoldBack=t.optionalFloat("PART-HOLD-BACK",0),a.holdBack=t.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const t=new w(r);a.partTarget=t.decimalFloatingPoint("PART-TARGET");break}case"PART":{let t=a.partList;t||(t=a.partList=[]);const s=f>0?t[t.length-1]:void 0,i=f++,n=new w(r);qt(a,n,["BYTERANGE","URI"]);const o=new U(n,T,e,i,s);t.push(o),T.duration+=o.duration;break}case"PRELOAD-HINT":{const t=new w(r);qt(a,t,["URI"]),a.preloadHint=t;break}case"RENDITION-REPORT":{const t=new w(r);qt(a,t,["URI"]),a.renditionReports=a.renditionReports||[],a.renditionReports.push(t);break}default:k.warn(`line parsed but not handled: ${l}`)}}}y&&!y.relurl?(o.pop(),g-=y.duration,a.partList&&(a.fragmentHint=y)):a.partList&&(Te(T,y),T.cc=v,a.fragmentHint=T,d&&Se(T,d,a));const A=o.length,R=o[0],b=o[A-1];if(g+=a.skippedSegments*a.targetduration,g>0&&A&&b){a.averagetargetduration=g/A;const t=b.sn;a.endSN="initSegment"!==t?t:0,a.live||(b.endList=!0),R&&(a.startCC=R.cc)}else a.endSN=0,a.startCC=0;return a.fragmentHint&&(g+=a.fragmentHint.duration),a.totalduration=g,a.endCC=v,E>0&&function(t,e){let s=t[e];for(let i=e;i--;){const e=t[i];if(!e)return;e.programDateTime=s.programDateTime-1e3*e.duration,s=e}}(o,E),a}}function me(t,e,s){var i,r;const n=new w(t);qt(s,n,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const a=null!=(i=n.METHOD)?i:"",o=n.URI,l=n.hexadecimalInteger("IV"),h=n.KEYFORMATVERSIONS,d=null!=(r=n.KEYFORMAT)?r:"identity";o&&n.IV&&!l&&k.error(`Invalid IV: ${n.IV}`);const c=o?ge.resolve(o,e):"",u=(h||"1").split("/").map(Number).filter(Number.isFinite);return new Yt(a,c,d,u,l)}function pe(t){const e=new w(t).decimalFloatingPoint("TIME-OFFSET");return p(e)?e:null}function ve(t,e){let s=(t||"").split(/[ ,]+/).filter((t=>t));["video","audio","text"].forEach((t=>{const i=s.filter((e=>function(t,e){const s=Zt[e];return!!s&&!!s[t.slice(0,4)]}(e,t)));i.length&&(e[`${t}Codec`]=i.join(","),s=s.filter((t=>-1===i.indexOf(t))))})),e.unknownCodecs=s}function ye(t,e,s){const i=e[s];i&&(t[s]=i)}function Te(t,e){t.rawProgramDateTime?t.programDateTime=Date.parse(t.rawProgramDateTime):null!=e&&e.programDateTime&&(t.programDateTime=e.endProgramDateTime),p(t.programDateTime)||(t.programDateTime=null,t.rawProgramDateTime=null)}function Ee(t,e,s,i){t.relurl=e.URI,e.BYTERANGE&&t.setByteRange(e.BYTERANGE),t.level=s,t.sn="initSegment",i&&(t.levelkeys=i),t.initSegment=null}function Se(t,e,s){t.levelkeys=e;const{encryptedFragments:i}=s;i.length&&i[i.length-1].levelkeys===e||!Object.keys(e).some((t=>e[t].isCommonEncryption))||i.push(t)}var Le="manifest",Ae="level",Re="audioTrack",be="subtitleTrack",ke="main",De="audio",Ie="subtitle";function we(t){const{type:e}=t;switch(e){case Re:return De;case be:return Ie;default:return ke}}function Ce(t,e){let s=t.url;return void 0!==s&&0!==s.indexOf("data:")||(s=e.url),s}class _e{constructor(t){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=t,this.registerListeners()}startLoad(t){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.on(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),t.off(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(t){const e=this.hls.config,s=e.pLoader,i=e.loader,r=new(s||i)(e);return this.loaders[t.type]=r,r}getInternalLoader(t){return this.loaders[t.type]}resetInternalLoader(t){this.loaders[t]&&delete this.loaders[t]}destroyInternalLoaders(){for(const t in this.loaders){const e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(t,e){const{url:s}=e;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:Le,url:s,deliveryDirectives:null})}onLevelLoading(t,e){const{id:s,level:i,pathwayId:r,url:n,deliveryDirectives:a}=e;this.load({id:s,level:i,pathwayId:r,responseType:"text",type:Ae,url:n,deliveryDirectives:a})}onAudioTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:Re,url:r,deliveryDirectives:n})}onSubtitleTrackLoading(t,e){const{id:s,groupId:i,url:r,deliveryDirectives:n}=e;this.load({id:s,groupId:i,level:null,responseType:"text",type:be,url:r,deliveryDirectives:n})}load(t){var e;const s=this.hls.config;let i,r=this.getInternalLoader(t);if(r){const e=r.context;if(e&&e.url===t.url&&e.level===t.level)return void k.trace("[playlist-loader]: playlist request ongoing");k.log(`[playlist-loader]: aborting previous loader for type: ${t.type}`),r.abort()}if(i=t.type===Le?s.manifestLoadPolicy.default:m({},s.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(t),p(null==(e=t.deliveryDirectives)?void 0:e.part)){let e;if(t.type===Ae&&null!==t.level?e=this.hls.levels[t.level].details:t.type===Re&&null!==t.id?e=this.hls.audioTracks[t.id].details:t.type===be&&null!==t.id&&(e=this.hls.subtitleTracks[t.id].details),e){const t=e.partTarget,s=e.targetduration;if(t&&s){const e=1e3*Math.max(3*t,.8*s);i=m({},i,{maxTimeToFirstByteMs:Math.min(e,i.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(e,i.maxTimeToFirstByteMs)})}}}const n=i.errorRetry||i.timeoutRetry||{},a={loadPolicy:i,timeout:i.maxLoadTimeMs,maxRetry:n.maxNumRetry||0,retryDelay:n.retryDelayMs||0,maxRetryDelay:n.maxRetryDelayMs||0},o={onSuccess:(t,e,s,i)=>{const r=this.getInternalLoader(s);this.resetInternalLoader(s.type);const n=t.data;0===n.indexOf("#EXTM3U")?(e.parsing.start=performance.now(),ge.isMediaPlaylist(n)?this.handleTrackOrLevelPlaylist(t,e,s,i||null,r):this.handleMasterPlaylist(t,e,s,i)):this.handleManifestParsingError(t,s,new Error("no EXTM3U delimiter"),i||null,e)},onError:(t,e,s,i)=>{this.handleNetworkError(e,s,!1,t,i)},onTimeout:(t,e,s)=>{this.handleNetworkError(e,s,!0,void 0,t)}};r.load(t,a,o)}handleMasterPlaylist(t,e,s,i){const r=this.hls,n=t.data,a=Ce(t,s),o=ge.parseMasterPlaylist(n,a);if(o.playlistParsingError)return void this.handleManifestParsingError(t,s,o.playlistParsingError,i,e);const{contentSteering:l,levels:h,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f}=o;this.variableList=f;const{AUDIO:g=[],SUBTITLES:m,"CLOSED-CAPTIONS":p}=ge.parseMasterPlaylistMedia(n,a,o);if(g.length){g.some((t=>!t.url))||!h[0].audioCodec||h[0].attrs.AUDIO||(k.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),g.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new w({}),bitrate:0,url:""}))}r.trigger(T.MANIFEST_LOADED,{levels:h,audioTracks:g,subtitles:m,captions:p,contentSteering:l,url:a,stats:e,networkDetails:i,sessionData:d,sessionKeys:c,startTimeOffset:u,variableList:f})}handleTrackOrLevelPlaylist(t,e,s,i,r){const n=this.hls,{id:a,level:o,type:l}=s,h=Ce(t,s),d=p(o)?o:p(a)?a:0,c=we(s),u=ge.parseLevelPlaylist(t.data,h,d,c,0,this.variableList);if(l===Le){const t={attrs:new w({}),bitrate:0,details:u,name:"",url:h};n.trigger(T.MANIFEST_LOADED,{levels:[t],audioTracks:[],url:h,stats:e,networkDetails:i,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}e.parsing.end=performance.now(),s.levelDetails=u,this.handlePlaylistLoaded(u,t,e,s,i,r)}handleManifestParsingError(t,e,s,i,r){this.hls.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.MANIFEST_PARSING_ERROR,fatal:e.type===Le,url:t.url,err:s,error:s,reason:s.message,response:t,context:e,networkDetails:i,stats:r})}handleNetworkError(t,e,s=!1,i,r){let n=`A network ${s?"timeout":"error"+(i?" (status "+i.code+")":"")} occurred while loading ${t.type}`;t.type===Ae?n+=`: ${t.level} id: ${t.id}`:t.type!==Re&&t.type!==be||(n+=` id: ${t.id} group-id: "${t.groupId}"`);const a=new Error(n);k.warn(`[playlist-loader]: ${n}`);let o=S.UNKNOWN,l=!1;const h=this.getInternalLoader(t);switch(t.type){case Le:o=s?S.MANIFEST_LOAD_TIMEOUT:S.MANIFEST_LOAD_ERROR,l=!0;break;case Ae:o=s?S.LEVEL_LOAD_TIMEOUT:S.LEVEL_LOAD_ERROR,l=!1;break;case Re:o=s?S.AUDIO_TRACK_LOAD_TIMEOUT:S.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case be:o=s?S.SUBTITLE_TRACK_LOAD_TIMEOUT:S.SUBTITLE_LOAD_ERROR,l=!1}h&&this.resetInternalLoader(t.type);const d={type:E.NETWORK_ERROR,details:o,fatal:l,url:t.url,loader:h,context:t,error:a,networkDetails:e,stats:r};if(i){const s=(null==e?void 0:e.url)||t.url;d.response=u({url:s,data:void 0},i)}this.hls.trigger(T.ERROR,d)}handlePlaylistLoaded(t,e,s,i,r,n){const a=this.hls,{type:o,level:l,id:h,groupId:d,deliveryDirectives:c}=i,u=Ce(e,i),f=we(i),g="number"==typeof i.level&&f===ke?l:void 0;if(!t.fragments.length){const t=new Error("No Segments found in Playlist");return void a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:t,reason:t.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s})}t.targetduration||(t.playlistParsingError=new Error("Missing Target Duration"));const m=t.playlistParsingError;if(m)a.trigger(T.ERROR,{type:E.NETWORK_ERROR,details:S.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:e,context:i,level:g,parent:f,networkDetails:r,stats:s});else switch(t.live&&n&&(n.getCacheAge&&(t.ageHeader=n.getCacheAge()||0),n.getCacheAge&&!isNaN(t.ageHeader)||(t.ageHeader=0)),o){case Le:case Ae:a.trigger(T.LEVEL_LOADED,{details:t,level:g||0,id:h||0,stats:s,networkDetails:r,deliveryDirectives:c});break;case Re:a.trigger(T.AUDIO_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c});break;case be:a.trigger(T.SUBTITLE_TRACK_LOADED,{details:t,id:h||0,groupId:d||"",stats:s,networkDetails:r,deliveryDirectives:c})}}}function xe(t,e){let s;try{s=new Event("addtrack")}catch(t){s=document.createEvent("Event"),s.initEvent("addtrack",!1,!1)}s.track=t,e.dispatchEvent(s)}function Pe(t,e){const s=t.mode;if("disabled"===s&&(t.mode="hidden"),t.cues&&!t.cues.getCueById(e.id))try{if(t.addCue(e),!t.cues.getCueById(e.id))throw new Error(`addCue is failed for: ${e}`)}catch(s){k.debug(`[texttrack-utils]: ${s}`);try{const s=new self.TextTrackCue(e.startTime,e.endTime,e.text);s.id=e.id,t.addCue(s)}catch(t){k.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${t}`)}}"disabled"===s&&(t.mode=s)}function Fe(t){const e=t.mode;if("disabled"===e&&(t.mode="hidden"),t.cues)for(let e=t.cues.length;e--;)t.removeCue(t.cues[e]);"disabled"===e&&(t.mode=e)}function Me(t,e,s,i){const r=t.mode;if("disabled"===r&&(t.mode="hidden"),t.cues&&t.cues.length>0){const r=function(t,e,s){const i=[],r=function(t,e){if(et[s].endTime)return-1;let i=0,r=s;for(;i<=r;){const n=Math.floor((r+i)/2);if(et[n].startTime&&i-1)for(let n=r,a=t.length;n=e&&r.endTime<=s)i.push(r);else if(r.startTime>s)return i}return i}(t.cues,e,s);for(let e=0;e{const t=$e();try{t&&new t(0,Number.POSITIVE_INFINITY,"")}catch(t){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function He(t,e){return t.getTime()/1e3-e}class Ve{constructor(t){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=t,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(t,e){this.media=e.media}onMediaDetaching(){this.id3Track&&(Fe(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(t){const e=this.getID3Track(t.textTracks);return e.mode="hidden",e}getID3Track(t){if(this.media){for(let e=0;eKe&&(i=Ke);i-s<=0&&(i=s+.25);for(let t=0;tt.type===Ne&&o:"video"===i?t=>t.type===Be&&a:t=>t.type===Ne&&o||t.type===Be&&a,Me(r,e,s,t)}}onLevelUpdated(t,{details:e}){if(!this.media||!e.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:s,id3Track:i}=this,{dateRanges:r}=e,n=Object.keys(r);if(i){const t=Object.keys(s).filter((t=>!n.includes(t)));for(let e=t.length;e--;){const r=t[e];Object.keys(s[r].cues).forEach((t=>{i.removeCue(s[r].cues[t])})),delete s[r]}}const a=e.fragments[e.fragments.length-1];if(0===n.length||!p(null==a?void 0:a.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const o=a.programDateTime/1e3-a.start,l=$e();for(let t=0;t{if(e!==i.id){const s=r[e];if(s.class===i.class&&s.startDate>i.startDate&&(!t||i.startDatethis.timeupdate(),this.hls=t,this.config=t.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:t,levelDetails:e}=this;return void 0!==t.liveMaxLatencyDuration?t.liveMaxLatencyDuration:e?t.liveMaxLatencyDurationCount*e.targetduration:0}get targetLatency(){const{levelDetails:t}=this;if(null===t)return null;const{holdBack:e,partHoldBack:s,targetduration:i}=t,{liveSyncDuration:r,liveSyncDurationCount:n,lowLatencyMode:a}=this.config,o=this.hls.userConfig;let l=a&&s||e;(o.liveSyncDuration||o.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:n*i);const h=i;return l+Math.min(1*this.stallCount,h)}get liveSyncPosition(){const t=this.estimateLiveEdge(),e=this.targetLatency,s=this.levelDetails;if(null===t||null===e||null===s)return null;const i=s.edge,r=t-e-this.edgeStalled,n=i-s.totalduration,a=i-(this.config.lowLatencyMode&&s.partTarget||s.targetduration);return Math.min(Math.max(n,r),a)}get drift(){const{levelDetails:t}=this;return null===t?1:t.drift}get edgeStalled(){const{levelDetails:t}=this;if(null===t)return 0;const e=3*(this.config.lowLatencyMode&&t.partTarget||t.targetduration);return Math.max(t.age-e,0)}get forwardBufferLength(){const{media:t,levelDetails:e}=this;if(!t||!e)return 0;const s=t.buffered.length;return(s?t.buffered.end(s-1):e.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(T.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(t,{details:e}){this.levelDetails=e,e.advanced&&this.timeupdate(),!e.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(t,e){var s;e.details===S.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(s=this.levelDetails)&&s.live&&k.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:t,levelDetails:e}=this;if(!t||!e)return;this.currentTime=t.currentTime;const s=this.computeLatency();if(null===s)return;this._latency=s;const{lowLatencyMode:i,maxLiveSyncPlaybackRate:r}=this.config;if(!i||1===r||!e.live)return;const n=this.targetLatency;if(null===n)return;const a=s-n;if(a.05&&this.forwardBufferLength>1){const e=Math.min(2,Math.max(1,r)),s=Math.round(2/(1+Math.exp(-.75*a-this.edgeStalled))*20)/20;t.playbackRate=Math.min(e,Math.max(1,s))}else 1!==t.playbackRate&&0!==t.playbackRate&&(t.playbackRate=1)}estimateLiveEdge(){const{levelDetails:t}=this;return null===t?null:t.edge+t.age}computeLatency(){const t=this.estimateLiveEdge();return null===t?null:t-this.currentTime}}const We=["NONE","TYPE-0","TYPE-1",null];const je=["SDR","PQ","HLG"];var qe="",Xe="YES",ze="v2";function Qe(t){const{canSkipUntil:e,canSkipDateRanges:s,age:i}=t;return e&&i!!t)).map((t=>t.substring(0,4))).join(","),this.addGroupId("audio",t.attrs.AUDIO),this.addGroupId("text",t.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(t){return ts(this._audioGroups,t)}hasSubtitleGroup(t){return ts(this._subtitleGroups,t)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(t,e){if(e)if("audio"===t){let t=this._audioGroups;t||(t=this._audioGroups=[]),-1===t.indexOf(e)&&t.push(e)}else if("text"===t){let t=this._subtitleGroups;t||(t=this._subtitleGroups=[]),-1===t.indexOf(e)&&t.push(e)}}get urlId(){return 0}set urlId(t){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var t;return null==(t=this.audioGroups)?void 0:t[0]}get textGroupId(){var t;return null==(t=this.subtitleGroups)?void 0:t[0]}addFallback(){}}function ts(t,e){return!(!e||!t)&&-1!==t.indexOf(e)}function es(t,e){const s=e.startPTS;if(p(s)){let i,r=0;e.sn>t.sn?(r=s-t.start,i=t):(r=t.start-s,i=e),i.duration!==r&&(i.duration=r)}else if(e.sn>t.sn){t.cc===e.cc&&t.minEndPTS?e.start=t.start+(t.minEndPTS-t.start):e.start=t.start+t.duration}else e.start=Math.max(t.start-e.duration,0)}function ss(t,e,s,i,r,n){i-s<=0&&(k.warn("Fragment should have a positive duration",e),i=s+e.duration,n=r+e.duration);let a=s,o=i;const l=e.startPTS,h=e.endPTS;if(p(l)){const t=Math.abs(l-s);p(e.deltaPTS)?e.deltaPTS=Math.max(t,e.deltaPTS):e.deltaPTS=t,a=Math.max(s,l),s=Math.min(s,l),r=Math.min(r,e.startDTS),o=Math.min(i,h),i=Math.max(i,h),n=Math.max(n,e.endDTS)}const d=s-e.start;0!==e.start&&(e.start=s),e.duration=i-e.start,e.startPTS=s,e.maxStartPTS=a,e.startDTS=r,e.endPTS=i,e.minEndPTS=o,e.endDTS=n;const c=e.sn;if(!t||ct.endSN)return 0;let u;const f=c-t.startSN,g=t.fragments;for(g[f]=e,u=f;u>0;u--)es(g[u],g[u-1]);for(u=f;u=0;t--){const e=i[t].initSegment;if(e){s=e;break}}t.fragmentHint&&delete t.fragmentHint.endPTS;let r,n=0;if(function(t,e,s){const i=e.skippedSegments,r=Math.max(t.startSN,e.startSN)-e.startSN,n=(t.fragmentHint?1:0)+(i?e.endSN:Math.min(t.endSN,e.endSN))-e.startSN,a=e.startSN-t.startSN,o=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments,l=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments;for(let t=r;t<=n;t++){const r=l[a+t];let n=o[t];i&&!n&&t{t.relurl&&(n=t.cc-i.cc),p(t.startPTS)&&p(t.endPTS)&&(i.start=i.startPTS=t.startPTS,i.startDTS=t.startDTS,i.maxStartPTS=t.maxStartPTS,i.endPTS=t.endPTS,i.endDTS=t.endDTS,i.minEndPTS=t.minEndPTS,i.duration=t.endPTS-t.startPTS,i.duration&&(r=i),e.PTSKnown=e.alignedSliding=!0),i.elementaryStreams=t.elementaryStreams,i.loader=t.loader,i.stats=t.stats,t.initSegment&&(i.initSegment=t.initSegment,s=t.initSegment)})),s){(e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments).forEach((t=>{var e;!t||t.initSegment&&t.initSegment.relurl!==(null==(e=s)?void 0:e.relurl)||(t.initSegment=s)}))}if(e.skippedSegments)if(e.deltaUpdateFailed=e.fragments.some((t=>!t)),e.deltaUpdateFailed){k.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let t=e.skippedSegments;t--;)e.fragments.shift();e.startSN=e.fragments[0].sn,e.startCC=e.fragments[0].cc}else e.canSkipDateRanges&&(e.dateRanges=function(t,e,s){const i=m({},t);s&&s.forEach((t=>{delete i[t]}));return Object.keys(e).forEach((t=>{const s=new _(e[t].attr,i[t]);s.isValid?i[t]=s:k.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(e[t].attr)}"`)})),i}(t.dateRanges,e.dateRanges,e.recentlyRemovedDateranges));const a=e.fragments;if(n){k.warn("discontinuity sliding from playlist, take drift into account");for(let t=0;t{e.elementaryStreams=t.elementaryStreams,e.stats=t.stats})),r?ss(e,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):rs(t,e),a.length&&(e.totalduration=e.edge-a[0].start),e.driftStartTime=t.driftStartTime,e.driftStart=t.driftStart;const o=e.advancedDateTime;if(e.advanced&&o){const t=e.edge;e.driftStart||(e.driftStartTime=o,e.driftStart=t),e.driftEndTime=o,e.driftEnd=t}else e.driftEndTime=t.driftEndTime,e.driftEnd=t.driftEnd,e.advancedDateTime=t.advancedDateTime}function rs(t,e){const s=e.startSN+e.skippedSegments-t.startSN,i=t.fragments;s<0||s>=i.length||ns(e,i[s].start)}function ns(t,e){if(e){const s=t.fragments;for(let i=t.skippedSegments;i{const{details:s}=t;null!=s&&s.fragments&&s.fragments.forEach((t=>{t.level=e}))}))}function hs(t){switch(t.details){case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_TIMEOUT:case S.LEVEL_LOAD_TIMEOUT:case S.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function ds(t,e){const s=hs(e);return t.default[(s?"timeout":"error")+"Retry"]}function cs(t,e){const s="linear"===t.backoff?1:Math.pow(2,e);return Math.min(s*t.retryDelayMs,t.maxRetryDelayMs)}function us(t){return u(u({},t),{errorRetry:null,timeoutRetry:null})}function fs(t,e,s,i){if(!t)return!1;const r=null==i?void 0:i.code,n=e499)}(r)||!!s);return t.shouldRetry?t.shouldRetry(t,e,s,i,n):n}const gs=function(t,e){let s=0,i=t.length-1,r=null,n=null;for(;s<=i;){r=(s+i)/2|0,n=t[r];const a=e(n);if(a>0)s=r+1;else{if(!(a<0))return n;i=r-1}}return null};function ms(t,e,s=0,i=0,r=.005){let n=null;if(t){n=e[t.sn-e[0].sn+1]||null;const i=t.endDTS-s;i>0&&i<15e-7&&(s+=15e-7)}else 0===s&&0===e[0].start&&(n=e[0]);if(n&&((!t||t.level===n.level)&&0===ps(s,i,n)||function(t,e,s){if(e&&0===e.start&&e.level0){const i=e.tagList.reduce(((t,e)=>("INF"===e[0]&&(t+=parseFloat(e[1])),t)),s);return t.start<=i}return!1}(n,t,Math.min(r,i))))return n;const a=gs(e,ps.bind(null,s,i));return!a||a===t&&n?n:a}function ps(t=0,e=0,s){if(s.start<=t&&s.start+s.duration>t)return 0;const i=Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return s.start+s.duration-i<=t?1:s.start-i>t&&s.start?-1:0}function vs(t,e,s){const i=1e3*Math.min(e,s.duration+(s.deltaPTS?s.deltaPTS:0));return(s.endProgramDateTime||0)-i>t}var ys=0,Ts=2,Es=3,Ss=5,Ls=0,As=1,Rs=2;class bs{constructor(t,e){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=k.log.bind(k,`${e}:`),this.warn=k.warn.bind(k,`${e}:`),this.hls=t}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(t,e,s){const i=null==e?void 0:e.renditionReports;if(i){let r=-1;for(let s=0;s=0&&t>e.partTarget&&(a+=1)}const o=s&&Qe(s);return new Je(n,a>=0?a:void 0,o)}}}loadPlaylist(t){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(t){return this.canLoad&&!!t&&!!t.url&&(!t.details||t.details.live)}shouldReloadPlaylist(t){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(t)}playlistLoaded(t,e,s){const{details:i,stats:r}=e,n=self.performance.now(),a=r.loading.first?Math.max(0,n-r.loading.first):0;if(i.advancedDateTime=Date.now()-a,i.live||null!=s&&s.live){if(i.reloaded(s),s&&this.log(`live playlist ${t} ${i.advanced?"REFRESHED "+i.lastPartSn+"-"+i.lastPartIndex:i.updated?"UPDATED":"MISSED"}`),s&&i.fragments.length>0&&is(s,i),!this.canLoad||!i.live)return;let a,o,l;if(i.canBlockReload&&i.endSN&&i.advanced){const t=this.hls.config.lowLatencyMode,r=i.lastPartSn,n=i.endSN,h=i.lastPartIndex,d=r===n;-1!==h?(o=d?n+1:r,l=d?t?0:h:h+1):o=n+1;const c=i.age,u=c+i.ageHeader;let f=Math.min(u-i.partTarget,1.5*i.targetduration);if(f>0){if(s&&f>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${f} with playlist age: ${i.age}`),f=0;else{const t=Math.floor(f/i.targetduration);if(o+=t,void 0!==l){l+=Math.round(f%i.targetduration/i.partTarget)}this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${c.toFixed(2)}s goal: ${f} skip sn ${t} to part ${l}`)}i.tuneInGoal=f}if(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l),t||!d)return void this.loadPlaylist(a)}else(i.canBlockReload||i.canSkipUntil)&&(a=this.getDeliveryDirectives(i,e.deliveryDirectives,o,l));const h=this.hls.mainForwardBufferInfo,d=h?h.end-h.len:0,c=function(t,e=1/0){let s=1e3*t.targetduration;if(t.updated){const i=t.fragments,r=4;if(i.length&&s*r>e){const t=1e3*i[i.length-1].duration;tthis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==o&&i.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*i.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(a)),u)}else this.clearTimer()}getDeliveryDirectives(t,e,s,i){let r=Qe(t);return null!=e&&e.skip&&t.deltaUpdateFailed&&(s=e.msn,i=e.part,r=qe),new Je(s,i,r)}checkRetry(t){const e=t.details,s=hs(t),i=t.errorAction,{action:r,retryCount:n=0,retryConfig:a}=i||{},o=!!i&&!!a&&(r===Ss||!i.resolved&&r===Ts);if(o){var l;if(this.requestScheduled=-1,n>=a.maxNumRetry)return!1;if(s&&null!=(l=t.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" without delivery-directives`),this.loadPlaylist();else{const t=cs(a,n);this.timer=self.setTimeout((()=>this.loadPlaylist()),t),this.warn(`Retrying playlist loading ${n+1}/${a.maxNumRetry} after "${e}" in ${t}ms`)}t.levelRetry=!0,i.resolved=!0}return o}}class ks{constructor(t,e=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=t,this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=e,this.totalWeight_=s}sample(t,e){const s=Math.pow(this.alpha_,t);this.estimate_=e*(1-s)+s*this.estimate_,this.totalWeight_+=t}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const t=1-Math.pow(this.alpha_,this.totalWeight_);if(t)return this.estimate_/t}return this.estimate_}}class Ds{constructor(t,e,s,i=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new ks(t),this.fast_=new ks(e),this.defaultTTFB_=i,this.ttfb_=new ks(t)}update(t,e){const{slow_:s,fast_:i,ttfb_:r}=this;s.halfLife!==t&&(this.slow_=new ks(t,s.getEstimate(),s.getTotalWeight())),i.halfLife!==e&&(this.fast_=new ks(e,i.getEstimate(),i.getTotalWeight())),r.halfLife!==t&&(this.ttfb_=new ks(t,r.getEstimate(),r.getTotalWeight()))}sample(t,e){const s=(t=Math.max(t,this.minDelayMs_))/1e3,i=8*e/s;this.fast_.sample(s,i),this.slow_.sample(s,i)}sampleTTFB(t){const e=t/1e3,s=Math.sqrt(2)*Math.exp(-Math.pow(e,2)/2);this.ttfb_.sample(s,Math.max(t,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const Is={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},ws={};function Cs(t,e,s,i,r,n){const a=t.audioCodec?t.audioGroups:null,o=null==n?void 0:n.audioCodec,l=null==n?void 0:n.channels,h=l?parseInt(l):o?1/0:2;let d=null;if(null!=a&&a.length)try{d=1===a.length&&a[0]?e.groups[a[0]].channels:a.reduce(((t,s)=>{if(s){const i=e.groups[s];if(!i)throw new Error(`Audio track group ${s} not found`);Object.keys(i.channels).forEach((e=>{t[e]=(t[e]||0)+i.channels[e]}))}return t}),{2:0})}catch(t){return!0}return void 0!==t.videoCodec&&(t.width>1920&&t.height>1088||t.height>1920&&t.width>1088||t.frameRate>Math.max(i,30)||"SDR"!==t.videoRange&&t.videoRange!==s||t.bitrate>Math.max(r,8e6))||!!d&&p(h)&&Object.keys(d).some((t=>parseInt(t)>h))}function _s(t,e,s){const i=t.videoCodec,r=t.audioCodec;if(!i||!r||!s)return Promise.resolve(Is);const n={width:t.width,height:t.height,bitrate:Math.ceil(Math.max(.9*t.bitrate,t.averageBitrate)),framerate:t.frameRate||30},a=t.videoRange;"SDR"!==a&&(n.transferFunction=a.toLowerCase());const o=i.split(",").map((t=>({type:"media-source",video:u(u({},n),{},{contentType:se(t,"video")})})));return r&&t.audioGroups&&t.audioGroups.forEach((t=>{var s;t&&(null==(s=e.groups[t])||s.tracks.forEach((e=>{if(e.groupId===t){const t=e.channels||"",s=parseFloat(t);p(s)&&s>2&&o.push.apply(o,r.split(",").map((t=>({type:"media-source",audio:{contentType:se(t,"audio"),channels:""+s}}))))}})))})),Promise.all(o.map((t=>{const e=function(t){const{audio:e,video:s}=t,i=s||e;if(i){const t=i.contentType.split('"')[1];if(s)return`r${s.height}x${s.width}f${Math.ceil(s.framerate)}${s.transferFunction||"sd"}_${t}_${Math.ceil(s.bitrate/1e5)}`;if(e)return`c${e.channels}${e.spatialRendering?"s":"n"}_${t}`}return""}(t);return ws[e]||(ws[e]=s.decodingInfo(t))}))).then((t=>({supported:!t.some((t=>!t.supported)),configurations:o,decodingInfoResults:t}))).catch((t=>({supported:!1,configurations:o,decodingInfoResults:[],error:t})))}function xs(t,e){let s=!1,i=[];return t&&(s="SDR"!==t,i=[t]),e&&(i=e.allowedVideoRanges||je.slice(0),s=void 0!==e.preferHDR?e.preferHDR:function(){if("function"==typeof matchMedia){const t=matchMedia("(dynamic-range: high)"),e=matchMedia("bad query");if(t.media!==e.media)return!0===t.matches}return!1}(),i=s?i.filter((t=>"SDR"!==t)):["SDR"]),{preferHDR:s,allowedVideoRanges:i}}function Ps(t,e){k.log(`[abr] start candidates with "${t}" ignored because ${e}`)}function Fs(t,e,s){if("attrs"in t){const s=e.indexOf(t);if(-1!==s)return s}for(let i=0;i-1===i.indexOf(t)))}(o,e.characteristics))&&(void 0===s||s(t,e))}function Os(t,e){const{audioCodec:s,channels:i}=t;return!(void 0!==s&&(e.audioCodec||"").substring(0,4)!==s.substring(0,4)||void 0!==i&&i!==(e.channels||"2"))}function Ns(t,e,s){for(let i=e;i;i--)if(s(t[i]))return i;for(let i=e+1;i1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var Bs="NOT_LOADED",$s="APPENDING",Gs="PARTIAL",Ks="OK";class Hs{constructor(t){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=t,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.BUFFER_APPENDED,this.onBufferAppended,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.BUFFER_APPENDED,this.onBufferAppended,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(t,e){const s=this.activePartLists[e];if(s)for(let e=s.length;e--;){const i=s[e];if(!i)break;const r=i.end;if(i.start<=t&&null!==r&&t<=r)return i}return this.getBufferedFrag(t,e)}getBufferedFrag(t,e){const{fragments:s}=this,i=Object.keys(s);for(let r=i.length;r--;){const n=s[i[r]];if((null==n?void 0:n.body.type)===e&&n.buffered){const e=n.body;if(e.start<=t&&t<=e.end)return e}}return null}detectEvictedFragments(t,e,s,i){this.timeRanges&&(this.timeRanges[t]=e);const r=(null==i?void 0:i.fragment.sn)||-1;Object.keys(this.fragments).forEach((i=>{const n=this.fragments[i];if(!n)return;if(r>=n.body.sn)return;if(!n.buffered&&!n.loaded)return void(n.body.type===s&&this.removeFragment(n.body));const a=n.range[t];a&&a.time.some((t=>{const s=!this.isTimeBuffered(t.startPTS,t.endPTS,e);return s&&this.removeFragment(n.body),s}))}))}detectPartialFragments(t){const e=this.timeRanges,{frag:s,part:i}=t;if(!e||"initSegment"===s.sn)return;const r=Ys(s),n=this.fragments[r];if(!n||n.buffered&&s.gap)return;const a=!s.relurl;if(Object.keys(e).forEach((t=>{const r=s.elementaryStreams[t];if(!r)return;const o=e[t],l=a||!0===r.partial;n.range[t]=this.getBufferedTimes(s,i,l,o)})),n.loaded=null,Object.keys(n.range).length){n.buffered=!0;(n.body.endList=s.endList||n.body.endList)&&(this.endListFragments[n.body.type]=n),Vs(n)||this.removeParts(s.sn-1,s.type)}else this.removeFragment(n.body)}removeParts(t,e){const s=this.activePartLists[e];s&&(this.activePartLists[e]=s.filter((e=>e.fragment.sn>=t)))}fragBuffered(t,e){const s=Ys(t);let i=this.fragments[s];!i&&e&&(i=this.fragments[s]={body:t,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},t.gap&&(this.hasGaps=!0)),i&&(i.loaded=null,i.buffered=!0)}getBufferedTimes(t,e,s,i){const r={time:[],partial:s},n=t.start,a=t.end,o=t.minEndPTS||a,l=t.maxStartPTS||n;for(let t=0;t=e&&o<=s){r.time.push({startPTS:Math.max(n,i.start(t)),endPTS:Math.min(a,i.end(t))});break}if(ne){const e=Math.max(n,i.start(t)),s=Math.min(a,i.end(t));s>e&&(r.partial=!0,r.time.push({startPTS:e,endPTS:s}))}else if(a<=e)break}return r}getPartialFragment(t){let e,s,i,r=null,n=0;const{bufferPadding:a,fragments:o}=this;return Object.keys(o).forEach((l=>{const h=o[l];h&&Vs(h)&&(s=h.body.start-a,i=h.body.end+a,t>=s&&t<=i&&(e=Math.min(t-s,i-t),n<=e&&(r=h.body,n=e)))})),r}isEndListAppended(t){const e=this.endListFragments[t];return void 0!==e&&(e.buffered||Vs(e))}getState(t){const e=Ys(t),s=this.fragments[e];return s?s.buffered?Vs(s)?Gs:Ks:$s:Bs}isTimeBuffered(t,e,s){let i,r;for(let n=0;n=i&&e<=r)return!0;if(e<=i)return!1}return!1}onFragLoaded(t,e){const{frag:s,part:i}=e;if("initSegment"===s.sn||s.bitrateTest)return;const r=i?null:e,n=Ys(s);this.fragments[n]={body:s,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(t,e){const{frag:s,part:i,timeRanges:r}=e;if("initSegment"===s.sn)return;const n=s.type;if(i){let t=this.activePartLists[n];t||(this.activePartLists[n]=t=[]),t.push(i)}this.timeRanges=r,Object.keys(r).forEach((t=>{const e=r[t];this.detectEvictedFragments(t,e,n,i)}))}onFragBuffered(t,e){this.detectPartialFragments(e)}hasFragment(t){const e=Ys(t);return!!this.fragments[e]}hasParts(t){var e;return!(null==(e=this.activePartLists[t])||!e.length)}removeFragmentsInRange(t,e,s,i,r){i&&!this.hasGaps||Object.keys(this.fragments).forEach((n=>{const a=this.fragments[n];if(!a)return;const o=a.body;o.type!==s||i&&!o.gap||o.startt&&(a.buffered||r)&&this.removeFragment(o)}))}removeFragment(t){const e=Ys(t);t.stats.loaded=0,t.clearElementaryStreamInfo();const s=this.activePartLists[t.type];if(s){const e=t.sn;this.activePartLists[t.type]=s.filter((t=>t.fragment.sn!==e))}delete this.fragments[e],t.endList&&delete this.endListFragments[t.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function Vs(t){var e,s,i;return t.buffered&&(t.body.gap||(null==(e=t.range.video)?void 0:e.partial)||(null==(s=t.range.audio)?void 0:s.partial)||(null==(i=t.range.audiovideo)?void 0:i.partial))}function Ys(t){return`${t.type}_${t.level}_${t.sn}`}const Ws={length:0,start:()=>0,end:()=>0};class js{static isBuffered(t,e){try{if(t){const s=js.getBuffered(t);for(let t=0;t=s.start(t)&&e<=s.end(t))return!0}}catch(t){}return!1}static bufferInfo(t,e,s){try{if(t){const i=js.getBuffered(t),r=[];let n;for(n=0;nn&&(i[r-1].end=t[e].end):i.push(t[e])}else i.push(t[e])}else i=t;let r,n=0,a=e,o=e;for(let t=0;t=l&&es.startCC||t&&t.cc{if(this.loader&&this.loader.destroy(),t.gap){if(t.tagList.some((t=>"GAP"===t[0])))return void o(ii(t));t.gap=!1}const l=this.loader=t.loader=r?new r(i):new n(i),h=si(t),d=us(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===t.sn?1/0:ti};t.stats=l.stats,l.load(h,c,{onSuccess:(e,s,i,r)=>{this.resetLoader(t,l);let n=e.data;i.resetIV&&t.decryptdata&&(t.decryptdata.iv=new Uint8Array(n.slice(0,16)),n=n.slice(16)),a({frag:t,part:null,payload:n,networkDetails:r})},onError:(e,i,r,n)=>{this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,response:u({url:s,data:void 0},e),error:new Error(`HTTP Error ${e.code} ${e.text}`),networkDetails:r,stats:n}))},onAbort:(e,s,i)=>{this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,error:new Error("Aborted"),networkDetails:i,stats:e}))},onTimeout:(e,s,i)=>{this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:i,stats:e}))},onProgress:(s,i,r,n)=>{e&&e({frag:t,part:null,payload:r,networkDetails:n})}})}))}loadPart(t,e,s){this.abort();const i=this.config,r=i.fLoader,n=i.loader;return new Promise(((a,o)=>{if(this.loader&&this.loader.destroy(),t.gap||e.gap)return void o(ii(t,e));const l=this.loader=t.loader=r?new r(i):new n(i),h=si(t,e),d=us(i.fragLoadPolicy.default),c={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:ti};e.stats=l.stats,l.load(h,c,{onSuccess:(i,r,n,o)=>{this.resetLoader(t,l),this.updateStatsFromPart(t,e);const h={frag:t,part:e,payload:i.data,networkDetails:o};s(h),a(h)},onError:(s,i,r,n)=>{this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_ERROR,fatal:!1,frag:t,part:e,response:u({url:h.url,data:void 0},s),error:new Error(`HTTP Error ${s.code} ${s.text}`),networkDetails:r,stats:n}))},onAbort:(s,i,r)=>{t.stats.aborted=e.stats.aborted,this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.INTERNAL_ABORTED,fatal:!1,frag:t,part:e,error:new Error("Aborted"),networkDetails:r,stats:s}))},onTimeout:(s,i,r)=>{this.resetLoader(t,l),o(new ri({type:E.NETWORK_ERROR,details:S.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t,part:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:s}))}})}))}updateStatsFromPart(t,e){const s=t.stats,i=e.stats,r=i.total;if(s.loaded+=i.loaded,r){const i=Math.round(t.duration/e.duration),n=Math.min(Math.round(s.loaded/r),i),a=(i-n)*Math.round(s.loaded/n);s.total=s.loaded+a}else s.total=Math.max(s.loaded,s.total);const n=s.loading,a=i.loading;n.start?n.first+=a.first-a.start:(n.start=a.start,n.first=a.first),n.end=a.end}resetLoader(t,e){t.loader=null,this.loader===e&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),e.destroy()}}function si(t,e=null){const s=e||t,i={frag:t,part:e,responseType:"arraybuffer",url:s.url,headers:{},rangeStart:0,rangeEnd:0},r=s.byteRangeStartOffset,n=s.byteRangeEndOffset;if(p(r)&&p(n)){var a;let e=r,s=n;if("initSegment"===t.sn&&"AES-128"===(null==(a=t.decryptdata)?void 0:a.method)){const t=n-r;t%16&&(s=n+(16-t%16)),0!==r&&(i.resetIV=!0,e=r-16)}i.rangeStart=e,i.rangeEnd=s}return i}function ii(t,e){const s=new Error(`GAP ${t.gap?"tag":"attribute"} found`),i={type:E.MEDIA_ERROR,details:S.FRAG_GAP,fatal:!1,frag:t,error:s,networkDetails:null};return e&&(i.part=e),(e||t).stats.aborted=!0,new ri(i)}class ri extends Error{constructor(t){super(t.error.message),this.data=void 0,this.data=t}}class ni{constructor(t,e){this.subtle=void 0,this.aesIV=void 0,this.subtle=t,this.aesIV=e}decrypt(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)}}class ai{constructor(t,e){this.subtle=void 0,this.key=void 0,this.subtle=t,this.key=e}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class oi{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(t){const e=new DataView(t),s=new Uint32Array(4);for(let t=0;t<4;t++)s[t]=e.getUint32(4*t);return s}initTable(){const t=this.sBox,e=this.invSBox,s=this.subMix,i=s[0],r=s[1],n=s[2],a=s[3],o=this.invSubMix,l=o[0],h=o[1],d=o[2],c=o[3],u=new Uint32Array(256);let f=0,g=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let s=g^g<<1^g<<2^g<<3^g<<4;s=s>>>8^255&s^99,t[f]=s,e[s]=f;const o=u[f],m=u[o],p=u[m];let v=257*u[s]^16843008*s;i[f]=v<<24|v>>>8,r[f]=v<<16|v>>>16,n[f]=v<<8|v>>>24,a[f]=v,v=16843009*p^65537*m^257*o^16843008*f,l[s]=v<<24|v>>>8,h[s]=v<<16|v>>>16,d[s]=v<<8|v>>>24,c[s]=v,f?(f=o^u[u[u[p^o]]],g^=u[u[g]]):f=g=1}}expandKey(t){const e=this.uint8ArrayToUint32Array_(t);let s=!0,i=0;for(;i{if(!this.subtle)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new ni(this.subtle,new Uint8Array(s)).decrypt(t.buffer,e)})).catch((i=>(k.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${i.name}: ${i.message}`),this.onWebCryptoError(t,e,s))))}onWebCryptoError(t,e,s){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(t,e,s);const i=this.flush();if(i)return i.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(t){let e=t;const s=t.length-t.length%16;return s!==t.length&&(e=et(t,0,s),this.remainderData=et(t,s)),e}logOnce(t){this.logEnabled&&(k.log(`[decrypter]: ${t}`),this.logEnabled=!1)}}const hi=function(t){let e="";const s=t.length;for(let i=0;ia.end){const t=n>r;(n{if(this.fragContextChanged(t))return this.warn(`Fragment ${t.sn}${e.part?" p: "+e.part.index:""} of level ${t.level} was dropped during download.`),void this.fragmentTracker.removeFragment(t);t.stats.chunkCount++,this._handleFragmentLoadProgress(e)})).then((e=>{if(!e)return;const s=this.state;this.fragContextChanged(t)?(s===fi||!this.fragCurrent&&s===pi)&&(this.fragmentTracker.removeFragment(t),this.state=ci):("payload"in e&&(this.log(`Loaded fragment ${t.sn} of level ${t.level}`),this.hls.trigger(T.FRAG_LOADED,e)),this._handleFragmentLoadComplete(e))})).catch((e=>{this.state!==di&&this.state!==Ti&&(this.warn(`Frag error: ${(null==e?void 0:e.message)||e}`),this.resetFragmentLoading(t))}))}clearTrackerIfNeeded(t){var e;const{fragmentTracker:s}=this;if(s.getState(t)===$s){const e=t.type,i=this.getFwdBufferInfo(this.mediaBuffer,e),r=Math.max(t.duration,i?i.len:this.config.maxBufferLength),n=this.backtrackFragment;(1===(n?t.sn-n.sn:0)||this.reduceMaxBufferLength(r))&&s.removeFragment(t)}else 0===(null==(e=this.mediaBuffer)?void 0:e.buffered.length)?s.removeAllFragments():s.hasParts(t.type)&&(s.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type}),s.getState(t)===Gs&&s.removeFragment(t))}checkLiveUpdate(t){if(t.updated&&!t.live){const e=t.fragments[t.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type})}t.fragments[0]||(t.deltaUpdateFailed=!0)}flushMainBuffer(t,e,s=null){if(!(t-e))return;const i={startOffset:t,endOffset:e,type:s};this.hls.trigger(T.BUFFER_FLUSHING,i)}_loadInitSegment(t,e){this._doFragLoad(t,e).then((e=>{if(!e||this.fragContextChanged(t)||!this.levels)throw new Error("init load aborted");return e})).then((e=>{const{hls:s}=this,{payload:i}=e,r=t.decryptdata;if(i&&i.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const n=self.performance.now();return this.decrypter.decrypt(new Uint8Array(i),r.key.buffer,r.iv.buffer).catch((e=>{throw s.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const r=self.performance.now();return s.trigger(T.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:n,tdecrypt:r}}),e.payload=i,this.completeInitSegmentLoad(e)}))}return this.completeInitSegmentLoad(e)})).catch((e=>{this.state!==di&&this.state!==Ti&&(this.warn(e),this.resetFragmentLoading(t))}))}completeInitSegmentLoad(t){const{levels:e}=this;if(!e)throw new Error("init load aborted, missing levels");const s=t.frag.stats;this.state=ci,t.frag.data=new Uint8Array(t.payload),s.parsing.start=s.buffering.start=self.performance.now(),s.parsing.end=s.buffering.end=self.performance.now(),this.tick()}fragContextChanged(t){const{fragCurrent:e}=this;return!t||!e||t.sn!==e.sn||t.level!==e.level}fragBufferedComplete(t,e){var s,i,r,n;const a=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${t.type} sn: ${t.sn}${e?" part: "+e.index:""} of ${this.playlistType===ke?"level":"track"} ${t.level} (frag:[${(null!=(s=t.startPTS)?s:NaN).toFixed(3)}-${(null!=(i=t.endPTS)?i:NaN).toFixed(3)}] > buffer:${a?hi(js.getBuffered(a)):"(detached)"})`),"initSegment"!==t.sn){var o;if(t.type!==Ie){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return void(this.state=ci)}const e=null==(o=this.levels)?void 0:o[t.level];null!=e&&e.fragmentError&&(this.log(`Resetting level fragment error count of ${e.fragmentError} on frag buffered`),e.fragmentError=0)}this.state=ci,a&&(!this.loadedmetadata&&t.type==ke&&a.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(n=this.fragPrevious)?void 0:n.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(t){const{transmuxer:e}=this;if(!e)return;const{frag:s,part:i,partsLoaded:r}=t,n=!r||0===r.length||r.some((t=>!t)),a=new qs(s.level,s.sn,s.stats.chunkCount+1,0,i?i.index:-1,!n);e.flush(a)}_handleFragmentLoadProgress(t){}_doFragLoad(t,e,s=null,i){var r;const n=null==e?void 0:e.details;if(!this.levels||!n)throw new Error(`frag load aborted, missing level${n?"":" detail"}s`);let a=null;if(!t.encrypted||null!=(r=t.decryptdata)&&r.key?!t.encrypted&&n.encryptedFragments.length&&this.keyLoader.loadClear(t,n.encryptedFragments):(this.log(`Loading key for ${t.sn} of [${n.startSN}-${n.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${t.level}`),this.state=ui,this.fragCurrent=t,a=this.keyLoader.load(t).then((t=>{if(!this.fragContextChanged(t.frag))return this.hls.trigger(T.KEY_LOADED,t),this.state===ui&&(this.state=ci),t})),this.hls.trigger(T.KEY_LOADING,{frag:t}),null===this.fragCurrent&&(a=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),s=Math.max(t.start,s||0),this.config.lowLatencyMode&&"initSegment"!==t.sn){const r=n.partList;if(r&&i){s>t.end&&n.fragmentHint&&(t=n.fragmentHint);const o=this.getNextPart(r,t,s);if(o>-1){const l=r[o];let h;return this.log(`Loading part sn: ${t.sn} p: ${l.index} cc: ${t.cc} of playlist [${n.startSN}-${n.endSN}] parts [0-${o}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=fi,h=a?a.then((s=>!s||this.fragContextChanged(s.frag)?null:this.doFragPartsLoad(t,l,e,i))).catch((t=>this.handleFragLoadError(t))):this.doFragPartsLoad(t,l,e,i).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,part:l,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):h}if(!t.url||this.loadedEndOfParts(r,s))return Promise.resolve(null)}}this.log(`Loading fragment ${t.sn} cc: ${t.cc} ${n?"of ["+n.startSN+"-"+n.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${t.level}, target: ${parseFloat(s.toFixed(3))}`),p(t.sn)&&!this.bitrateTest&&(this.nextLoadPosition=t.start+t.duration),this.state=fi;const o=this.config.progressive;let l;return l=o&&a?a.then((e=>!e||this.fragContextChanged(null==e?void 0:e.frag)?null:this.fragmentLoader.load(t,i))).catch((t=>this.handleFragLoadError(t))):Promise.all([this.fragmentLoader.load(t,o?i:void 0),a]).then((([t])=>(!o&&t&&i&&i(t),t))).catch((t=>this.handleFragLoadError(t))),this.hls.trigger(T.FRAG_LOADING,{frag:t,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(t,e,s,i){return new Promise(((r,n)=>{var a;const o=[],l=null==(a=s.details)?void 0:a.partList,h=e=>{this.fragmentLoader.loadPart(t,e,i).then((i=>{o[e.index]=i;const n=i.part;this.hls.trigger(T.FRAG_LOADED,i);const a=as(s,t.sn,e.index+1)||os(l,t.sn,e.index+1);if(!a)return r({frag:t,part:n,partsLoaded:o});h(a)})).catch(n)};h(e)}))}handleFragLoadError(t){if("data"in t){const e=t.data;t.data&&e.details===S.INTERNAL_ABORTED?this.handleFragLoadAborted(e.frag,e.part):this.hls.trigger(T.ERROR,e)}else this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,err:t,error:t,fatal:!0});return null}_handleTransmuxerFlush(t){const e=this.getCurrentContext(t);if(!e||this.state!==pi)return void(this.fragCurrent||this.state===di||this.state===Ti||(this.state=ci));const{frag:s,part:i,level:r}=e,n=self.performance.now();s.stats.parsing.end=n,i&&(i.stats.parsing.end=n),this.updateLevelTiming(s,i,r,t.partial)}getCurrentContext(t){const{levels:e,fragCurrent:s}=this,{level:i,sn:r,part:n}=t;if(null==e||!e[i])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${i}. The current chunk will not be buffered.`),null;const a=e[i],o=n>-1?as(a,r,n):null,l=o?o.fragment:function(t,e,s){if(null==t||!t.details)return null;const i=t.details;let r=i.fragments[e-i.startSN];return r||(r=i.fragmentHint,r&&r.sn===e?r:en&&this.flushMainBuffer(a,t.start)}getFwdBufferInfo(t,e){const s=this.getLoadPosition();return p(s)?this.getFwdBufferInfoAtPos(t,s,e):null}getFwdBufferInfoAtPos(t,e,s){const{config:{maxBufferHole:i}}=this,r=js.bufferInfo(t,e,i);if(0===r.len&&void 0!==r.nextStart){const n=this.fragmentTracker.getBufferedFrag(e,s);if(n&&r.nextStart=s&&(e.maxMaxBufferLength=i,this.warn(`Reduce max buffer length to ${i}s`),!0)}getAppendedFrag(t,e=ke){const s=this.fragmentTracker.getAppendedFrag(t,ke);return s&&"fragment"in s?s.fragment:s}getNextFragment(t,e){const s=e.fragments,i=s.length;if(!i)return null;const{config:r}=this,n=s[0].start;let a;if(e.live){const o=r.initialLiveManifestSize;if(ie}getNextFragmentLoopLoading(t,e,s,i,r){const n=t.gap,a=this.getNextFragment(this.nextLoadPosition,e);if(null===a)return a;if(t=a,n&&t&&!t.gap&&s.nextStart){const e=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,i);if(null!==e&&s.len+e.len>=r)return this.log(`buffer full after gaps in "${i}" playlist starting at sn: ${t.sn}`),null}return t}mapToInitFragWhenRequired(t){return null==t||!t.initSegment||null!=t&&t.initSegment.data||this.bitrateTest?t:t.initSegment}getNextPart(t,e,s){let i=-1,r=!1,n=!0;for(let a=0,o=t.length;a-1&&ss.start&&s.loaded}getInitialLiveFragment(t,e){const s=this.fragPrevious;let i=null;if(s){if(t.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),i=function(t,e,s){if(null===e||!Array.isArray(t)||!t.length||!p(e))return null;if(e<(t[0].programDateTime||0))return null;if(e>=(t[t.length-1].endProgramDateTime||0))return null;s=s||0;for(let i=0;i=t.startSN&&r<=t.endSN){const n=e[r-t.startSN];s.cc===n.cc&&(i=n,this.log(`Live playlist, switching playlist, load frag with next SN: ${i.sn}`))}i||(i=function(t,e){return gs(t,(t=>t.cce?-1:0))}(e,s.cc),i&&this.log(`Live playlist, switching playlist, load frag with same CC: ${i.sn}`))}}else{const e=this.hls.liveSyncPosition;null!==e&&(i=this.getFragmentAtPosition(e,this.bitrateTest?t.fragmentEnd:t.edge,t))}return i}getFragmentAtPosition(t,e,s){const{config:i}=this;let{fragPrevious:r}=this,{fragments:n,endSN:a}=s;const{fragmentHint:o}=s,{maxFragLookUpTolerance:l}=i,h=s.partList,d=!!(i.lowLatencyMode&&null!=h&&h.length&&o);let c;if(d&&o&&!this.bitrateTest&&(n=n.concat(o),a=o.sn),te-l?0:l)}else c=n[n.length-1];if(c){const t=c.sn-s.startSN,e=this.fragmentTracker.getState(c);if((e===Ks||e===Gs&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!d||h[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const e=n[t+1];c=c.sn=n-e.maxFragLookUpTolerance&&r<=a;if(null!==i&&s.duration>i&&(r${t.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${i}`),n}return r}waitForCdnTuneIn(t){return t.live&&t.canBlockReload&&t.partTarget&&t.tuneInGoal>Math.max(t.partHoldBack,3*t.partTarget)}setStartPosition(t,e){let s=this.startPosition;if(s ${null==(i=this.fragCurrent)?void 0:i.url}`);const r=e.details===S.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(s,!0);const n=e.errorAction,{action:a,retryCount:o=0,retryConfig:l}=n||{};if(n&&a===Ss&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const i=cs(l,o);this.warn(`Fragment ${s.sn} of ${t} ${s.level} errored with ${e.details}, retrying loading ${o+1}/${l.maxNumRetry} in ${i}ms`),n.resolved=!0,this.retryDate=self.performance.now()+i,this.state=gi}else if(l&&n){if(this.resetFragmentErrors(t),!(o.5;i&&this.reduceMaxBufferLength(s.len);const r=!i;return r&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${e} buffer`),t.frag&&(this.fragmentTracker.removeFragment(t.frag),this.nextLoadPosition=t.frag.start),this.resetLoadingState(),r}return!1}resetFragmentErrors(t){t===De&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==di&&(this.state=ci)}afterBufferFlushed(t,e,s){if(!t)return;const i=js.getBuffered(t);this.fragmentTracker.detectEvictedFragments(e,i,s),this.state===yi&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=ci}resetStartWhenNotLoaded(t){if(!this.loadedmetadata){this.startFragRequested=!1;const e=t?t.details:null;null!=e&&e.live?(this.startPosition=-1,this.setStartPosition(e,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(t){this.warn(`The loading context changed while buffering fragment ${t.sn} of level ${t.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(t=0){this.fragmentTracker.removeFragmentsInRange(t,1/0,this.playlistType,!1,!0)}updateLevelTiming(t,e,s,i){var r;const n=s.details;if(!n)return void this.warn("level.details undefined");if(!Object.keys(t.elementaryStreams).reduce(((e,r)=>{const a=t.elementaryStreams[r];if(a){const o=a.endPTS-a.startPTS;if(o<=0)return this.warn(`Could not parse fragment ${t.sn} ${r} duration reliably (${o})`),e||!1;const l=i?0:ss(n,t,a.startPTS,a.endPTS,a.startDTS,a.endDTS);return this.hls.trigger(T.LEVEL_PTS_UPDATED,{details:n,level:s,drift:l,type:r,frag:t,start:a.startPTS,end:a.endPTS}),!0}return e}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const e=new Error(`Found no media in fragment ${t.sn} of level ${t.level} resetting transmuxer to fallback to playlist timing`);if(0===s.fragmentError&&(s.fragmentError++,t.gap=!0,this.fragmentTracker.removeFragment(t),this.fragmentTracker.fragBuffered(t,!0)),this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:e,frag:t,reason:`Found no media in msn ${t.sn} of level "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=vi,this.hls.trigger(T.FRAG_PARSED,{frag:t,part:e})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(t){"demuxerWorker"===t.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(t){const e=this._state;e!==t&&(this._state=t,this.log(`${e}->${t}`))}get state(){return this._state}}class Ai{constructor(){this.chunks=[],this.dataLength=0}push(t){this.chunks.push(t),this.dataLength+=t.length}flush(){const{chunks:t,dataLength:e}=this;let s;return t.length?(s=1===t.length?t[0]:function(t,e){const s=new Uint8Array(e);let i=0;for(let e=0;e0&&a.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:i,type:Ne,duration:Number.POSITIVE_INFINITY});r{if(p(t))return 90*t;return 9e4*e+(s?9e4*s.baseTime/s.timescale:0)};function Di(t,e){return 255===t[e]&&240==(246&t[e+1])}function Ii(t,e){return 1&t[e+1]?7:9}function wi(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function Ci(t,e){return e+1=t.length)return!1;const i=wi(t,e);if(i<=s)return!1;const r=e+i;return r===t.length||Ci(t,r)}return!1}function xi(t,e,s,i,r){if(!t.samplerate){const n=function(t,e,s,i){let r,n,a,o;const l=navigator.userAgent.toLowerCase(),h=i,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&e[s+2])>>>6);const c=(60&e[s+2])>>>2;if(!(c>d.length-1))return a=(1&e[s+2])<<2,a|=(192&e[s+3])>>>6,k.log(`manifest codec:${i}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,o=new Array(4),n=c-3):(r=2,o=new Array(2),n=c):-1!==l.indexOf("android")?(r=2,o=new Array(2),n=c):(r=5,o=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&c>=6?n=c-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(c>=6&&1===a||/vivaldi/i.test(l))||!i&&1===a)&&(r=2,o=new Array(2)),n=c)),o[0]=r<<3,o[0]|=(14&c)>>1,o[1]|=(1&c)<<7,o[1]|=a<<3,5===r&&(o[1]|=(14&n)>>1,o[2]=(1&n)<<7,o[2]|=8,o[3]=0),{config:o,samplerate:d[c],channelCount:a,codec:"mp4a.40."+r,manifestCodec:h};{const e=new Error(`invalid ADTS sampling index:${c}`);t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!0,error:e,reason:e.message})}}(e,s,i,r);if(!n)return;t.config=n.config,t.samplerate=n.samplerate,t.channelCount=n.channelCount,t.codec=n.codec,t.manifestCodec=n.manifestCodec,k.log(`parsed codec:${t.codec}, rate:${n.samplerate}, channels:${n.channelCount}`)}}function Pi(t){return 9216e4/t}function Fi(t,e,s,i,r){const n=i+r*Pi(t.samplerate),a=function(t,e){const s=Ii(t,e);if(e+s<=t.length){const i=wi(t,e)-s;if(i>0)return{headerLength:s,frameLength:i}}}(e,s);let o;if(a){const{frameLength:i,headerLength:r}=a,l=r+i,h=Math.max(0,s+l-e.length);h?(o=new Uint8Array(l-r),o.set(e.subarray(s+r,e.length),0)):o=e.subarray(s+r,s+l);const d={unit:o,pts:n};return h||t.samples.push(d),{sample:d,length:l,missing:h}}const l=e.length-s;o=new Uint8Array(l),o.set(e.subarray(s,e.length),0);return{sample:{unit:o,pts:n},length:l,missing:-1}}let Mi=null;const Oi=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],Ni=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Ui=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],Bi=[0,1,1,4];function $i(t,e,s,i,r){if(s+24>e.length)return;const n=Gi(e,s);if(n&&s+n.frameLength<=e.length){const a=i+r*(9e4*n.samplesPerFrame/n.sampleRate),o={unit:e.subarray(s,s+n.frameLength),pts:a,dts:a};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(o),{sample:o,length:n.frameLength,missing:0}}}function Gi(t,e){const s=t[e+1]>>3&3,i=t[e+1]>>1&3,r=t[e+2]>>4&15,n=t[e+2]>>2&3;if(1!==s&&0!==r&&15!==r&&3!==n){const a=t[e+2]>>1&1,o=t[e+3]>>6,l=1e3*Oi[14*(3===s?3-i:3===i?3:4)+r-1],h=Ni[3*(3===s?0:2===s?1:2)+n],d=3===o?1:2,c=Ui[s][i],u=Bi[i],f=8*c*u,g=Math.floor(c*l/h+a)*u;if(null===Mi){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Mi=t?parseInt(t[1]):0}return!!Mi&&Mi<=87&&2===i&&l>=224e3&&0===o&&(t[e+3]=128|t[e+3]),{sampleRate:h,channelCount:d,frameLength:g,samplesPerFrame:f}}}function Ki(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])}function Hi(t,e){return e+1{let s=0,i=5;e+=i;const r=new Uint32Array(1),n=new Uint32Array(1),a=new Uint8Array(1);for(;i>0;){a[0]=t[e];const o=Math.min(i,8),l=8-o;n[0]=4278190080>>>24+l<>l,s=s?s<e.length)return-1;if(11!==e[s]||119!==e[s+1])return-1;const n=e[s+4]>>6;if(n>=3)return-1;const a=[48e3,44100,32e3][n],o=63&e[s+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*o+n];if(s+l>e.length)return-1;const h=e[s+6]>>5;let d=0;2===h?d+=2:(1&h&&1!==h&&(d+=2),4&h&&(d+=2));const c=(e[s+6]<<8|e[s+7])>>12-d&1,u=[2,1,2,3,3,4,4,5][h]+c,f=e[s+5]>>3,g=7&e[s+5],m=new Uint8Array([n<<6|f<<1|g>>2,(3&g)<<6|h<<3|c<<2|o>>4,o<<4&224]),p=i+r*(1536/a*9e4),v=e.subarray(s,s+l);return t.config=m,t.channelCount=u,t.samplerate=a,t.samples.push({unit:v,pts:p}),l}class Xi{constructor(){this.VideoSample=null}createVideoSample(t,e,s,i){return{key:t,frame:!1,pts:e,dts:s,units:[],debug:i,length:0}}getLastNalUnit(t){var e;let s,i=this.VideoSample;if(i&&0!==i.units.length||(i=t[t.length-1]),null!=(e=i)&&e.units){const t=i.units;s=t[t.length-1]}return s}pushAccessUnit(t,e){if(t.units.length&&t.frame){if(void 0===t.pts){const s=e.samples,i=s.length;if(!i)return void e.dropped++;{const e=s[i-1];t.pts=e.pts,t.dts=e.dts}}e.samples.push(t)}t.debug.length&&k.log(t.pts+"/"+t.dts+":"+t.debug)}}class zi{constructor(t){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const t=this.data,e=this.bytesAvailable,s=t.byteLength-e,i=new Uint8Array(4),r=Math.min(4,e);if(0===r)throw new Error("no bytes available");i.set(t.subarray(s,s+r)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(t){let e;t=Math.min(t,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(e=(t-=this.bitsAvailable)>>3,t-=e<<3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)}readBits(t){let e=Math.min(this.bitsAvailable,t);const s=this.word>>>32-e;if(t>32&&k.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0)this.word<<=e;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return e=t-e,e>0&&this.bitsAvailable?s<>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const t=this.skipLZ();return this.readBits(t+1)-1}readEG(){const t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(t){let e,s=8,i=8;for(let r=0;r{var n;switch(i.type){case 1:{let e=!1;a=!0;const r=i.data;if(l&&r.length>4){const t=new zi(r).readSliceType();2!==t&&4!==t&&7!==t&&9!==t||(e=!0)}var h;if(e)null!=(h=o)&&h.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null);o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.frame=!0,o.key=e;break}case 5:a=!0,null!=(n=o)&&n.frame&&!o.key&&(this.pushAccessUnit(o,t),o=this.VideoSample=null),o||(o=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts,"")),o.key=!0,o.frame=!0;break;case 6:a=!0,Gt(i.data,1,s.pts,e.samples);break;case 7:{var d,c;a=!0,l=!0;const e=i.data,s=new zi(e).readSPS();if(!t.sps||t.width!==s.width||t.height!==s.height||(null==(d=t.pixelRatio)?void 0:d[0])!==s.pixelRatio[0]||(null==(c=t.pixelRatio)?void 0:c[1])!==s.pixelRatio[1]){t.width=s.width,t.height=s.height,t.pixelRatio=s.pixelRatio,t.sps=[e],t.duration=r;const i=e.subarray(1,4);let n="avc1.";for(let t=0;t<3;t++){let e=i[t].toString(16);e.length<2&&(e="0"+e),n+=e}t.codec=n}break}case 8:a=!0,t.pps=[i.data];break;case 9:a=!0,t.audFound=!0,o&&this.pushAccessUnit(o,t),o=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts,"");break;case 12:a=!0;break;default:a=!1,o&&(o.debug+="unknown NAL "+i.type+" ")}if(o&&a){o.units.push(i)}})),i&&o&&(this.pushAccessUnit(o,t),this.VideoSample=null)}parseAVCNALu(t,e){const s=e.byteLength;let i=t.naluState||0;const r=i,n=[];let a,o,l,h=0,d=-1,c=0;for(-1===i&&(d=0,c=31&e[0],i=0,h=1);h=0){const t={data:e.subarray(d,o),type:c};n.push(t)}else{const s=this.getLastNalUnit(t.samples);s&&(r&&h<=4-r&&s.state&&(s.data=s.data.subarray(0,s.data.byteLength-r)),o>0&&(s.data=Ut(s.data,e.subarray(0,o)),s.state=0))}h=0&&i>=0){const t={data:e.subarray(d,s),type:c,state:i};n.push(t)}if(0===n.length){const s=this.getLastNalUnit(t.samples);s&&(s.data=Ut(s.data,e))}return t.naluState=i,n}}class Ji{constructor(t,e,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new li(e,{removePKCS7Padding:!1})}decryptBuffer(t){return this.decrypter.decrypt(t,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(t,e,s){const i=t[e].unit;if(i.length<=16)return;const r=i.subarray(16,i.length-i.length%16),n=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(n).then((r=>{const n=new Uint8Array(r);i.set(n,16),this.decrypter.isSync()||this.decryptAacSamples(t,e+1,s)}))}decryptAacSamples(t,e,s){for(;;e++){if(e>=t.length)return void s();if(!(t[e].unit.length<32)&&(this.decryptAacSample(t,e,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(t){const e=16*Math.floor((t.length-48)/160)+16,s=new Int8Array(e);let i=0;for(let e=32;e{r.data=this.getAvcDecryptedUnit(n,a),this.decrypter.isSync()||this.decryptAvcSamples(t,e,s+1,i)}))}decryptAvcSamples(t,e,s,i){if(t instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;e++,s=0){if(e>=t.length)return void i();const r=t[e].units;for(;!(s>=r.length);s++){const n=r[s];if(!(n.data.length<=48||1!==n.type&&5!==n.type||(this.decryptAvcSample(t,e,s,i,n),this.decrypter.isSync())))return}}}}const Zi=188;class tr{constructor(t,e,s){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.videoParser=new Qi}static probe(t){const e=tr.syncOffset(t);return e>0&&k.warn(`MPEG2-TS detected but first sync word found @ offset ${e}`),-1!==e}static syncOffset(t){const e=t.length;let s=Math.min(940,e-Zi)+1,i=0;for(;i1&&(0===n&&a>2||o+Zi>s))return n}i++}return-1}static createTrack(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:Lt[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===t?e:void 0}}resetInitSegment(t,e,s,i){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=tr.createTrack("video"),this._audioTrack=tr.createTrack("audio",i),this._id3Track=tr.createTrack("id3"),this._txtTrack=tr.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=e,this.videoCodec=s,this._duration=i}resetTimeStamp(){}resetContiguity(){const{_audioTrack:t,_videoTrack:e,_id3Track:s}=this;t&&(t.pesData=null),e&&(e.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(t,e,s=!1,i=!1){let r;s||(this.sampleAes=null);const n=this._videoTrack,a=this._audioTrack,o=this._id3Track,l=this._txtTrack;let h=n.pid,d=n.pesData,c=a.pid,u=o.pid,f=a.pesData,g=o.pesData,m=null,p=this.pmtParsed,v=this._pmtId,y=t.length;if(this.remainderData&&(y=(t=Ut(this.remainderData,t)).length,this.remainderData=null),y>4>1){if(E=e+5+t[e+4],E===e+Zi)continue}else E=e+4;switch(y){case h:i&&(d&&(r=ar(d))&&this.videoParser.parseAVCPES(n,l,r,!1,this._duration),d={data:[],size:0}),d&&(d.data.push(t.subarray(E,e+Zi)),d.size+=e+Zi-E);break;case c:if(i){if(f&&(r=ar(f)))switch(a.segmentCodec){case"aac":this.parseAACPES(a,r);break;case"mp3":this.parseMPEGPES(a,r);break;case"ac3":this.parseAC3PES(a,r)}f={data:[],size:0}}f&&(f.data.push(t.subarray(E,e+Zi)),f.size+=e+Zi-E);break;case u:i&&(g&&(r=ar(g))&&this.parseID3PES(o,r),g={data:[],size:0}),g&&(g.data.push(t.subarray(E,e+Zi)),g.size+=e+Zi-E);break;case 0:i&&(E+=t[E]+1),v=this._pmtId=sr(t,E);break;case v:{i&&(E+=t[E]+1);const r=ir(t,E,this.typeSupported,s,this.observer);h=r.videoPid,h>0&&(n.pid=h,n.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(a.pid=c,a.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(o.pid=u),null===m||p||(k.warn(`MPEG-TS PMT found at ${e} after unknown PID '${m}'. Backtracking to sync byte @${T} to parse all TS packets.`),m=null,e=T-188),p=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=y}}else E++;E>0&&rr(this.observer,new Error(`Found ${E} TS packet/s that do not start with 0x47`)),n.pesData=d,a.pesData=f,o.pesData=g;const S={audioTrack:a,videoTrack:n,id3Track:o,textTrack:l};return i&&this.extractRemainingSamples(S),S}flush(){const{remainderData:t}=this;let e;return this.remainderData=null,e=t?this.demux(t,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(e),this.sampleAes?this.decrypt(e,this.sampleAes):e}extractRemainingSamples(t){const{audioTrack:e,videoTrack:s,id3Track:i,textTrack:r}=t,n=s.pesData,a=e.pesData,o=i.pesData;let l;if(n&&(l=ar(n))?(this.videoParser.parseAVCPES(s,r,l,!0,this._duration),s.pesData=null):s.pesData=n,a&&(l=ar(a))){switch(e.segmentCodec){case"aac":this.parseAACPES(e,l);break;case"mp3":this.parseMPEGPES(e,l);break;case"ac3":this.parseAC3PES(e,l)}e.pesData=null}else null!=a&&a.size&&k.log("last AAC PES packet truncated,might overlap between fragments"),e.pesData=a;o&&(l=ar(o))?(this.parseID3PES(i,l),i.pesData=null):i.pesData=o}demuxSampleAes(t,e,s){const i=this.demux(t,s,!0,!this.config.progressive),r=this.sampleAes=new Ji(this.observer,this.config,e);return this.decrypt(i,r)}decrypt(t,e){return new Promise((s=>{const{audioTrack:i,videoTrack:r}=t;i.samples&&"aac"===i.segmentCodec?e.decryptAacSamples(i.samples,0,(()=>{r.samples?e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)})):s(t)})):r.samples&&e.decryptAvcSamples(r.samples,0,0,(()=>{s(t)}))}))}destroy(){this._duration=0}parseAACPES(t,e){let s=0;const i=this.aacOverFlow;let r,n,a,o=e.data;if(i){this.aacOverFlow=null;const e=i.missing,r=i.sample.unit.byteLength;if(-1===e)o=Ut(i.sample.unit,o);else{const n=r-e;i.sample.unit.set(o.subarray(0,e),n),t.samples.push(i.sample),s=i.missing}}for(r=s,n=o.length;r0;)o+=n}}parseID3PES(t,e){if(void 0===e.pts)return void k.warn("[tsdemuxer]: ID3 PES unknown PTS");const s=m({},e,{type:this._videoTrack?Be:Ne,duration:Number.POSITIVE_INFINITY});t.samples.push(s)}}function er(t,e){return((31&t[e+1])<<8)+t[e+2]}function sr(t,e){return(31&t[e+10])<<8|t[e+11]}function ir(t,e,s,i,r){const n={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=e+3+((15&t[e+1])<<8|t[e+2])-4;for(e+=12+((15&t[e+10])<<8|t[e+11]);e0){let i=e+5,r=o;for(;r>2;){if(106===t[i])!0!==s.ac3?k.log("AC-3 audio found, not supported in this browser for now"):(n.audioPid=a,n.segmentAudioCodec="ac3");const e=t[i+1]+2;i+=e,r-=e}}break;case 194:case 135:return rr(r,new Error("Unsupported EC-3 in M2TS found")),n;case 36:return rr(r,new Error("Unsupported HEVC in M2TS found")),n}e+=o+5}return n}function rr(t,e,s){k.warn(`parsing error: ${e.message}`),t.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,levelRetry:s,error:e,reason:e.message})}function nr(t){k.log(`${t} with AES-128-CBC encryption found in unencrypted stream`)}function ar(t){let e,s,i,r,n,a=0;const o=t.data;if(!t||0===t.size)return null;for(;o[0].length<19&&o.length>1;)o[0]=Ut(o[0],o[1]),o.splice(1,1);e=o[0];if(1===(e[0]<<16)+(e[1]<<8)+e[2]){if(s=(e[4]<<8)+e[5],s&&s>t.size-6)return null;const l=e[7];192&l&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&l?(n=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-n>54e5&&(k.warn(`${Math.round((r-n)/9e4)}s delta between PTS and DTS, align them`),r=n)):n=r),i=e[8];let h=i+9;if(t.size<=h)return null;t.size-=h;const d=new Uint8Array(t.size);for(let t=0,s=o.length;ts){h-=s;continue}e=e.subarray(h),s-=h,h=0}d.set(e,a),a+=s}return s&&(s-=i+3),{data:d,pts:r,dts:n,len:s}}return null}class or{static getSilentFrame(t,e){if("mp4a.40.2"===t){if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}const lr=Math.pow(2,32)-1;class hr{static init(){let t;for(t in hr.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},hr.types)hr.types.hasOwnProperty(t)&&(hr.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);const e=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),s=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);hr.HDLR_TYPES={video:e,audio:s};const i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);hr.STTS=hr.STSC=hr.STCO=r,hr.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),hr.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),hr.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),hr.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const n=new Uint8Array([105,115,111,109]),a=new Uint8Array([97,118,99,49]),o=new Uint8Array([0,0,0,1]);hr.FTYP=hr.box(hr.types.ftyp,n,o,n,a),hr.DINF=hr.box(hr.types.dinf,hr.box(hr.types.dref,i))}static box(t,...e){let s=8,i=e.length;const r=i;for(;i--;)s+=e[i].byteLength;const n=new Uint8Array(s);for(n[0]=s>>24&255,n[1]=s>>16&255,n[2]=s>>8&255,n[3]=255&s,n.set(t,4),i=0,s=8;i>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,85,196,0,0]))}static mdia(t){return hr.box(hr.types.mdia,hr.mdhd(t.timescale,t.duration),hr.hdlr(t.type),hr.minf(t))}static mfhd(t){return hr.box(hr.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}static minf(t){return"audio"===t.type?hr.box(hr.types.minf,hr.box(hr.types.smhd,hr.SMHD),hr.DINF,hr.stbl(t)):hr.box(hr.types.minf,hr.box(hr.types.vmhd,hr.VMHD),hr.DINF,hr.stbl(t))}static moof(t,e,s){return hr.box(hr.types.moof,hr.mfhd(t),hr.traf(s,e))}static moov(t){let e=t.length;const s=[];for(;e--;)s[e]=hr.trak(t[e]);return hr.box.apply(null,[hr.types.moov,hr.mvhd(t[0].timescale,t[0].duration)].concat(s).concat(hr.mvex(t)))}static mvex(t){let e=t.length;const s=[];for(;e--;)s[e]=hr.trex(t[e]);return hr.box.apply(null,[hr.types.mvex,...s])}static mvhd(t,e){e*=t;const s=Math.floor(e/(lr+1)),i=Math.floor(e%(lr+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,s>>24,s>>16&255,s>>8&255,255&s,i>>24,i>>16&255,i>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return hr.box(hr.types.mvhd,r)}static sdtp(t){const e=t.samples||[],s=new Uint8Array(4+e.length);let i,r;for(i=0;i>>8&255),r.push(255&i),r=r.concat(Array.prototype.slice.call(s));for(e=0;e>>8&255),n.push(255&i),n=n.concat(Array.prototype.slice.call(s));const a=hr.box(hr.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|t.sps.length].concat(r).concat([t.pps.length]).concat(n))),o=t.width,l=t.height,h=t.pixelRatio[0],d=t.pixelRatio[1];return hr.box(hr.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),a,hr.box(hr.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),hr.box(hr.types.pasp,new Uint8Array([h>>24,h>>16&255,h>>8&255,255&h,d>>24,d>>16&255,d>>8&255,255&d])))}static esds(t){const e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}static audioStsd(t){const e=t.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,e>>8&255,255&e,0,0])}static mp4a(t){return hr.box(hr.types.mp4a,hr.audioStsd(t),hr.box(hr.types.esds,hr.esds(t)))}static mp3(t){return hr.box(hr.types[".mp3"],hr.audioStsd(t))}static ac3(t){return hr.box(hr.types["ac-3"],hr.audioStsd(t),hr.box(hr.types.dac3,t.config))}static stsd(t){return"audio"===t.type?"mp3"===t.segmentCodec&&"mp3"===t.codec?hr.box(hr.types.stsd,hr.STSD,hr.mp3(t)):"ac3"===t.segmentCodec?hr.box(hr.types.stsd,hr.STSD,hr.ac3(t)):hr.box(hr.types.stsd,hr.STSD,hr.mp4a(t)):hr.box(hr.types.stsd,hr.STSD,hr.avc1(t))}static tkhd(t){const e=t.id,s=t.duration*t.timescale,i=t.width,r=t.height,n=Math.floor(s/(lr+1)),a=Math.floor(s%(lr+1));return hr.box(hr.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,a>>24,a>>16&255,a>>8&255,255&a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,i>>8&255,255&i,0,0,r>>8&255,255&r,0,0]))}static traf(t,e){const s=hr.sdtp(t),i=t.id,r=Math.floor(e/(lr+1)),n=Math.floor(e%(lr+1));return hr.box(hr.types.traf,hr.box(hr.types.tfhd,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])),hr.box(hr.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,n>>24,n>>16&255,n>>8&255,255&n])),hr.trun(t,s.length+16+20+8+16+8+8),s)}static trak(t){return t.duration=t.duration||4294967295,hr.box(hr.types.trak,hr.tkhd(t),hr.mdia(t))}static trex(t){const e=t.id;return hr.box(hr.types.trex,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(t,e){const s=t.samples||[],i=s.length,r=12+16*i,n=new Uint8Array(r);let a,o,l,h,d,c;for(e+=8+r,n.set(["video"===t.type?1:0,0,15,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i,e>>>24&255,e>>>16&255,e>>>8&255,255&e],0),a=0;a>>24&255,l>>>16&255,l>>>8&255,255&l,h>>>24&255,h>>>16&255,h>>>8&255,255&h,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|d.isNonSync,61440&d.degradPrio,15&d.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*a);return hr.box(hr.types.trun,n)}static initSegment(t){hr.types||hr.init();const e=hr.moov(t);return Ut(hr.FTYP,e)}}hr.types=void 0,hr.HDLR_TYPES=void 0,hr.STTS=void 0,hr.STSC=void 0,hr.STCO=void 0,hr.STSZ=void 0,hr.VMHD=void 0,hr.SMHD=void 0,hr.STSD=void 0,hr.FTYP=void 0,hr.DINF=void 0;function dr(t,e,s=1,i=!1){const r=t*e*s;return i?Math.round(r):r}function cr(t,e=!1){return dr(t,1e3,1/9e4,e)}let ur,fr=null,gr=null;class mr{constructor(t,e,s,i=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=t,this.config=e,this.typeSupported=s,this.ISGenerated=!1,null===fr){const t=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);fr=t?parseInt(t[1]):0}if(null===gr){const t=navigator.userAgent.match(/Safari\/(\d+)/i);gr=t?parseInt(t[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(t){k.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=t}resetNextTimestamp(){k.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){k.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(t){let e=!1;const s=t.reduce(((t,s)=>{const i=s.pts-t;return i<-4294967296?(e=!0,pr(t,s.pts)):i>0?t:s.pts}),t[0].pts);return e&&k.debug("PTS rollover detected"),s}remux(t,e,s,i,r,n,a,o){let l,h,d,c,u,f,g=r,m=r;const p=t.pid>-1,v=e.pid>-1,y=e.samples.length,T=t.samples.length>0,E=a&&y>0||y>1;if((!p||T)&&(!v||E)||this.ISGenerated||a){if(this.ISGenerated){var S,L,A,R;const t=this.videoTrackConfig;!t||e.width===t.width&&e.height===t.height&&(null==(S=e.pixelRatio)?void 0:S[0])===(null==(L=t.pixelRatio)?void 0:L[0])&&(null==(A=e.pixelRatio)?void 0:A[1])===(null==(R=t.pixelRatio)?void 0:R[1])||this.resetInitSegment()}else d=this.generateIS(t,e,r,n);const s=this.isVideoContiguous;let i,a=-1;if(E&&(a=function(t){for(let e=0;e0){k.warn(`[mp4-remuxer]: Dropped ${a} out of ${y} video samples due to a missing keyframe`);const t=this.getVideoStartPts(e.samples);e.samples=e.samples.slice(a),e.dropped+=a,m+=(e.samples[0].pts-t)/e.inputTimeScale,i=m}else-1===a&&(k.warn(`[mp4-remuxer]: No keyframe found out of ${y} video samples`),f=!1);if(this.ISGenerated){if(T&&E){const s=this.getVideoStartPts(e.samples),i=(pr(t.samples[0].pts,s)-s)/e.inputTimeScale;g+=Math.max(0,i),m+=Math.max(0,-i)}if(T){if(t.samplerate||(k.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),d=this.generateIS(t,e,r,n)),h=this.remuxAudio(t,g,this.isAudioContiguous,n,v||E||o===De?m:void 0),E){const i=h?h.endPTS-h.startPTS:0;e.inputTimeScale||(k.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),d=this.generateIS(t,e,r,n)),l=this.remuxVideo(e,m,s,i)}}else E&&(l=this.remuxVideo(e,m,s,0));l&&(l.firstKeyFrame=a,l.independent=-1!==a,l.firstKeyFramePTS=i)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(u=vr(s,r,this._initPTS,this._initDTS)),i.samples.length&&(c=yr(i,r,this._initPTS))),{audio:h,video:l,initSegment:d,independent:f,text:c,id3:u}}generateIS(t,e,s,i){const r=t.samples,n=e.samples,a=this.typeSupported,o={},l=this._initPTS;let h,d,c,u=!l||i,f="audio/mp4";if(u&&(h=d=1/0),t.config&&r.length){switch(t.timescale=t.samplerate,t.segmentCodec){case"mp3":a.mpeg?(f="audio/mpeg",t.codec=""):a.mp3&&(t.codec="mp3");break;case"ac3":t.codec="ac-3"}o.audio={id:"audio",container:f,codec:t.codec,initSegment:"mp3"===t.segmentCodec&&a.mpeg?new Uint8Array(0):hr.initSegment([t]),metadata:{channelCount:t.channelCount}},u&&(c=t.inputTimeScale,l&&c===l.timescale?u=!1:h=d=r[0].pts-Math.round(c*s))}if(e.sps&&e.pps&&n.length){if(e.timescale=e.inputTimeScale,o.video={id:"main",container:"video/mp4",codec:e.codec,initSegment:hr.initSegment([e]),metadata:{width:e.width,height:e.height}},u)if(c=e.inputTimeScale,l&&c===l.timescale)u=!1;else{const t=this.getVideoStartPts(n),e=Math.round(c*s);d=Math.min(d,pr(n[0].dts,t)-e),h=Math.min(h,t-e)}this.videoTrackConfig={width:e.width,height:e.height,pixelRatio:e.pixelRatio}}if(Object.keys(o).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:h,timescale:c},this._initDTS={baseTime:d,timescale:c}):h=c=void 0,{tracks:o,initPTS:h,timescale:c}}remuxVideo(t,e,s,i){const r=t.inputTimeScale,n=t.samples,a=[],o=n.length,l=this._initPTS;let h,d,c=this.nextAvcDts,u=8,f=this.videoSampleDuration,g=Number.POSITIVE_INFINITY,p=Number.NEGATIVE_INFINITY,v=!1;if(!s||null===c){const t=e*r,i=n[0].pts-pr(n[0].dts,n[0].pts);fr&&null!==c&&Math.abs(t-i-c)<15e3?s=!0:c=t-i}const y=l.baseTime*r/l.timescale;for(let t=0;t0?t-1:t].dts&&(v=!0)}v&&n.sort((function(t,e){const s=t.dts-e.dts,i=t.pts-e.pts;return s||i})),h=n[0].dts,d=n[n.length-1].dts;const L=d-h,A=L?Math.round(L/(o-1)):f||t.inputTimeScale/30;if(s){const t=h-c,s=t>A,i=t<-1;if((s||i)&&(s?k.warn(`AVC: ${cr(t,!0)} ms (${t}dts) hole between fragments detected at ${e.toFixed(3)}`):k.warn(`AVC: ${cr(-t,!0)} ms (${t}dts) overlapping between fragments detected at ${e.toFixed(3)}`),!i||c>=n[0].pts||fr)){h=c;const e=n[0].pts-t;if(s)n[0].dts=h,n[0].pts=e;else for(let s=0;se);s++)n[s].dts-=t,n[s].pts-=t;k.log(`Video: Initial PTS/DTS adjusted: ${cr(e,!0)}/${cr(h,!0)}, delta: ${cr(t,!0)} ms`)}}h=Math.max(0,h);let R=0,b=0,D=h;for(let t=0;t0?e.dts-n[t-1].dts:A;if(l=t>0?e.pts-n[t-1].pts:A,s.stretchShortVideoTrack&&null!==this.nextAudioPts){const t=Math.floor(s.maxBufferHole*r),n=(i?g+i*r:this.nextAudioPts)-e.pts;n>t?(f=n-a,f<0?f=a:_=!0,k.log(`[mp4-remuxer]: It is approximately ${n/90} ms to the next segment; using duration ${f/90} ms for the last video frame.`)):f=a}else f=a}const d=Math.round(e.pts-e.dts);x=Math.min(x,f),F=Math.max(F,f),P=Math.min(P,l),M=Math.max(M,l),a.push(new Tr(e.key,f,h,d))}if(a.length)if(fr){if(fr<70){const t=a[0].flags;t.dependsOn=2,t.isNonSync=0}}else if(gr&&M-P0&&(i&&Math.abs(v-p)<9e3||Math.abs(pr(f[0].pts-y,v)-p)<20*l),f.forEach((function(t){t.pts=pr(t.pts-y,v)})),!s||p<0){if(f=f.filter((t=>t.pts>=0)),!f.length)return;p=0===r?0:i&&!u?Math.max(0,v):f[0].pts}if("aac"===t.segmentCodec){const e=this.config.maxAudioFramesDrift;for(let s=0,i=p;s=e*l&&h<1e4&&u){let e=Math.round(o/l);i=a-e*l,i<0&&(e--,i+=l),0===s&&(this.nextAudioPts=p=i),k.warn(`[mp4-remuxer]: Injecting ${e} audio frame @ ${(i/n).toFixed(3)}s due to ${Math.round(1e3*o/n)} ms gap.`);for(let n=0;n0))return;b+=g;try{L=new Uint8Array(b)}catch(t){return void this.observer.emit(T.ERROR,T.ERROR,{type:E.MUX_ERROR,details:S.REMUX_ALLOC_ERROR,fatal:!1,error:t,bytes:b,reason:`fail allocating audio mdat ${b}`})}if(!d){new DataView(L.buffer).setUint32(0,b),L.set(hr.types.mdat,4)}}L.set(r,g);const l=r.byteLength;g+=l,c.push(new Tr(!0,o,l,0)),R=n}const I=c.length;if(!I)return;const w=c[c.length-1];this.nextAudioPts=p=R+a*w.duration;const C=d?new Uint8Array(0):hr.moof(t.sequenceNumber++,A/a,m({},t,{samples:c}));t.samples=[];const _=A/n,x=p/n,P={data1:C,data2:L,startPTS:_,endPTS:x,startDTS:_,endDTS:x,type:"audio",hasAudio:!0,hasVideo:!1,nb:I};return this.isAudioContiguous=!0,P}remuxEmptyAudio(t,e,s,i){const r=t.inputTimeScale,n=r/(t.samplerate?t.samplerate:r),a=this.nextAudioPts,o=this._initDTS,l=9e4*o.baseTime/o.timescale,h=(null!==a?a:i.startDTS*r)+l,d=i.endDTS*r+l,c=1024*n,u=Math.ceil((d-h)/c),f=or.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(k.warn("[mp4-remuxer]: remux empty Audio"),!f)return void k.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const g=[];for(let t=0;t4294967296;)t+=s;return t}function vr(t,e,s,i){const r=t.samples.length;if(!r)return;const n=t.inputTimeScale;for(let a=0;at.pts-e.pts));const n=t.samples;return t.samples=[],{samples:n}}class Tr{constructor(t,e,s,i){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=e,this.size=s,this.cts=i,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:t?2:1,isNonSync:t?0:1}}}function Er(t,e){const s=null==t?void 0:t.codec;if(s&&s.length>4)return s;if(e===P){if("ec-3"===s||"ac-3"===s||"alac"===s)return s;if("fLaC"===s||"Opus"===s){return oe(s,!1)}const t="mp4a.40.5";return k.info(`Parsed audio codec "${s}" or audio object type not handled. Using "${t}"`),t}return k.warn(`Unhandled video codec "${s}"`),"hvc1"===s||"hev1"===s?"hvc1.1.6.L120.90":"av01"===s?"av01.0.04M.08":"avc1.42e01e"}try{ur=self.performance.now.bind(self.performance)}catch(t){k.debug("Unable to use Performance API on this environment"),ur=null==H?void 0:H.Date.now}const Sr=[{demux:class{constructor(t,e){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=e}resetTimeStamp(){}resetInitSegment(t,e,s,i){const r=this.videoTrack=Ri("video",1),n=this.audioTrack=Ri("audio",1),a=this.txtTrack=Ri("text",1);if(this.id3Track=Ri("id3",1),this.timeOffset=0,null==t||!t.byteLength)return;const o=_t(t);if(o.video){const{id:t,timescale:e,codec:s}=o.video;r.id=t,r.timescale=a.timescale=e,r.codec=s}if(o.audio){const{id:t,timescale:e,codec:s}=o.audio;n.id=t,n.timescale=e,n.codec=s}a.id=Lt.text,r.sampleDuration=0,r.duration=n.duration=i}resetContiguity(){this.remainderData=null}static probe(t){return function(t){const e=t.byteLength;for(let s=0;s8&&109===t[s+4]&&111===t[s+5]&&111===t[s+6]&&102===t[s+7])return!0;s=i>1?s+i:e}return!1}(t)}demux(t,e){this.timeOffset=e;let s=t;const i=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(s=Ut(this.remainderData,t));const e=function(t){const e={valid:null,remainder:null},s=wt(t,["moof"]);if(s.length<2)return e.remainder=t,e;const i=s[s.length-1];return e.valid=et(t,0,i.byteOffset-8),e.remainder=et(t,i.byteOffset-8),e}(s);this.remainderData=e.remainder,i.samples=e.valid||new Uint8Array}else i.samples=s;const n=this.extractID3Track(i,e);return r.samples=Bt(e,i),{videoTrack:i,audioTrack:this.audioTrack,id3Track:n,textTrack:this.txtTrack}}flush(){const t=this.timeOffset,e=this.videoTrack,s=this.txtTrack;e.samples=this.remainderData||new Uint8Array,this.remainderData=null;const i=this.extractID3Track(e,this.timeOffset);return s.samples=Bt(t,e),{videoTrack:e,audioTrack:Ri(),id3Track:i,textTrack:Ri()}}extractID3Track(t,e){const s=this.id3Track;if(t.samples.length){const i=wt(t.samples,["emsg"]);i&&i.forEach((t=>{const i=function(t){const e=t[0];let s="",i="",r=0,n=0,a=0,o=0,l=0,h=0;if(0===e){for(;"\0"!==At(t.subarray(h,h+1));)s+=At(t.subarray(h,h+1)),h+=1;for(s+=At(t.subarray(h,h+1)),h+=1;"\0"!==At(t.subarray(h,h+1));)i+=At(t.subarray(h,h+1)),h+=1;i+=At(t.subarray(h,h+1)),h+=1,r=bt(t,12),n=bt(t,16),o=bt(t,20),l=bt(t,24),h=28}else if(1===e){h+=4,r=bt(t,h),h+=4;const e=bt(t,h);h+=4;const n=bt(t,h);for(h+=4,a=2**32*e+n,v(a)||(a=Number.MAX_SAFE_INTEGER,k.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),o=bt(t,h),h+=4,l=bt(t,h),h+=4;"\0"!==At(t.subarray(h,h+1));)s+=At(t.subarray(h,h+1)),h+=1;for(s+=At(t.subarray(h,h+1)),h+=1;"\0"!==At(t.subarray(h,h+1));)i+=At(t.subarray(h,h+1)),h+=1;i+=At(t.subarray(h,h+1)),h+=1}return{schemeIdUri:s,value:i,timeScale:r,presentationTime:a,presentationTimeDelta:n,eventDuration:o,id:l,payload:t.subarray(h,t.byteLength)}}(t);if(Yi.test(i.schemeIdUri)){const t=p(i.presentationTime)?i.presentationTime/i.timeScale:e+i.presentationTimeDelta/i.timeScale;let r=4294967295===i.eventDuration?Number.POSITIVE_INFINITY:i.eventDuration/i.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const n=i.payload;s.samples.push({data:n,len:n.byteLength,dts:t,pts:t,type:Be,duration:r})}}))}return s}demuxSampleAes(t,e,s){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(t){this.initPTS=t,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(t,e,s,i){this.audioCodec=e,this.videoCodec=s,this.generateInitSegment(function(t,e){if(!t||!e)return t;const s=e.keyId;s&&e.isCommonEncryption&&wt(t,["moov","trak"]).forEach((t=>{const e=wt(t,["mdia","minf","stbl","stsd"])[0].subarray(8);let i=wt(e,["enca"]);const r=i.length>0;r||(i=wt(e,["encv"])),i.forEach((t=>{wt(r?t.subarray(28):t.subarray(78),["sinf"]).forEach((t=>{const e=Ot(t);if(e){const t=e.subarray(8,24);t.some((t=>0!==t))||(k.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${Tt(t)} -> ${Tt(s)}`),e.set(s,8))}}))}))}));return t}(t,i)),this.emitInitSegment=!0}generateInitSegment(t){let{audioCodec:e,videoCodec:s}=this;if(null==t||!t.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const i=this.initData=_t(t);i.audio&&(e=Er(i.audio,P)),i.video&&(s=Er(i.video,F));const r={};i.audio&&i.video?r.audiovideo={container:"video/mp4",codec:e+","+s,initSegment:t,id:"main"}:i.audio?r.audio={container:"audio/mp4",codec:e,initSegment:t,id:"audio"}:i.video?r.video={container:"video/mp4",codec:s,initSegment:t,id:"main"}:k.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(t,e,s,i,r,n){var a,o;let{initPTS:l,lastEndTime:h}=this;const d={audio:void 0,video:void 0,text:i,id3:s,initSegment:void 0};p(h)||(h=this.lastEndTime=r||0);const c=e.samples;if(null==c||!c.length)return d;const u={initPTS:void 0,timescale:1};let f=this.initData;if(null!=(a=f)&&a.length||(this.generateInitSegment(c),f=this.initData),null==(o=f)||!o.length)return k.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),d;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const g=function(t,e){let s=0,i=0,r=0;const n=wt(t,["moof","traf"]);for(let t=0;tt+e.info.duration||0),0);s=Math.max(s,t+n.earliestPresentationTime/n.timescale),i=s-e}}if(i&&p(i))return i}return i||r}(c,f),m=function(t,e){return wt(e,["moof","traf"]).reduce(((e,s)=>{const i=wt(s,["tfdt"])[0],r=i[0],n=wt(s,["tfhd"]).reduce(((e,s)=>{const n=bt(s,4),a=t[n];if(a){let t=bt(i,4);if(1===r){if(t===Et)return k.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),e;t*=Et+1,t+=bt(i,8)}const s=t/(a.timescale||9e4);if(p(s)&&(null===e||sr}(l,v,r,g)||u.timescale!==l.timescale&&n)&&(u.initPTS=v-r,l&&1===l.timescale&&k.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=t?v-l.baseTime/l.timescale:h,T=y+g;!function(t,e,s){wt(e,["moof","traf"]).forEach((e=>{wt(e,["tfhd"]).forEach((i=>{const r=bt(i,4),n=t[r];if(!n)return;const a=n.timescale||9e4;wt(e,["tfdt"]).forEach((t=>{const e=t[0],i=s*a;if(i){let s=bt(t,4);if(0===e)s-=i,s=Math.max(s,0),It(t,4,s);else{s*=Math.pow(2,32),s+=bt(t,8),s-=i,s=Math.max(s,0);const e=Math.floor(s/(Et+1)),r=Math.floor(s%(Et+1));It(t,4,e),It(t,8,r)}}}))}))}))}(f,c,l.baseTime/l.timescale),g>0?this.lastEndTime=T:(k.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const E=!!f.audio,S=!!f.video;let L="";E&&(L+="audio"),S&&(L+="video");const A={data1:c,startPTS:y,startDTS:y,endPTS:T,endDTS:T,type:L,hasAudio:E,hasVideo:S,nb:1,dropped:0};return d.audio="audio"===A.type?A:void 0,d.video="audio"!==A.type?A:void 0,d.initSegment=u,d.id3=vr(s,r,l,l),i.samples.length&&(d.text=yr(i,r,l)),d}}},{demux:tr,remux:mr},{demux:class extends bi{constructor(t,e){super(),this.observer=void 0,this.config=void 0,this.observer=t,this.config=e}resetInitSegment(t,e,s,i){super.resetInitSegment(t,e,s,i),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:e,duration:i,inputTimeScale:9e4,dropped:0}}static probe(t){if(!t)return!1;const e=rt(t,0);let s=(null==e?void 0:e.length)||0;if(Vi(t,s))return!1;for(let e=t.length;s0&&null!=(null==e?void 0:e.key)&&null!==e.iv&&null!=e.method&&(s=e);return s}(n,e);if(L&&"AES-128"===L.method){const t=this.getDecrypter();if(!t.isSync())return this.decryptionPromise=t.webCryptoDecrypt(n,L.key.buffer,L.iv.buffer).then((t=>{const e=this.push(t,null,s);return this.decryptionPromise=null,e})),this.decryptionPromise;{let e=t.softwareDecrypt(n,L.key.buffer,L.iv.buffer);if(s.part>-1&&(e=t.flush()),!e)return r.executeEnd=ur(),Ar(s);n=new Uint8Array(e)}}const A=this.needsProbing(h,d);if(A){const t=this.configureTransmuxer(n);if(t)return k.warn(`[transmuxer] ${t.message}`),this.observer.emit(T.ERROR,T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,fatal:!1,error:t,reason:t.message}),r.executeEnd=ur(),Ar(s)}(h||d||f||A)&&this.resetInitSegment(y,g,m,v,e),(h||f||A)&&this.resetInitialTimestamp(p),l||this.resetContiguity();const R=this.transmux(n,L,u,c,s),b=this.currentTransmuxState;return b.contiguous=!0,b.discontinuity=!1,b.trackSwitch=!1,r.executeEnd=ur(),R}flush(t){const e=t.transmuxing;e.executeStart=ur();const{decrypter:s,currentTransmuxState:i,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(t)));const n=[],{timeOffset:a}=i;if(s){const e=s.flush();e&&n.push(this.push(e,null,t))}const{demuxer:o,remuxer:l}=this;if(!o||!l)return e.executeEnd=ur(),[Ar(t)];const h=o.flush(a);return Rr(h)?h.then((e=>(this.flushRemux(n,e,t),n))):(this.flushRemux(n,h,t),n)}flushRemux(t,e,s){const{audioTrack:i,videoTrack:r,id3Track:n,textTrack:a}=e,{accurateTimeOffset:o,timeOffset:l}=this.currentTransmuxState;k.log(`[transmuxer.ts]: Flushed fragment ${s.sn}${s.part>-1?" p: "+s.part:""} of level ${s.level}`);const h=this.remuxer.remux(i,r,n,a,l,o,!0,this.id);t.push({remuxResult:h,chunkMeta:s}),s.transmuxing.executeEnd=ur()}resetInitialTimestamp(t){const{demuxer:e,remuxer:s}=this;e&&s&&(e.resetTimeStamp(t),s.resetTimeStamp(t))}resetContiguity(){const{demuxer:t,remuxer:e}=this;t&&e&&(t.resetContiguity(),e.resetNextTimestamp())}resetInitSegment(t,e,s,i,r){const{demuxer:n,remuxer:a}=this;n&&a&&(n.resetInitSegment(t,e,s,i),a.resetInitSegment(t,e,s,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(t,e,s,i,r){let n;return n=e&&"SAMPLE-AES"===e.method?this.transmuxSampleAes(t,e,s,i,r):this.transmuxUnencrypted(t,s,i,r),n}transmuxUnencrypted(t,e,s,i){const{audioTrack:r,videoTrack:n,id3Track:a,textTrack:o}=this.demuxer.demux(t,e,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,n,a,o,e,s,!1,this.id),chunkMeta:i}}transmuxSampleAes(t,e,s,i,r){return this.demuxer.demuxSampleAes(t,e,s).then((t=>({remuxResult:this.remuxer.remux(t.audioTrack,t.videoTrack,t.id3Track,t.textTrack,s,i,!1,this.id),chunkMeta:r})))}configureTransmuxer(t){const{config:e,observer:s,typeSupported:i,vendor:r}=this;let n;for(let e=0,s=Sr.length;e({remuxResult:{},chunkMeta:t});function Rr(t){return"then"in t&&t.then instanceof Function}class br{constructor(t,e,s,i,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=t,this.videoCodec=e,this.initSegmentData=s,this.duration=i,this.defaultInitPts=r||null}}class kr{constructor(t,e,s,i,r,n){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=t,this.contiguous=e,this.accurateTimeOffset=s,this.trackSwitch=i,this.timeOffset=r,this.initSegmentChange=n}}var Dr={exports:{}};!function(t){var e=Object.prototype.hasOwnProperty,s="~";function i(){}function r(t,e,s){this.fn=t,this.context=e,this.once=s||!1}function n(t,e,i,n,a){if("function"!=typeof i)throw new TypeError("The listener must be a function");var o=new r(i,n||t,a),l=s?s+e:e;return t._events[l]?t._events[l].fn?t._events[l]=[t._events[l],o]:t._events[l].push(o):(t._events[l]=o,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new i:delete t._events[e]}function o(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(s=!1)),o.prototype.eventNames=function(){var t,i,r=[];if(0===this._eventsCount)return r;for(i in t=this._events)e.call(t,i)&&r.push(s?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(t)):r},o.prototype.listeners=function(t){var e=s?s+t:t,i=this._events[e];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,n=i.length,a=new Array(n);r{(e=e||{}).frag=this.frag,e.id=this.id,t===T.ERROR&&(this.error=e.error),this.hls.trigger(t,e)};this.observer=new Ir,this.observer.on(T.FRAG_DECRYPTED,n),this.observer.on(T.ERROR,n);const a=Jt(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},o={mpeg:a.isTypeSupported("audio/mpeg"),mp3:a.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:a.isTypeSupported('audio/mp4; codecs="ac-3"')};if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(k.log(`loading Web Worker ${r.workerPath} for "${e}"`),this.workerContext=function(t){const e=new self.URL(t,self.location.href).href;return{worker:new self.Worker(e),scriptURL:e}}(r.workerPath)):(k.log(`injecting Web Worker for "${e}"`),this.workerContext=function(){const t=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),e=self.URL.createObjectURL(t);return{worker:new self.Worker(e),objectURL:e}}()),this.onwmsg=t=>this.onWorkerMessage(t);const{worker:t}=this.workerContext;t.addEventListener("message",this.onwmsg),t.onerror=t=>{const s=new Error(`${t.message} (${t.filename}:${t.lineno})`);r.enableWorker=!1,k.warn(`Error in "${e}" Web Worker, fallback to inline`),this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:s})},t.postMessage({cmd:"init",typeSupported:o,vendor:"",id:e,config:JSON.stringify(r)})}catch(t){k.warn(`Error setting up "${e}" Web Worker, fallback to inline`,t),this.resetWorker(),this.error=null,this.transmuxer=new Lr(this.observer,o,r,"",e)}return}}this.transmuxer=new Lr(this.observer,o,r,"",e)}resetWorker(){if(this.workerContext){const{worker:t,objectURL:e}=this.workerContext;e&&self.URL.revokeObjectURL(e),t.removeEventListener("message",this.onwmsg),t.onerror=null,t.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const t=this.transmuxer;t&&(t.destroy(),this.transmuxer=null)}const t=this.observer;t&&t.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(t,e,s,i,r,n,a,o,l,h){var d,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,f=n?n.start:r.start,g=r.decryptdata,m=this.frag,p=!(m&&r.cc===m.cc),v=!(m&&l.level===m.level),y=m?l.sn-m.sn:-1,T=this.part?l.part-this.part.index:-1,E=0===y&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),S=!v&&(1===y||0===y&&(1===T||E&&T<=0)),L=self.performance.now();(v||y||0===r.stats.parsing.start)&&(r.stats.parsing.start=L),!n||!T&&S||(n.stats.parsing.start=L);const A=!(m&&(null==(d=r.initSegment)?void 0:d.url)===(null==(c=m.initSegment)?void 0:c.url)),R=new kr(p,S,o,v,f,A);if(!S||p||A){k.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${p}\n trackSwitch: ${v}\n contiguous: ${S}\n accurateTimeOffset: ${o}\n timeOffset: ${f}\n initSegmentChange: ${A}`);const t=new br(s,i,e,a,h);this.configureTransmuxer(t)}if(this.frag=r,this.part=n,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:t,decryptdata:g,chunkMeta:l,state:R},t instanceof ArrayBuffer?[t]:[]);else if(u){const e=u.push(t,g,l,R);Rr(e)?(u.async=!0,e.then((t=>{this.handleTransmuxComplete(t)})).catch((t=>{this.transmuxerError(t,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(e))}}flush(t){t.transmuxing.start=self.performance.now();const{transmuxer:e}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:t});else if(e){let s=e.flush(t);Rr(s)||e.async?(Rr(s)||(s=Promise.resolve(s)),s.then((e=>{this.handleFlushResult(e,t)})).catch((e=>{this.transmuxerError(e,t,"transmuxer-interface flush error")}))):this.handleFlushResult(s,t)}}transmuxerError(t,e,s){this.hls&&(this.error=t,this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_PARSING_ERROR,chunkMeta:e,frag:this.frag||void 0,fatal:!1,error:t,err:t,reason:s}))}handleFlushResult(t,e){t.forEach((t=>{this.handleTransmuxComplete(t)})),this.onFlush(e)}onWorkerMessage(t){const e=t.data;if(null==e||!e.event)return void k.warn("worker message received with no "+(e?"event name":"data"));const s=this.hls;if(this.hls)switch(e.event){case"init":{var i;const t=null==(i=this.workerContext)?void 0:i.objectURL;t&&self.URL.revokeObjectURL(t);break}case"transmuxComplete":this.handleTransmuxComplete(e.data);break;case"flush":this.onFlush(e.data);break;case"workerLog":k[e.data.logType]&&k[e.data.logType](e.data.message);break;default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,s.trigger(e.event,e.data)}}configureTransmuxer(t){const{transmuxer:e}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:t}):e&&e.configure(t)}handleTransmuxComplete(t){t.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(t)}}function Cr(t,e){if(t.length!==e.length)return!1;for(let s=0;st[s]!==e[s]))}function xr(t,e){return e.label.toLowerCase()===t.name.toLowerCase()&&(!e.language||e.language.toLowerCase()===(t.lang||"").toLowerCase())}class Pr{constructor(t){this.buffered=void 0;const e=(e,s,i)=>{if((s>>>=0)>i-1)throw new DOMException(`Failed to execute '${e}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${i})`);return t[s][e]};this.buffered={get length(){return t.length},end(s){return e("end",s,t.length)},start(s){return e("start",s,t.length)}}}}class Fr{constructor(t){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=t}append(t,e,s){const i=this.queues[e];i.push(t),1!==i.length||s||this.executeNext(e)}insertAbort(t,e){this.queues[e].unshift(t),this.executeNext(e)}appendBlocker(t){let e;const s=new Promise((t=>{e=t})),i={execute:e,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(i,t),s}executeNext(t){const e=this.queues[t];if(e.length){const s=e[0];try{s.execute()}catch(e){k.warn(`[buffer-operation-queue]: Exception executing "${t}" SourceBuffer operation: ${e}`),s.onError(e);const i=this.buffers[t];null!=i&&i.updating||this.shiftAndExecuteNext(t)}}}shiftAndExecuteNext(t){this.queues[t].shift(),this.executeNext(t)}current(t){return this.queues[t][0]}}const Mr=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function Or(t){const e=t.querySelectorAll("source");[].slice.call(e).forEach((e=>{t.removeChild(e)}))}const Nr={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},Ur=t=>String.fromCharCode(Nr[t]||t),Br=15,$r=100,Gr={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Kr={17:2,18:4,21:6,22:8,23:10,19:13,20:15},Hr={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Vr={25:2,26:4,29:6,30:8,31:10,27:13,28:15},Yr=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Wr{constructor(){this.time=null,this.verboseLevel=0}log(t,e){if(this.verboseLevel>=t){const s="function"==typeof e?e():e;k.log(`${this.time} [${t}] ${s}`)}}}const jr=function(t){const e=[];for(let s=0;s$r&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=$r)}moveCursor(t){const e=this.pos+t;if(t>1)for(let t=this.pos+1;t=144&&this.backSpace();const e=Ur(t);this.pos>=$r?this.logger.log(0,(()=>"Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1))}clearFromPos(t){let e;for(e=t;e<$r;e++)this.chars[e].reset()}clear(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()}clearToEndOfRow(){this.clearFromPos(this.pos)}getTextString(){const t=[];let e=!0;for(let s=0;s<$r;s++){const i=this.chars[s].uchar;" "!==i&&(e=!1),t.push(i)}return e?"":t.join("")}setPenStyles(t){this.currPenState.setStyles(t);this.chars[this.pos].setPenState(this.currPenState)}}class Qr{constructor(t){this.rows=[],this.currRow=14,this.nrRollUpRows=null,this.lastOutputScreen=null,this.logger=void 0;for(let e=0;e"pacData = "+JSON.stringify(t)));let e=t.row-1;if(this.nrRollUpRows&&e"bkgData = "+JSON.stringify(t))),this.backSpace(),this.setPen(t),this.insertChar(32)}setRollUpRows(t){this.nrRollUpRows=t}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),this.logger.log(2,"Rolling up")}getDisplayText(t){t=t||!1;const e=[];let s="",i=-1;for(let s=0;s0&&(s=t?"["+e.join(" | ")+"]":e.join("\n")),s}getTextAndFormat(){return this.rows}}class Jr{constructor(t,e,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=t,this.outputFilter=e,this.mode=null,this.verbose=0,this.displayedMemory=new Qr(s),this.nonDisplayedMemory=new Qr(s),this.lastOutputScreen=new Qr(s),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(t){this.outputFilter=t}setPAC(t){this.writeScreen.setPAC(t)}setBkgData(t){this.writeScreen.setBkgData(t)}setMode(t){t!==this.mode&&(this.mode=t,this.logger.log(2,(()=>"MODE="+t)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)}insertChars(t){for(let e=0;ee+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(t){this.logger.log(2,"RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(t){this.logger.log(2,"TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)}ccMIDROW(t){const e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{const s=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[s]}this.logger.log(2,"MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)}outputDataUpdate(t=!1){const e=this.logger.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))}}class Zr{constructor(t,e,s){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const i=this.logger=new Wr;this.channels=[null,new Jr(t,e,i),new Jr(t+1,s,i)]}getHandler(t){return this.channels[t].getHandler()}setHandler(t,e){this.channels[t].setHandler(e)}addData(t,e){this.logger.time=t;for(let t=0;t"["+jr([e[t],e[t+1]])+"] -> ("+jr([s,i])+")"));const a=this.cmdHistory;if(s>=16&&s<=31){if(en(s,i,a)){tn(null,null,a),this.logger.log(3,(()=>"Repeated command ("+jr([s,i])+") is dropped"));continue}tn(s,i,this.cmdHistory),r=this.parseCmd(s,i),r||(r=this.parseMidrow(s,i)),r||(r=this.parsePAC(s,i)),r||(r=this.parseBackgroundAttributes(s,i))}else tn(null,null,a);if(!r&&(n=this.parseChars(s,i),n)){const t=this.currentChannel;if(t&&t>0){this.channels[t].insertChars(n)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}r||n||this.logger.log(2,(()=>"Couldn't parse cleaned data "+jr([s,i])+" orig: "+jr([e[t],e[t+1]])))}}parseCmd(t,e){if(!((20===t||28===t||21===t||29===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=33&&e<=35))return!1;const s=20===t||21===t||23===t?1:2,i=this.channels[s];return 20===t||21===t||28===t||29===t?32===e?i.ccRCL():33===e?i.ccBS():34===e?i.ccAOF():35===e?i.ccAON():36===e?i.ccDER():37===e?i.ccRU(2):38===e?i.ccRU(3):39===e?i.ccRU(4):40===e?i.ccFON():41===e?i.ccRDC():42===e?i.ccTR():43===e?i.ccRTD():44===e?i.ccEDM():45===e?i.ccCR():46===e?i.ccENM():47===e&&i.ccEOC():i.ccTO(e-32),this.currentChannel=s,!0}parseMidrow(t,e){let s=0;if((17===t||25===t)&&e>=32&&e<=47){if(s=17===t?1:2,s!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const i=this.channels[s];return!!i&&(i.ccMIDROW(e),this.logger.log(3,(()=>"MIDROW ("+jr([t,e])+")")),!0)}return!1}parsePAC(t,e){let s;if(!((t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127)&&!((16===t||24===t)&&e>=64&&e<=95))return!1;const i=t<=23?1:2;s=e>=64&&e<=95?1===i?Gr[t]:Hr[t]:1===i?Kr[t]:Vr[t];const r=this.channels[i];return!!r&&(r.setPAC(this.interpretPAC(s,e)),this.currentChannel=i,!0)}interpretPAC(t,e){let s;const i={color:null,italics:!1,indent:null,underline:!1,row:t};return s=e>95?e-96:e-64,i.underline=1==(1&s),s<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((s-16)/2),i}parseChars(t,e){let s,i=null,r=null;if(t>=25?(s=2,r=t-8):(s=1,r=t),r>=17&&r<=19){let t;t=17===r?e+80:18===r?e+112:e+144,this.logger.log(2,(()=>"Special char '"+Ur(t)+"' in channel "+s)),i=[t]}else t>=32&&t<=127&&(i=0===e?[t]:[t,e]);return i&&this.logger.log(3,(()=>"Char codes = "+jr(i).join(","))),i}parseBackgroundAttributes(t,e){if(!((16===t||24===t)&&e>=32&&e<=47)&&!((23===t||31===t)&&e>=45&&e<=47))return!1;let s;const i={};16===t||24===t?(s=Math.floor((e-32)/2),i.background=Yr[s],e%2==1&&(i.background=i.background+"_semi")):45===e?i.background="transparent":(i.foreground="black",47===e&&(i.underline=!0));const r=t<=23?1:2;return this.channels[r].setBkgData(i),!0}reset(){for(let t=0;tt)&&(this.startTime=t),this.endTime=e,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var rn=function(){if(null!=H&&H.VTTCue)return self.VTTCue;const t=["","lr","rl"],e=["start","middle","end","left","right"];function s(t,e){if("string"!=typeof e)return!1;if(!Array.isArray(t))return!1;const s=e.toLowerCase();return!!~t.indexOf(s)&&s}function i(t){return s(e,t)}function r(t,...e){let s=1;for(;s100)throw new Error("Position must be between 0 and 100.");T=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",r({},l,{get:function(){return E},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");E=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",r({},l,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",r({},l,{get:function(){return L},set:function(t){const e=i(t);if(!e)throw new SyntaxError("An invalid or illegal string was specified.");L=e,this.hasBeenReset=!0}})),o.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}();class nn{decode(t,e){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}function an(t){function e(t,e,s,i){return 3600*(0|t)+60*(0|e)+(0|s)+parseFloat(i||0)}const s=t.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return s?parseFloat(s[2])>59?e(s[2],s[3],0,s[4]):e(s[1],s[2],s[3],s[4]):null}class on{constructor(){this.values=Object.create(null)}set(t,e){this.get(t)||""===e||(this.values[t]=e)}get(t,e,s){return s?this.has(t)?this.values[t]:e[s]:this.has(t)?this.values[t]:e}has(t){return t in this.values}alt(t,e,s){for(let i=0;i=0&&s<=100)return this.set(t,s),!0}return!1}}function ln(t,e,s,i){const r=i?t.split(i):[t];for(const t in r){if("string"!=typeof r[t])continue;const i=r[t].split(s);if(2!==i.length)continue;e(i[0],i[1])}}const hn=new rn(0,0,""),dn="middle"===hn.align?"middle":"center";function cn(t,e,s){const i=t;function r(){const e=an(t);if(null===e)throw new Error("Malformed timestamp: "+i);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function n(){t=t.replace(/^\s+/,"")}if(n(),e.startTime=r(),n(),"--\x3e"!==t.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+i);t=t.slice(3),n(),e.endTime=r(),n(),function(t,e){const i=new on;ln(t,(function(t,e){let r;switch(t){case"region":for(let r=s.length-1;r>=0;r--)if(s[r].id===e){i.set(t,s[r].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":r=e.split(","),i.integer(t,r[0]),i.percent(t,r[0])&&i.set("snapToLines",!1),i.alt(t,r[0],["auto"]),2===r.length&&i.alt("lineAlign",r[1],["start",dn,"end"]);break;case"position":r=e.split(","),i.percent(t,r[0]),2===r.length&&i.alt("positionAlign",r[1],["start",dn,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",dn,"end","left","right"])}}),/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");let r=i.get("line","auto");"auto"===r&&-1===hn.line&&(r=-1),e.line=r,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",dn);let n=i.get("position","auto");"auto"===n&&50===hn.position&&(n="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=n}(t,e)}function un(t){return t.replace(//gi,"\n")}class fn{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new nn,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(t){const e=this;function s(){let t=e.buffer,s=0;for(t=un(t);s>>0).toString()};function vn(t,e,s){return pn(t.toString())+pn(e.toString())+pn(s)}function yn(t,e,s,i,r,n,a){const o=new fn,l=pt(new Uint8Array(t)).trim().replace(gn,"\n").split("\n"),h=[],d=e?function(t,e=1){return dr(t,9e4,1/e)}(e.baseTime,e.timescale):0;let c,u="00:00.000",f=0,g=0,m=!0;o.oncue=function(t){const n=s[i];let a=s.ccOffset;const o=(f-d)/9e4;if(null!=n&&n.new&&(void 0!==g?a=s.ccOffset=n.start:function(t,e,s){let i=t[e],r=t[i.prevCC];if(!r||!r.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;null!=(n=r)&&n.new;){var n;t.ccOffset+=i.start-r.start,i.new=!1,i=r,r=t[i.prevCC]}t.presentationOffset=s}(s,i,o)),o){if(!e)return void(c=new Error("Missing initPTS for VTT MPEGTS"));a=o-s.presentationOffset}const l=t.endTime-t.startTime,u=pr(9e4*(t.startTime+a-g),9e4*r)/9e4;t.startTime=Math.max(u,0),t.endTime=Math.max(u+l,0);const m=t.text.trim();t.text=decodeURIComponent(encodeURIComponent(m)),t.id||(t.id=vn(t.startTime,t.endTime,m)),t.endTime>0&&h.push(t)},o.onparsingerror=function(t){c=t},o.onflush=function(){c?a(c):n(h)},l.forEach((t=>{if(m){if(mn(t,"X-TIMESTAMP-MAP=")){m=!1,t.slice(16).split(",").forEach((t=>{mn(t,"LOCAL:")?u=t.slice(6):mn(t,"MPEGTS:")&&(f=parseInt(t.slice(7)))}));try{g=function(t){let e=parseInt(t.slice(-3));const s=parseInt(t.slice(-6,-4)),i=parseInt(t.slice(-9,-7)),r=t.length>9?parseInt(t.substring(0,t.indexOf(":"))):0;if(!(p(e)&&p(s)&&p(i)&&p(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${t}`);return e+=1e3*s,e+=6e4*i,e+=36e5*r,e}(u)/1e3}catch(t){c=t}return}""===t&&(m=!1)}o.parse(t+"\n")})),o.flush()}const Tn="stpp.ttml.im1t",En=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,Sn=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,Ln={left:"start",center:"center",right:"end",start:"start",end:"end"};function An(t,e,s,i){const r=wt(new Uint8Array(t),["mdat"]);if(0===r.length)return void i(new Error("Could not parse IMSC1 mdat"));const n=r.map((t=>pt(t))),a=function(t,e,s=1,i=!1){return dr(t,e,1/s,i)}(e.baseTime,1,e.timescale);try{n.forEach((t=>s(function(t,e){const s=(new DOMParser).parseFromString(t,"text/xml"),i=s.getElementsByTagName("tt")[0];if(!i)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},n=Object.keys(r).reduce(((t,e)=>(t[e]=i.getAttribute(`ttp:${e}`)||r[e],t)),{}),a="preserve"!==i.getAttribute("xml:space"),o=bn(Rn(i,"styling","style")),l=bn(Rn(i,"layout","region")),h=Rn(i,"body","[begin]");return[].map.call(h,(t=>{const s=kn(t,a);if(!s||!t.hasAttribute("begin"))return null;const i=wn(t.getAttribute("begin"),n),r=wn(t.getAttribute("dur"),n);let h=wn(t.getAttribute("end"),n);if(null===i)throw In(t);if(null===h){if(null===r)throw In(t);h=i+r}const d=new rn(i-e,h-e,s);d.id=vn(d.startTime,d.endTime,d.text);const c=function(t,e,s){const i="http://www.w3.org/ns/ttml#styling";let r=null;const n=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],a=null!=t&&t.hasAttribute("style")?t.getAttribute("style"):null;a&&s.hasOwnProperty(a)&&(r=s[a]);return n.reduce(((s,n)=>{const a=Dn(e,i,n)||Dn(t,i,n)||Dn(r,i,n);return a&&(s[n]=a),s}),{})}(l[t.getAttribute("region")],o[t.getAttribute("style")],o),{textAlign:u}=c;if(u){const t=Ln[u];t&&(d.lineAlign=t),d.align=u}return m(d,c),d})).filter((t=>null!==t))}(t,a))))}catch(t){i(t)}}function Rn(t,e,s){const i=t.getElementsByTagName(e)[0];return i?[].slice.call(i.querySelectorAll(s)):[]}function bn(t){return t.reduce(((t,e)=>{const s=e.getAttribute("xml:id");return s&&(t[s]=e),t}),{})}function kn(t,e){return[].slice.call(t.childNodes).reduce(((t,s,i)=>{var r;return"br"===s.nodeName&&i?t+"\n":null!=(r=s.childNodes)&&r.length?kn(s,e):e?t+s.textContent.trim().replace(/\s+/g," "):t+s.textContent}),"")}function Dn(t,e,s){return t&&t.hasAttributeNS(e,s)?t.getAttributeNS(e,s):null}function In(t){return new Error(`Could not parse ttml timestamp ${t}`)}function wn(t,e){if(!t)return null;let s=an(t);return null===s&&(En.test(t)?s=function(t,e){const s=En.exec(t),i=(0|s[4])+(0|s[5])/e.subFrameRate;return 3600*(0|s[1])+60*(0|s[2])+(0|s[3])+i/e.frameRate}(t,e):Sn.test(t)&&(s=function(t,e){const s=Sn.exec(t),i=Number(s[1]);switch(s[2]){case"h":return 3600*i;case"m":return 60*i;case"ms":return 1e3*i;case"f":return i/e.frameRate;case"t":return i/e.tickRate}return i}(t,e))),s}function Cn(t){return t.characteristics&&/transcribes-spoken-dialog/gi.test(t.characteristics)&&/describes-music-and-sound/gi.test(t.characteristics)?"captions":"subtitles"}function _n(t,e){return!!t&&t.kind===Cn(e)&&xr(e,t)}class xn{constructor(t){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=t,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(t){this.streamController=t}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:t}=this;t.on(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:t}=this;t.off(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(t,e){const s=this.hls.levels[e.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(t,e){this.media=e.media instanceof HTMLVideoElement?e.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(t,e){const s=this.hls;this.restrictedLevels=[],this.firstLevel=e.firstLevel,s.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onLevelsUpdated(t,e){this.timer&&p(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(t,e){this.hls.config.capLevelToPlayerSize&&e.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const t=this.hls.levels;if(t.length){const e=this.hls,s=this.getMaxLevel(t.length-1);s!==this.autoLevelCapping&&k.log(`Setting autoLevelCapping to ${s}: ${t[s].height}p@${t[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),e.autoLevelCapping=s,e.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}}getMaxLevel(t){const e=this.hls.levels;if(!e.length)return-1;const s=e.filter(((e,s)=>this.isLevelAllowed(e)&&s<=t));return this.clientRect=null,xn.getMaxLevelByMediaSize(s,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const t=this.media,e={width:0,height:0};if(t){const s=t.getBoundingClientRect();e.width=s.width,e.height=s.height,e.width||e.height||(e.width=s.right-s.left||t.width||0,e.height=s.bottom-s.top||t.height||0)}return this.clientRect=e,e}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let t=1;if(!this.hls.config.ignoreDevicePixelRatio)try{t=self.devicePixelRatio}catch(t){}return t}isLevelAllowed(t){return!this.restrictedLevels.some((e=>t.bitrate===e.bitrate&&t.width===e.width&&t.height===e.height))}static getMaxLevelByMediaSize(t,e,s){if(null==t||!t.length)return-1;let i=t.length-1;const r=Math.max(e,s);for(let e=0;e=r||s.height>=r)&&(n=s,!(a=t[e+1])||n.width!==a.width||n.height!==a.height)){i=e;break}}var n,a;return i}}const Pn="[eme]";class Fn{constructor(t){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=Fn.CDMCleanupPromise?[Fn.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=k.debug.bind(k,Pn),this.log=k.log.bind(k,Pn),this.warn=k.warn.bind(k,Pn),this.error=k.error.bind(k,Pn),this.hls=t,this.config=t.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const t=this.config;t.requestMediaKeySystemAccessFunc=null,t.licenseXhrSetup=t.licenseResponseCallback=void 0,t.drmSystems=t.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(T.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(T.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(T.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(T.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(t){const{drmSystems:e,widevineLicenseUrl:s}=this.config,i=e[t];if(i)return i.licenseUrl;if(t===V.WIDEVINE&&s)return s;throw new Error(`no license server URL configured for key-system "${t}"`)}getServerCertificateUrl(t){const{drmSystems:e}=this.config,s=e[t];if(s)return s.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${t}"]`)}attemptKeySystemAccess(t){const e=this.hls.levels,s=(t,e,s)=>!!t&&s.indexOf(t)===e,i=e.map((t=>t.audioCodec)).filter(s),r=e.map((t=>t.videoCodec)).filter(s);return i.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((e,s)=>{const n=t=>{const a=t.shift();this.getMediaKeysPromise(a,i,r).then((t=>e({keySystem:a,mediaKeys:t}))).catch((e=>{t.length?n(t):s(e instanceof Mn?e:new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_ACCESS,error:e,fatal:!0},e.message))}))};n(t)}))}requestMediaKeySystemAccess(t,e){const{requestMediaKeySystemAccessFunc:s}=this.config;if("function"!=typeof s){let t=`Configured requestMediaKeySystemAccess is not a function ${s}`;return null===Z&&"http:"===self.location.protocol&&(t=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(t))}return s(t,e)}getMediaKeysPromise(t,e,s){const i=function(t,e,s,i){let r;switch(t){case V.FAIRPLAY:r=["cenc","sinf"];break;case V.WIDEVINE:case V.PLAYREADY:r=["cenc"];break;case V.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${t}`)}return function(t,e,s,i){return[{initDataTypes:t,persistentState:i.persistentState||"optional",distinctiveIdentifier:i.distinctiveIdentifier||"optional",sessionTypes:i.sessionTypes||[i.sessionType||"temporary"],audioCapabilities:e.map((t=>({contentType:`audio/mp4; codecs="${t}"`,robustness:i.audioRobustness||"",encryptionScheme:i.audioEncryptionScheme||null}))),videoCapabilities:s.map((t=>({contentType:`video/mp4; codecs="${t}"`,robustness:i.videoRobustness||"",encryptionScheme:i.videoEncryptionScheme||null})))}]}(r,e,s,i)}(t,e,s,this.config.drmSystemOptions),r=this.keySystemAccessPromises[t];let n=null==r?void 0:r.keySystemAccess;if(!n){this.log(`Requesting encrypted media "${t}" key-system access with config: ${JSON.stringify(i)}`),n=this.requestMediaKeySystemAccess(t,i);const e=this.keySystemAccessPromises[t]={keySystemAccess:n};return n.catch((e=>{this.log(`Failed to obtain access to key-system "${t}": ${e}`)})),n.then((s=>{this.log(`Access for key-system "${s.keySystem}" obtained`);const i=this.fetchServerCertificate(t);return this.log(`Create media-keys for "${t}"`),e.mediaKeys=s.createMediaKeys().then((e=>(this.log(`Media-keys created for "${t}"`),i.then((s=>s?this.setMediaKeysServerCertificate(e,t,s):e))))),e.mediaKeys.catch((e=>{this.error(`Failed to create media-keys for "${t}"}: ${e}`)})),e.mediaKeys}))}return n.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:t,keySystem:e,mediaKeys:s}){this.log(`Creating key-system session "${e}" keyId: ${Tt(t.keyId||[])}`);const i=s.createSession(),r={decryptdata:t,keySystem:e,mediaKeys:s,mediaKeysSession:i,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(t){const e=t.decryptdata;if(e.pssh){const s=this.createMediaKeySessionContext(t),i=this.getKeyIdString(e),r="cenc";this.keyIdToKeySessionPromise[i]=this.generateRequestWithPreferredKeySession(s,r,e.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(t)}getKeyIdString(t){if(!t)throw new Error("Could not read keyId of undefined decryptdata");if(null===t.keyId)throw new Error("keyId is null");return Tt(t.keyId)}updateKeySession(t,e){var s;const i=t.mediaKeysSession;return this.log(`Updating key-session "${i.sessionId}" for keyID ${Tt((null==(s=t.decryptdata)?void 0:s.keyId)||[])}\n } (data length: ${e?e.byteLength:e})`),i.update(e)}selectKeySystemFormat(t){const e=Object.keys(t.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${t.sn} ${t.type}: ${t.level}) key formats ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)),this.keyFormatPromise}getKeyFormatPromise(t){return new Promise(((e,s)=>{const i=J(this.config),r=t.map(X).filter((t=>!!t&&-1!==i.indexOf(t)));return this.getKeySystemSelectionPromise(r).then((({keySystem:t})=>{const i=Q(t);i?e(i):s(new Error(`Unable to find format for key-system "${t}"`))})).catch(s)}))}loadKey(t){const e=t.keyInfo.decryptdata,s=this.getKeyIdString(e),i=`(keyId: ${s} format: "${e.keyFormat}" method: ${e.method} uri: ${e.uri})`;this.log(`Starting session for key ${i}`);let r=this.keyIdToKeySessionPromise[s];return r||(r=this.keyIdToKeySessionPromise[s]=this.getKeySystemForKeyPromise(e).then((({keySystem:s,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${t.frag.sn} ${t.frag.type}: ${t.frag.level} using key ${i}`),this.attemptSetMediaKeys(s,r).then((()=>{this.throwIfDestroyed();const t=this.createMediaKeySessionContext({keySystem:s,mediaKeys:r,decryptdata:e});return this.generateRequestWithPreferredKeySession(t,"cenc",e.pssh,"playlist-key")}))))),r.catch((t=>this.handleError(t)))),r}throwIfDestroyed(t="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(t){this.hls&&(this.error(t.message),t instanceof Mn?this.hls.trigger(T.ERROR,t.data):this.hls.trigger(T.ERROR,{type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_KEYS,error:t,fatal:!0}))}getKeySystemForKeyPromise(t){const e=this.getKeyIdString(t),s=this.keyIdToKeySessionPromise[e];if(!s){const e=X(t.keyFormat),s=e?[e]:J(this.config);return this.attemptKeySystemAccess(s)}return s}getKeySystemSelectionPromise(t){if(t.length||(t=J(this.config)),0===t.length)throw new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(t)}_onMediaEncrypted(t){const{initDataType:e,initData:s}=t;if(this.debug(`"${t.type}" event: init data type: "${e}"`),null===s)return;let i,r;if("sinf"===e&&this.config.drmSystems[V.FAIRPLAY]){const t=At(new Uint8Array(s));try{const e=$(JSON.parse(t).sinf),s=Ot(new Uint8Array(e));if(!s)return;i=s.subarray(8,24),r=V.FAIRPLAY}catch(t){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const t=function(t){if(!(t instanceof ArrayBuffer)||t.byteLength<32)return null;const e={version:0,systemId:"",kids:null,data:null},s=new DataView(t),i=s.getUint32(0);if(t.byteLength!==i&&i>44)return null;if(1886614376!==s.getUint32(4))return null;if(e.version=s.getUint32(8)>>>24,e.version>1)return null;e.systemId=Tt(new Uint8Array(t,12,16));const r=s.getUint32(28);if(0===e.version){if(i-32this.generateRequestWithPreferredKeySession(r,e,s,"encrypted-event-key-match")));break}}l||(l=a[n]=this.getKeySystemSelectionPromise([r]).then((({keySystem:t,mediaKeys:r})=>{var a;this.throwIfDestroyed();const o=new Yt("ISO-23001-7",n,null!=(a=Q(t))?a:"");return o.pssh=new Uint8Array(s),o.keyId=i,this.attemptSetMediaKeys(t,r).then((()=>{this.throwIfDestroyed();const i=this.createMediaKeySessionContext({decryptdata:o,keySystem:t,mediaKeys:r});return this.generateRequestWithPreferredKeySession(i,e,s,"encrypted-event-no-match")}))}))),l.catch((t=>this.handleError(t)))}_onWaitingForKey(t){this.log(`"${t.type}" event`)}attemptSetMediaKeys(t,e){const s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${t}"`);const i=Promise.all(s).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(e)}));return this.setMediaKeysQueue.push(i),i.then((()=>{this.log(`Media-keys set for "${t}"`),s.push(i),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((t=>-1===s.indexOf(t)))}))}generateRequestWithPreferredKeySession(t,e,s,i){var r,n;const a=null==(r=this.config.drmSystems)||null==(n=r[t.keySystem])?void 0:n.generateRequest;if(a)try{const i=a.call(this.hls,e,s,t);if(!i)throw new Error("Invalid response from configured generateRequest filter");e=i.initDataType,s=t.decryptdata.pssh=i.initData?new Uint8Array(i.initData):null}catch(t){var o;if(this.warn(t.message),null!=(o=this.hls)&&o.config.debug)throw t}if(null===s)return this.log(`Skipping key-session request for "${i}" (no initData)`),Promise.resolve(t);const l=this.getKeyIdString(t.decryptdata);this.log(`Generating key-session request for "${i}": ${l} (init data type: ${e} length: ${s?s.byteLength:null})`);const h=new Ir,d=t._onmessage=e=>{const s=t.mediaKeysSession;if(!s)return void h.emit("error",new Error("invalid state"));const{messageType:i,message:r}=e;this.log(`"${i}" message event for session "${s.sessionId}" message size: ${r.byteLength}`),"license-request"===i||"license-renewal"===i?this.renewLicense(t,r).catch((t=>{this.handleError(t),h.emit("error",t)})):"license-release"===i?t.keySystem===V.FAIRPLAY&&(this.updateKeySession(t,K("acknowledged")),this.removeSession(t)):this.warn(`unhandled media key message type "${i}"`)},c=t._onkeystatuseschange=e=>{if(!t.mediaKeysSession)return void h.emit("error",new Error("invalid state"));this.onKeyStatusChange(t);const s=t.keyStatus;h.emit("keyStatus",s),"expired"===s&&(this.warn(`${t.keySystem} expired for key ${l}`),this.renewKeySession(t))};t.mediaKeysSession.addEventListener("message",d),t.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((t,e)=>{h.on("error",e),h.on("keyStatus",(s=>{s.startsWith("usable")?t():"output-restricted"===s?e(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===s?e(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${s}"`)):"expired"===s?e(new Error("key expired while generating request")):this.warn(`unhandled key status change "${s}"`)}))}));return t.mediaKeysSession.generateRequest(e,s).then((()=>{var e;this.log(`Request generated for key-session "${null==(e=t.mediaKeysSession)?void 0:e.sessionId}" keyId: ${l}`)})).catch((t=>{throw new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_NO_SESSION,error:t,fatal:!1},`Error generating key-session request: ${t}`)})).then((()=>u)).catch((e=>{throw h.removeAllListeners(),this.removeSession(t),e})).then((()=>(h.removeAllListeners(),t)))}onKeyStatusChange(t){t.mediaKeysSession.keyStatuses.forEach(((e,s)=>{this.log(`key status change "${e}" for keyStatuses keyId: ${Tt("buffer"in s?new Uint8Array(s.buffer,s.byteOffset,s.byteLength):new Uint8Array(s))} session keyId: ${Tt(new Uint8Array(t.decryptdata.keyId||[]))} uri: ${t.decryptdata.uri}`),t.keyStatus=e}))}fetchServerCertificate(t){const e=this.config,s=new(0,e.loader)(e),i=this.getServerCertificateUrl(t);return i?(this.log(`Fetching server certificate for "${t}"`),new Promise(((r,n)=>{const a={responseType:"arraybuffer",url:i},o=e.certLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{r(t.data)},onError:(e,s,r,o)=>{n(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:u({url:a.url,data:void 0},e)},`"${t}" certificate request failed (${i}). Status: ${e.code} (${e.text})`))},onTimeout:(e,s,r)=>{n(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:a.url,data:void 0}},`"${t}" certificate request timed out (${i})`))},onAbort:(t,e,s)=>{n(new Error("aborted"))}};s.load(a,l,h)}))):Promise.resolve()}setMediaKeysServerCertificate(t,e,s){return new Promise(((i,r)=>{t.setServerCertificate(s).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==s?void 0:s.byteLength}) on "${e}"`),i(t)})).catch((t=>{r(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:t,fatal:!0},t.message))}))}))}renewLicense(t,e){return this.requestLicense(t,new Uint8Array(e)).then((e=>this.updateKeySession(t,new Uint8Array(e)).catch((t=>{throw new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:t,fatal:!0},t.message)}))))}unpackPlayReadyKeyMessage(t,e){const s=String.fromCharCode.apply(null,new Uint16Array(e.buffer));if(!s.includes("PlayReadyKeyMessage"))return t.setRequestHeader("Content-Type","text/xml; charset=utf-8"),e;const i=(new DOMParser).parseFromString(s,"application/xml"),r=i.querySelectorAll("HttpHeader");if(r.length>0){let e;for(let s=0,i=r.length;s in key message");return K(atob(l))}setupLicenseXHR(t,e,s,i){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!s.decryptdata)throw new Error("Key removed");return r.call(this.hls,t,e,s,i)})).catch((n=>{if(!s.decryptdata)throw n;return t.open("POST",e,!0),r.call(this.hls,t,e,s,i)})).then((s=>{t.readyState||t.open("POST",e,!0);return{xhr:t,licenseChallenge:s||i}})):(t.open("POST",e,!0),Promise.resolve({xhr:t,licenseChallenge:i}))}requestLicense(t,e){const s=this.config.keyLoadPolicy.default;return new Promise(((i,r)=>{const n=this.getLicenseServerUrl(t.keySystem);this.log(`Sending license request to URL: ${n}`);const a=new XMLHttpRequest;a.responseType="arraybuffer",a.onreadystatechange=()=>{if(!this.hls||!t.mediaKeysSession)return r(new Error("invalid state"));if(4===a.readyState)if(200===a.status){this._requestLicenseFailureCount=0;let e=a.response;this.log(`License received ${e instanceof ArrayBuffer?e.byteLength:e}`);const s=this.config.licenseResponseCallback;if(s)try{e=s.call(this.hls,a,n,t)}catch(t){this.error(t)}i(e)}else{const o=s.errorRetry,l=o?o.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||a.status>=400&&a.status<500)r(new Mn({type:E.KEY_SYSTEM_ERROR,details:S.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:a,response:{url:n,data:void 0,code:a.status,text:a.statusText}},`License Request XHR failed (${n}). Status: ${a.status} (${a.statusText})`));else{const s=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${s} attempts left`),this.requestLicense(t,e).then(i,r)}}},t.licenseXhr&&t.licenseXhr.readyState!==XMLHttpRequest.DONE&&t.licenseXhr.abort(),t.licenseXhr=a,this.setupLicenseXHR(a,n,t,e).then((({xhr:e,licenseChallenge:s})=>{t.keySystem==V.PLAYREADY&&(s=this.unpackPlayReadyKeyMessage(e,s)),e.send(s)}))}))}onMediaAttached(t,e){if(!this.config.emeEnabled)return;const s=e.media;this.media=s,s.addEventListener("encrypted",this.onMediaEncrypted),s.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const t=this.media,e=this.mediaKeySessions;t&&(t.removeEventListener("encrypted",this.onMediaEncrypted),t.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Yt.clearKeyUriToKeyIdMap();const s=e.length;Fn.CDMCleanupPromise=Promise.all(e.map((t=>this.removeSession(t))).concat(null==t?void 0:t.setMediaKeys(null).catch((t=>{this.log(`Could not clear media keys: ${t}`)})))).then((()=>{s&&(this.log("finished closing key sessions and clearing media keys"),e.length=0)})).catch((t=>{this.log(`Could not close sessions and clear media keys: ${t}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(t,{sessionKeys:e}){if(e&&this.config.emeEnabled&&!this.keyFormatPromise){const t=e.reduce(((t,e)=>(-1===t.indexOf(e.keyFormat)&&t.push(e.keyFormat),t)),[]);this.log(`Selecting key-system from session-keys ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)}}removeSession(t){const{mediaKeysSession:e,licenseXhr:s}=t;if(e){this.log(`Remove licenses and keys and close session ${e.sessionId}`),t._onmessage&&(e.removeEventListener("message",t._onmessage),t._onmessage=void 0),t._onkeystatuseschange&&(e.removeEventListener("keystatuseschange",t._onkeystatuseschange),t._onkeystatuseschange=void 0),s&&s.readyState!==XMLHttpRequest.DONE&&s.abort(),t.mediaKeysSession=t.decryptdata=t.licenseXhr=void 0;const i=this.mediaKeySessions.indexOf(t);return i>-1&&this.mediaKeySessions.splice(i,1),e.remove().catch((t=>{this.log(`Could not remove session: ${t}`)})).then((()=>e.close())).catch((t=>{this.log(`Could not close session: ${t}`)}))}}}Fn.CDMCleanupPromise=void 0;class Mn extends Error{constructor(t,e){super(e),this.data=void 0,t.error||(t.error=new Error(e)),this.data=t,t.err=t.error}}var On,Nn,Un;!function(t){t.MANIFEST="m",t.AUDIO="a",t.VIDEO="v",t.MUXED="av",t.INIT="i",t.CAPTION="c",t.TIMED_TEXT="tt",t.KEY="k",t.OTHER="o"}(On||(On={})),function(t){t.DASH="d",t.HLS="h",t.SMOOTH="s",t.OTHER="o"}(Nn||(Nn={})),function(t){t.OBJECT="CMCD-Object",t.REQUEST="CMCD-Request",t.SESSION="CMCD-Session",t.STATUS="CMCD-Status"}(Un||(Un={}));const Bn={[Un.OBJECT]:["br","d","ot","tb"],[Un.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[Un.SESSION]:["cid","pr","sf","sid","st","v"],[Un.STATUS]:["bs","rtp"]};class $n{constructor(t,e){this.value=void 0,this.params=void 0,Array.isArray(t)&&(t=t.map((t=>t instanceof $n?t:new $n(t)))),this.value=t,this.params=e}}class Gn{constructor(t){this.description=void 0,this.description=t}}function Kn(t,e,s,i){return new Error(`failed to ${t} "${r=e,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${s}`,{cause:i});var r}const Hn="Bare Item";const Vn=/[\x00-\x1f\x7f]+/;function Yn(t,e,s){return Kn("serialize",t,e,s)}function Wn(t){if(!1===ArrayBuffer.isView(t))throw Yn(t,"Byte Sequence");return`:${e=t,btoa(String.fromCharCode(...e))}:`;var e}function jn(t){if(function(t){return t<-999999999999999||99999999999999912)throw Yn(t,"Decimal");const s=e.toString();return s.includes(".")?s:`${s}.0`}function zn(t){const e=(s=t).description||s.toString().slice(7,-1);var s;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(e))throw Yn(e,"Token");return e}function Qn(t){switch(typeof t){case"number":if(!p(t))throw Yn(t,Hn);return Number.isInteger(t)?jn(t):Xn(t);case"string":return function(t){if(Vn.test(t))throw Yn(t,"String");return`"${t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(t);case"symbol":return zn(t);case"boolean":return function(t){if("boolean"!=typeof t)throw Yn(t,"Boolean");return t?"?1":"?0"}(t);case"object":if(t instanceof Date)return function(t){return`@${jn(t.getTime()/1e3)}`}(t);if(t instanceof Uint8Array)return Wn(t);if(t instanceof Gn)return zn(t);default:throw Yn(t,Hn)}}function Jn(t){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(t))throw Yn(t,"Key");return t}function Zn(t){return null==t?"":Object.entries(t).map((([t,e])=>!0===e?`;${Jn(t)}`:`;${Jn(t)}=${Qn(e)}`)).join("")}function ta(t){return t instanceof $n?`${Qn(t.value)}${Zn(t.params)}`:Qn(t)}function ea(t,e={whitespace:!0}){if("object"!=typeof t)throw Yn(t,"Dict");const s=t instanceof Map?t.entries():Object.entries(t),i=null!=e&&e.whitespace?" ":"";return Array.from(s).map((([t,e])=>{e instanceof $n==!1&&(e=new $n(e));let s=Jn(t);var i;return!0===e.value?s+=Zn(e.params):(s+="=",Array.isArray(e.value)?s+=`(${(i=e).value.map(ta).join(" ")})${Zn(i.params)}`:s+=ta(e)),s})).join(`,${i}`)}const sa=t=>Math.round(t),ia=t=>100*sa(t/100),ra={br:sa,d:sa,bl:ia,dl:ia,mtp:ia,nor:(t,e)=>(null!=e&&e.baseUrl&&(t=function(t,e){const s=new URL(t),i=new URL(e);if(s.origin!==i.origin)return t;const r=s.pathname.split("/").slice(1),n=i.pathname.split("/").slice(1,-1);for(;r[0]===n[0];)r.shift(),n.shift();for(;n.length;)n.shift(),r.unshift("..");return r.join("/")}(t,e.baseUrl)),encodeURIComponent(t)),rtp:ia,tb:sa};function na(t,e){const s={};if(null==t||"object"!=typeof t)return s;const i=Object.keys(t).sort(),r=m({},ra,null==e?void 0:e.formatters),n=null==e?void 0:e.filter;return i.forEach((i=>{if(null!=n&&n(i))return;let a=t[i];const o=r[i];o&&(a=o(a,e)),"v"===i&&1===a||"pr"==i&&1===a||(t=>"number"==typeof t?p(t):null!=t&&""!==t&&!1!==t)(a)&&((t=>"ot"===t||"sf"===t||"st"===t)(i)&&"string"==typeof a&&(a=new Gn(a)),s[i]=a)})),s}function aa(t,e={}){return t?function(t,e){return ea(t,e)}(na(t,e),m({whitespace:!1},e)):""}function oa(t,e,s){return m(t,function(t,e={}){if(!t)return{};const s=Object.entries(t),i=Object.entries(Bn).concat(Object.entries((null==e?void 0:e.customHeaderMap)||{})),r=s.reduce(((t,e)=>{var s;const[r,n]=e,a=(null==(s=i.find((t=>t[1].includes(r))))?void 0:s[0])||Un.REQUEST;return null!=t[a]||(t[a]={}),t[a][r]=n,t}),{});return Object.entries(r).reduce(((t,[s,i])=>(t[s]=aa(i,e),t)),{})}(e,s))}const la=/CMCD=[^&#]+/;function ha(t,e,s){const i=function(t,e={}){if(!t)return"";const s=aa(t,e);return`CMCD=${encodeURIComponent(s)}`}(e,s);if(!i)return t;if(la.test(t))return t.replace(la,i);const r=t.includes("?")?"&":"?";return`${t}${r}${i}`}function da(t,e,s,i){t&&Object.keys(e).forEach((r=>{const n=t.filter((t=>t.groupId===r)).map((t=>{const n=m({},t);return n.details=void 0,n.attrs=new w(n.attrs),n.url=n.attrs.URI=ca(t.url,t.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",s),n.groupId=n.attrs["GROUP-ID"]=e[r],n.attrs["PATHWAY-ID"]=i,n}));t.push(...n)}))}function ca(t,e,s,i){const{HOST:r,PARAMS:n,[s]:a}=i;let o;e&&(o=null==a?void 0:a[e],o&&(t=o));const l=new self.URL(t);return r&&!o&&(l.host=r),n&&Object.keys(n).sort().forEach((t=>{t&&l.searchParams.set(t,n[t])})),l.href}const ua=/^age:\s*[\d.]+\s*$/im;class fa{constructor(t){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=t&&t.xhrSetup||null,this.stats=new x,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null}abortInternal(){const t=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),t&&(t.onreadystatechange=null,t.onprogress=null,4!==t.readyState&&(this.stats.aborted=!0,t.abort()))}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(t,e,s){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=t,this.config=e,this.callbacks=s,this.loadInternal()}loadInternal(){const{config:t,context:e}=this;if(!t||!e)return;const s=this.loader=new self.XMLHttpRequest,i=this.stats;i.loading.first=0,i.loaded=0,i.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(this.loader===s&&!this.stats.aborted)return r(s,e.url)})).catch((t=>{if(this.loader===s&&!this.stats.aborted)return s.open("GET",e.url,!0),r(s,e.url)})).then((()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,e,t)})).catch((t=>{this.callbacks.onError({code:s.status,text:t.message},e,s,i)})):this.openAndSendXhr(s,e,t)}openAndSendXhr(t,e,s){t.readyState||t.open("GET",e.url,!0);const i=e.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:n}=s.loadPolicy;if(i)for(const e in i)t.setRequestHeader(e,i[e]);e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,self.clearTimeout(this.requestTimeout),s.timeout=r&&p(r)?r:n,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),t.send()}readystatechange(){const{context:t,loader:e,stats:s}=this;if(!t||!e)return;const i=e.readyState,r=this.config;if(!s.aborted&&i>=2&&(0===s.loading.first&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),4===i)){self.clearTimeout(this.requestTimeout),e.onreadystatechange=null,e.onprogress=null;const i=e.status,n="text"!==e.responseType;if(i>=200&&i<300&&(n&&e.response||null!==e.responseText)){s.loading.end=Math.max(self.performance.now(),s.loading.first);const r=n?e.response:e.responseText,a="arraybuffer"===e.responseType?r.byteLength:r.length;if(s.loaded=s.total=a,s.bwEstimate=8e3*s.total/(s.loading.end-s.loading.first),!this.callbacks)return;const o=this.callbacks.onProgress;if(o&&o(s,t,r,e),!this.callbacks)return;const l={url:e.responseURL,data:r,code:i};this.callbacks.onSuccess(l,s,t,e)}else{const n=r.loadPolicy.errorRetry;fs(n,s.retry,!1,{url:t.url,data:void 0,code:i})?this.retry(n):(k.error(`${i} while loading ${t.url}`),this.callbacks.onError({code:i,text:e.statusText},t,e,s))}}}loadtimeout(){if(!this.config)return;const t=this.config.loadPolicy.timeoutRetry;if(fs(t,this.stats.retry,!0))this.retry(t);else{var e;k.warn(`timeout while loading ${null==(e=this.context)?void 0:e.url}`);const t=this.callbacks;t&&(this.abortInternal(),t.onTimeout(this.stats,this.context,this.loader))}}retry(t){const{context:e,stats:s}=this;this.retryDelay=cs(t,s.retry),s.retry++,k.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==e?void 0:e.url}, retrying ${s.retry}/${t.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(t){const e=this.stats;e.loaded=t.loaded,t.lengthComputable&&(e.total=t.total)}getCacheAge(){let t=null;if(this.loader&&ua.test(this.loader.getAllResponseHeaders())){const e=this.loader.getResponseHeader("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.loader&&new RegExp(`^${t}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(t):null}}const ga=/(\d+)-(\d+)\/(\d+)/;class ma{constructor(t){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=t.fetchSetup||pa,this.controller=new self.AbortController,this.stats=new x}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var t;this.abortInternal(),null!=(t=this.callbacks)&&t.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(t,e,s){const i=this.stats;if(i.loading.start)throw new Error("Loader can only be used once.");i.loading.start=self.performance.now();const r=function(t,e){const s={method:"GET",mode:"cors",credentials:"same-origin",signal:e,headers:new self.Headers(m({},t.headers))};t.rangeEnd&&s.headers.set("Range","bytes="+t.rangeStart+"-"+String(t.rangeEnd-1));return s}(t,this.controller.signal),n=s.onProgress,a="arraybuffer"===t.responseType,o=a?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:h}=e.loadPolicy;this.context=t,this.config=e,this.callbacks=s,this.request=this.fetchSetup(t,r),self.clearTimeout(this.requestTimeout),e.timeout=l&&p(l)?l:h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),e.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const o=Math.max(self.performance.now(),i.loading.start);if(self.clearTimeout(this.requestTimeout),e.timeout=h,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),s.onTimeout(i,t,this.response)}),h-(o-i.loading.start)),!r.ok){const{status:t,statusText:e}=r;throw new va(e||"fetch, bad network response",t,r)}return i.loading.first=o,i.total=function(t){const e=t.get("Content-Range");if(e){const t=function(t){const e=ga.exec(t);if(e)return parseInt(e[2])-parseInt(e[1])+1}(e);if(p(t))return t}const s=t.get("Content-Length");if(s)return parseInt(s)}(r.headers)||i.total,n&&p(e.highWaterMark)?this.loadProgressively(r,i,t,e.highWaterMark,n):a?r.arrayBuffer():"json"===t.responseType?r.json():r.text()})).then((r=>{const a=this.response;if(!a)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),i.loading.end=Math.max(self.performance.now(),i.loading.first);const l=r[o];l&&(i.loaded=i.total=l);const h={url:a.url,data:r,code:a.status};n&&!p(e.highWaterMark)&&n(i,t,r,a),s.onSuccess(h,i,t,a)})).catch((e=>{if(self.clearTimeout(this.requestTimeout),i.aborted)return;const r=e&&e.code||0,n=e?e.message:null;s.onError({code:r,text:n},t,e?e.details:null,i)}))}getCacheAge(){let t=null;if(this.response){const e=this.response.headers.get("age");t=e?parseFloat(e):null}return t}getResponseHeader(t){return this.response?this.response.headers.get(t):null}loadProgressively(t,e,s,i=0,r){const n=new Ai,a=t.body.getReader(),o=()=>a.read().then((a=>{if(a.done)return n.dataLength&&r(e,s,n.flush(),t),Promise.resolve(new ArrayBuffer(0));const l=a.value,h=l.length;return e.loaded+=h,h=i&&r(e,s,n.flush(),t)):r(e,s,l,t),o()})).catch((()=>Promise.reject()));return o()}}function pa(t,e){return new self.Request(t.url,e)}class va extends Error{constructor(t,e,s){super(t),this.code=void 0,this.details=void 0,this.code=e,this.details=s}}const ya=/\s/,Ta={newCue(t,e,s,i){const r=[];let n,a,o,l,h;const d=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const i=un(h.trim()),f=vn(e,s,i);null!=t&&null!=(c=t.cues)&&c.getCueById(f)||(a=new d(e,s,i),a.id=f,a.line=u+1,a.align="left",a.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(a))}return t&&r.length&&(r.sort(((t,e)=>"auto"===t.line||"auto"===e.line?0:t.line>8&&e.line>8?e.line-t.line:t.line-e.line)),r.forEach((e=>Pe(t,e)))),r}},Ea=u(u({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:fa,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(t){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:t,partCurrent:e,hls:s}=this,{autoLevelEnabled:i,media:r}=s;if(!t||!r)return;const n=performance.now(),a=e?e.stats:t.stats,o=e?e.duration:t.duration,l=n-a.loading.start,h=s.minAutoLevel;if(a.aborted||a.loaded&&a.loaded===a.total||t.level<=h)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!i||r.paused||!r.playbackRate||!r.readyState)return;const d=s.mainForwardBufferInfo;if(null===d)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,o/(2*u)*1e3))return;const f=d.len/u,g=a.loading.first?a.loading.first-a.loading.start:-1,m=a.loaded&&g>-1,v=this.getBwEstimate(),y=s.levels,E=y[t.level],S=a.total||Math.max(a.loaded,Math.round(o*E.averageBitrate/8));let L=m?l-g:l;L<1&&m&&(L=Math.min(l,8*a.loaded/v));const A=m?1e3*a.loaded/L:0,R=A?(S-a.loaded)/A:8*S/v+c/1e3;if(R<=f)return;const b=A?8*A:v;let D,I=Number.POSITIVE_INFINITY;for(D=t.level-1;D>h;D--){const t=y[D].maxBitrate;if(I=this.getTimeToLoadFrag(c/1e3,b,o*t,!y[D].details),I=R)return;if(I>10*o)return;s.nextLoadLevel=s.nextAutoLevel=D,m?this.bwEstimator.sample(l-Math.min(c,g),a.loaded):this.bwEstimator.sampleTTFB(l);const w=y[D].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>w&&this.resetEstimator(w),this.clearTimer(),k.warn(`[abr] Fragment ${t.sn}${e?" part "+e.index:""} of level ${t.level} is loading too slowly;\n Time to underbuffer: ${f.toFixed(3)} s\n Estimated load time for current fragment: ${R.toFixed(3)} s\n Estimated load time for down switch fragment: ${I.toFixed(3)} s\n TTFB estimate: ${0|g} ms\n Current BW estimate: ${p(v)?0|v:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${D} @ ${0|w} bps`),s.trigger(T.FRAG_LOAD_EMERGENCY_ABORTED,{frag:t,part:e,stats:a})},this.hls=t,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(t){t&&(k.log(`setting initial bwe to ${t}`),this.hls.config.abrEwmaDefaultEstimate=t),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const t=this.hls.config;return new Ds(t.abrEwmaSlowVoD,t.abrEwmaFastVoD,t.abrEwmaDefaultEstimate)}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),t.off(T.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(t,e){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(t,e){const s=e.frag;if(!this.ignoreFragment(s)){var i;if(!s.bitrateTest)this.fragCurrent=s,this.partCurrent=null!=(i=e.part)?i:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(t,e){this.clearTimer()}onError(t,e){if(!e.fatal)switch(e.details){case S.BUFFER_ADD_CODEC_ERROR:case S.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case S.FRAG_LOAD_TIMEOUT:{const t=e.frag,{fragCurrent:s,partCurrent:i}=this;if(t&&s&&t.sn===s.sn&&t.level===s.level){const e=performance.now(),s=i?i.stats:t.stats,r=e-s.loading.start,n=s.loading.first?s.loading.first-s.loading.start:-1;if(s.loaded&&n>-1){const t=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(t,n),s.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(t,e,s,i){return t+s/e+(i?this.lastLevelLoadSec:0)}onLevelLoaded(t,e){const s=this.hls.config,{loading:i}=e.stats,r=i.end-i.start;p(r)&&(this.lastLevelLoadSec=r/1e3),e.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD)}onFragLoaded(t,{frag:e,part:s}){const i=s?s.stats:e.stats;if(e.type===ke&&this.bwEstimator.sampleTTFB(i.loading.first-i.loading.start),!this.ignoreFragment(e)){if(this.clearTimer(),e.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const t=s?s.duration:e.duration,r=this.hls.levels[e.level],n=(r.loaded?r.loaded.bytes:0)+i.loaded,a=(r.loaded?r.loaded.duration:0)+t;r.loaded={bytes:n,duration:a},r.realBitrate=Math.round(8*n/a)}if(e.bitrateTest){const t={stats:i,frag:e,part:s,id:e.type};this.onFragBuffered(T.FRAG_BUFFERED,t),e.bitrateTest=!1}else this.lastLoadedFragLevel=e.level}}onFragBuffered(t,e){const{frag:s,part:i}=e,r=null!=i&&i.stats.loaded?i.stats:s.stats;if(r.aborted)return;if(this.ignoreFragment(s))return;const n=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(n,r.loaded),r.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=n/1e3:this.bitrateTestDelay=0}ignoreFragment(t){return t.type!==ke||"initSegment"===t.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:t,minAutoLevel:e}=this.hls,s=this.getBwEstimate(),i=this.hls.config.maxStarvationDelay,r=this.findBestLevel(s,e,t,0,i,1,1);if(r>-1)return r;const n=this.hls.firstLevel,a=Math.min(Math.max(n,e),t);return k.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${n} clamped to ${a}`),a}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const t=this.forcedAutoLevel,e=this.bwEstimator.canEstimate(),s=this.lastLoadedFragLevel>-1;if(!(-1===t||e&&s&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return t;const i=e&&s?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==t){const e=this.hls.levels;if(e.length>Math.max(t,i)&&e[t].loadError<=e[i].loadError)return t}return this._nextAutoLevel=i,this.nextAutoLevelKey=this.getAutoLevelKey(),i}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:t,partCurrent:e,hls:s}=this,{maxAutoLevel:i,config:r,minAutoLevel:n}=s,a=e?e.duration:t?t.duration:0,o=this.getBwEstimate(),l=this.getStarvationDelay();let h=r.abrBandWidthFactor,d=r.abrBandWidthUpFactor;if(l){const t=this.findBestLevel(o,n,i,l,0,h,d);if(t>=0)return t}let c=a?Math.min(a,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const t=this.bitrateTestDelay;if(t){c=(a?Math.min(a,r.maxLoadingDelay):r.maxLoadingDelay)-t,k.info(`[abr] bitrate test took ${Math.round(1e3*t)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),h=d=1}}const u=this.findBestLevel(o,n,i,l,c,h,d);if(k.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const f=s.levels[n],g=s.levels[s.loadLevel];return(null==f?void 0:f.bitrate)<(null==g?void 0:g.bitrate)?n:s.loadLevel}getStarvationDelay(){const t=this.hls,e=t.media;if(!e)return 1/0;const s=e&&0!==e.playbackRate?Math.abs(e.playbackRate):1,i=t.mainForwardBufferInfo;return(i?i.len:0)/s}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(t,e,s,i,r,n,a){var o;const l=i+r,h=this.lastLoadedFragLevel,d=-1===h?this.hls.firstLevel:h,{fragCurrent:c,partCurrent:u}=this,{levels:f,allAudioTracks:g,loadLevel:m,config:v}=this.hls;if(1===f.length)return 0;const y=f[d],T=!(null==y||null==(o=y.details)||!o.live),E=-1===m||-1===h;let S,L="SDR",A=(null==y?void 0:y.frameRate)||0;const{audioPreference:R,videoPreference:b}=v,D=this.audioTracksByGroup||(this.audioTracksByGroup=function(t){return t.reduce(((t,e)=>{let s=t.groups[e.groupId];s||(s=t.groups[e.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(e);const i=e.channels||"2";return s.channels[i]=(s.channels[i]||0)+1,s.hasDefault=s.hasDefault||e.default,s.hasAutoSelect=s.hasAutoSelect||e.autoselect,s.hasDefault&&(t.hasDefaultAudio=!0),s.hasAutoSelect&&(t.hasAutoSelectAudio=!0),t}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(g));if(E){if(-1!==this.firstSelection)return this.firstSelection;const i=this.codecTiers||(this.codecTiers=function(t,e,s,i){return t.slice(s,i+1).reduce(((t,s)=>{if(!s.codecSet)return t;const i=s.audioGroups;let r=t[s.codecSet];r||(t[s.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!i,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,s.bitrate);const n=Math.min(s.height,s.width);return r.minHeight=Math.min(r.minHeight,n),r.minFramerate=Math.min(r.minFramerate,s.frameRate),r.maxScore=Math.max(r.maxScore,s.score),r.fragmentError+=s.fragmentError,r.videoRanges[s.videoRange]=(r.videoRanges[s.videoRange]||0)+1,i&&i.forEach((t=>{if(!t)return;const s=e.groups[t];s&&(r.hasDefaultAudio=r.hasDefaultAudio||e.hasDefaultAudio?s.hasDefault:s.hasAutoSelect||!e.hasDefaultAudio&&!e.hasAutoSelectAudio,Object.keys(s.channels).forEach((t=>{r.channels[t]=(r.channels[t]||0)+s.channels[t]})))})),t}),{})}(f,D,e,s)),r=function(t,e,s,i,r){const n=Object.keys(t),a=null==i?void 0:i.channels,o=null==i?void 0:i.audioCodec,l=a&&2===parseInt(a);let h=!0,d=!1,c=1/0,u=1/0,f=1/0,g=0,m=[];const{preferHDR:v,allowedVideoRanges:y}=xs(e,r);for(let e=n.length;e--;){const s=t[n[e]];h=s.channels[2]>0,c=Math.min(c,s.minHeight),u=Math.min(u,s.minFramerate),f=Math.min(f,s.minBitrate);const i=y.filter((t=>s.videoRanges[t]>0));i.length>0&&(d=!0,m=i)}c=p(c)?c:0,u=p(u)?u:0;const T=Math.max(1080,c),E=Math.max(30,u);return f=p(f)?f:s,s=Math.max(f,s),d||(e=void 0,m=[]),{codecSet:n.reduce(((e,i)=>{const r=t[i];if(i===e)return e;if(r.minBitrate>s)return Ps(i,`min bitrate of ${r.minBitrate} > current estimate of ${s}`),e;if(!r.hasDefaultAudio)return Ps(i,"no renditions with default or auto-select sound found"),e;if(o&&i.indexOf(o.substring(0,4))%5!=0)return Ps(i,`audio codec preference "${o}" not found`),e;if(a&&!l){if(!r.channels[a])return Ps(i,`no renditions with ${a} channel sound found (channels options: ${Object.keys(r.channels)})`),e}else if((!o||l)&&h&&0===r.channels[2])return Ps(i,"no renditions with stereo sound found"),e;return r.minHeight>T?(Ps(i,`min resolution of ${r.minHeight} > maximum of ${T}`),e):r.minFramerate>E?(Ps(i,`min framerate of ${r.minFramerate} > maximum of ${E}`),e):m.some((t=>r.videoRanges[t]>0))?r.maxScore=re(e)||r.fragmentError>t[e].fragmentError)?e:(g=r.maxScore,i):(Ps(i,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),e)}),void 0),videoRanges:m,preferHDR:v,minFramerate:u,minBitrate:f}}(i,L,t,R,b),{codecSet:n,videoRanges:a,minFramerate:o,minBitrate:l,preferHDR:h}=r;S=n,L=h?a[a.length-1]:a[0],A=o,t=Math.max(t,l),k.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else S=null==y?void 0:y.codecSet,L=null==y?void 0:y.videoRange;const I=u?u.duration:c?c.duration:0,w=this.bwEstimator.getEstimateTTFB()/1e3,C=[];for(let o=s;o>=e;o--){var _;const e=f[o],c=o>d;if(!e)continue;if(v.useMediaCapabilities&&!e.supportedResult&&!e.supportedPromise){const s=navigator.mediaCapabilities;"function"==typeof(null==s?void 0:s.decodingInfo)&&Cs(e,D,L,A,t,R)?(e.supportedPromise=_s(e,D,s),e.supportedPromise.then((t=>{if(!this.hls)return;e.supportedResult=t;const s=this.hls.levels,i=s.indexOf(e);t.error?k.warn(`[abr] MediaCapabilities decodingInfo error: "${t.error}" for level ${i} ${JSON.stringify(t)}`):t.supported||(k.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${i} ${JSON.stringify(t)}`),i>-1&&s.length>1&&(k.log(`[abr] Removing unsupported level ${i}`),this.hls.removeLevel(i)))}))):e.supportedResult=Is}if(S&&e.codecSet!==S||L&&e.videoRange!==L||c&&A>e.frameRate||!c&&A>0&&A=2*I&&0===r?f[o].averageBitrate:f[o].maxBitrate,F=this.getTimeToLoadFrag(w,x,P*b,void 0===g);if(x>=P&&(o===h||0===e.loadError&&0===e.fragmentError)&&(F<=w||!p(F)||T&&!this.bitrateTestDelay||F${o} adjustedbw(${Math.round(x)})-bitrate=${Math.round(x-P)} ttfb:${w.toFixed(1)} avgDuration:${b.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${F.toFixed(1)} firstSelection:${E} codecSet:${S} videoRange:${L} hls.loadLevel:${m}`)),E&&(this.firstSelection=o),o}}return-1}set nextAutoLevel(t){const{maxAutoLevel:e,minAutoLevel:s}=this.hls,i=Math.min(Math.max(t,s),e);this._nextAutoLevel!==i&&(this.nextAutoLevelKey="",this._nextAutoLevel=i)}},bufferController:class{constructor(t){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=t=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=t=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:t,mediaSource:e}=this;this.log("Media source opened"),t&&(t.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(T.MEDIA_ATTACHED,{media:t,mediaSource:e})),e&&e.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:t,_objectUrl:e}=this;t!==e&&k.error(`Media element src was set while attaching MediaSource (${e} > ${t})`)},this.hls=t;const e="[buffer-controller]";var s;this.appendSource=(s=Jt(t.config.preferManagedMediaSource),"undefined"!=typeof self&&s===self.ManagedMediaSource),this.log=k.log.bind(k,e),this.warn=k.warn.bind(k,e),this.error=k.error.bind(k,e),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.BUFFER_RESET,this.onBufferReset,this),t.on(T.BUFFER_APPENDING,this.onBufferAppending,this),t.on(T.BUFFER_CODECS,this.onBufferCodecs,this),t.on(T.BUFFER_EOS,this.onBufferEos,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.on(T.FRAG_PARSED,this.onFragParsed,this),t.on(T.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.BUFFER_RESET,this.onBufferReset,this),t.off(T.BUFFER_APPENDING,this.onBufferAppending,this),t.off(T.BUFFER_CODECS,this.onBufferCodecs,this),t.off(T.BUFFER_EOS,this.onBufferEos,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),t.off(T.FRAG_PARSED,this.onFragParsed,this),t.off(T.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new Fr(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(t,e){let s=2;(e.audio&&!e.video||!e.altAudio)&&(s=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=s,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(t,e){const s=this.media=e.media,i=Jt(this.appendSource);if(s&&i){var r;const t=this.mediaSource=new i;this.log(`created media source: ${null==(r=t.constructor)?void 0:r.name}`),t.addEventListener("sourceopen",this._onMediaSourceOpen),t.addEventListener("sourceended",this._onMediaSourceEnded),t.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.addEventListener("startstreaming",this._onStartStreaming),t.addEventListener("endstreaming",this._onEndStreaming));const e=this._objectUrl=self.URL.createObjectURL(t);if(this.appendSource)try{s.removeAttribute("src");const i=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||i&&t instanceof i,Or(s),function(t,e){const s=self.document.createElement("source");s.type="video/mp4",s.src=e,t.appendChild(s)}(s,e),s.load()}catch(t){s.src=e}else s.src=e;s.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:t,mediaSource:e,_objectUrl:s}=this;if(e){if(this.log("media source detaching"),"open"===e.readyState)try{e.endOfStream()}catch(t){this.warn(`onMediaDetaching: ${t.message} while calling endOfStream`)}this.onBufferReset(),e.removeEventListener("sourceopen",this._onMediaSourceOpen),e.removeEventListener("sourceended",this._onMediaSourceEnded),e.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.removeEventListener("startstreaming",this._onStartStreaming),e.removeEventListener("endstreaming",this._onEndStreaming)),t&&(t.removeEventListener("emptied",this._onMediaEmptied),s&&self.URL.revokeObjectURL(s),this.mediaSrc===s?(t.removeAttribute("src"),this.appendSource&&Or(t),t.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(T.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((t=>{this.resetBuffer(t)})),this._initSourceBuffer()}resetBuffer(t){const e=this.sourceBuffer[t];try{var s;if(e)this.removeBufferListeners(t),this.sourceBuffer[t]=void 0,null!=(s=this.mediaSource)&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(e)}catch(e){this.warn(`onBufferReset ${t}`,e)}}onBufferCodecs(t,e){const s=this.getSourceBufferTypes().length,i=Object.keys(e);if(i.forEach((t=>{if(s){const s=this.tracks[t];if(s&&"function"==typeof s.buffer.changeType){var i;const{id:r,codec:n,levelCodec:a,container:o,metadata:l}=e[t],h=le(s.codec,s.levelCodec),d=null==h?void 0:h.replace(Mr,"$1");let c=le(n,a);const u=null==(i=c)?void 0:i.replace(Mr,"$1");if(c&&d!==u){"audio"===t.slice(0,5)&&(c=oe(c,this.appendSource));const e=`${o};codecs=${c}`;this.appendChangeType(t,e),this.log(`switching codec ${h} to ${c}`),this.tracks[t]={buffer:s.buffer,codec:n,container:o,levelCodec:a,metadata:l,id:r}}}}else this.pendingTracks[t]=e[t]})),s)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${i.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(t,e){const{operationQueue:s}=this,i={execute:()=>{const i=this.sourceBuffer[t];i&&(this.log(`changing ${t} sourceBuffer type to ${e}`),i.changeType(e)),s.shiftAndExecuteNext(t)},onStart:()=>{},onComplete:()=>{},onError:e=>{this.warn(`Failed to change ${t} SourceBuffer type`,e)}};s.append(i,t,!!this.pendingTracks[t])}onBufferAppending(t,e){const{hls:s,operationQueue:i,tracks:r}=this,{data:n,type:a,frag:o,part:l,chunkMeta:h}=e,d=h.buffering[a],c=self.performance.now();d.start=c;const u=o.stats.buffering,f=l?l.stats.buffering:null;0===u.start&&(u.start=c),f&&0===f.start&&(f.start=c);const g=r.audio;let m=!1;"audio"===a&&"audio/mpeg"===(null==g?void 0:g.container)&&(m=!this.lastMpegAudioChunk||1===h.id||this.lastMpegAudioChunk.sn!==h.sn,this.lastMpegAudioChunk=h);const p=o.start,v={execute:()=>{if(d.executeStart=self.performance.now(),m){const t=this.sourceBuffer[a];if(t){const e=p-t.timestampOffset;Math.abs(e)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${p} (delta: ${e}) sn: ${o.sn})`),t.timestampOffset=p)}}this.appendExecutor(n,a)},onStart:()=>{},onComplete:()=>{const t=self.performance.now();d.executeEnd=d.end=t,0===u.first&&(u.first=t),f&&0===f.first&&(f.first=t);const{sourceBuffer:e}=this,s={};for(const t in e)s[t]=js.getBuffered(e[t]);this.appendErrors[a]=0,"audio"===a||"video"===a?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(T.BUFFER_APPENDED,{type:a,frag:o,part:l,chunkMeta:h,parent:o.type,timeRanges:s})},onError:t=>{const e={type:E.MEDIA_ERROR,parent:o.type,details:S.BUFFER_APPEND_ERROR,sourceBufferName:a,frag:o,part:l,chunkMeta:h,error:t,err:t,fatal:!1};if(t.code===DOMException.QUOTA_EXCEEDED_ERR)e.details=S.BUFFER_FULL_ERROR;else{const t=++this.appendErrors[a];e.details=S.BUFFER_APPEND_ERROR,this.warn(`Failed ${t}/${s.config.appendErrorMaxRetry} times to append segment in "${a}" sourceBuffer`),t>=s.config.appendErrorMaxRetry&&(e.fatal=!0)}s.trigger(T.ERROR,e)}};i.append(v,a,!!this.pendingTracks[a])}onBufferFlushing(t,e){const{operationQueue:s}=this,i=t=>({execute:this.removeExecutor.bind(this,t,e.startOffset,e.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(T.BUFFER_FLUSHED,{type:t})},onError:e=>{this.warn(`Failed to remove from ${t} SourceBuffer`,e)}});e.type?s.append(i(e.type),e.type):this.getSourceBufferTypes().forEach((t=>{s.append(i(t),t)}))}onFragParsed(t,e){const{frag:s,part:i}=e,r=[],n=i?i.elementaryStreams:s.elementaryStreams;n[M]?r.push("audiovideo"):(n[P]&&r.push("audio"),n[F]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${s.type} level: ${s.level} sn: ${s.sn}`),this.blockBuffers((()=>{const t=self.performance.now();s.stats.buffering.end=t,i&&(i.stats.buffering.end=t);const e=i?i.stats:s.stats;this.hls.trigger(T.FRAG_BUFFERED,{frag:s,part:i,stats:e,id:s.type})}),r)}onFragChanged(t,e){this.trimBuffers()}onBufferEos(t,e){this.getSourceBufferTypes().reduce(((t,s)=>{const i=this.sourceBuffer[s];return!i||e.type&&e.type!==s||(i.ending=!0,i.ended||(i.ended=!0,this.log(`${s} sourceBuffer now EOS`))),t&&!(i&&!i.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((t=>{const e=this.sourceBuffer[t];e&&(e.ending=!1)}));const{mediaSource:t}=this;t&&"open"===t.readyState?(this.log("Calling mediaSource.endOfStream()"),t.endOfStream()):t&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${t.readyState}`)})))}onLevelUpdated(t,{details:e}){e.fragments.length&&(this.details=e,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:t,details:e,media:s}=this;if(!s||null===e)return;if(!this.getSourceBufferTypes().length)return;const i=t.config,r=s.currentTime,n=e.levelTargetDuration,a=e.live&&null!==i.liveBackBufferLength?i.liveBackBufferLength:i.backBufferLength;if(p(a)&&a>0){const t=Math.max(a,n),e=Math.floor(r/n)*n-t;this.flushBackBuffer(r,n,e)}if(p(i.frontBufferFlushThreshold)&&i.frontBufferFlushThreshold>0){const t=Math.max(i.maxBufferLength,i.frontBufferFlushThreshold),e=Math.max(t,n),s=Math.floor(r/n)*n+e;this.flushFrontBuffer(r,n,s)}}flushBackBuffer(t,e,s){const{details:i,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((n=>{const a=r[n];if(a){const r=js.getBuffered(a);if(r.length>0&&s>r.start(0)){if(this.hls.trigger(T.BACK_BUFFER_REACHED,{bufferEnd:s}),null!=i&&i.live)this.hls.trigger(T.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(a.ended&&r.end(r.length-1)-t<2*e)return void this.log(`Cannot flush ${n} back buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:n})}}}))}flushFrontBuffer(t,e,s){const{sourceBuffer:i}=this;this.getSourceBufferTypes().forEach((r=>{const n=i[r];if(n){const i=js.getBuffered(n),a=i.length;if(a<2)return;const o=i.start(a-1),l=i.end(a-1);if(s>o||t>=o&&t<=l)return;if(n.ended&&t-l<2*e)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:t,hls:e,media:s,mediaSource:i}=this,r=t.fragments[0].start+t.totalduration,n=s.duration,a=p(i.duration)?i.duration:0;t.live&&e.config.liveDurationInfinity?(i.duration=1/0,this.updateSeekableRange(t)):(r>a&&r>n||!p(n))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),i.duration=r)}updateSeekableRange(t){const e=this.mediaSource,s=t.fragments;if(s.length&&t.live&&null!=e&&e.setLiveSeekableRange){const i=Math.max(0,s[0].start),r=Math.max(i,i+t.totalduration);this.log(`Media Source duration is set to ${e.duration}. Setting seekable range to ${i}-${r}.`),e.setLiveSeekableRange(i,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:t,operationQueue:e,pendingTracks:s}=this,i=Object.keys(s).length;if(i&&(!t||2===i||"audiovideo"in s)){this.createSourceBuffers(s),this.pendingTracks={};const t=this.getSourceBufferTypes();if(t.length)this.hls.trigger(T.BUFFER_CREATED,{tracks:this.tracks}),t.forEach((t=>{e.executeNext(t)}));else{const t=new Error("could not create source buffer for media codec(s)");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:t,reason:t.message})}}}createSourceBuffers(t){const{sourceBuffer:e,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(const r in t)if(!e[r]){var i;const n=t[r];if(!n)throw Error(`source buffer exists for track ${r}, however track does not`);let a=-1===(null==(i=n.levelCodec)?void 0:i.indexOf(","))?n.levelCodec:n.codec;a&&"audio"===r.slice(0,5)&&(a=oe(a,this.appendSource));const o=`${n.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const t=e[r]=s.addSourceBuffer(o),i=r;this.addBufferListener(i,"updatestart",this._onSBUpdateStart),this.addBufferListener(i,"updateend",this._onSBUpdateEnd),this.addBufferListener(i,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(i,"bufferedchange",((t,e)=>{const s=e.removedRanges;null!=s&&s.length&&this.hls.trigger(T.BUFFER_FLUSHED,{type:r})})),this.tracks[r]={buffer:t,codec:a,container:n.container,levelCodec:n.levelCodec,metadata:n.metadata,id:n.id}}catch(t){this.error(`error while trying to add sourceBuffer: ${t.message}`),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:t,sourceBufferName:r,mimeType:o})}}}get mediaSrc(){var t;const e=(null==(t=this.media)?void 0:t.firstChild)||this.media;return null==e?void 0:e.src}_onSBUpdateStart(t){const{operationQueue:e}=this;e.current(t).onStart()}_onSBUpdateEnd(t){var e;if("closed"===(null==(e=this.mediaSource)?void 0:e.readyState))return void this.resetBuffer(t);const{operationQueue:s}=this;s.current(t).onComplete(),s.shiftAndExecuteNext(t)}_onSBUpdateError(t,e){var s;const i=new Error(`${t} SourceBuffer error. MediaSource readyState: ${null==(s=this.mediaSource)?void 0:s.readyState}`);this.error(`${i}`,e),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_APPENDING_ERROR,sourceBufferName:t,error:i,fatal:!1});const r=this.operationQueue.current(t);r&&r.onError(i)}removeExecutor(t,e,s){const{media:i,mediaSource:r,operationQueue:n,sourceBuffer:a}=this,o=a[t];if(!i||!r||!o)return this.warn(`Attempting to remove from the ${t} SourceBuffer, but it does not exist`),void n.shiftAndExecuteNext(t);const l=p(i.duration)?i.duration:1/0,h=p(r.duration)?r.duration:1/0,d=Math.max(0,e),c=Math.min(s,l,h);c>d&&(!o.ending||o.ended)?(o.ended=!1,this.log(`Removing [${d},${c}] from the ${t} SourceBuffer`),o.remove(d,c)):n.shiftAndExecuteNext(t)}appendExecutor(t,e){const s=this.sourceBuffer[e];if(s)s.ended=!1,s.appendBuffer(t);else if(!this.pendingTracks[e])throw new Error(`Attempting to append to the ${e} SourceBuffer, but it does not exist`)}blockBuffers(t,e=this.getSourceBufferTypes()){if(!e.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(t);const{operationQueue:s}=this,i=e.map((t=>s.appendBlocker(t)));Promise.all(i).then((()=>{t(),e.forEach((t=>{const e=this.sourceBuffer[t];null!=e&&e.updating||s.shiftAndExecuteNext(t)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(t,e,s){const i=this.sourceBuffer[t];if(!i)return;const r=s.bind(this,t);this.listeners[t].push({event:e,listener:r}),i.addEventListener(e,r)}removeBufferListeners(t){const e=this.sourceBuffer[t];e&&this.listeners[t].forEach((t=>{e.removeEventListener(t.event,t.listener)}))}},capLevelController:xn,errorController:class{constructor(t){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=t,this.log=k.log.bind(k,"[info]:"),this.warn=k.warn.bind(k,"[warning]:"),this.error=k.error.bind(k,"[error]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.ERROR,this.onError,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.ERROR,this.onError,this),t.off(T.ERROR,this.onErrorOut,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(t){}stopLoad(){this.playlistError=0}getVariantLevelIndex(t){return(null==t?void 0:t.type)===ke?t.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(t,e){var s,i;if(e.fatal)return;const r=this.hls,n=e.context;switch(e.details){case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:return void(e.errorAction=this.getFragRetryOrSwitchAction(e));case S.FRAG_PARSING_ERROR:if(null!=(s=e.frag)&&s.gap)return void(e.errorAction={action:ys,flags:Ls});case S.FRAG_GAP:case S.FRAG_DECRYPT_ERROR:return e.errorAction=this.getFragRetryOrSwitchAction(e),void(e.errorAction.action=Ts);case S.LEVEL_EMPTY_ERROR:case S.LEVEL_PARSING_ERROR:{var a,o;const t=e.parent===ke?e.level:r.loadLevel;e.details===S.LEVEL_EMPTY_ERROR&&null!=(a=e.context)&&null!=(o=a.levelDetails)&&o.live?e.errorAction=this.getPlaylistRetryOrSwitchAction(e,t):(e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t))}return;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==n?void 0:n.level)&&(e.errorAction=this.getPlaylistRetryOrSwitchAction(e,n.level)));case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.SUBTITLE_LOAD_ERROR:case S.SUBTITLE_TRACK_LOAD_TIMEOUT:if(n){const t=r.levels[r.loadLevel];if(t&&(n.type===Re&&t.hasAudioGroup(n.groupId)||n.type===be&&t.hasSubtitleGroup(n.groupId)))return e.errorAction=this.getPlaylistRetryOrSwitchAction(e,r.loadLevel),e.errorAction.action=Ts,void(e.errorAction.flags=As)}return;case S.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const t=r.levels[r.loadLevel],s=null==t?void 0:t.attrs["HDCP-LEVEL"];s?e.errorAction={action:Ts,flags:Rs,hdcpLevel:s}:this.keySystemError(e)}return;case S.BUFFER_ADD_CODEC_ERROR:case S.REMUX_ALLOC_ERROR:case S.BUFFER_APPEND_ERROR:return void(e.errorAction=this.getLevelSwitchAction(e,null!=(i=e.level)?i:r.loadLevel));case S.INTERNAL_EXCEPTION:case S.BUFFER_APPENDING_ERROR:case S.BUFFER_FULL_ERROR:case S.LEVEL_SWITCH_ERROR:case S.BUFFER_STALLED_ERROR:case S.BUFFER_SEEK_OVER_HOLE:case S.BUFFER_NUDGE_ON_STALL:return void(e.errorAction={action:ys,flags:Ls})}e.type===E.KEY_SYSTEM_ERROR&&this.keySystemError(e)}keySystemError(t){const e=this.getVariantLevelIndex(t.frag);t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e)}getPlaylistRetryOrSwitchAction(t,e){const s=ds(this.hls.config.playlistLoadPolicy,t),i=this.playlistError++;if(fs(s,i,hs(t),t.response))return{action:Ss,flags:Ls,retryConfig:s,retryCount:i};const r=this.getLevelSwitchAction(t,e);return s&&(r.retryConfig=s,r.retryCount=i),r}getFragRetryOrSwitchAction(t){const e=this.hls,s=this.getVariantLevelIndex(t.frag),i=e.levels[s],{fragLoadPolicy:r,keyLoadPolicy:n}=e.config,a=ds(t.details.startsWith("key")?n:r,t),o=e.levels.reduce(((t,e)=>t+e.fragmentError),0);if(i){t.details!==S.FRAG_GAP&&i.fragmentError++;if(fs(a,o,hs(t),t.response))return{action:Ss,flags:Ls,retryConfig:a,retryCount:o}}const l=this.getLevelSwitchAction(t,s);return a&&(l.retryConfig=a,l.retryCount=o),l}getLevelSwitchAction(t,e){const s=this.hls;null==e&&(e=s.loadLevel);const i=this.hls.levels[e];if(i){var r,n;const e=t.details;i.loadError++,e===S.BUFFER_APPEND_ERROR&&i.fragmentError++;let l=-1;const{levels:h,loadLevel:d,minAutoLevel:c,maxAutoLevel:u}=s;s.autoLevelEnabled||(s.loadLevel=-1);const f=null==(r=t.frag)?void 0:r.type,g=(f===De&&e===S.FRAG_PARSING_ERROR||"audio"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR))&&h.some((({audioCodec:t})=>i.audioCodec!==t)),m="video"===t.sourceBufferName&&(e===S.BUFFER_ADD_CODEC_ERROR||e===S.BUFFER_APPEND_ERROR)&&h.some((({codecSet:t,audioCodec:e})=>i.codecSet!==t&&i.audioCodec===e)),{type:p,groupId:v}=null!=(n=t.context)?n:{};for(let s=h.length;s--;){const r=(s+d)%h.length;if(r!==d&&r>=c&&r<=u&&0===h[r].loadError){var a,o;const s=h[r];if(e===S.FRAG_GAP&&f===ke&&t.frag){const e=h[r].details;if(e){const s=ms(t.frag,e.fragments,t.frag.start);if(null!=s&&s.gap)continue}}else{if(p===Re&&s.hasAudioGroup(v)||p===be&&s.hasSubtitleGroup(v))continue;if(f===De&&null!=(a=i.audioGroups)&&a.some((t=>s.hasAudioGroup(t)))||f===Ie&&null!=(o=i.subtitleGroups)&&o.some((t=>s.hasSubtitleGroup(t)))||g&&i.audioCodec===s.audioCodec||!g&&i.audioCodec!==s.audioCodec||m&&i.codecSet===s.codecSet)continue}l=r;break}}if(l>-1&&s.loadLevel!==l)return t.levelRetry=!0,this.playlistError=0,{action:Ts,flags:Ls,nextAutoLevel:l}}return{action:Ts,flags:As}}onErrorOut(t,e){var s;switch(null==(s=e.errorAction)?void 0:s.action){case ys:break;case Ts:this.sendAlternateToPenaltyBox(e),e.errorAction.resolved||e.details===S.FRAG_GAP?/MediaSource readyState: ended/.test(e.error.message)&&(this.warn(`MediaSource ended after "${e.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):e.fatal=!0}e.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(t){const e=this.hls,s=t.errorAction;if(!s)return;const{flags:i,hdcpLevel:r,nextAutoLevel:n}=s;switch(i){case Ls:this.switchLevel(t,n);break;case Rs:r&&(e.maxHdcpLevel=We[We.indexOf(r)-1],s.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${e.maxHdcpLevel}" or lower`)}s.resolved||this.switchLevel(t,n)}switchLevel(t,e){void 0!==e&&t.errorAction&&(this.warn(`switching to level ${e} after ${t.details}`),this.hls.nextAutoLevel=e,t.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(t){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=t,this.registerListeners()}setStreamController(t){this.streamController=t}registerListeners(){this.hls.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(t,e){const s=this.hls.config;if(s.capLevelOnFPSDrop){const t=e.media instanceof self.HTMLVideoElement?e.media:null;this.media=t,t&&"function"==typeof t.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}checkFPS(t,e,s){const i=performance.now();if(e){if(this.lastTime){const t=i-this.lastTime,r=s-this.lastDroppedFrames,n=e-this.lastDecodedFrames,a=1e3*r/t,o=this.hls;if(o.trigger(T.FPS_DROP,{currentDropped:r,currentDecoded:n,totalDroppedFrames:s}),a>0&&r>o.config.fpsDroppedMonitoringThreshold*n){let t=o.currentLevel;k.warn("drop FPS ratio greater than max allowed value for currentLevel: "+t),t>0&&(-1===o.autoLevelCapping||o.autoLevelCapping>=t)&&(t-=1,o.trigger(T.FPS_DROP_LEVEL_CAPPING,{level:t,droppedLevel:o.currentLevel}),o.autoLevelCapping=t,this.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=s,this.lastDecodedFrames=e}}checkFPSInterval(){const t=this.media;if(t)if(this.isVideoPlaybackQualityAvailable){const e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Z,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:Ta,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends Li{constructor(t,e,s){super(t,e,s,"[subtitle-stream-controller]",Ie),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.ERROR,this.onError,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.ERROR,this.onError,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(t){this.stopLoad(),this.state=ci,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(t,e){this.mainDetails=e.details}onSubtitleFragProcessed(t,e){const{frag:s,success:i}=e;if(this.fragPrevious=s,this.state=ci,!i)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let n;const a=s.start;for(let t=0;t=r[t].start&&a<=r[t].end){n=r[t];break}const o=s.start+s.duration;n?n.end=o:(n={start:a,end:o},r.push(n)),this.fragmentTracker.fragBuffered(s),this.fragBufferedComplete(s,null)}onBufferFlushing(t,e){const{startOffset:s,endOffset:i}=e;if(0===s&&i!==Number.POSITIVE_INFINITY){const t=i-1;if(t<=0)return;e.endOffsetSubtitles=Math.max(0,t),this.tracksBuffered.forEach((e=>{for(let s=0;snew Ze(t))):(this.tracksBuffered=[],this.levels=e.map((t=>{const e=new Ze(t);return this.tracksBuffered[e.id]=[],e})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,Ie),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(t,e){var s;if(this.currentTrackId=e.id,null==(s=this.levels)||!s.length||-1===this.currentTrackId)return void this.clearInterval();const i=this.levels[this.currentTrackId];null!=i&&i.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,i&&this.setInterval(500)}onSubtitleTrackLoaded(t,e){var s;const{currentTrackId:i,levels:r}=this,{details:n,id:a}=e;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${a}`);const o=r[a];if(a>=r.length||!o)return;this.log(`Subtitle track ${a} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""},duration:${n.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(n.live||null!=(s=o.details)&&s.live){const t=this.mainDetails;if(n.deltaUpdateFailed||!t)return;const e=t.fragments[0];var h;if(o.details)l=this.alignPlaylists(n,o.details,null==(h=this.levelLastLoaded)?void 0:h.details),0===l&&e&&(l=e.start,ns(n,l));else n.hasProgramDateTime&&t.hasProgramDateTime?(Zs(n,t),l=n.fragments[0].start):e&&(l=e.start,ns(n,l))}if(o.details=n,this.levelLastLoaded=o,a===i&&(this.startFragRequested||!this.mainDetails&&n.live||this.setStartPosition(this.mainDetails||n,l),this.tick(),n.live&&!this.fragCurrent&&this.media&&this.state===ci)){ms(null,n.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),o.details=void 0)}}_handleFragmentLoadComplete(t){const{frag:e,payload:s}=t,i=e.decryptdata,r=this.hls;if(!this.fragContextChanged(e)&&s&&s.byteLength>0&&null!=i&&i.key&&i.iv&&"AES-128"===i.method){const t=performance.now();this.decrypter.decrypt(new Uint8Array(s),i.key.buffer,i.iv.buffer).catch((t=>{throw r.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const i=performance.now();r.trigger(T.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:t,tdecrypt:i}})})).catch((t=>{this.warn(`${t.name}: ${t.message}`),this.state=ci}))}}doTick(){if(this.media){if(this.state===ci){const{currentTrackId:t,levels:e}=this,s=null==e?void 0:e[t];if(!s||!e.length||!s.details)return;const{config:i}=this,r=this.getLoadPosition(),n=js.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,i.maxBufferHole),{end:a,len:o}=n,l=this.getFwdBufferInfo(this.media,ke),h=s.details;if(o>this.getMaxBufferLength(null==l?void 0:l.len)+h.levelTargetDuration)return;const d=h.fragments,c=d.length,u=h.edge;let f=null;const g=this.fragPrevious;if(au-t?0:t;f=ms(g,d,Math.max(d[0].start,a),e),!f&&g&&g.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let t=null;const e=Oe(this.media.textTracks);for(let s=0;s-1&&this.toggleTrackModes()}registerListeners(){const{hls:t}=this;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),t.off(T.ERROR,this.onError,this)}onMediaAttached(t,e){this.media=e.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(t){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,t)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);Oe(this.media.textTracks).forEach((t=>{Fe(t)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.subtitleTracks}onSubtitleTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Subtitle track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Subtitle track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.subtitleGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.subtitlePreference;if(!r&&e){this.selectDefaultTrack=!1;const s=Fs(e,t);if(s>-1)r=t[s];else{const t=Fs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const n={subtitleTracks:t};this.log(`Updating subtitle tracks, ${t.length} track(s) found in "${null==s?void 0:s.join(",")}" group-id`),this.hls.trigger(T.SUBTITLE_TRACKS_UPDATED,n),-1!==i&&-1===this.trackId&&this.setSubtitleTrack(i)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(t){const e=this.tracksInGroup,s=this.selectDefaultTrack;for(let i=0;i-1){const t=this.tracksInGroup[i];return this.setSubtitleTrack(i),t}if(s)return null;{const s=Fs(t,e);if(s>-1)return e[s]}}}return null}loadPlaylist(t){super.loadPlaylist();const e=this.currentTrack;if(this.shouldLoadPlaylist(e)&&e){const s=e.id,i=e.groupId;let r=e.url;if(t)try{r=t.addDirectives(r)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}this.log(`Loading subtitle playlist for id ${s}`),this.hls.trigger(T.SUBTITLE_TRACK_LOADING,{url:r,id:s,groupId:i,deliveryDirectives:t||null})}}toggleTrackModes(){const{media:t}=this;if(!t)return;const e=Oe(t.textTracks),s=this.currentTrack;let i;if(s&&(i=e.filter((t=>xr(s,t)))[0],i||this.warn(`Unable to find subtitle TextTrack with name "${s.name}" and language "${s.lang}"`)),[].slice.call(e).forEach((t=>{"disabled"!==t.mode&&t!==i&&(t.mode="disabled")})),i){const t=this.subtitleDisplay?"showing":"hidden";i.mode!==t&&(i.mode=t)}}setSubtitleTrack(t){const e=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=t);if(t<-1||t>=e.length||!p(t))return void this.warn(`Invalid subtitle track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t]||null;if(this.trackId=t,this.currentTrack=i,this.toggleTrackModes(),!i)return void this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:t});const r=!!i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;this.log(`Switching to subtitle-track ${t}`+(i?` "${i.name}" lang:${i.lang} group:${i.groupId}`:""));const{id:n,groupId:a="",name:o,type:l,url:h}=i;this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:n,groupId:a,name:o,type:l,url:h});const d=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(d)}},timelineController:class{constructor(t){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=t,this.config=t.config,this.Cues=t.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},t.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.on(T.FRAG_LOADING,this.onFragLoading,this),t.on(T.FRAG_LOADED,this.onFragLoaded,this),t.on(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.on(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.on(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:t}=this;t.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),t.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),t.off(T.FRAG_LOADING,this.onFragLoading,this),t.off(T.FRAG_LOADED,this.onFragLoaded,this),t.off(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),t.off(T.FRAG_DECRYPTED,this.onFragDecrypted,this),t.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),t.off(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),t.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const t=new sn(this,"textTrack1"),e=new sn(this,"textTrack2"),s=new sn(this,"textTrack3"),i=new sn(this,"textTrack4");this.cea608Parser1=new Zr(1,t,e),this.cea608Parser2=new Zr(3,s,i)}}addCues(t,e,s,i,r){let n=!1;for(let t=r.length;t--;){const i=r[t],d=(a=i[0],o=i[1],l=e,h=s,Math.min(o,h)-Math.max(a,l));if(d>=0&&(i[0]=Math.min(i[0],e),i[1]=Math.max(i[1],s),n=!0,d/(s-e)>.5))return}var a,o,l,h;if(n||r.push([e,s]),this.config.renderTextTracksNatively){const r=this.captionsTracks[t];this.Cues.newCue(r,e,s,i)}else{const r=this.Cues.newCue(null,e,s,i);this.hls.trigger(T.CUES_PARSED,{type:"captions",cues:r,track:t})}}onInitPtsFound(t,{frag:e,id:s,initPTS:i,timescale:r}){const{unparsedVttFrags:n}=this;"main"===s&&(this.initPTS[e.cc]={baseTime:i,timescale:r}),n.length&&(this.unparsedVttFrags=[],n.forEach((t=>{this.onFragLoaded(T.FRAG_LOADED,t)})))}getExistingTrack(t,e){const{media:s}=this;if(s)for(let i=0;i{Fe(t[e]),delete t[e]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:t}=this;if(!t)return;const e=t.textTracks;if(e)for(let t=0;tt.textCodec===Tn));if(this.config.enableWebVTT||i&&this.config.enableIMSC1){if(Cr(this.tracks,s))return void(this.tracks=s);if(this.textTracks=[],this.tracks=s,this.config.renderTextTracksNatively){const t=this.media,e=t?Oe(t.textTracks):null;if(this.tracks.forEach(((t,s)=>{let i;if(e){let s=null;for(let i=0;inull!==t)).map((t=>t.label));t.length&&k.warn(`Media element contains unused subtitle tracks: ${t.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const t=this.tracks.map((t=>({label:t.name,kind:t.type.toLowerCase(),default:t.default,subtitleTrack:t})));this.hls.trigger(T.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:t})}}}onManifestLoaded(t,e){this.config.enableCEA708Captions&&e.captions&&e.captions.forEach((t=>{const e=/(?:CC|SERVICE)([1-4])/.exec(t.instreamId);if(!e)return;const s=`textTrack${e[1]}`,i=this.captionsProperties[s];i&&(i.label=t.name,t.lang&&(i.languageCode=t.lang),i.media=t)}))}closedCaptionsForLevel(t){const e=this.hls.levels[t.level];return null==e?void 0:e.attrs["CLOSED-CAPTIONS"]}onFragLoading(t,e){if(this.enabled&&e.frag.type===ke){var s,i;const{cea608Parser1:t,cea608Parser2:r,lastSn:n}=this,{cc:a,sn:o}=e.frag,l=null!=(s=null==(i=e.part)?void 0:i.index)?s:-1;t&&r&&(o!==n+1||o===n&&l!==this.lastPartIndex+1||a!==this.lastCc)&&(t.reset(),r.reset()),this.lastCc=a,this.lastSn=o,this.lastPartIndex=l}}onFragLoaded(t,e){const{frag:s,payload:i}=e;if(s.type===Ie)if(i.byteLength){const t=s.decryptdata,r="stats"in e;if(null==t||!t.encrypted||r){const t=this.tracks[s.level],r=this.vttCCs;r[s.cc]||(r[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),t&&t.textCodec===Tn?this._parseIMSC1(s,i):this._parseVTTs(e)}}else this.hls.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:new Error("Empty subtitle payload")})}_parseIMSC1(t,e){const s=this.hls;An(e,this.initPTS[t.cc],(e=>{this._appendCues(e,t.level),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})}),(e=>{k.log(`Failed to parse IMSC1: ${e}`),s.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t,error:e})}))}_parseVTTs(t){var e;const{frag:s,payload:i}=t,{initPTS:r,unparsedVttFrags:n}=this,a=r.length-1;if(!r[s.cc]&&-1===a)return void n.push(t);const o=this.hls;yn(null!=(e=s.initSegment)&&e.data?Ut(s.initSegment.data,new Uint8Array(i)):i,this.initPTS[s.cc],this.vttCCs,s.cc,s.start,(t=>{this._appendCues(t,s.level),o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:s})}),(e=>{const r="Missing initPTS for VTT MPEGTS"===e.message;r?n.push(t):this._fallbackToIMSC1(s,i),k.log(`Failed to parse VTT cue: ${e}`),r&&a>s.cc||o.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,error:e})}))}_fallbackToIMSC1(t,e){const s=this.tracks[t.level];s.textCodec||An(e,this.initPTS[t.cc],(()=>{s.textCodec=Tn,this._parseIMSC1(t,e)}),(()=>{s.textCodec="wvtt"}))}_appendCues(t,e){const s=this.hls;if(this.config.renderTextTracksNatively){const s=this.textTracks[e];if(!s||"disabled"===s.mode)return;t.forEach((t=>Pe(s,t)))}else{const i=this.tracks[e];if(!i)return;const r=i.default?"default":"subtitles"+e;s.trigger(T.CUES_PARSED,{type:"subtitles",cues:t,track:r})}}onFragDecrypted(t,e){const{frag:s}=e;s.type===Ie&&this.onFragLoaded(T.FRAG_LOADED,e)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(t,e){this.initCea608Parsers();const{cea608Parser1:s,cea608Parser2:i}=this;if(!this.enabled||!s||!i)return;const{frag:r,samples:n}=e;if(r.type!==ke||"NONE"!==this.closedCaptionsForLevel(r))for(let t=0;tMe(t[i],e,s)))}if(this.config.renderTextTracksNatively&&0===e&&void 0!==i){const{textTracks:t}=this;Object.keys(t).forEach((s=>Me(t[s],e,i)))}}}extractCea608Data(t){const e=[[],[]],s=31&t[0];let i=2;for(let r=0;r0&&-1===t?(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e,this.state=ci):(this.loadedmetadata=!1,this.state=mi),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}doTick(){switch(this.state){case ci:this.doTickIdle();break;case mi:{var t;const{levels:e,trackId:s}=this,i=null==e||null==(t=e[s])?void 0:t.details;if(i){if(this.waitForCdnTuneIn(i))break;this.state=Ei}break}case gi:{var e;const t=performance.now(),s=this.retryDate;if(!s||t>=s||null!=(e=this.media)&&e.seeking){const{levels:t,trackId:e}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==t?void 0:t[e])||null),this.state=ci}break}case Ei:{const t=this.waitingData;if(t){const{frag:e,part:s,cache:i,complete:r}=t;if(void 0!==this.initPTS[e.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=fi;const t={frag:e,part:s,payload:i.flush(),networkDetails:null};this._handleFragmentLoadProgress(t),r&&super._handleFragmentLoadComplete(t)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${e.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const t=this.getLoadPosition(),s=js.bufferInfo(this.mediaBuffer,t,this.config.maxBufferHole);ps(s.end,this.config.maxFragLookUpTolerance,e)<0&&(this.log(`Waiting fragment cc (${e.cc}) @ ${e.start} cancelled because another fragment at ${s.end} is needed`),this.clearWaitingFragment())}}else this.state=ci}}this.onTickEnd()}clearWaitingFragment(){const t=this.waitingData;t&&(this.fragmentTracker.removeFragment(t.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=ci)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:t}=this;null!=t&&t.readyState&&(this.lastCurrentTime=t.currentTime)}doTickIdle(){const{hls:t,levels:e,media:s,trackId:i}=this,r=t.config;if(!s&&(this.startFragRequested||!r.startFragPrefetch)||null==e||!e[i])return;const n=e[i],a=n.details;if(!a||a.live&&this.levelLastLoaded!==n||this.waitForCdnTuneIn(a))return void(this.state=mi);const o=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&o&&(this.bufferFlushed=!1,this.afterBufferFlushed(o,P,De));const l=this.getFwdBufferInfo(o,De);if(null===l)return;const{bufferedTrack:h,switchingTrack:d}=this;if(!d&&this._streamEnded(l,a))return t.trigger(T.BUFFER_EOS,{type:"audio"}),void(this.state=yi);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,ke),u=l.len,f=this.getMaxBufferLength(null==c?void 0:c.len),g=a.fragments,m=g[0].start;let p=this.flushing?this.getLoadPosition():l.end;if(d&&s){const t=this.getLoadPosition();h&&!_r(d.attrs,h.attrs)&&(p=t),a.PTSKnown&&tm||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),s.currentTime=m+.05)}if(u>=f&&!d&&pc.end+a.targetduration;if(E||(null==c||!c.len)&&l.len){const t=this.getAppendedFrag(v.start,ke);if(null===t)return;if(y||(y=!!t.gap||!!E&&0===c.len),E&&!y||y&&l.nextStart&&l.nextStartnew Ze(t)))}onAudioTrackSwitching(t,e){const s=!!e.url;this.trackId=e.id;const{fragCurrent:i}=this;i&&(i.abortRequests(),this.removeUnbufferedFrags(i.start)),this.resetLoadingState(),s?this.setInterval(100):this.resetTransmuxer(),s?(this.switchingTrack=e,this.state=ci,this.flushAudioIfNeeded(e)):(this.switchingTrack=null,this.bufferedTrack=e,this.state=di),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(t,e){this.mainDetails=e.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(T.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(t,e){var s;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=e);const{levels:i}=this,{details:r,id:n}=e;if(!i)return void this.warn(`Audio tracks were reset while loading level ${n}`);this.log(`Audio track ${n} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const a=i[n];let o=0;if(r.live||null!=(s=a.details)&&s.live){this.checkLiveUpdate(r);const t=this.mainDetails;if(r.deltaUpdateFailed||!t)return;var l;if(!a.details&&r.hasProgramDateTime&&t.hasProgramDateTime)Zs(r,t),o=r.fragments[0].start;else o=this.alignPlaylists(r,a.details,null==(l=this.levelLastLoaded)?void 0:l.details)}a.details=r,this.levelLastLoaded=a,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,o),this.state!==mi||this.waitForCdnTuneIn(r)||(this.state=ci),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{config:n,trackId:a,levels:o}=this;if(!o)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const l=o[a];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const h=l.details;if(!h)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(s.start);const d=n.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new wr(this.hls,De,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[s.cc],f=null==(e=s.initSegment)?void 0:e.data;if(void 0!==u){const t=!1,e=i?i.index:-1,n=-1!==e,a=new qs(s.level,s.sn,s.stats.chunkCount,r.byteLength,e,n);c.push(r,f,d,"",s,i,h.totalduration,t,a,u)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${h.startSN} ,${h.endSN}],track ${a}`);const{cache:t}=this.waitingData=this.waitingData||{frag:s,part:i,cache:new Ai,complete:!1};t.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=Ei}}_handleFragmentLoadComplete(t){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(t)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(t,e){const s=e.tracks.audio;s&&(this.mediaBuffer=s.buffer||null),e.tracks.video&&(this.videoBuffer=e.tracks.video.buffer||null)}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s.type===De)if(this.fragContextChanged(s))this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==s.sn){this.fragPrevious=s;const t=this.switchingTrack;t&&(this.bufferedTrack=t,this.switchingTrack=null,this.hls.trigger(T.AUDIO_TRACK_SWITCHED,u({},t)))}this.fragBufferedComplete(s,i)}else if(!this.loadedmetadata&&s.type===ke){const t=this.videoBuffer||this.media;if(t){js.getBuffered(t).length&&(this.loadedmetadata=!0)}}}onError(t,e){var s;if(e.fatal)this.state=Ti;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(De,e);break;case S.AUDIO_TRACK_LOAD_ERROR:case S.AUDIO_TRACK_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==mi||(null==(s=e.context)?void 0:s.type)!==Re||(this.state=ci);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"audio"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}onBufferFlushing(t,{type:e}){e!==F&&(this.flushing=!0)}onBufferFlushed(t,{type:e}){if(e!==F){this.flushing=!1,this.bufferFlushed=!0,this.state===yi&&(this.state=ci);const t=this.mediaBuffer||this.media;t&&(this.afterBufferFlushed(t,e,De),this.tick())}}_handleTransmuxComplete(t){var e;const s="audio",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{details:d}=h,{audio:c,text:u,id3:f,initSegment:g}=r;if(!this.fragContextChanged(o)&&d){if(this.state=pi,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=g&&g.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,g.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:g.tracks})}if(c){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=c;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(c,o,l,n)}if(null!=f&&null!=(e=f.samples)&&e.length){const t=m({id:s,frag:o,details:d},f);i.trigger(T.FRAG_PARSING_METADATA,t)}if(u){const t=m({id:s,frag:o,details:d},u);i.trigger(T.FRAG_PARSING_USERDATA,t)}}else this.fragmentTracker.removeFragment(o)}_bufferInitSegment(t,e,s,i){if(this.state!==pi)return;e.video&&delete e.video;const r=e.audio;if(!r)return;r.id="audio";const n=t.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${n}/${r.codec}]`),n&&1===n.split(",").length&&(r.levelCodec=n),this.hls.trigger(T.BUFFER_CODECS,e);const a=r.initSegment;if(null!=a&&a.byteLength){const t={type:"audio",frag:s,part:null,chunkMeta:i,parent:s.type,data:a};this.hls.trigger(T.BUFFER_APPENDING,t)}this.tickImmediate()}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);var r;if(this.fragCurrent=t,this.switchingTrack||i===Bs||i===Gs)if("initSegment"===t.sn)this._loadInitSegment(t,e);else if(null!=(r=e.details)&&r.live&&!this.initPTS[t.cc]){this.log(`Waiting for video PTS in continuity counter ${t.cc} of live stream before loading audio fragment ${t.sn} of level ${this.trackId}`),this.state=Ei;const s=this.mainDetails;s&&s.fragments[0].start!==e.details.fragments[0].start&&Zs(e.details,s)}else this.startFragRequested=!0,super.loadFragment(t,e,s);else this.clearTrackerIfNeeded(t)}flushAudioIfNeeded(t){const{media:e,bufferedTrack:s}=this,i=null==s?void 0:s.attrs,r=t.attrs;e&&i&&(i.CHANNELS!==r.CHANNELS||s.name!==t.name||s.lang!==t.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(t){const{hls:e}=this;this.flushAudioIfNeeded(t),this.bufferedTrack=t,this.switchingTrack=null,e.trigger(T.AUDIO_TRACK_SWITCHED,u({},t))}},audioTrackController:class extends bs{constructor(t){super(t,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.LEVEL_LOADING,this.onLevelLoading,this),t.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.on(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.LEVEL_LOADING,this.onLevelLoading,this),t.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),t.off(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),t.off(T.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(t,e){this.tracks=e.audioTracks||[]}onAudioTrackLoaded(t,e){const{id:s,groupId:i,details:r}=e,n=this.tracksInGroup[s];if(!n||n.groupId!==i)return void this.warn(`Audio track with id:${s} and group:${i} not found in active group ${null==n?void 0:n.groupId}`);const a=n.details;n.details=e.details,this.log(`Audio track ${s} "${n.name}" lang:${n.lang} group:${i} loaded [${r.startSN}-${r.endSN}]`),s===this.trackId&&this.playlistLoaded(s,e,a)}onLevelLoading(t,e){this.switchLevel(e.level)}onLevelSwitching(t,e){this.switchLevel(e.level)}switchLevel(t){const e=this.hls.levels[t];if(!e)return;const s=e.audioGroups||null,i=this.groupIds;let r=this.currentTrack;if(!s||(null==i?void 0:i.length)!==(null==s?void 0:s.length)||null!=s&&s.some((t=>-1===(null==i?void 0:i.indexOf(t))))){this.groupIds=s,this.trackId=-1,this.currentTrack=null;const t=this.tracks.filter((t=>!s||-1!==s.indexOf(t.groupId)));if(t.length)this.selectDefaultTrack&&!t.some((t=>t.default))&&(this.selectDefaultTrack=!1),t.forEach(((t,e)=>{t.id=e}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=t;const e=this.hls.config.audioPreference;if(!r&&e){const s=Fs(e,t,Os);if(s>-1)r=t[s];else{const t=Fs(e,this.tracks);r=this.tracks[t]}}let i=this.findTrackId(r);-1===i&&r&&(i=this.findTrackId(null));const a={audioTracks:t};this.log(`Updating audio tracks, ${t.length} track(s) found in group(s): ${null==s?void 0:s.join(",")}`),this.hls.trigger(T.AUDIO_TRACKS_UPDATED,a);const o=this.trackId;if(-1!==i&&-1===o)this.setAudioTrack(i);else if(t.length&&-1===o){var n;const e=new Error(`No audio track selected for current audio group-ID(s): ${null==(n=this.groupIds)?void 0:n.join(",")} track count: ${t.length}`);this.warn(e.message),this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:e})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(t,e){!e.fatal&&e.context&&(e.context.type!==Re||e.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(e.context.groupId)||(this.requestScheduled=-1,this.checkRetry(e)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(t){this.selectDefaultTrack=!1,this.setAudioTrack(t)}setAudioOption(t){const e=this.hls;if(e.config.audioPreference=t,t){const s=this.allAudioTracks;if(this.selectDefaultTrack=!1,s.length){const i=this.currentTrack;if(i&&Ms(t,i,Os))return i;const r=Fs(t,this.tracksInGroup,Os);if(r>-1){const t=this.tracksInGroup[r];return this.setAudioTrack(r),t}if(i){let i=e.loadLevel;-1===i&&(i=e.firstAutoLevel);const r=function(t,e,s,i,r){const n=e[i],a=e.reduce(((t,e,s)=>{const i=e.uri;return(t[i]||(t[i]=[])).push(s),t}),{})[n.uri];a.length>1&&(i=Math.max.apply(Math,a));const o=n.videoRange,l=n.frameRate,h=n.codecSet.substring(0,4),d=Ns(e,i,(e=>{if(e.videoRange!==o||e.frameRate!==l||e.codecSet.substring(0,4)!==h)return!1;const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Fs(t,n,r)>-1}));return d>-1?d:Ns(e,i,(e=>{const i=e.audioGroups,n=s.filter((t=>!i||-1!==i.indexOf(t.groupId)));return Fs(t,n,r)>-1}))}(t,e.levels,s,i,Os);if(-1===r)return null;e.nextLoadLevel=r}if(t.channels||t.audioCodec){const e=Fs(t,s);if(e>-1)return s[e]}}}return null}setAudioTrack(t){const e=this.tracksInGroup;if(t<0||t>=e.length)return void this.warn(`Invalid audio track id: ${t}`);this.clearTimer(),this.selectDefaultTrack=!1;const s=this.currentTrack,i=e[t],r=i.details&&!i.details.live;if(t===this.trackId&&i===s&&r)return;if(this.log(`Switching to audio-track ${t} "${i.name}" lang:${i.lang} group:${i.groupId} channels:${i.channels}`),this.trackId=t,this.currentTrack=i,this.hls.trigger(T.AUDIO_TRACK_SWITCHING,u({},i)),r)return;const n=this.switchParams(i.url,null==s?void 0:s.details,i.details);this.loadPlaylist(n)}findTrackId(t){const e=this.tracksInGroup;for(let s=0;s{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=t=>{try{this.apply(t,{ot:On.MANIFEST,su:!this.initialized})}catch(t){k.warn("Could not generate manifest CMCD data.",t)}},this.applyFragmentData=t=>{try{const e=t.frag,s=this.hls.levels[e.level],i=this.getObjectType(e),r={d:1e3*e.duration,ot:i};i!==On.VIDEO&&i!==On.AUDIO&&i!=On.MUXED||(r.br=s.bitrate/1e3,r.tb=this.getTopBandwidth(i)/1e3,r.bl=this.getBufferLength(i)),this.apply(t,r)}catch(t){k.warn("Could not generate segment CMCD data.",t)}},this.hls=t;const e=this.config=t.config,{cmcd:s}=e;null!=s&&(e.pLoader=this.createPlaylistLoader(),e.fLoader=this.createFragmentLoader(),this.sid=s.sessionId||function(){try{return crypto.randomUUID()}catch(t){try{const t=URL.createObjectURL(new Blob),e=t.toString();return URL.revokeObjectURL(t),e.slice(e.lastIndexOf("/")+1)}catch(t){let e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const s=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?s:3&s|8).toString(16)}))}}}(),this.cid=s.contentId,this.useHeaders=!0===s.useHeaders,this.includeKeys=s.includeKeys,this.registerListeners())}registerListeners(){const t=this.hls;t.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.on(T.MEDIA_DETACHED,this.onMediaDetached,this),t.on(T.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const t=this.hls;t.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),t.off(T.MEDIA_DETACHED,this.onMediaDetached,this),t.off(T.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(t,e){this.media=e.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(t,e){var s,i;this.audioBuffer=null==(s=e.tracks.audio)?void 0:s.buffer,this.videoBuffer=null==(i=e.tracks.video)?void 0:i.buffer}createData(){var t;return{v:1,sf:Nn.HLS,sid:this.sid,cid:this.cid,pr:null==(t=this.media)?void 0:t.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(t,e={}){m(e,this.createData());const s=e.ot===On.INIT||e.ot===On.VIDEO||e.ot===On.MUXED;this.starved&&s&&(e.bs=!0,e.su=!0,this.starved=!1),null==e.su&&(e.su=this.buffering);const{includeKeys:i}=this;i&&(e=Object.keys(e).reduce(((t,s)=>(i.includes(s)&&(t[s]=e[s]),t)),{})),this.useHeaders?(t.headers||(t.headers={}),oa(t.headers,e)):t.url=ha(t.url,e)}getObjectType(t){const{type:e}=t;return"subtitle"===e?On.TIMED_TEXT:"initSegment"===t.sn?On.INIT:"audio"===e?On.AUDIO:"main"===e?this.hls.audioTracks.length?On.VIDEO:On.MUXED:void 0}getTopBandwidth(t){let e,s=0;const i=this.hls;if(t===On.AUDIO)e=i.audioTracks;else{const t=i.maxAutoLevel,s=t>-1?t+1:i.levels.length;e=i.levels.slice(0,s)}for(const t of e)t.bitrate>s&&(s=t.bitrate);return s>0?s:NaN}getBufferLength(t){const e=this.hls.media,s=t===On.AUDIO?this.audioBuffer:this.videoBuffer;if(!s||!e)return NaN;return 1e3*js.bufferInfo(s,e.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:t}=this.config,e=this.applyPlaylistData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}createFragmentLoader(){const{fLoader:t}=this.config,e=this.applyFragmentData,s=t||this.config.loader;return class{constructor(t){this.loader=void 0,this.loader=new s(t)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(t,s,i){e(t),this.loader.load(t,s,i)}}}},contentSteeringController:class{constructor(t){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=t,this.log=k.log.bind(k,"[content-steering]:"),this.registerListeners()}registerListeners(){const t=this.hls;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.MANIFEST_PARSED,this.onManifestParsed,this),t.on(T.ERROR,this.onError,this)}unregisterListeners(){const t=this.hls;t&&(t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.MANIFEST_PARSED,this.onManifestParsed,this),t.off(T.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const t=1e3*this.timeToLoad-(performance.now()-this.updated);if(t>0)return void this.scheduleRefresh(this.uri,t)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(t){const e=this.levels;e&&(this.levels=e.filter((e=>e!==t)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(t,e){const{contentSteering:s}=e;null!==s&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(t,e){this.audioTracks=e.audioTracks,this.subtitleTracks=e.subtitleTracks}onError(t,e){const{errorAction:s}=e;if((null==s?void 0:s.action)===Ts&&s.flags===As){const t=this.levels;let i=this.pathwayPriority,r=this.pathwayId;if(e.context){const{groupId:s,pathwayId:i,type:n}=e.context;s&&t?r=this.getPathwayForGroupId(s,n,r):i&&(r=i)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!i&&t&&(i=t.reduce(((t,e)=>(-1===t.indexOf(e.pathwayId)&&t.push(e.pathwayId),t)),[])),i&&i.length>1&&(this.updatePathwayPriority(i),s.resolved=this.pathwayId!==r),s.resolved||k.warn(`Could not resolve ${e.details} ("${e.error.message}") with content-steering for Pathway: ${r} levels: ${t?t.length:t} priorities: ${JSON.stringify(i)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(t){this.levels=t;let e=this.getLevelsForPathway(this.pathwayId);if(0===e.length){const s=t[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),e=this.getLevelsForPathway(s),this.pathwayId=s}return e.length!==t.length?(this.log(`Found ${e.length}/${t.length} levels in Pathway "${this.pathwayId}"`),e):t}getLevelsForPathway(t){return null===this.levels?[]:this.levels.filter((e=>t===e.pathwayId))}updatePathwayPriority(t){let e;this.pathwayPriority=t;const s=this.penalizedPathways,i=performance.now();Object.keys(s).forEach((t=>{i-s[t]>3e5&&delete s[t]}));for(let i=0;i0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,ls(e),this.hls.trigger(T.LEVELS_UPDATED,{levels:e});const t=this.hls.levels[n];a&&t&&this.levels&&(t.attrs["STABLE-VARIANT-ID"]!==a.attrs["STABLE-VARIANT-ID"]&&t.bitrate!==a.bitrate&&this.log(`Unstable Pathways change from bitrate ${a.bitrate} to ${t.bitrate}`),this.hls.nextLoadLevel=n);break}}}getPathwayForGroupId(t,e,s){const i=this.getLevelsForPathway(s).concat(this.levels||[]);for(let s=0;s{const{ID:r,"BASE-ID":n,"URI-REPLACEMENT":a}=t;if(e.some((t=>t.pathwayId===r)))return;const o=this.getLevelsForPathway(n).map((t=>{const e=new w(t.attrs);e["PATHWAY-ID"]=r;const n=e.AUDIO&&`${e.AUDIO}_clone_${r}`,o=e.SUBTITLES&&`${e.SUBTITLES}_clone_${r}`;n&&(s[e.AUDIO]=n,e.AUDIO=n),o&&(i[e.SUBTITLES]=o,e.SUBTITLES=o);const l=ca(t.uri,e["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",a),h=new Ze({attrs:e,audioCodec:t.audioCodec,bitrate:t.bitrate,height:t.height,name:t.name,url:l,videoCodec:t.videoCodec,width:t.width});if(t.audioGroups)for(let e=1;e{this.log(`Loaded steering manifest: "${i}"`);const n=t.data;if(1!==n.VERSION)return void this.log(`Steering VERSION ${n.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=n.TTL;const{"RELOAD-URI":a,"PATHWAY-CLONES":o,"PATHWAY-PRIORITY":l}=n;if(a)try{this.uri=new self.URL(a,i).href}catch(t){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${a}`)}this.scheduleRefresh(this.uri||s.url),o&&this.clonePathways(o);const h={steeringManifest:n,url:i.toString()};this.hls.trigger(T.STEERING_MANIFEST_LOADED,h),l&&this.updatePathwayPriority(l)},onError:(t,e,s,i)=>{if(this.log(`Error loading steering manifest: ${t.code} ${t.text} (${e.url})`),this.stopLoad(),410===t.code)return this.enabled=!1,void this.log(`Steering manifest ${e.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==t.code)this.scheduleRefresh(this.uri||e.url,r);else{const t=this.loader;if("function"==typeof(null==t?void 0:t.getResponseHeader)){const e=t.getResponseHeader("Retry-After");e&&(r=1e3*parseFloat(e))}this.log(`Steering manifest ${e.url} rate limited`)}},onTimeout:(t,e,s)=>{this.log(`Timeout loading steering manifest (${e.url})`),this.scheduleRefresh(this.uri||e.url)}};this.log(`Requesting steering manifest: ${i}`),this.loader.load(r,o,l)}scheduleRefresh(t,e=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var e;const s=null==(e=this.hls)?void 0:e.media;!s||s.ended?this.scheduleRefresh(t,1e3*this.timeToLoad):this.loadSteeringManifest(t)}),e)}}});function Sa(t){return t&&"object"==typeof t?Array.isArray(t)?t.map(Sa):Object.keys(t).reduce(((e,s)=>(e[s]=Sa(t[s]),e)),{}):t}function La(t){const e=t.loader;if(e!==ma&&e!==fa)k.log("[config]: Custom loader detected, cannot enable progressive streaming"),t.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(t){}return!1})()&&(t.loader=ma,t.progressive=!0,t.enableSoftwareAES=!0,k.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let Aa;class Ra extends bs{constructor(t,e){super(t,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=e,this._registerListeners()}_registerListeners(){const{hls:t}=this;t.on(T.MANIFEST_LOADING,this.onManifestLoading,this),t.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.on(T.LEVEL_LOADED,this.onLevelLoaded,this),t.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.on(T.FRAG_BUFFERED,this.onFragBuffered,this),t.on(T.ERROR,this.onError,this)}_unregisterListeners(){const{hls:t}=this;t.off(T.MANIFEST_LOADING,this.onManifestLoading,this),t.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),t.off(T.LEVEL_LOADED,this.onLevelLoaded,this),t.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),t.off(T.FRAG_BUFFERED,this.onFragBuffered,this),t.off(T.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((t=>{t.loadError=0,t.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(t,e){this.resetLevels()}onManifestLoaded(t,e){const s=this.hls.config.preferManagedMediaSource,i=[],r={},n={};let a=!1,o=!1,l=!1;e.levels.forEach((t=>{var e,h;const d=t.attrs;let{audioCodec:c,videoCodec:u}=t;-1!==(null==(e=c)?void 0:e.indexOf("mp4a.40.34"))&&(Aa||(Aa=/chrome|firefox/i.test(navigator.userAgent)),Aa&&(t.audioCodec=c=void 0)),c&&(t.audioCodec=c=oe(c,s)),0===(null==(h=u)?void 0:h.indexOf("avc1"))&&(u=t.videoCodec=function(t){const e=t.split(".");if(e.length>2){let t=e.shift()+".";return t+=parseInt(e.shift()).toString(16),t+=("000"+parseInt(e.shift()).toString(16)).slice(-4),t}return t}(u));const{width:f,height:g,unknownCodecs:m}=t;if(a||(a=!(!f||!g)),o||(o=!!u),l||(l=!!c),null!=m&&m.length||c&&!te(c,"audio",s)||u&&!te(u,"video",s))return;const{CODECS:p,"FRAME-RATE":v,"HDCP-LEVEL":y,"PATHWAY-ID":T,RESOLUTION:E,"VIDEO-RANGE":S}=d,L=`${`${T||"."}-`}${t.bitrate}-${E}-${v}-${p}-${S}-${y}`;if(r[L])if(r[L].uri===t.url||t.attrs["PATHWAY-ID"])r[L].addGroupId("audio",d.AUDIO),r[L].addGroupId("text",d.SUBTITLES);else{const e=n[L]+=1;t.attrs["PATHWAY-ID"]=new Array(e+1).join(".");const s=new Ze(t);r[L]=s,i.push(s)}else{const e=new Ze(t);r[L]=e,n[L]=1,i.push(e)}})),this.filterAndSortMediaOptions(i,e,a,o,l)}filterAndSortMediaOptions(t,e,s,i,r){let n=[],a=[],o=t;if((s||i)&&r&&(o=o.filter((({videoCodec:t,videoRange:e,width:s,height:i})=>{return(!!t||!(!s||!i))&&(!!(r=e)&&je.indexOf(r)>-1);var r}))),0===o.length)return void Promise.resolve().then((()=>{if(this.hls){e.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(e.levels[0].attrs)}`);const t=new Error("no level with compatible codecs found in manifest");this.hls.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:e.url,error:t,reason:t.message})}}));if(e.audioTracks){const{preferManagedMediaSource:t}=this.hls.config;n=e.audioTracks.filter((e=>!e.audioCodec||te(e.audioCodec,"audio",t))),ba(n)}e.subtitles&&(a=e.subtitles,ba(a));const l=o.slice(0);o.sort(((t,e)=>{if(t.attrs["HDCP-LEVEL"]!==e.attrs["HDCP-LEVEL"])return(t.attrs["HDCP-LEVEL"]||"")>(e.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&t.height!==e.height)return t.height-e.height;if(t.frameRate!==e.frameRate)return t.frameRate-e.frameRate;if(t.videoRange!==e.videoRange)return je.indexOf(t.videoRange)-je.indexOf(e.videoRange);if(t.videoCodec!==e.videoCodec){const s=ie(t.videoCodec),i=ie(e.videoCodec);if(s!==i)return i-s}if(t.uri===e.uri&&t.codecSet!==e.codecSet){const s=re(t.codecSet),i=re(e.codecSet);if(s!==i)return i-s}return t.averageBitrate!==e.averageBitrate?t.averageBitrate-e.averageBitrate:0}));let h=l[0];if(this.steering&&(o=this.steering.filterParsedLevels(o),o.length!==l.length))for(let t=0;ts&&s===Ea.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=t)}break}const c=r&&!i,u={levels:o,audioTracks:n,subtitleTracks:a,sessionData:e.sessionData,sessionKeys:e.sessionKeys,firstLevel:this._firstLevel,stats:e.stats,audio:r,video:i,altAudio:!c&&n.some((t=>!!t.url))};this.hls.trigger(T.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(t){const e=this._levels;if(0===e.length)return;if(t<0||t>=e.length){const s=new Error("invalid level idx"),i=t<0;if(this.hls.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.LEVEL_SWITCH_ERROR,level:t,fatal:i,error:s,reason:s.message}),i)return;t=Math.min(t,e.length-1)}const s=this.currentLevelIndex,i=this.currentLevel,r=i?i.attrs["PATHWAY-ID"]:void 0,n=e[t],a=n.attrs["PATHWAY-ID"];if(this.currentLevelIndex=t,this.currentLevel=n,s===t&&n.details&&i&&r===a)return;this.log(`Switching to level ${t} (${n.height?n.height+"p ":""}${n.videoRange?n.videoRange+" ":""}${n.codecSet?n.codecSet+" ":""}@${n.bitrate})${a?" with Pathway "+a:""} from level ${s}${r?" with Pathway "+r:""}`);const o={level:t,attrs:n.attrs,details:n.details,bitrate:n.bitrate,averageBitrate:n.averageBitrate,maxBitrate:n.maxBitrate,realBitrate:n.realBitrate,width:n.width,height:n.height,codecSet:n.codecSet,audioCodec:n.audioCodec,videoCodec:n.videoCodec,audioGroups:n.audioGroups,subtitleGroups:n.subtitleGroups,loaded:n.loaded,loadError:n.loadError,fragmentError:n.fragmentError,name:n.name,id:n.id,uri:n.uri,url:n.url,urlId:0,audioGroupIds:n.audioGroupIds,textGroupIds:n.textGroupIds};this.hls.trigger(T.LEVEL_SWITCHING,o);const l=n.details;if(!l||l.live){const t=this.switchParams(n.uri,null==i?void 0:i.details,l);this.loadPlaylist(t)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}get firstLevel(){return this._firstLevel}set firstLevel(t){this._firstLevel=t}get startLevel(){if(void 0===this._startLevel){const t=this.hls.config.startLevel;return void 0!==t?t:this.hls.firstAutoLevel}return this._startLevel}set startLevel(t){this._startLevel=t}onError(t,e){!e.fatal&&e.context&&e.context.type===Ae&&e.context.level===this.level&&this.checkRetry(e)}onFragBuffered(t,{frag:e}){if(void 0!==e&&e.type===ke){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return;const s=this._levels[e.level];null!=s&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(t,e){var s;const{level:i,details:r}=e,n=this._levels[i];var a;if(!n)return this.warn(`Invalid level index ${i}`),void(null!=(a=e.deliveryDirectives)&&a.skip&&(r.deltaUpdateFailed=!0));i===this.currentLevelIndex?(0===n.fragmentError&&(n.loadError=0),this.playlistLoaded(i,e,n.details)):null!=(s=e.deliveryDirectives)&&s.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(t){super.loadPlaylist();const e=this.currentLevelIndex,s=this.currentLevel;if(s&&this.shouldLoadPlaylist(s)){let i=s.uri;if(t)try{i=t.addDirectives(i)}catch(t){this.warn(`Could not construct new URL with HLS Delivery Directives: ${t}`)}const r=s.attrs["PATHWAY-ID"];this.log(`Loading level index ${e}${void 0!==(null==t?void 0:t.msn)?" at sn "+t.msn+" part "+t.part:""} with${r?" Pathway "+r:""} ${i}`),this.clearTimer(),this.hls.trigger(T.LEVEL_LOADING,{url:i,level:e,pathwayId:s.attrs["PATHWAY-ID"],id:0,deliveryDirectives:t||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}removeLevel(t){var e;const s=this._levels.filter(((e,s)=>s!==t||(this.steering&&this.steering.removeLevel(e),e===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,e.details&&e.details.fragments.forEach((t=>t.level=-1))),!1)));ls(s),this._levels=s,this.currentLevelIndex>-1&&null!=(e=this.currentLevel)&&e.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(T.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(t,{levels:e}){this._levels=e}checkMaxAutoUpdated(){const{autoLevelCapping:t,maxAutoLevel:e,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==e&&(this._maxAutoLevel=e,this.hls.trigger(T.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:t,levels:this.levels,maxAutoLevel:e,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}}function ba(t){const e={};t.forEach((t=>{const s=t.groupId||"";t.id=e[s]=e[s]||0,e[s]++}))}class ka{constructor(t){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=t}abort(t){for(const s in this.keyUriToKeyInfo){const i=this.keyUriToKeyInfo[s].loader;if(i){var e;if(t&&t!==(null==(e=i.context)?void 0:e.frag.type))return;i.abort()}}}detach(){for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t];(e.mediaKeySessionContext||e.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[t]}}destroy(){this.detach();for(const t in this.keyUriToKeyInfo){const e=this.keyUriToKeyInfo[t].loader;e&&e.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(t,e=S.KEY_LOAD_ERROR,s,i,r){return new ri({type:E.NETWORK_ERROR,details:e,fatal:!1,frag:t,response:r,error:s,networkDetails:i})}loadClear(t,e){if(this.emeController&&this.config.emeEnabled){const{sn:s,cc:i}=t;for(let t=0;t{r.setKeyFormat(t)}));break}}}}load(t){return!t.decryptdata&&t.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(t).then((e=>this.loadInternal(t,e))):this.loadInternal(t)}loadInternal(t,e){var s,i;e&&t.setKeyFormat(e);const r=t.decryptdata;if(!r){const s=new Error(e?`Expected frag.decryptdata to be defined after setting format ${e}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,s))}const n=r.uri;if(!n)return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${n}"`)));let a=this.keyUriToKeyInfo[n];if(null!=(s=a)&&s.decryptdata.key)return r.key=a.decryptdata.key,Promise.resolve({frag:t,keyInfo:a});var o;if(null!=(i=a)&&i.keyLoadPromise)switch(null==(o=a.mediaKeySessionContext)?void 0:o.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return a.keyLoadPromise.then((e=>(r.key=e.keyInfo.decryptdata.key,{frag:t,keyInfo:a})))}switch(a=this.keyUriToKeyInfo[n]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(a,t):this.loadKeyEME(a,t);case"AES-128":return this.loadKeyHTTP(a,t);default:return Promise.reject(this.createKeyLoadError(t,S.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(t,e){const s={frag:e,keyInfo:t};if(this.emeController&&this.config.emeEnabled){const e=this.emeController.loadKey(s);if(e)return(t.keyLoadPromise=e.then((e=>(t.mediaKeySessionContext=e,s)))).catch((e=>{throw t.keyLoadPromise=null,e}))}return Promise.resolve(s)}loadKeyHTTP(t,e){const s=this.config,i=new(0,s.loader)(s);return e.keyLoader=t.loader=i,t.keyLoadPromise=new Promise(((r,n)=>{const a={keyInfo:t,frag:e,responseType:"arraybuffer",url:t.decryptdata.uri},o=s.keyLoadPolicy.default,l={loadPolicy:o,timeout:o.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},h={onSuccess:(t,e,s,i)=>{const{frag:a,keyInfo:o,url:l}=s;if(!a.decryptdata||o!==this.keyUriToKeyInfo[l])return n(this.createKeyLoadError(a,S.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),i));o.decryptdata.key=a.decryptdata.key=new Uint8Array(t.data),a.keyLoader=null,o.loader=null,r({frag:a,keyInfo:o})},onError:(t,s,i,r)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_ERROR,new Error(`HTTP Error ${t.code} loading key ${t.text}`),i,u({url:a.url,data:void 0},t)))},onTimeout:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),i))},onAbort:(t,s,i)=>{this.resetLoader(s),n(this.createKeyLoadError(e,S.INTERNAL_ABORTED,new Error("key loading aborted"),i))}};i.load(a,l,h)}))}resetLoader(t){const{frag:e,keyInfo:s,url:i}=t,r=s.loader;e.keyLoader===r&&(e.keyLoader=null,s.loader=null),delete this.keyUriToKeyInfo[i],r&&r.destroy()}}function Da(){return self.SourceBuffer||self.WebKitSourceBuffer}function Ia(){if(!Jt())return!1;const t=Da();return!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove}class wa{constructor(t,e,s,i){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=t,this.media=e,this.fragmentTracker=s,this.hls=i}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(t,e){const{config:s,media:i,stalled:r}=this;if(null===i)return;const{currentTime:n,seeking:a}=i,o=this.seeking&&!a,l=!this.seeking&&a;if(this.seeking=a,n!==t){if(this.moved=!0,a||(this.nudgeRetry=0),null!==r){if(this.stallReported){const t=self.performance.now()-r;k.warn(`playback not stuck anymore @${n}, after ${Math.round(t)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||o)return void(this.stalled=null);if(i.paused&&!a||i.ended||0===i.playbackRate||!js.getBuffered(i).length)return void(this.nudgeRetry=0);const h=js.bufferInfo(i,n,0),d=h.nextStart||0;if(a){const t=h.len>2,s=!d||e&&e.start<=n||d-n>2&&!this.fragmentTracker.getPartialFragment(n);if(t||s)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(h.len>0)&&!d)return;const t=Math.max(d,h.start||0)-n,e=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,s=(null==e||null==(c=e.details)?void 0:c.live)?2*e.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(n);if(t>0&&(t<=s||r))return void(i.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const f=u-r;if(!a&&f>=250&&(this._reportStall(h),!this.media))return;const g=js.bufferInfo(i,n,s.maxBufferHole);this._tryFixBufferStall(g,f)}_tryFixBufferStall(t,e){const{config:s,fragmentTracker:i,media:r}=this;if(null===r)return;const n=r.currentTime,a=i.getPartialFragment(n);if(a){if(this._trySkipBufferHole(a)||!this.media)return}(t.len>s.maxBufferHole||t.nextStart&&t.nextStart-n1e3*s.highBufferWatchdogPeriod&&(k.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(t){const{hls:e,media:s,stallReported:i}=this;if(!i&&s){this.stallReported=!0;const i=new Error(`Playback stalling at @${s.currentTime} due to low buffer (${JSON.stringify(t)})`);k.warn(i.message),e.trigger(T.ERROR,{type:E.MEDIA_ERROR,details:S.BUFFER_STALLED_ERROR,fatal:!1,error:i,buffer:t.len})}}_trySkipBufferHole(t){const{config:e,hls:s,media:i}=this;if(null===i)return 0;const r=i.currentTime,n=js.bufferInfo(i,r,0),a=r0&&n.len<1&&i.readyState<3,h=a-r;if(h>0&&(o||l)){if(h>e.maxBufferHole){const{fragmentTracker:e}=this;let s=!1;if(0===r){const t=e.getAppendedFrag(0,ke);t&&a1?(t=0,this.bitrateTest=!0):t=s.firstAutoLevel),s.nextLoadLevel=t,this.level=s.loadLevel,this.loadedmetadata=!1}e>0&&-1===t&&(this.log(`Override startPosition with lastCurrentTime @${e.toFixed(3)}`),t=e),this.state=ci,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this._forceStartLoad=!0,this.state=di}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case Si:{const{levels:t,level:e}=this,s=null==t?void 0:t[e],i=null==s?void 0:s.details;if(i&&(!i.live||this.levelLastLoaded===s)){if(this.waitForCdnTuneIn(i))break;this.state=ci;break}if(this.hls.nextLoadLevel!==this.level){this.state=ci;break}break}case gi:{var t;const e=self.performance.now(),s=this.retryDate;if(!s||e>=s||null!=(t=this.media)&&t.seeking){const{levels:t,level:e}=this,s=null==t?void 0:t[e];this.resetStartWhenNotLoaded(s||null),this.state=ci}}}this.state===ci&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:t,levelLastLoaded:e,levels:s,media:i}=this;if(null===e||!i&&(this.startFragRequested||!t.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=t.nextLoadLevel;if(null==s||!s[r])return;const n=s[r],a=this.getMainFwdBufferInfo();if(null===a)return;const o=this.getLevelDetails();if(o&&this._streamEnded(a,o)){const t={};return this.altAudio&&(t.type="video"),this.hls.trigger(T.BUFFER_EOS,t),void(this.state=yi)}t.loadLevel!==r&&-1===t.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=t.nextLoadLevel=r;const l=n.details;if(!l||this.state===Si||l.live&&this.levelLastLoaded!==n)return this.level=r,void(this.state=Si);const h=a.len,d=this.getMaxBufferLength(n.maxBitrate);if(h>=d)return;this.backtrackFragment&&this.backtrackFragment.start>a.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:a.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==Ks){var f;const t=(null!=(f=this.backtrackFragment)?f:u).sn-l.startSN,e=l.fragments[t-1];e&&u.cc===e.cc&&(u=e,this.fragmentTracker.removeFragment(e))}else this.backtrackFragment&&a.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const t=this.audioOnly&&!this.altAudio?P:F,e=(t===F?this.videoBuffer:this.mediaBuffer)||this.media;e&&this.afterBufferFlushed(e,t,ke)}u=this.getNextFragmentLoopLoading(u,l,a,ke,d)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,n,c))}loadFragment(t,e,s){const i=this.fragmentTracker.getState(t);this.fragCurrent=t,i===Bs||i===Gs?"initSegment"===t.sn?this._loadInitSegment(t,e):this.bitrateTest?(this.log(`Fragment ${t.sn} of level ${t.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(t,e)):(this.startFragRequested=!0,super.loadFragment(t,e,s)):this.clearTrackerIfNeeded(t)}getBufferedFrag(t){return this.fragmentTracker.getBufferedFrag(t,ke)}followingBufferedFrag(t){return t?this.getBufferedFrag(t.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:t,media:e}=this;if(null!=e&&e.readyState){let s;const i=this.getAppendedFrag(e.currentTime);i&&i.start>1&&this.flushMainBuffer(0,i.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const t=this.getMainFwdBufferInfo();if(!t||t.len<2*r.targetduration)return}if(!e.paused&&t){const e=t[this.hls.nextLoadLevel],i=this.fragLastKbps;s=i&&this.fragCurrent?this.fragCurrent.duration*e.maxBitrate/(1e3*i)+1:0}else s=0;const n=this.getBufferedFrag(e.currentTime+s);if(n){const t=this.followingBufferedFrag(n);if(t){this.abortCurrentFrag();const e=t.maxStartPTS?t.maxStartPTS:t.start,s=t.duration,i=Math.max(n.end,e+Math.min(Math.max(s-this.config.maxFragLookUpTolerance,s*(this.couldBacktrack?.5:.125)),s*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(i,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const t=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,t&&(t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.state){case ui:case fi:case gi:case pi:case vi:this.state=ci}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(t,e){super.flushMainBuffer(t,e,this.altAudio?"video":null)}onMediaAttached(t,e){super.onMediaAttached(t,e);const s=e.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),s.addEventListener("playing",this.onvplaying),s.addEventListener("seeked",this.onvseeked),this.gapController=new wa(this.config,s,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:t}=this;t&&this.onvplaying&&this.onvseeked&&(t.removeEventListener("playing",this.onvplaying),t.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const t=this.media,e=t?t.currentTime:null;p(e)&&this.log(`Media seeked to ${e.toFixed(3)}`);const s=this.getMainFwdBufferInfo();null!==s&&0!==s.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${s?s.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(T.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(t,e){let s=!1,i=!1;e.levels.forEach((t=>{const e=t.audioCodec;e&&(s=s||-1!==e.indexOf("mp4a.40.2"),i=i||-1!==e.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=s&&i&&!function(){var t;const e=Da();return"function"==typeof(null==e||null==(t=e.prototype)?void 0:t.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startFragRequested=!1}onLevelLoading(t,e){const{levels:s}=this;if(!s||this.state!==ci)return;const i=s[e.level];(!i.details||i.details.live&&this.levelLastLoaded!==i||this.waitForCdnTuneIn(i.details))&&(this.state=Si)}onLevelLoaded(t,e){var s;const{levels:i}=this,r=e.level,n=e.details,a=n.totalduration;if(!i)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${n.startSN},${n.endSN}]${n.lastPartSn?`[part-${n.lastPartSn}-${n.lastPartIndex}]`:""}, cc [${n.startCC}, ${n.endCC}] duration:${a}`);const o=i[r],l=this.fragCurrent;!l||this.state!==fi&&this.state!==gi||l.level!==e.level&&l.loader&&this.abortCurrentFrag();let h=0;if(n.live||null!=(s=o.details)&&s.live){var d;if(this.checkLiveUpdate(n),n.deltaUpdateFailed)return;h=this.alignPlaylists(n,o.details,null==(d=this.levelLastLoaded)?void 0:d.details)}if(o.details=n,this.levelLastLoaded=o,this.hls.trigger(T.LEVEL_UPDATED,{details:n,level:r}),this.state===Si){if(this.waitForCdnTuneIn(n))return;this.state=ci}this.startFragRequested?n.live&&this.synchronizeToLiveEdge(n):this.setStartPosition(n,h),this.tick()}_handleFragmentLoadProgress(t){var e;const{frag:s,part:i,payload:r}=t,{levels:n}=this;if(!n)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);const a=n[s.level],o=a.details;if(!o)return this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),void this.fragmentTracker.removeFragment(s);const l=a.videoCodec,h=o.PTSKnown||!o.live,d=null==(e=s.initSegment)?void 0:e.data,c=this._getAudioCodec(a),u=this.transmuxer=this.transmuxer||new wr(this.hls,ke,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),f=i?i.index:-1,g=-1!==f,m=new qs(s.level,s.sn,s.stats.chunkCount,r.byteLength,f,g),p=this.initPTS[s.cc];u.push(r,d,c,l,s,i,o.totalduration,h,m,p)}onAudioTrackSwitching(t,e){const s=this.altAudio;if(!!!e.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const t=this.fragCurrent;t&&(this.log("Switching to main audio track, cancel main fragment load"),t.abortRequests(),this.fragmentTracker.removeFragment(t)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const t=this.hls;s&&(t.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),t.trigger(T.AUDIO_TRACK_SWITCHED,e)}}onAudioTrackSwitched(t,e){const s=e.id,i=!!this.hls.audioTracks[s].url;if(i){const t=this.videoBuffer;t&&this.mediaBuffer!==t&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=t)}this.altAudio=i,this.tick()}onBufferCreated(t,e){const s=e.tracks;let i,r,n=!1;for(const t in s){const e=s[t];if("main"===e.id){if(r=t,i=e,"video"===t){const e=s[t];e&&(this.videoBuffer=e.buffer)}}else n=!0}n&&i?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=i.buffer):this.mediaBuffer=this.media}onFragBuffered(t,e){const{frag:s,part:i}=e;if(s&&s.type!==ke)return;if(this.fragContextChanged(s))return this.warn(`Fragment ${s.sn}${i?" p: "+i.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===vi&&(this.state=ci));const r=i?i.stats:s.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==s.sn&&(this.fragPrevious=s),this.fragBufferedComplete(s,i)}onError(t,e){var s;if(e.fatal)this.state=Ti;else switch(e.details){case S.FRAG_GAP:case S.FRAG_PARSING_ERROR:case S.FRAG_DECRYPT_ERROR:case S.FRAG_LOAD_ERROR:case S.FRAG_LOAD_TIMEOUT:case S.KEY_LOAD_ERROR:case S.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(ke,e);break;case S.LEVEL_LOAD_ERROR:case S.LEVEL_LOAD_TIMEOUT:case S.LEVEL_PARSING_ERROR:e.levelRetry||this.state!==Si||(null==(s=e.context)?void 0:s.type)!==Ae||(this.state=ci);break;case S.BUFFER_APPEND_ERROR:case S.BUFFER_FULL_ERROR:if(!e.parent||"main"!==e.parent)return;if(e.details===S.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(e)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case S.INTERNAL_EXCEPTION:this.recoverWorkerError(e)}}checkBuffer(){const{media:t,gapController:e}=this;if(t&&e&&t.readyState){if(this.loadedmetadata||!js.getBuffered(t).length){const t=this.state!==ci?this.fragCurrent:null;e.poll(this.lastCurrentTime,t)}this.lastCurrentTime=t.currentTime}}onFragLoadEmergencyAborted(){this.state=ci,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(t,{type:e}){if(e!==P||this.audioOnly&&!this.altAudio){const t=(e===F?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(t,e,ke),this.tick()}}onLevelsUpdated(t,e){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=e.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:t}=this;if(!t)return;const e=t.currentTime;let s=this.startPosition;if(s>=0&&e0&&(r{const{hls:i}=this;if(!s||this.fragContextChanged(t))return;e.fragmentError=0,this.state=ci,this.startFragRequested=!1,this.bitrateTest=!1;const r=t.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),i.trigger(T.FRAG_LOADED,s),t.bitrateTest=!1}))}_handleTransmuxComplete(t){var e;const s="main",{hls:i}=this,{remuxResult:r,chunkMeta:n}=t,a=this.getCurrentContext(n);if(!a)return void this.resetWhenMissingContext(n);const{frag:o,part:l,level:h}=a,{video:d,text:c,id3:u,initSegment:f}=r,{details:g}=h,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(o))this.fragmentTracker.removeFragment(o);else{if(this.state=pi,f){if(null!=f&&f.tracks){const t=o.initSegment||o;this._bufferInitSegment(h,f.tracks,t,n),i.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:t,id:s,tracks:f.tracks})}const t=f.initPTS,e=f.timescale;p(t)&&(this.initPTS[o.cc]={baseTime:t,timescale:e},i.trigger(T.INIT_PTS_FOUND,{frag:o,id:s,initPTS:t,timescale:e}))}if(d&&g&&"initSegment"!==o.sn){const t=g.fragments[o.sn-1-g.startSN],e=o.sn===g.startSN,s=!t||o.cc>t.cc;if(!1!==r.independent){const{startPTS:t,endPTS:i,startDTS:r,endDTS:a}=d;if(l)l.elementaryStreams[d.type]={startPTS:t,endPTS:i,startDTS:r,endDTS:a};else if(d.firstKeyFrame&&d.independent&&1===n.id&&!s&&(this.couldBacktrack=!0),d.dropped&&d.independent){const r=this.getMainFwdBufferInfo(),n=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=d.firstKeyFramePTS?d.firstKeyFramePTS:t;if(!e&&n2&&(o.gap=!0);o.setElementaryStreamInfo(d.type,t,i,r,a),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(d,o,l,n,e||s)}else{if(!e&&!s)return void this.backtrack(o);o.gap=!0}}if(m){const{startPTS:t,endPTS:e,startDTS:s,endDTS:i}=m;l&&(l.elementaryStreams[P]={startPTS:t,endPTS:e,startDTS:s,endDTS:i}),o.setElementaryStreamInfo(P,t,e,s,i),this.bufferFragmentData(m,o,l,n)}if(g&&null!=u&&null!=(e=u.samples)&&e.length){const t={id:s,frag:o,details:g,samples:u.samples};i.trigger(T.FRAG_PARSING_METADATA,t)}if(g&&c){const t={id:s,frag:o,details:g,samples:c.samples};i.trigger(T.FRAG_PARSING_USERDATA,t)}}}_bufferInitSegment(t,e,s,i){if(this.state!==pi)return;this.audioOnly=!!e.audio&&!e.video,this.altAudio&&!this.audioOnly&&delete e.audio;const{audio:r,video:n,audiovideo:a}=e;if(r){let e=t.audioCodec;const s=navigator.userAgent.toLowerCase();if(this.audioCodecSwitch){e&&(e=-1!==e.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5");const t=r.metadata;t&&"channelCount"in t&&1!==(t.channelCount||1)&&-1===s.indexOf("firefox")&&(e="mp4a.40.5")}e&&-1!==e.indexOf("mp4a.40.5")&&-1!==s.indexOf("android")&&"audio/mpeg"!==r.container&&(e="mp4a.40.2",this.log(`Android: force audio codec to ${e}`)),t.audioCodec&&t.audioCodec!==e&&this.log(`Swapping manifest audio codec "${t.audioCodec}" for "${e}"`),r.levelCodec=e,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${e||""}/${t.audioCodec||""}/${r.codec}]`)}n&&(n.levelCodec=t.videoCodec,n.id="main",this.log(`Init video buffer, container:${n.container}, codecs[level/parsed]=[${t.videoCodec||""}/${n.codec}]`)),a&&this.log(`Init audiovideo buffer, container:${a.container}, codecs[level/parsed]=[${t.codecs}/${a.codec}]`),this.hls.trigger(T.BUFFER_CODECS,e),Object.keys(e).forEach((t=>{const r=e[t].initSegment;null!=r&&r.byteLength&&this.hls.trigger(T.BUFFER_APPENDING,{type:t,data:r,frag:s,part:null,chunkMeta:i,parent:s.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,ke)}backtrack(t){this.couldBacktrack=!0,this.backtrackFragment=t,this.resetTransmuxer(),this.flushBufferGap(t),this.fragmentTracker.removeFragment(t),this.fragPrevious=null,this.nextLoadPosition=t.start,this.state=ci}checkFragmentChanged(){const t=this.media;let e=null;if(t&&t.readyState>1&&!1===t.seeking){const s=t.currentTime;if(js.isBuffered(t,s)?e=this.getAppendedFrag(s):js.isBuffered(t,s+.1)&&(e=this.getAppendedFrag(s+.1)),e){this.backtrackFragment=null;const t=this.fragPlaying,s=e.level;t&&e.sn===t.sn&&t.level===s||(this.fragPlaying=e,this.hls.trigger(T.FRAG_CHANGED,{frag:e}),t&&t.level===s||this.hls.trigger(T.LEVEL_SWITCHED,{level:s}))}}}get nextLevel(){const t=this.nextBufferedFrag;return t?t.level:-1}get currentFrag(){const t=this.media;return t?this.fragPlaying||this.getAppendedFrag(t.currentTime):null}get currentProgramDateTime(){const t=this.media;if(t){const e=t.currentTime,s=this.currentFrag;if(s&&p(e)&&p(s.programDateTime)){const t=s.programDateTime+1e3*(e-s.start);return new Date(t)}}return null}get currentLevel(){const t=this.currentFrag;return t?t.level:-1}get nextBufferedFrag(){const t=this.currentFrag;return t?this.followingBufferedFrag(t):null}get forceStartLoad(){return this._forceStartLoad}}class _a{static get version(){return"1.5.11"}static isMSESupported(){return Ia()}static isSupported(){return function(){if(!Ia())return!1;const t=Jt();return"function"==typeof(null==t?void 0:t.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((e=>t.isTypeSupported(se(e,"video"))))||["mp4a.40.2","fLaC"].some((e=>t.isTypeSupported(se(e,"audio")))))}()}static getMediaSource(){return Jt()}static get Events(){return T}static get ErrorTypes(){return E}static get ErrorDetails(){return S}static get DefaultConfig(){return _a.defaultConfig?_a.defaultConfig:Ea}static set DefaultConfig(t){_a.defaultConfig=t}constructor(t={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new Ir,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(t,e){if("object"==typeof console&&!0===t||"object"==typeof t){b(t,"debug","log","info","warn","error");try{R.log(`Debug logs enabled for "${e}" in hls.js version 1.5.11`)}catch(t){R=A}}else R=A}(t.debug||!1,"Hls instance");const e=this.config=function(t,e){if((e.liveSyncDurationCount||e.liveMaxLatencyDurationCount)&&(e.liveSyncDuration||e.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==e.liveMaxLatencyDurationCount&&(void 0===e.liveSyncDurationCount||e.liveMaxLatencyDurationCount<=e.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==e.liveMaxLatencyDuration&&(void 0===e.liveSyncDuration||e.liveMaxLatencyDuration<=e.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const s=Sa(t),i=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((t=>{const r=`${"level"===t?"playlist":t}LoadPolicy`,n=void 0===e[r],a=[];i.forEach((i=>{const o=`${t}Loading${i}`,l=e[o];if(void 0!==l&&n){a.push(o);const t=s[r].default;switch(e[r]={default:t},i){case"TimeOut":t.maxLoadTimeMs=l,t.maxTimeToFirstByteMs=l;break;case"MaxRetry":t.errorRetry.maxNumRetry=l,t.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":t.errorRetry.retryDelayMs=l,t.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":t.errorRetry.maxRetryDelayMs=l,t.timeoutRetry.maxRetryDelayMs=l}}})),a.length&&k.warn(`hls.js config: "${a.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(e[r])}`)})),u(u({},s),e)}(_a.DefaultConfig,t);this.userConfig=t,e.progressive&&La(e);const{abrController:s,bufferController:i,capLevelController:r,errorController:n,fpsController:a}=e,o=new n(this),l=this.abrController=new s(this),h=this.bufferController=new i(this),d=this.capLevelController=new r(this),c=new a(this),f=new _e(this),g=new Ve(this),m=e.contentSteeringController,p=m?new m(this):null,v=this.levelController=new Ra(this,p),y=new Hs(this),E=new ka(this.config),S=this.streamController=new Ca(this,y,E);d.setStreamController(S),c.setStreamController(S);const L=[f,v,S];p&&L.splice(1,0,p),this.networkControllers=L;const D=[l,h,d,c,g,y];this.audioTrackController=this.createController(e.audioTrackController,L);const I=e.audioStreamController;I&&L.push(new I(this,y,E)),this.subtitleTrackController=this.createController(e.subtitleTrackController,L);const w=e.subtitleStreamController;w&&L.push(new w(this,y,E)),this.createController(e.timelineController,D),E.emeController=this.emeController=this.createController(e.emeController,D),this.cmcdController=this.createController(e.cmcdController,D),this.latencyController=this.createController(Ye,D),this.coreComponents=D,L.push(o);const C=o.onErrorOut;"function"==typeof C&&this.on(T.ERROR,C,o)}createController(t,e){if(t){const s=new t(this);return e&&e.push(s),s}return null}on(t,e,s=this){this._emitter.on(t,e,s)}once(t,e,s=this){this._emitter.once(t,e,s)}removeAllListeners(t){this._emitter.removeAllListeners(t)}off(t,e,s=this,i){this._emitter.off(t,e,s,i)}listeners(t){return this._emitter.listeners(t)}emit(t,e,s){return this._emitter.emit(t,e,s)}trigger(t,e){if(this.config.debug)return this.emit(t,t,e);try{return this.emit(t,t,e)}catch(e){if(k.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),!this.triggeringException){this.triggeringException=!0;const s=t===T.ERROR;this.trigger(T.ERROR,{type:E.OTHER_ERROR,details:S.INTERNAL_EXCEPTION,fatal:s,event:t,error:e}),this.triggeringException=!1}}return!1}listenerCount(t){return this._emitter.listenerCount(t)}destroy(){k.log("destroy"),this.trigger(T.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((t=>t.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((t=>t.destroy())),this.coreComponents.length=0;const t=this.config;t.xhrSetup=t.fetchSetup=void 0,this.userConfig=null}attachMedia(t){k.log("attachMedia"),this._media=t,this.trigger(T.MEDIA_ATTACHING,{media:t})}detachMedia(){k.log("detachMedia"),this.trigger(T.MEDIA_DETACHING,void 0),this._media=null}loadSource(t){this.stopLoad();const e=this.media,s=this.url,i=this.url=d.buildAbsoluteURL(self.location.href,t,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,k.log(`loadSource:${i}`),e&&s&&(s!==i||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(e)),this.trigger(T.MANIFEST_LOADING,{url:t})}startLoad(t=-1){k.log(`startLoad(${t})`),this.started=!0,this.networkControllers.forEach((e=>{e.startLoad(t)}))}stopLoad(){k.log("stopLoad"),this.started=!1,this.networkControllers.forEach((t=>{t.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((t=>{"fragmentLoader"in t&&t.stopLoad()}))}swapAudioCodec(){k.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){k.log("recoverMediaError");const t=this._media;this.detachMedia(),t&&this.attachMedia(t)}removeLevel(t){this.levelController.removeLevel(t)}get levels(){const t=this.levelController.levels;return t||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(t){k.log(`set currentLevel:${t}`),this.levelController.manualLevel=t,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(t){k.log(`set nextLevel:${t}`),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(t){k.log(`set loadLevel:${t}`),this.levelController.manualLevel=t}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(t){this.levelController.nextLoadLevel=t}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(t){k.log(`set firstLevel:${t}`),this.levelController.firstLevel=t}get startLevel(){const t=this.levelController.startLevel;return-1===t&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:t}set startLevel(t){k.log(`set startLevel:${t}`),-1!==t&&(t=Math.max(t,this.minAutoLevel)),this.levelController.startLevel=t}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(t){const e=!!t;e!==this.config.capLevelToPlayerSize&&(e?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=e)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimate():NaN}set bandwidthEstimate(t){this.abrController.resetEstimator(t)}get ttfbEstimate(){const{bwEstimator:t}=this.abrController;return t?t.getEstimateTTFB():NaN}set autoLevelCapping(t){this._autoLevelCapping!==t&&(k.log(`set autoLevelCapping:${t}`),this._autoLevelCapping=t,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(t){(function(t){return We.indexOf(t)>-1})(t)&&this._maxHdcpLevel!==t&&(this._maxHdcpLevel=t,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:t,config:{minAutoBitrate:e}}=this;if(!t)return 0;const s=t.length;for(let i=0;i=e)return i;return 0}get maxAutoLevel(){const{levels:t,autoLevelCapping:e,maxHdcpLevel:s}=this;let i;if(i=-1===e&&null!=t&&t.length?t.length-1:e,s)for(let e=i;e--;){const i=t[e].attrs["HDCP-LEVEL"];if(i&&i<=s)return e}return i}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(t){this.abrController.nextAutoLevel=t}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(t){var e;return null==(e=this.audioTrackController)?void 0:e.setAudioOption(t)}setSubtitleOption(t){var e;return null==(e=this.subtitleTrackController)||e.setSubtitleOption(t),null}get allAudioTracks(){const t=this.audioTrackController;return t?t.allAudioTracks:[]}get audioTracks(){const t=this.audioTrackController;return t?t.audioTracks:[]}get audioTrack(){const t=this.audioTrackController;return t?t.audioTrack:-1}set audioTrack(t){const e=this.audioTrackController;e&&(e.audioTrack=t)}get allSubtitleTracks(){const t=this.subtitleTrackController;return t?t.allSubtitleTracks:[]}get subtitleTracks(){const t=this.subtitleTrackController;return t?t.subtitleTracks:[]}get subtitleTrack(){const t=this.subtitleTrackController;return t?t.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(t){const e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}get subtitleDisplay(){const t=this.subtitleTrackController;return!!t&&t.subtitleDisplay}set subtitleDisplay(t){const e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(t){this.config.lowLatencyMode=t}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}_a.defaultConfig=void 0}}]); \ No newline at end of file diff --git a/95426.async.js b/95426.async.js index 3da473436f..10b825e118 100644 --- a/95426.async.js +++ b/95426.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95426],{95426:function(a,e,t){var n=t(59301),r=t(95237),l=t(43604),i=t(99313),c=t(3113),o=t(49519),u=t(18955),s=(t(48136),t(37712)),d=(0,n.forwardRef)((function(a,e){var t=a.callback,d=a.showSaveButton,v=a.value,p=void 0===v?"":v,h=(0,n.useRef)(),m=function(a){h.current.setValue(h.current.getValue()+" "+a.value+" ")},f=[{key:"1",label:"快捷模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"分数得分",value:"\\frac{x}{y}",children:[{name:"分数 Fractions",data:[{value:"\\frac{a}{b}"},{value:"x\\tfrac{x}{a} "},{value:"\\mathrm{d}t"},{value:"\\partial t"},{value:"\\frac{\\partial y}{\\partial x}"},{value:"\\nabla\\psi"},{value:"\\frac{\\partial^2}{\\partial x_1\\partial x_2}y"},{value:"\\cfrac{1}{a + \\cfrac{7}{b + \\cfrac{2}{9}}} = c"}]},{name:"导数 Derivative",data:[{value:"\\dot{a} "},{value:"\\ddot{a}"},{value:"{f}^{\\prime}"},{value:"{f}^{\\prime\\prime}"},{value:"{f}^{(n)}"}]},{name:"模算术 Modular arithmetic",data:[{value:"a \\bmod b"},{value:"a \\equiv b \\pmod{m} "},{value:"\\gcd(m, n) "},{value:"\\operatorname{lcm}(m, n) "}]}]},{name:"根式角标",value:"\\sqrt{x}",children:[{name:"根式 Radicals",data:[{value:"\\sqrt{x}"},{value:"\\sqrt[y]{x}"}]},{name:"上下标 Sub&Super",data:[{value:"x^{a}"},{value:"x_{a}"},{value:"x_{a}^{b} "},{value:"_{a}^{b} x"},{value:"x_{a}^{b} "}]},{name:"重音符及其他 Accents and Others",data:[{value:"\\hat{a} "},{value:"\\sqrt[y]{x}"},{value:"\\check{} "},{value:"\\grave{a} "},{value:"\\acute{a}"},{value:"\\tilde{a}"},{value:"\\breve{a}"},{value:"\\bar{a}"},{value:"\\vec{a}"},{value:"\\not{a}"},{value:"\\widetilde{abc}"},{value:"\\widehat{abc}"},{value:"\\overleftarrow{abc} "},{value:"\\overrightarrow{abc}"},{value:"\\overline{abc}"},{value:"\\underline{abc}"},{value:"\\overbrace{abc}"},{value:"\\underbrace{abc}"},{value:"\\overset{a}{abc}"},{value:"\\underset{a}{abc} \\stackrel\\frown{ab}"},{value:"\\overline{ab} "},{value:"\\overleftrightarrow{ab}"},{value:"\\overset{a}{\\leftarrow}"},{value:"\\overset{a}{\\rightarrow}"},{value:"\\xleftarrow[abc]{a}"},{value:"\\xrightarrow[abc]{a} "}]}]},{name:"极限对数",value:"\\lim_{x \\to 0}",children:[{name:"极限 Limits",data:[{value:"\\lim a"},{value:"\\lim_{x \\to 0}"},{value:"\\lim_{x \\to \\infty}"},{value:"\\max_b{a}"},{value:"\\min_a{b}"}]},{name:"对数指数 Logarithms and exponentials",data:[{value:"\\log_{a}{b}"},{value:"\\lg_{a}{b}"},{value:"\\ln_{a}{b}"},{value:"\\exp a"}]},{name:"界限 Bounds",data:[{value:"\\min x"},{value:"\\sup t"},{value:"\\inf s"},{value:"\\lim u"},{value:"\\limsup w"},{value:"\\dim p"},{value:"\\ker\\phi "}]}]},{name:"三角函数",value:"\\sin a",children:[{name:"三角函数 Trigonometric functions",data:[{value:"\\sin a"},{value:"\\cos a"},{value:"\\tan a"},{value:"\\cot a "},{value:"\\sec a "},{value:"\\csc a "}]},{name:"反三角函数 Inverse trigonometric functions",data:[{value:"\\sin^{-1}"},{value:"\\cos^{-1}"},{value:"\\tan^{-1}"},{value:"\\cot^{-1}"},{value:"\\sec^{-1}"},{value:"\\csc^{-1}"},{value:"\\arcsin a"},{value:"\\arccos a"},{value:"\\arctan a"},{value:"\\operatorname{arccot} a"},{value:"\\operatorname{arcsec} a"},{value:"\\operatorname{arccsc} a"}]},{name:"双曲函数 Hyperblic functions",data:[{value:"\\sinh a"},{value:"\\cosh a"},{value:"\\tanh a"},{value:"\\coth a"},{value:"\\operatorname{sech} a"},{value:"\\operatorname{csch} a"}]},{name:"反双曲函数 Inverse hyperbolic functions",data:[{value:"\\sinh^{-1}"},{value:"a\\cosh^{-1} a"},{value:"\\tanh^{-1} a"},{value:"\\coth^{-1} a"},{value:"\\operatorname{sech}^{-1} a"},{value:"\\operatorname{csch}^{-1} a"}]}]},{name:"积分运算",value:"\\int_{a}^{b}",children:[{name:"积分 Integral",data:[{value:"\\int"},{value:"\\int_{a}^{b}"},{value:"\\int\\limits_{a}^{b}"}]},{name:"双重积分 Double integral",data:[{value:"\\iint"},{value:"\\iint_{a}^{b} "},{value:"\\iint\\limits_{a}^{b} "}]},{name:"三重积分 Triple integral",data:[{value:"\\iiint"},{value:"\\iiint_{a}^{b}"},{value:"\\iiint\\limits_{a}^{b} "}]},{name:"曲线积分 Closed line or path integral",data:[{value:"\\oint"},{value:"\\oint_{a}^{b} "}]}]},{name:"大型运算",value:"\\sum_{a}^{b}",children:[{name:"求和 Summation",data:[{value:"\\sum"},{value:"\\sum_{a}^{b}"},{value:"{\\textstyle \\sum_{a}^{b}} "}]},{name:"乘积余积 Product and coproduct",data:[{value:"\\prod"},{value:"\\prod_{a}^{b}"},{value:"{\\textstyle \\prod_{a}^{b}}"},{value:"\\coprod"},{value:"\\coprod_{a}^{b}"},{value:"{\\textstyle \\coprod_{a}^{b}} "}]},{name:"并集交集 Union and intersection",data:[{value:"\\bigcup"},{value:"\\bigcup_{a}^{b}"},{value:"{\\textstyle \\bigcup_{a}^{b}}"},{value:"\\bigcap"},{value:"\\bigcap_{a}^{b}"}]},{name:"析取合取 Disjunction and conjunction",data:[{value:"\\bigvee"},{value:"\\bigvee_{a}^{b}"},{value:"\\bigwedge"},{value:"\\bigwedge_{a}^{b}"}]}]},{name:"括号取整",value:"\\left [ \\left ( \\right ) \\right ] ",children:[{name:"括号 Brackets",data:[{value:"\\left ( \\right )"},{value:"\\left [ \\right ]"},{value:"\\left \\langle \\right \\rangle "},{value:"\\left | \\right | "},{value:"\\left \\lfloor \\right \\rfloor "},{value:"\\left \\lceil \\right \\rceil "}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"$$".concat(a.value,"$$")}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return m(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})},{key:"2",label:"公式模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"代数",value:"\\sqrt{a^2+b^2}",children:[{data:[{value:"\\left(x-1\\right)\\left(x+3\\right) "},{value:"\\sqrt{a^2+b^2}"},{value:"\\left ( \\frac{a}{b}\\right )^{n}= \\frac{a^{n}}{b^{n}}"},{value:"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd} "},{value:"\\frac{x^{2}}{a^{2}}-\\frac{y^{2}}{b^{2}}=1 "},{value:"\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0 "},{value:"\\sqrt[n]{a^{n}}=\\left ( \\sqrt[n]{a}\\right )^{n} "},{value:"x ={-b \\pm \\sqrt{b^2-4ac}\\over 2a} "},{value:"y-y_{1}=k \\left( x-x_{1}\\right) "},{value:"\\left\\{\\begin{matrix} \r\n x=a + r\\text{cos}\\theta \\ \r\n y=b + r\\text{sin}\\theta \r\n\\end{matrix}\\right. "},{value:"\\begin{array}{l} \r\n \\text{对于方程形如:}x^{3}-1=0 \\ \r\n \\text{设}\\text{:}\\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{1}=1,x_{2}= \\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{3}= \\omega ^{2}=\\frac{-1-\\sqrt{3}i}{2} \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\left\\{\\begin{matrix} \r\n \\Delta \\gt 0\\text{方程有两个不相等的实根} \\ \r\n \\Delta = 0\\text{方程有两个相等的实根} \\ \r\n \\Delta \\lt 0\\text{方程无实根} \r\n\\end{matrix}\\right. \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\mathop{{x}}\\nolimits_{{1,2}}=\\frac{{-b \\pm \r\n \\sqrt{{\\mathop{{b}}\\nolimits^{{2}}-4ac}}}}{{2a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}+\\mathop{{x}}\\nolimits_{{2}}=-\\frac{{b}}{{a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}\\mathop{{x}}\\nolimits_{{2}}=\\frac{{c}}{{a}} \r\n\\end{array} "}]}]},{name:"几何",value:"\\Delta A B C ",children:[{data:[{value:"\\Delta A B C "},{value:"a \\parallel c,b \\parallel c \\Rightarrow a \\parallel b "},{value:"l \\perp \\beta ,l \\subset \\alpha \\Rightarrow \\alpha \\perp \\beta"},{value:"\\left.\\begin{matrix} \r\n a \\perp \\alpha \\ \r\n b \\perp \\alpha \r\n\\end{matrix}\\right\\}\\Rightarrow a \\parallel b"},{value:"P \\in \\alpha ,P \\in \\beta , \\alpha \\cap \\beta =l \\Rightarrow P \\in l "},{value:"\\alpha \\perp \\beta , \\alpha \\cap \\beta =l,a \\subset \\alpha ,a \\perp l \r\n \\Rightarrow a \\perp \\beta "},{value:"\\left.\\begin{matrix} \r\n a \\subset \\beta ,b \\subset \\beta ,a \\cap b=P \\ \r\n a \\parallel \\partial ,b \\parallel \\partial \r\n\\end{matrix}\\right\\}\\Rightarrow \\beta \\parallel \\alpha "},{value:"\\alpha \\parallel \\beta , \\gamma \\cap \\alpha =a, \\gamma \\cap \\beta =b \\Rightarrow a \\parallel b "},{value:"A \\in l,B \\in l,A \\in \\alpha ,B \\in \\alpha \\Rightarrow l \\subset \\alpha "},{value:"\\left.\\begin{matrix} \r\n m \\subset \\alpha ,n \\subset \\alpha ,m \\cap n=P \\ \r\n a \\perp m,a \\perp n \r\n\\end{matrix}\\right\\}\\Rightarrow a \\perp \\alpha "},{value:"\\begin{array}{c} \r\n \\text{直角三角形中,直角边长a,b,斜边边长c} \\ \r\n a^{2}+b^{2}=c^{2} \r\n\\end{array}"}]}]},{name:"不等式",value:"a > b",children:[{data:[{value:"a > b,b > c \\Rightarrow a > c "},{value:"a > b,c > d \\Rightarrow a+c > b+d "},{value:"a > b > 0,c > d > 0 \\Rightarrow ac bd "},{value:"\\begin{array}{c} \r\n a \\gt b,c \\gt 0 \\Rightarrow ac \\gt bc \\ \r\n a \\gt b,c \\lt 0 \\Rightarrow ac \\lt bc \r\n\\end{array}"},{value:"\\left | a-b \\right | \\geqslant \\left | a \\right | -\\left | b \\right | "},{value:"-\\left | a \\right |\\leq a\\leqslant \\left | a \\right | "},{value:"\\left | a \\right |\\leqslant b \\Rightarrow -b \\leqslant a \\leqslant \\left | b \\right | "},{value:"\\left | a+b \\right | \\leqslant \\left | a \\right | + \\left | b \\right | "},{value:"\\begin{array}{c} \r\n a \\gt b \\gt 0,n \\in N^{\\ast},n \\gt 1 \\ \r\n \\Rightarrow a^{n}\\gt b^{n}, \\sqrt[n]{a}\\gt \\sqrt[n]{b} \r\n\\end{array}"},{value:"\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2}\\leq \r\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right) "},{value:"\\begin{array}{c} \r\n a,b \\in R^{+} \\ \r\n \\Rightarrow \\frac{a+b}{{2}}\\ge \\sqrt{ab} \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n a,b \\in R \\ \r\n \\Rightarrow a^{2}+b^{2}\\gt 2ab \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n H_{n}=\\frac{n}{\\sum \\limits_{i=1}^{n}\\frac{1}{x_{i}}}= \\frac{n}{\\frac{1}{x_{1}}+ \\frac{1}{x_{2}}+ \\cdots + \\frac{1}{x_{n}}} \\ G_{n}=\\sqrt[n]{\\prod \\limits_{i=1}^{n}x_{i}}= \\sqrt[n]{x_{1}x_{2}\\cdots x_{n}} \\ A_{n}=\\frac{1}{n}\\sum \\limits_{i=1}^{n}x_{i}=\\frac{x_{1}+ x_{2}+ \\cdots + x_{n}}{n} \\ Q_{n}=\\sqrt{\\sum \\limits_{i=1}^{n}x_{i}^{2}}= \\sqrt{\\frac{x_{1}^{2}+ x_{2}^{2}+ \\cdots + x_{n}^{2}}{n}} \\ H_{n}\\leq G_{n}\\leq A_{n}\\leq Q_{n} \r\n\\end{array}"}]}]},{name:"积分",value:"\\frac{\\mathrm{d}\\partial}{\\partial x}",children:[{data:[{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}x^n=nx^{n-1} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}e^{ax}=a\\,e^{ax} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\ln(x)=\\frac{1}{x} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\sin x=\\cos x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cos x=-\\sin x "},{value:"\\int k\\mathrm{d}x = kx+C "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\tan x=\\sec^2 x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cot x=-\\csc^2 x "},{value:"\\int \\frac{1}{x}\\mathrm{d}x= \\ln \\left| x \\right| +C "},{value:"\\int \\frac{1}{\\sqrt{1-x^{2}}}\\mathrm{d}x= \\arcsin x +C "},{value:"\\int \\frac{1}{1+x^{2}}\\mathrm{d}x= \\arctan x +C "},{value:"\\int u \\frac{\\mathrm{d}v}{\\mathrm{d}x}\\,\\mathrm{d}x=uv-\\int \\frac{\\mathrm{d}u}{\\mathrm{d}x}v\\,\\mathrm{d}x "},{value:"f(x) = \\int_{-\\infty}^\\infty \\hat f(x)\\xi\\,e^{2 \\pi i \\xi x} \\,\\mathrm{d}\\xi "},{value:"\\int x^{\\mu}\\mathrm{d}x=\\frac{x^{\\mu +1}}{\\mu +1}+C, \\left({\\mu \\neq -1}\\right) "}]}]},{name:"三角",value:"e^{i \\theta}",children:[{name:"求和 Summation",data:[{value:"e^{i \\theta} "},{value:"\\left(\\frac{\\pi}{2}-\\theta \\right ) "},{value:"\\text{sin}^{2}\\frac{\\alpha}{2}=\\frac{1- \\text{cos}\\alpha}{2} "},{value:"\\text{cos}^{2}\\frac{\\alpha}{2}=\\frac{1+ \\text{cos}\\alpha}{2} "},{value:"\\text{tan}\\frac{\\alpha}{2}=\\frac{\\text{sin}\\alpha}{1+ \\text{cos}\\alpha} "},{value:"\\sin \\alpha + \\sin \\beta =2 \\sin \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\sin \\alpha - \\sin \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha + \\cos \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha - \\cos \\beta =-2\\sin \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"a^{2}=b^{2}+c^{2}-2bc\\cos A "},{value:"\\frac{\\sin A}{a}=\\frac{\\sin B}{b}=\\frac{\\sin C}{c}=\\frac{1}{2R} "},{value:"\\sin \\left ( \\frac{\\pi}{2}-\\alpha \\right ) = \\cos \\alpha "},{value:"\\sin \\left ( \\frac{\\pi}{2}+\\alpha \\right ) = \\cos \\alpha "}]}]},{name:"统计",value:"C_{r}^{n}",children:[{data:[{value:"C_{r}^{n} "},{value:"\\frac{n!}{r!(n-r)!} "},{value:"\\sum_{i=1}^{n}{X_i} "},{value:"\\sum_{i=1}^{n}{X_i^2} "},{value:"X_1, \\cdots,X_n "},{value:"\\frac{x-\\mu}{\\sigma} "},{value:"\\sum_{i=1}^{n}{(X_i - \\overline{X})^2} "},{value:"\\begin{array}{c} \r\n \\text{若}P \\left( AB \\right) =P \\left( A \\right) P \\left( B \\right) \\\\ \r\n \\text{则}P \\left( A \\left| B\\right. \\right) =P \\left({B}\\right) \r\n\\end{array}"},{value:"P(E) ={n \\choose k}p^k (1-p)^{n-k} "},{value:"P \\left( A \\right) = \\lim \\limits_{n \\to \\infty}f_{n}\\left ( A \\right ) "},{value:"P \\left( \\bigcup \\limits_{i=1}^{+ \\infty}A_{i}\\right) = \\prod \\limits_{i=1}^{+ \\infty}P{\\left( A_{i}\\right)} "},{value:"\\begin{array}{c} \r\n P \\left( \\emptyset \\right) =0 \\\\ \r\n P \\left( S \\right) =1 \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n \\forall A \\in S \\\\ \r\n P \\left( A \\right) \\ge 0 \r\n\\end{array}"},{value:"P \\left( \\bigcup \\limits_{i=1}^{n}A_{i}\\right) = \\prod \\limits_{i=1}^{n}P \\left( A_{i}\\right) "},{value:"\\begin{array}{c} \r\n S= \\binom{N}{n},A_{k}=\\binom{M}{k}\\cdot \\binom{N-M}{n-k} \\\\ \r\n P\\left ( A_{k}\\right ) = \\frac{\\binom{M}{k}\\cdot \\binom{N-M}{n-k}}{\\binom{N}{n}} \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n P_{n}=n! \\\\ \r\n A_{n}^{k}=\\frac{n!}{\\left( n-k \\left) !\\right. \\right.} \r\n\\end{array}"}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[a.name&&(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return m(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})}],x=function(){var a=document.createElement("div");a.innerHTML=h.current.getValue();var e=a.innerText;return t&&t(e),e};return(0,n.useImperativeHandle)(e,(function(){return{getData:x}})),(0,s.jsxs)("div",{className:u.Z.mathWrap,children:[(0,s.jsx)(i.Z,{defaultActiveKey:"1",items:f}),(0,s.jsx)("math-field",{locale:"zh_cn",className:u.Z.mathField,placeholder:"请打开键盘,输入公式",ref:h,style:{width:800,marginTop:30,fontSize:18},children:p||""}),d&&(0,s.jsx)("div",{className:u.Z.button,children:(0,s.jsx)(c.ZP,{size:"large",onClick:x,style:{zIndex:8,marginTop:10},type:"primary",children:"保存到编辑器"})})]})}));e.Z=d},90758:function(a,e,t){var n=t(82242),r=t.n(n),l=(t(59301),t(93314)),i=t(3113),c=t(37712);e.Z=function(a){var e=a.img,t=a.buttonProps,n=void 0===t?{}:t,o=a.styles,u=void 0===o?{}:o,s=a.customText,d=a.ButtonText,v=a.ButtonClick,p=a.Buttonclass,h=a.ButtonTwo,m=a.imgStyles,f=a.loading,x=void 0!==f&&f;return(0,c.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:x?"hidden":"visible"}),u),children:[(0,c.jsx)("img",{src:e||l,style:r()(r()({},m),{},{pointerEvents:"none",userSelect:"none"})}),(0,c.jsx)("p",{className:"mt20 font14",children:s||"暂时还没有相关数据哦!"}),d&&(0,c.jsx)(i.ZP,r()(r()({className:p,onClick:v},n),{},{children:d})),h&&h]})}},53399:function(a,e,t){t.d(e,{Z:function(){return k}});var n=t(82242),r=t.n(n),l=t(7557),i=t.n(l),c=t(41498),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},p=t(3113),h=t(74516),m=t(29697),f=t(6848),x=t(26453),g=t(17705),b=t(90758),_=t(87799),y=t(29530),w=t(37712),k=function(a){var e,t,n,l,c,u,k=a.editOffice,j=void 0===k?"view":k,A=a.data,Z=(a.theme,a.type),P=a.filename,R=a.monacoEditor,E=a.className,q=a.style,N=a.close,C=a.onClose,S=a.hasMask,I=a.disabledDownload,T=a.onImgDimensions,O=a.showNodata,B=a.recordInfo,L=(0,d.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),D=s()(L,2),M=(D[0],D[1],(0,d.useState)("")),z=s()(M,2),$=(z[0],z[1]),F=(0,d.useState)(),H=s()(F,2),V=H[0],W=H[1],J="build"===window.ENV?"/react/build":"",X=location.host.startsWith("localhost")?_.Z.PROXY_SERVER:_.Z.API_SERVER,U=(0,d.useRef)();null!==(e=A)&&void 0!==e&&e.startsWith("/api")&&"txt"!==Z&&(A=_.Z.API_SERVER+A);P&&(R.filename=P),(0,d.useEffect)((function(){var a,e=null===(a=document.cookie)||void 0===a||null===(a=a.replace(/\s/g,""))||void 0===a?void 0:a.split(";");null==e||e.map((function(a){var e=a.split("=");"_educoder_session"===e[0]&&$(e[1])}))}),[]),(0,d.useEffect)((function(){var a;"office"===Z&&(A.indexOf("bigfilescdn.")>-1||A.indexOf("bigfiles1")>-1?W({url:A,fileType:(a=A,a.substring(a.lastIndexOf("/")+1).split(".").pop()),model:A.indexOf("model=edit")?"edit":"view"}):G())}),[Z,A]);var G=function(){var a=o()(i()().mark((function a(){var e,t,n;return i()().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return console.log("data:",A),e=A,A.startsWith("http")||(e=location.origin+e),t=new URL(e).pathname.split("/").pop(),a.next=6,(0,g.gJ)({attachment_id:t});case 6:(n=a.sent).url=X+n.url,W(n);case 9:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}(),K=function(){A.startsWith("http")||A.startsWith("blob:")?Q():(0,x.Sv)(P||"educoder",A,P)},Q=function(){B&&(0,y.fc)({id:null==B?void 0:B.id,watch_type:1,course_id:null==B?void 0:B.course_id}),(0,x.Nd)(P||"educoder",decodeURIComponent(A))};return(0,w.jsxs)("div",{style:r()({},q||{}),className:"".concat(S&&v.bgBlack," ").concat(Z?v.wrp:"hide"),children:[N&&(0,w.jsxs)("div",{className:v.close,ref:U,children:[!!T&&(0,w.jsx)(f.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:function(){C(),T()},children:(0,w.jsx)("i",{className:"icon-yulanpizhu"})})}),!I&&(0,w.jsx)(f.Z,{title:"点击下载此文件",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:Q,children:(0,w.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,w.jsx)(f.Z,{title:"关闭",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{className:"",onClick:C,children:(0,w.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,w.jsx)("div",{className:"".concat(v[E]," ").concat(E," ").concat(v.monaco," ").concat("txt"===Z?"show":"hide"),children:"txt"===Z&&(0,w.jsx)(w.Fragment,{children:(0,w.jsx)(m.ZP,r()({},R))})}),"audio"===Z&&(0,w.jsx)("audio",{src:"".concat((null===(t=A)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(n=A)||void 0===n?void 0:n.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(A),autoPlay:!0}),"video"===Z&&(0,w.jsx)(w.Fragment,{children:(null===(l=A)||void 0===l?void 0:l.indexOf("http"))>-1?(0,w.jsx)("video",{controls:!0,src:"".concat(A),autoPlay:!0}):(0,w.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(A),autoPlay:!0})}),"office"===Z&&V&&(0,w.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(V.key,"&url=").concat(btoa(V.url),"&callbackUrl=").concat(X+V.callbackUrl,"&fileType=").concat(V.fileType,"&title=").concat(V.title,"&model=").concat(j,"&officeServer=").concat(_.Z.ONLYOFFICE,"&disabledDownload=").concat(!!I)}),"html"===Z&&(0,w.jsx)("iframe",{src:A+"&disposition=inline"}),"pdf"===Z&&(0,w.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?url=").concat(encodeURIComponent(A),"&disabledDownload=").concat(!!I)}),"image"===Z&&(0,w.jsx)("img",{src:"".concat((null===(c=A)||void 0===c?void 0:c.indexOf("http://"))>-1||(null===(u=A)||void 0===u?void 0:u.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(A)}),("other"===Z||"download"===Z)&&(0,w.jsx)(w.Fragment,{children:O?(0,w.jsx)(b.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,w.jsx)(p.ZP,{icon:(0,w.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:K,children:"下载"})}):(0,w.jsxs)(p.ZP,{type:"primary",size:"middle",onClick:K,children:[(0,w.jsx)(h.Z,{}),"点击下载"]})})]})}},49519:function(a,e,t){t.d(e,{z:function(){return w}});var n=t(82242),r=t.n(n),l=t(37205),i=t.n(l),c=t(91232),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v=(t(17014),t(60415)),p=(t(64018),t(36422)),h=t(87799),m=t(26453),f=t(15342),x=t(1012),g=t(53399),b=t(37712),_="@▁@",y=/]*>/g;var w=function(a,e){a=a||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return e?a.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,m.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):a=a.replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,m.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+l+i+l+i+"&t="+(0,m.Jn)(l,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return"("+h.Z.API_SERVER+"/files/uploads/"+l+i+l+i+"&t="+(0,m.Jn)(l,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};e.Z=function(a){var e=a.value,t=void 0===e?"":e,n=a.className,l=a.showTextOnly,c=a.showLines,u=a.style,m=void 0===u?{}:u,w=a.stylesPrev,k=void 0===w?{}:w,j=a.highlightKeywords,A=a.showProgramFill,Z=(a.isProgramFill,a.disabledFill),P=void 0!==Z&&Z,R=a.programFillValue,E=a.onFillChange,q=void 0===E?function(a){}:E,N=a.onFillBlur,C=void 0===N?function(){}:N,S=String(t),I=(0,d.useState)(""),T=s()(I,2),O=T[0],B=T[1],L=(0,d.useState)("office"),D=s()(L,2),M=D[0],z=D[1],$=(0,d.useState)([]),F=s()($,2),H=F[0],V=F[1],W=(0,d.useRef)("a"+(0,x.Z)()),J={};var X=function(a){return a.replace(/([\s\S]+?)<\/style>/gim,(function(a,e){var t=e.replace(/(\n|\r)/g,"").split("}"),n=[];return t.map((function(a){""!=a&&n.push(".".concat(W.current," ").concat(a))})),"")}))},U=(0,d.useMemo)((function(){try{S=S.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(a){}if(A){var a=-1;return S=S.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(e,t,n){var r;return function(a,e,t){var n=document.createElement(a===_?"input":"textarea");n.style.width="100%",n.style.height=a===_?"40px":"151px",n.rows=5,n.spellcheck=!1,n.name="edu-program-fill",n.placeholder="请输入",n.dataset.id=e;var r=Object.keys(J).length;return J[r]=n,'')}(e,++a,null==R||null===(r=R[a])||void 0===r?void 0:r.value)})),'
'.concat(X(S||""),"
")}var e=X(S);e=(0,v.ZP)(e);var t=(0,v.ez)();S.match(/\[TOC\]/)&&(e=e.replace("

[TOC]

",(0,v.Qv)()),(0,v.Iy)()),e=e.replace(/(__special_katext_id_\d+__)/g,(function(a,e){var n=t[e],r=n.type,l=n.expression;return(0,f.renderToString)(function(a){var e=document.createElement("div");return e.innerHTML=a,0===e.childNodes.length?"":e.childNodes[0].nodeValue}(l)||"",{displayMode:"block"===r,throwOnError:!1,output:"html"})})),e=e.replace(/▁/g,"▁▁▁▁▁"),(0,v.AL)();var n=document.createElement("div");return n.innerHTML=e,l?n.innerText:j?(Q(n,j.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n.innerHTML):(setTimeout((function(){return ea()}),500),n.innerHTML)}),[S,j]);(0,d.useEffect)((function(){Y.current&&Y.current.querySelectorAll(["input","textarea"]).forEach((function(a){a.oninput=G,a.onblur=K}))}),[H]),(0,d.useEffect)((function(){if(null!=R&&R.length)try{var a,e=Y.current.querySelectorAll(".edu-program-fill-score"),t=Y.current.querySelectorAll('[name="edu-program-fill"]'),n=o()(t.entries());try{for(n.s();!(a=n.n()).done;){var r,l,i,c=s()(a.value,2),u=c[0],d=c[1];d.value=(null==R||null===(r=R[u])||void 0===r?void 0:r.value)||"","warning"===(null==R||null===(l=R[u])||void 0===l?void 0:l.type)?d.className="program-fill-warning":"success"===(null==R||null===(i=R[u])||void 0===i?void 0:i.type)?d.className="program-fill-success":d.className=""}}catch(a){n.e(a)}finally{n.f()}var v,p=o()(e.entries());try{for(p.s();!(v=p.n()).done;){var h,m,f=s()(v.value,2),x=f[0];f[1].innerHTML=null!=R&&null!==(h=R[x])&&void 0!==h&&h.score?"".concat(null==R||null===(m=R[x])||void 0===m?void 0:m.score,"分"):""}}catch(a){p.e(a)}finally{p.f()}V(R)}catch(a){console.log(a,"error")}}),[R]);var G=function(a){H[a.target.dataset.id]=H[a.target.dataset.id]||{},H[a.target.dataset.id].value=a.target.value,V(i()(H)),q(H,a.target.dataset.id)},K=function(a){H[a.target.dataset.id]=H[a.target.dataset.id]||{},H[a.target.dataset.id].value=a.target.value,V(i()(H)),C(H,a.target.dataset.id)};function Q(a,e){return a.childNodes.forEach((function(a){if(a.childNodes.length>0)Q(a,e);else if("IMG"!==a.nodeName)if(a.innerHTML){var t;a.innerHTML=null===(t=a.innerHTML)||void 0===t?void 0:t.replace(new RegExp(e,"gi"),'$&')}else{var n=document.createElement("span");n.innerHTML=a.textContent.replace(new RegExp(e,"gi"),'$&'),a.replaceWith(n)}}))}var Y=(0,d.useRef)();function aa(a){var e=a.target;if("A"===e.tagName.toUpperCase()){var t=e.getAttribute("href");if(t.indexOf("office")>-1)a.preventDefault(),B(t),z("office");else if(t.indexOf("application/pdf")>-1)a.preventDefault(),B(t),z("pdf");else if(t.indexOf("text/html")>-1)a.preventDefault(),B(t),z("html");else if(t.startsWith("#")){a.preventDefault();var n=document.getElementById(t.replace("#",""));n&&n.scrollIntoView(!0)}}}v.jb.WebkitLineClamp=c,c&&(m=r()(r()({},m),v.jb));var ea=function(){var a,e=null===(a=Y.current)||void 0===a?void 0:a.querySelectorAll("video");null==e||e.forEach((function(a){if(a.oncontextmenu=function(){return!1},a.src.indexOf(".m3u8")>-1)if(a.canPlayType("application/vnd.apple.mpegurl"));else if(p.ZP.isSupported()){var e=new p.ZP;e.loadSource(a.src),e.attachMedia(a)}}))};return(0,d.useEffect)((function(){if(Y.current&&U&&U.match(y)&&window.PR.prettyPrint(),Y.current)return Y.current.addEventListener("click",aa),function(){var a;null===(a=Y.current)||void 0===a||a.removeEventListener("click",aa),(0,v.AL)(),(0,v.Iy)()}}),[U,Y.current,aa]),(0,b.jsxs)(b.Fragment,{children:[l&&(0,b.jsx)("div",{ref:Y,children:U}),!l&&(0,b.jsx)("div",{ref:Y,style:r()({},m),className:"".concat(n||""," ").concat(P?"disabled-fill":""," markdown-body ").concat(W.current),dangerouslySetInnerHTML:{__html:U}}),(0,b.jsx)(g.Z,{close:!0,data:O,type:null!=O&&O.length?M:"",style:r()({},k),onClose:function(){return B("")}})]})}},60415:function(a,e,t){t.d(e,{AL:function(){return w},Iy:function(){return v},Qv:function(){return m},ez:function(){return y},jb:function(){return p}});var n=t(79800),r=t.n(n),l=t(32834),i=t.n(l),c=t(11690);var o=[],u=["
    "],s=new(i().Renderer),d=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function v(){o.length=0,u=["
      "]}var p={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function h(a,e,t,n){if(e>=a.length||a[e].level<=t)return e;var r=a[e];n.push("
    • "+r.text+"");var l=[];return e=h(a,++e,r.level,l),l.length>0&&(n.push("
        "),l.forEach((function(a){n.push(a)})),n.push("
      ")),n.push("
    • "),e=h(a,e,t,n)}function m(){return h(o,0,0,u),u.push("
    "),u.join("")}var f={heading:function(a){var e=d.exec(a);if(e)return{type:"heading",raw:e[0],depth:e[1].length,text:e[2]}},fences:function(a){var e=this.rules.block.fences.exec(a);if(e){var t=e[0],n=function(a,e){var t=a.match(/^(\s+)(?:```)/);if(null===t)return e;var n=t[1];return e.split("\n").map((function(a){var e=a.match(/^\s+/);return null===e?a:r()(e,1)[0].length>=n.length?a.slice(n.length):a})).join("\n")}(t,e[3]||""),l=e[2]?e[2].trim():e[2];if(["latex","katex","math"].indexOf(l)>=0){var i=b(),c=n;n=i,_[i]={type:"block",expression:c}}return{type:"code",raw:t,lang:l,text:n}}}},x=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,b=function(){return"__special_katext_id_".concat(g++,"__")},_={};function y(){return _}function w(){g=0,_={}}function k(a){return a=a.replace(x,(function(a,e){var t=b();return _[t]={type:"inline",expression:e},t}))}var j=s.listitem;s.listitem=function(a){return j(k(a))};var A=s.paragraph;s.paragraph=function(a){return A(k(a))};var Z=s.tablecell;s.tablecell=function(a,e){return Z(k(a),e)},s.code=function(a,e,t){var n=(e||"").match(/\S*/)[0];return n?["latex","katex","math"].indexOf(n)>=0?"

    ".concat(a,"

    "):'
    ').concat(t?a:(0,c.escape)(a,!0),"
    \n"):'
    '+(t?a:(0,c.escape)(a,!0))+"
    "},s.heading=function(a,e,t){var n=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return o.push({anchor:n,level:e,text:a}),"'+a+""},i().setOptions({silent:!0,gfm:!0,pedantic:!1}),i().use({tokenizer:f,renderer:s}),e.ZP=i()},18955:function(a,e){e.Z={lists:"lists___xhHyq",item:"item___pWJAA",children:"children___sDG61",diamond:"diamond___FwgzD",button:"button___WPN6r",mathWrap:"mathWrap___FmnMJ",mathFillWrap:"mathFillWrap___PmY3H"}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[95426],{95426:function(a,e,t){var n=t(59301),r=t(95237),l=t(43604),i=t(99313),c=t(3113),o=t(49519),u=t(18955),s=(t(48136),t(37712)),d=(0,n.forwardRef)((function(a,e){var t=a.callback,d=a.showSaveButton,v=a.value,p=void 0===v?"":v,h=(0,n.useRef)(),m=function(a){h.current.setValue(h.current.getValue()+" "+a.value+" ")},f=[{key:"1",label:"快捷模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"分数得分",value:"\\frac{x}{y}",children:[{name:"分数 Fractions",data:[{value:"\\frac{a}{b}"},{value:"x\\tfrac{x}{a} "},{value:"\\mathrm{d}t"},{value:"\\partial t"},{value:"\\frac{\\partial y}{\\partial x}"},{value:"\\nabla\\psi"},{value:"\\frac{\\partial^2}{\\partial x_1\\partial x_2}y"},{value:"\\cfrac{1}{a + \\cfrac{7}{b + \\cfrac{2}{9}}} = c"}]},{name:"导数 Derivative",data:[{value:"\\dot{a} "},{value:"\\ddot{a}"},{value:"{f}^{\\prime}"},{value:"{f}^{\\prime\\prime}"},{value:"{f}^{(n)}"}]},{name:"模算术 Modular arithmetic",data:[{value:"a \\bmod b"},{value:"a \\equiv b \\pmod{m} "},{value:"\\gcd(m, n) "},{value:"\\operatorname{lcm}(m, n) "}]}]},{name:"根式角标",value:"\\sqrt{x}",children:[{name:"根式 Radicals",data:[{value:"\\sqrt{x}"},{value:"\\sqrt[y]{x}"}]},{name:"上下标 Sub&Super",data:[{value:"x^{a}"},{value:"x_{a}"},{value:"x_{a}^{b} "},{value:"_{a}^{b} x"},{value:"x_{a}^{b} "}]},{name:"重音符及其他 Accents and Others",data:[{value:"\\hat{a} "},{value:"\\sqrt[y]{x}"},{value:"\\check{} "},{value:"\\grave{a} "},{value:"\\acute{a}"},{value:"\\tilde{a}"},{value:"\\breve{a}"},{value:"\\bar{a}"},{value:"\\vec{a}"},{value:"\\not{a}"},{value:"\\widetilde{abc}"},{value:"\\widehat{abc}"},{value:"\\overleftarrow{abc} "},{value:"\\overrightarrow{abc}"},{value:"\\overline{abc}"},{value:"\\underline{abc}"},{value:"\\overbrace{abc}"},{value:"\\underbrace{abc}"},{value:"\\overset{a}{abc}"},{value:"\\underset{a}{abc} \\stackrel\\frown{ab}"},{value:"\\overline{ab} "},{value:"\\overleftrightarrow{ab}"},{value:"\\overset{a}{\\leftarrow}"},{value:"\\overset{a}{\\rightarrow}"},{value:"\\xleftarrow[abc]{a}"},{value:"\\xrightarrow[abc]{a} "}]}]},{name:"极限对数",value:"\\lim_{x \\to 0}",children:[{name:"极限 Limits",data:[{value:"\\lim a"},{value:"\\lim_{x \\to 0}"},{value:"\\lim_{x \\to \\infty}"},{value:"\\max_b{a}"},{value:"\\min_a{b}"}]},{name:"对数指数 Logarithms and exponentials",data:[{value:"\\log_{a}{b}"},{value:"\\lg_{a}{b}"},{value:"\\ln_{a}{b}"},{value:"\\exp a"}]},{name:"界限 Bounds",data:[{value:"\\min x"},{value:"\\sup t"},{value:"\\inf s"},{value:"\\lim u"},{value:"\\limsup w"},{value:"\\dim p"},{value:"\\ker\\phi "}]}]},{name:"三角函数",value:"\\sin a",children:[{name:"三角函数 Trigonometric functions",data:[{value:"\\sin a"},{value:"\\cos a"},{value:"\\tan a"},{value:"\\cot a "},{value:"\\sec a "},{value:"\\csc a "}]},{name:"反三角函数 Inverse trigonometric functions",data:[{value:"\\sin^{-1}"},{value:"\\cos^{-1}"},{value:"\\tan^{-1}"},{value:"\\cot^{-1}"},{value:"\\sec^{-1}"},{value:"\\csc^{-1}"},{value:"\\arcsin a"},{value:"\\arccos a"},{value:"\\arctan a"},{value:"\\operatorname{arccot} a"},{value:"\\operatorname{arcsec} a"},{value:"\\operatorname{arccsc} a"}]},{name:"双曲函数 Hyperblic functions",data:[{value:"\\sinh a"},{value:"\\cosh a"},{value:"\\tanh a"},{value:"\\coth a"},{value:"\\operatorname{sech} a"},{value:"\\operatorname{csch} a"}]},{name:"反双曲函数 Inverse hyperbolic functions",data:[{value:"\\sinh^{-1}"},{value:"a\\cosh^{-1} a"},{value:"\\tanh^{-1} a"},{value:"\\coth^{-1} a"},{value:"\\operatorname{sech}^{-1} a"},{value:"\\operatorname{csch}^{-1} a"}]}]},{name:"积分运算",value:"\\int_{a}^{b}",children:[{name:"积分 Integral",data:[{value:"\\int"},{value:"\\int_{a}^{b}"},{value:"\\int\\limits_{a}^{b}"}]},{name:"双重积分 Double integral",data:[{value:"\\iint"},{value:"\\iint_{a}^{b} "},{value:"\\iint\\limits_{a}^{b} "}]},{name:"三重积分 Triple integral",data:[{value:"\\iiint"},{value:"\\iiint_{a}^{b}"},{value:"\\iiint\\limits_{a}^{b} "}]},{name:"曲线积分 Closed line or path integral",data:[{value:"\\oint"},{value:"\\oint_{a}^{b} "}]}]},{name:"大型运算",value:"\\sum_{a}^{b}",children:[{name:"求和 Summation",data:[{value:"\\sum"},{value:"\\sum_{a}^{b}"},{value:"{\\textstyle \\sum_{a}^{b}} "}]},{name:"乘积余积 Product and coproduct",data:[{value:"\\prod"},{value:"\\prod_{a}^{b}"},{value:"{\\textstyle \\prod_{a}^{b}}"},{value:"\\coprod"},{value:"\\coprod_{a}^{b}"},{value:"{\\textstyle \\coprod_{a}^{b}} "}]},{name:"并集交集 Union and intersection",data:[{value:"\\bigcup"},{value:"\\bigcup_{a}^{b}"},{value:"{\\textstyle \\bigcup_{a}^{b}}"},{value:"\\bigcap"},{value:"\\bigcap_{a}^{b}"}]},{name:"析取合取 Disjunction and conjunction",data:[{value:"\\bigvee"},{value:"\\bigvee_{a}^{b}"},{value:"\\bigwedge"},{value:"\\bigwedge_{a}^{b}"}]}]},{name:"括号取整",value:"\\left [ \\left ( \\right ) \\right ] ",children:[{name:"括号 Brackets",data:[{value:"\\left ( \\right )"},{value:"\\left [ \\right ]"},{value:"\\left \\langle \\right \\rangle "},{value:"\\left | \\right | "},{value:"\\left \\lfloor \\right \\rfloor "},{value:"\\left \\lceil \\right \\rceil "}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"$$".concat(a.value,"$$")}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return m(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})},{key:"2",label:"公式模板",children:(0,s.jsx)(r.Z,{className:u.Z.lists,gutter:[10,10],children:[{name:"代数",value:"\\sqrt{a^2+b^2}",children:[{data:[{value:"\\left(x-1\\right)\\left(x+3\\right) "},{value:"\\sqrt{a^2+b^2}"},{value:"\\left ( \\frac{a}{b}\\right )^{n}= \\frac{a^{n}}{b^{n}}"},{value:"\\frac{a}{b}\\pm \\frac{c}{d}= \\frac{ad \\pm bc}{bd} "},{value:"\\frac{x^{2}}{a^{2}}-\\frac{y^{2}}{b^{2}}=1 "},{value:"\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0\\frac{1}{\\sqrt{a}}=\\frac{\\sqrt{a}}{a},a\\ge 0 "},{value:"\\sqrt[n]{a^{n}}=\\left ( \\sqrt[n]{a}\\right )^{n} "},{value:"x ={-b \\pm \\sqrt{b^2-4ac}\\over 2a} "},{value:"y-y_{1}=k \\left( x-x_{1}\\right) "},{value:"\\left\\{\\begin{matrix} \r\n x=a + r\\text{cos}\\theta \\ \r\n y=b + r\\text{sin}\\theta \r\n\\end{matrix}\\right. "},{value:"\\begin{array}{l} \r\n \\text{对于方程形如:}x^{3}-1=0 \\ \r\n \\text{设}\\text{:}\\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{1}=1,x_{2}= \\omega =\\frac{-1+\\sqrt{3}i}{2} \\ \r\n x_{3}= \\omega ^{2}=\\frac{-1-\\sqrt{3}i}{2} \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\left\\{\\begin{matrix} \r\n \\Delta \\gt 0\\text{方程有两个不相等的实根} \\ \r\n \\Delta = 0\\text{方程有两个相等的实根} \\ \r\n \\Delta \\lt 0\\text{方程无实根} \r\n\\end{matrix}\\right. \r\n\\end{array} "},{value:"\\begin{array}{l} \r\n a\\mathop{{x}}\\nolimits^{{2}}+bx+c=0 \\ \r\n \\Delta =\\mathop{{b}}\\nolimits^{{2}}-4ac \\ \r\n \\mathop{{x}}\\nolimits_{{1,2}}=\\frac{{-b \\pm \r\n \\sqrt{{\\mathop{{b}}\\nolimits^{{2}}-4ac}}}}{{2a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}+\\mathop{{x}}\\nolimits_{{2}}=-\\frac{{b}}{{a}} \\ \r\n \\mathop{{x}}\\nolimits_{{1}}\\mathop{{x}}\\nolimits_{{2}}=\\frac{{c}}{{a}} \r\n\\end{array} "}]}]},{name:"几何",value:"\\Delta A B C ",children:[{data:[{value:"\\Delta A B C "},{value:"a \\parallel c,b \\parallel c \\Rightarrow a \\parallel b "},{value:"l \\perp \\beta ,l \\subset \\alpha \\Rightarrow \\alpha \\perp \\beta"},{value:"\\left.\\begin{matrix} \r\n a \\perp \\alpha \\ \r\n b \\perp \\alpha \r\n\\end{matrix}\\right\\}\\Rightarrow a \\parallel b"},{value:"P \\in \\alpha ,P \\in \\beta , \\alpha \\cap \\beta =l \\Rightarrow P \\in l "},{value:"\\alpha \\perp \\beta , \\alpha \\cap \\beta =l,a \\subset \\alpha ,a \\perp l \r\n \\Rightarrow a \\perp \\beta "},{value:"\\left.\\begin{matrix} \r\n a \\subset \\beta ,b \\subset \\beta ,a \\cap b=P \\ \r\n a \\parallel \\partial ,b \\parallel \\partial \r\n\\end{matrix}\\right\\}\\Rightarrow \\beta \\parallel \\alpha "},{value:"\\alpha \\parallel \\beta , \\gamma \\cap \\alpha =a, \\gamma \\cap \\beta =b \\Rightarrow a \\parallel b "},{value:"A \\in l,B \\in l,A \\in \\alpha ,B \\in \\alpha \\Rightarrow l \\subset \\alpha "},{value:"\\left.\\begin{matrix} \r\n m \\subset \\alpha ,n \\subset \\alpha ,m \\cap n=P \\ \r\n a \\perp m,a \\perp n \r\n\\end{matrix}\\right\\}\\Rightarrow a \\perp \\alpha "},{value:"\\begin{array}{c} \r\n \\text{直角三角形中,直角边长a,b,斜边边长c} \\ \r\n a^{2}+b^{2}=c^{2} \r\n\\end{array}"}]}]},{name:"不等式",value:"a > b",children:[{data:[{value:"a > b,b > c \\Rightarrow a > c "},{value:"a > b,c > d \\Rightarrow a+c > b+d "},{value:"a > b > 0,c > d > 0 \\Rightarrow ac bd "},{value:"\\begin{array}{c} \r\n a \\gt b,c \\gt 0 \\Rightarrow ac \\gt bc \\ \r\n a \\gt b,c \\lt 0 \\Rightarrow ac \\lt bc \r\n\\end{array}"},{value:"\\left | a-b \\right | \\geqslant \\left | a \\right | -\\left | b \\right | "},{value:"-\\left | a \\right |\\leq a\\leqslant \\left | a \\right | "},{value:"\\left | a \\right |\\leqslant b \\Rightarrow -b \\leqslant a \\leqslant \\left | b \\right | "},{value:"\\left | a+b \\right | \\leqslant \\left | a \\right | + \\left | b \\right | "},{value:"\\begin{array}{c} \r\n a \\gt b \\gt 0,n \\in N^{\\ast},n \\gt 1 \\ \r\n \\Rightarrow a^{n}\\gt b^{n}, \\sqrt[n]{a}\\gt \\sqrt[n]{b} \r\n\\end{array}"},{value:"\\left( \\sum_{k=1}^n a_k b_k \\right)^{\\!\\!2}\\leq \r\n\\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right) "},{value:"\\begin{array}{c} \r\n a,b \\in R^{+} \\ \r\n \\Rightarrow \\frac{a+b}{{2}}\\ge \\sqrt{ab} \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n a,b \\in R \\ \r\n \\Rightarrow a^{2}+b^{2}\\gt 2ab \\ \r\n \\left( \\text{当且仅当}a=b\\text{时取“}=\\text{”号}\\right) \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n H_{n}=\\frac{n}{\\sum \\limits_{i=1}^{n}\\frac{1}{x_{i}}}= \\frac{n}{\\frac{1}{x_{1}}+ \\frac{1}{x_{2}}+ \\cdots + \\frac{1}{x_{n}}} \\ G_{n}=\\sqrt[n]{\\prod \\limits_{i=1}^{n}x_{i}}= \\sqrt[n]{x_{1}x_{2}\\cdots x_{n}} \\ A_{n}=\\frac{1}{n}\\sum \\limits_{i=1}^{n}x_{i}=\\frac{x_{1}+ x_{2}+ \\cdots + x_{n}}{n} \\ Q_{n}=\\sqrt{\\sum \\limits_{i=1}^{n}x_{i}^{2}}= \\sqrt{\\frac{x_{1}^{2}+ x_{2}^{2}+ \\cdots + x_{n}^{2}}{n}} \\ H_{n}\\leq G_{n}\\leq A_{n}\\leq Q_{n} \r\n\\end{array}"}]}]},{name:"积分",value:"\\frac{\\mathrm{d}\\partial}{\\partial x}",children:[{data:[{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}x^n=nx^{n-1} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}e^{ax}=a\\,e^{ax} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\ln(x)=\\frac{1}{x} "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\sin x=\\cos x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cos x=-\\sin x "},{value:"\\int k\\mathrm{d}x = kx+C "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\tan x=\\sec^2 x "},{value:"\\frac{\\mathrm{d}}{\\mathrm{d}x}\\cot x=-\\csc^2 x "},{value:"\\int \\frac{1}{x}\\mathrm{d}x= \\ln \\left| x \\right| +C "},{value:"\\int \\frac{1}{\\sqrt{1-x^{2}}}\\mathrm{d}x= \\arcsin x +C "},{value:"\\int \\frac{1}{1+x^{2}}\\mathrm{d}x= \\arctan x +C "},{value:"\\int u \\frac{\\mathrm{d}v}{\\mathrm{d}x}\\,\\mathrm{d}x=uv-\\int \\frac{\\mathrm{d}u}{\\mathrm{d}x}v\\,\\mathrm{d}x "},{value:"f(x) = \\int_{-\\infty}^\\infty \\hat f(x)\\xi\\,e^{2 \\pi i \\xi x} \\,\\mathrm{d}\\xi "},{value:"\\int x^{\\mu}\\mathrm{d}x=\\frac{x^{\\mu +1}}{\\mu +1}+C, \\left({\\mu \\neq -1}\\right) "}]}]},{name:"三角",value:"e^{i \\theta}",children:[{name:"求和 Summation",data:[{value:"e^{i \\theta} "},{value:"\\left(\\frac{\\pi}{2}-\\theta \\right ) "},{value:"\\text{sin}^{2}\\frac{\\alpha}{2}=\\frac{1- \\text{cos}\\alpha}{2} "},{value:"\\text{cos}^{2}\\frac{\\alpha}{2}=\\frac{1+ \\text{cos}\\alpha}{2} "},{value:"\\text{tan}\\frac{\\alpha}{2}=\\frac{\\text{sin}\\alpha}{1+ \\text{cos}\\alpha} "},{value:"\\sin \\alpha + \\sin \\beta =2 \\sin \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\sin \\alpha - \\sin \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha + \\cos \\beta =2 \\cos \\frac{\\alpha + \\beta}{2}\\cos \\frac{\\alpha - \\beta}{2} "},{value:"\\cos \\alpha - \\cos \\beta =-2\\sin \\frac{\\alpha + \\beta}{2}\\sin \\frac{\\alpha - \\beta}{2} "},{value:"a^{2}=b^{2}+c^{2}-2bc\\cos A "},{value:"\\frac{\\sin A}{a}=\\frac{\\sin B}{b}=\\frac{\\sin C}{c}=\\frac{1}{2R} "},{value:"\\sin \\left ( \\frac{\\pi}{2}-\\alpha \\right ) = \\cos \\alpha "},{value:"\\sin \\left ( \\frac{\\pi}{2}+\\alpha \\right ) = \\cos \\alpha "}]}]},{name:"统计",value:"C_{r}^{n}",children:[{data:[{value:"C_{r}^{n} "},{value:"\\frac{n!}{r!(n-r)!} "},{value:"\\sum_{i=1}^{n}{X_i} "},{value:"\\sum_{i=1}^{n}{X_i^2} "},{value:"X_1, \\cdots,X_n "},{value:"\\frac{x-\\mu}{\\sigma} "},{value:"\\sum_{i=1}^{n}{(X_i - \\overline{X})^2} "},{value:"\\begin{array}{c} \r\n \\text{若}P \\left( AB \\right) =P \\left( A \\right) P \\left( B \\right) \\\\ \r\n \\text{则}P \\left( A \\left| B\\right. \\right) =P \\left({B}\\right) \r\n\\end{array}"},{value:"P(E) ={n \\choose k}p^k (1-p)^{n-k} "},{value:"P \\left( A \\right) = \\lim \\limits_{n \\to \\infty}f_{n}\\left ( A \\right ) "},{value:"P \\left( \\bigcup \\limits_{i=1}^{+ \\infty}A_{i}\\right) = \\prod \\limits_{i=1}^{+ \\infty}P{\\left( A_{i}\\right)} "},{value:"\\begin{array}{c} \r\n P \\left( \\emptyset \\right) =0 \\\\ \r\n P \\left( S \\right) =1 \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n \\forall A \\in S \\\\ \r\n P \\left( A \\right) \\ge 0 \r\n\\end{array}"},{value:"P \\left( \\bigcup \\limits_{i=1}^{n}A_{i}\\right) = \\prod \\limits_{i=1}^{n}P \\left( A_{i}\\right) "},{value:"\\begin{array}{c} \r\n S= \\binom{N}{n},A_{k}=\\binom{M}{k}\\cdot \\binom{N-M}{n-k} \\\\ \r\n P\\left ( A_{k}\\right ) = \\frac{\\binom{M}{k}\\cdot \\binom{N-M}{n-k}}{\\binom{N}{n}} \r\n\\end{array}"},{value:"\\begin{array}{c} \r\n P_{n}=n! \\\\ \r\n A_{n}^{k}=\\frac{n!}{\\left( n-k \\left) !\\right. \\right.} \r\n\\end{array}"}]}]}].map((function(a,e){return(0,s.jsxs)(l.Z,{flex:"110px",className:u.Z.item,children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"}),a.name]}),(0,s.jsx)("div",{className:u.Z.children,children:a.children.map((function(a,e){return(0,s.jsxs)("div",{children:[a.name&&(0,s.jsx)("h1",{children:a.name}),(0,s.jsx)(r.Z,{gutter:[10,10],children:a.data.map((function(a,e){return(0,s.jsx)(l.Z,{onClick:function(){return m(a)},className:u.Z.diamond,children:(0,s.jsx)(o.Z,{value:"`$$"+a.value+"$$`"})},e)}))})]},e)}))})]})}))})}],x=function(){var a=document.createElement("div");a.innerHTML=h.current.getValue();var e=a.innerText;return t&&t(e),e};return(0,n.useImperativeHandle)(e,(function(){return{getData:x}})),(0,s.jsxs)("div",{className:u.Z.mathWrap,children:[(0,s.jsx)(i.Z,{defaultActiveKey:"1",items:f}),(0,s.jsx)("math-field",{locale:"zh_cn",className:u.Z.mathField,placeholder:"请打开键盘,输入公式",ref:h,style:{width:800,marginTop:30,fontSize:18},children:p||""}),d&&(0,s.jsx)("div",{className:u.Z.button,children:(0,s.jsx)(c.ZP,{size:"large",onClick:x,style:{zIndex:8,marginTop:10},type:"primary",children:"保存到编辑器"})})]})}));e.Z=d},90758:function(a,e,t){var n=t(82242),r=t.n(n),l=(t(59301),t(93314)),i=t(3113),c=t(37712);e.Z=function(a){var e=a.img,t=a.buttonProps,n=void 0===t?{}:t,o=a.styles,u=void 0===o?{}:o,s=a.customText,d=a.ButtonText,v=a.ButtonClick,p=a.Buttonclass,h=a.ButtonTwo,m=a.imgStyles,f=a.loading,x=void 0!==f&&f;return(0,c.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:x?"hidden":"visible"}),u),children:[(0,c.jsx)("img",{src:e||l,style:r()(r()({},m),{},{pointerEvents:"none",userSelect:"none"})}),(0,c.jsx)("p",{className:"mt20 font14",children:s||"暂时还没有相关数据哦!"}),d&&(0,c.jsx)(i.ZP,r()(r()({className:p,onClick:v},n),{},{children:d})),h&&h]})}},53399:function(a,e,t){t.d(e,{Z:function(){return k}});var n=t(82242),r=t.n(n),l=t(7557),i=t.n(l),c=t(41498),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},p=t(3113),h=t(74516),m=t(29697),f=t(6848),x=t(26453),g=t(17705),b=t(90758),_=t(87799),y=t(29530),w=t(37712),k=function(a){var e,t,n,l,c,u,k=a.editOffice,j=void 0===k?"view":k,A=a.data,Z=(a.theme,a.type),P=a.filename,R=a.monacoEditor,E=a.className,q=a.style,N=a.close,C=a.onClose,S=a.hasMask,I=a.disabledDownload,T=a.onImgDimensions,O=a.showNodata,B=a.recordInfo,L=(0,d.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),D=s()(L,2),M=(D[0],D[1],(0,d.useState)("")),z=s()(M,2),$=(z[0],z[1]),F=(0,d.useState)(),H=s()(F,2),V=H[0],W=H[1],J="build"===window.ENV?"/react/build":"",X=location.host.startsWith("localhost")?_.Z.PROXY_SERVER:_.Z.API_SERVER,U=(0,d.useRef)();null!==(e=A)&&void 0!==e&&e.startsWith("/api")&&"txt"!==Z&&(A=_.Z.API_SERVER+A);P&&(R.filename=P),(0,d.useEffect)((function(){var a,e=null===(a=document.cookie)||void 0===a||null===(a=a.replace(/\s/g,""))||void 0===a?void 0:a.split(";");null==e||e.map((function(a){var e=a.split("=");"_educoder_session"===e[0]&&$(e[1])}))}),[]),(0,d.useEffect)((function(){var a;"office"===Z&&(A.indexOf("bigfilescdn.")>-1||A.indexOf("bigfiles1")>-1?W({url:A,fileType:(a=A,a.substring(a.lastIndexOf("/")+1).split(".").pop()),model:A.indexOf("model=edit")?"edit":"view"}):G())}),[Z,A]);var G=function(){var a=o()(i()().mark((function a(){var e,t,n;return i()().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return console.log("data:",A),e=A,A.startsWith("http")||(e=location.origin+e),t=new URL(e).pathname.split("/").pop(),a.next=6,(0,g.gJ)({attachment_id:t});case 6:(n=a.sent).url=X+n.url,W(n);case 9:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}(),K=function(){A.startsWith("http")||A.startsWith("blob:")?Q():(0,x.Sv)(P||"educoder",A,P)},Q=function(){B&&(0,y.fc)({id:null==B?void 0:B.id,watch_type:1,course_id:null==B?void 0:B.course_id}),(0,x.Nd)(P||"educoder",decodeURIComponent(A))};return(0,w.jsxs)("div",{style:r()({},q||{}),className:"".concat(S&&v.bgBlack," ").concat(Z?v.wrp:"hide"),children:[N&&(0,w.jsxs)("div",{className:v.close,ref:U,children:[!!T&&(0,w.jsx)(f.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:function(){C(),T()},children:(0,w.jsx)("i",{className:"icon-yulanpizhu"})})}),!I&&(0,w.jsx)(f.Z,{title:"点击下载此文件",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:Q,children:(0,w.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,w.jsx)(f.Z,{title:"关闭",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{className:"",onClick:C,children:(0,w.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,w.jsx)("div",{className:"".concat(v[E]," ").concat(E," ").concat(v.monaco," ").concat("txt"===Z?"show":"hide"),children:"txt"===Z&&(0,w.jsx)(w.Fragment,{children:(0,w.jsx)(m.ZP,r()({},R))})}),"audio"===Z&&(0,w.jsx)("audio",{src:"".concat((null===(t=A)||void 0===t?void 0:t.indexOf("http://"))>-1||(null===(n=A)||void 0===n?void 0:n.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(A),autoPlay:!0}),"video"===Z&&(0,w.jsx)(w.Fragment,{children:(null===(l=A)||void 0===l?void 0:l.indexOf("http"))>-1?(0,w.jsx)("video",{controls:!0,src:"".concat(A),autoPlay:!0}):(0,w.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(A),autoPlay:!0})}),"office"===Z&&V&&(0,w.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(V.key,"&url=").concat(btoa(V.url),"&callbackUrl=").concat(X+V.callbackUrl,"&fileType=").concat(V.fileType,"&title=").concat(V.title,"&model=").concat(j,"&officeServer=").concat(_.Z.ONLYOFFICE,"&disabledDownload=").concat(!!I)}),"html"===Z&&(0,w.jsx)("iframe",{src:A+"&disposition=inline"}),"pdf"===Z&&(0,w.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?url=").concat(encodeURIComponent(A),"&disabledDownload=").concat(!!I)}),"image"===Z&&(0,w.jsx)("img",{src:"".concat((null===(c=A)||void 0===c?void 0:c.indexOf("http://"))>-1||(null===(u=A)||void 0===u?void 0:u.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(A)}),("other"===Z||"download"===Z)&&(0,w.jsx)(w.Fragment,{children:O?(0,w.jsx)(b.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,w.jsx)(p.ZP,{icon:(0,w.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:K,children:"下载"})}):(0,w.jsxs)(p.ZP,{type:"primary",size:"middle",onClick:K,children:[(0,w.jsx)(h.Z,{}),"点击下载"]})})]})}},49519:function(a,e,t){t.d(e,{z:function(){return w}});var n=t(82242),r=t.n(n),l=t(37205),i=t.n(l),c=t(91232),o=t.n(c),u=t(79800),s=t.n(u),d=t(59301),v=(t(17014),t(60415)),p=(t(64018),t(77373)),h=t(87799),m=t(26453),f=t(15342),x=t(1012),g=t(53399),b=t(37712),_="@▁@",y=/]*>/g;var w=function(a,e){a=a||"";var t=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return e?a.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,m.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):a=a.replace(t,(function(a,e,t,n,r,l,i){var c=e||n||l,o=t||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+c+o+"&t="+(0,m.Jn)(c,Date.now())+(a.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+l+i+l+i+"&t="+(0,m.Jn)(l,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(a,e,t,n,r){var l=e||n,i=t||r||"";return"("+h.Z.API_SERVER+"/files/uploads/"+l+i+l+i+"&t="+(0,m.Jn)(l,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};e.Z=function(a){var e=a.value,t=void 0===e?"":e,n=a.className,l=a.showTextOnly,c=a.showLines,u=a.style,m=void 0===u?{}:u,w=a.stylesPrev,k=void 0===w?{}:w,j=a.highlightKeywords,A=a.showProgramFill,Z=(a.isProgramFill,a.disabledFill),P=void 0!==Z&&Z,R=a.programFillValue,E=a.onFillChange,q=void 0===E?function(a){}:E,N=a.onFillBlur,C=void 0===N?function(){}:N,S=String(t),I=(0,d.useState)(""),T=s()(I,2),O=T[0],B=T[1],L=(0,d.useState)("office"),D=s()(L,2),M=D[0],z=D[1],$=(0,d.useState)([]),F=s()($,2),H=F[0],V=F[1],W=(0,d.useRef)("a"+(0,x.Z)()),J={};var X=function(a){return a.replace(/([\s\S]+?)<\/style>/gim,(function(a,e){var t=e.replace(/(\n|\r)/g,"").split("}"),n=[];return t.map((function(a){""!=a&&n.push(".".concat(W.current," ").concat(a))})),"")}))},U=(0,d.useMemo)((function(){try{S=S.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(a){}if(A){var a=-1;return S=S.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(e,t,n){var r;return function(a,e,t){var n=document.createElement(a===_?"input":"textarea");n.style.width="100%",n.style.height=a===_?"40px":"151px",n.rows=5,n.spellcheck=!1,n.name="edu-program-fill",n.placeholder="请输入",n.dataset.id=e;var r=Object.keys(J).length;return J[r]=n,'')}(e,++a,null==R||null===(r=R[a])||void 0===r?void 0:r.value)})),'
    '.concat(X(S||""),"
    ")}var e=X(S);e=(0,v.ZP)(e);var t=(0,v.ez)();S.match(/\[TOC\]/)&&(e=e.replace("

    [TOC]

    ",(0,v.Qv)()),(0,v.Iy)()),e=e.replace(/(__special_katext_id_\d+__)/g,(function(a,e){var n=t[e],r=n.type,l=n.expression;return(0,f.renderToString)(function(a){var e=document.createElement("div");return e.innerHTML=a,0===e.childNodes.length?"":e.childNodes[0].nodeValue}(l)||"",{displayMode:"block"===r,throwOnError:!1,output:"html"})})),e=e.replace(/▁/g,"▁▁▁▁▁"),(0,v.AL)();var n=document.createElement("div");return n.innerHTML=e,l?n.innerText:j?(Q(n,j.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n.innerHTML):(setTimeout((function(){return ea()}),500),n.innerHTML)}),[S,j]);(0,d.useEffect)((function(){Y.current&&Y.current.querySelectorAll(["input","textarea"]).forEach((function(a){a.oninput=G,a.onblur=K}))}),[H]),(0,d.useEffect)((function(){if(null!=R&&R.length)try{var a,e=Y.current.querySelectorAll(".edu-program-fill-score"),t=Y.current.querySelectorAll('[name="edu-program-fill"]'),n=o()(t.entries());try{for(n.s();!(a=n.n()).done;){var r,l,i,c=s()(a.value,2),u=c[0],d=c[1];d.value=(null==R||null===(r=R[u])||void 0===r?void 0:r.value)||"","warning"===(null==R||null===(l=R[u])||void 0===l?void 0:l.type)?d.className="program-fill-warning":"success"===(null==R||null===(i=R[u])||void 0===i?void 0:i.type)?d.className="program-fill-success":d.className=""}}catch(a){n.e(a)}finally{n.f()}var v,p=o()(e.entries());try{for(p.s();!(v=p.n()).done;){var h,m,f=s()(v.value,2),x=f[0];f[1].innerHTML=null!=R&&null!==(h=R[x])&&void 0!==h&&h.score?"".concat(null==R||null===(m=R[x])||void 0===m?void 0:m.score,"分"):""}}catch(a){p.e(a)}finally{p.f()}V(R)}catch(a){console.log(a,"error")}}),[R]);var G=function(a){H[a.target.dataset.id]=H[a.target.dataset.id]||{},H[a.target.dataset.id].value=a.target.value,V(i()(H)),q(H,a.target.dataset.id)},K=function(a){H[a.target.dataset.id]=H[a.target.dataset.id]||{},H[a.target.dataset.id].value=a.target.value,V(i()(H)),C(H,a.target.dataset.id)};function Q(a,e){return a.childNodes.forEach((function(a){if(a.childNodes.length>0)Q(a,e);else if("IMG"!==a.nodeName)if(a.innerHTML){var t;a.innerHTML=null===(t=a.innerHTML)||void 0===t?void 0:t.replace(new RegExp(e,"gi"),'$&')}else{var n=document.createElement("span");n.innerHTML=a.textContent.replace(new RegExp(e,"gi"),'$&'),a.replaceWith(n)}}))}var Y=(0,d.useRef)();function aa(a){var e=a.target;if("A"===e.tagName.toUpperCase()){var t=e.getAttribute("href");if(t.indexOf("office")>-1)a.preventDefault(),B(t),z("office");else if(t.indexOf("application/pdf")>-1)a.preventDefault(),B(t),z("pdf");else if(t.indexOf("text/html")>-1)a.preventDefault(),B(t),z("html");else if(t.startsWith("#")){a.preventDefault();var n=document.getElementById(t.replace("#",""));n&&n.scrollIntoView(!0)}}}v.jb.WebkitLineClamp=c,c&&(m=r()(r()({},m),v.jb));var ea=function(){var a,e=null===(a=Y.current)||void 0===a?void 0:a.querySelectorAll("video");null==e||e.forEach((function(a){if(a.oncontextmenu=function(){return!1},a.src.indexOf(".m3u8")>-1)if(a.canPlayType("application/vnd.apple.mpegurl"));else if(p.ZP.isSupported()){var e=new p.ZP;e.loadSource(a.src),e.attachMedia(a)}}))};return(0,d.useEffect)((function(){if(Y.current&&U&&U.match(y)&&window.PR.prettyPrint(),Y.current)return Y.current.addEventListener("click",aa),function(){var a;null===(a=Y.current)||void 0===a||a.removeEventListener("click",aa),(0,v.AL)(),(0,v.Iy)()}}),[U,Y.current,aa]),(0,b.jsxs)(b.Fragment,{children:[l&&(0,b.jsx)("div",{ref:Y,children:U}),!l&&(0,b.jsx)("div",{ref:Y,style:r()({},m),className:"".concat(n||""," ").concat(P?"disabled-fill":""," markdown-body ").concat(W.current),dangerouslySetInnerHTML:{__html:U}}),(0,b.jsx)(g.Z,{close:!0,data:O,type:null!=O&&O.length?M:"",style:r()({},k),onClose:function(){return B("")}})]})}},60415:function(a,e,t){t.d(e,{AL:function(){return w},Iy:function(){return v},Qv:function(){return m},ez:function(){return y},jb:function(){return p}});var n=t(79800),r=t.n(n),l=t(32834),i=t.n(l),c=t(11690);var o=[],u=["
      "],s=new(i().Renderer),d=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function v(){o.length=0,u=["
        "]}var p={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function h(a,e,t,n){if(e>=a.length||a[e].level<=t)return e;var r=a[e];n.push("
      • "+r.text+"");var l=[];return e=h(a,++e,r.level,l),l.length>0&&(n.push("
          "),l.forEach((function(a){n.push(a)})),n.push("
        ")),n.push("
      • "),e=h(a,e,t,n)}function m(){return h(o,0,0,u),u.push("
      "),u.join("")}var f={heading:function(a){var e=d.exec(a);if(e)return{type:"heading",raw:e[0],depth:e[1].length,text:e[2]}},fences:function(a){var e=this.rules.block.fences.exec(a);if(e){var t=e[0],n=function(a,e){var t=a.match(/^(\s+)(?:```)/);if(null===t)return e;var n=t[1];return e.split("\n").map((function(a){var e=a.match(/^\s+/);return null===e?a:r()(e,1)[0].length>=n.length?a.slice(n.length):a})).join("\n")}(t,e[3]||""),l=e[2]?e[2].trim():e[2];if(["latex","katex","math"].indexOf(l)>=0){var i=b(),c=n;n=i,_[i]={type:"block",expression:c}}return{type:"code",raw:t,lang:l,text:n}}}},x=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,b=function(){return"__special_katext_id_".concat(g++,"__")},_={};function y(){return _}function w(){g=0,_={}}function k(a){return a=a.replace(x,(function(a,e){var t=b();return _[t]={type:"inline",expression:e},t}))}var j=s.listitem;s.listitem=function(a){return j(k(a))};var A=s.paragraph;s.paragraph=function(a){return A(k(a))};var Z=s.tablecell;s.tablecell=function(a,e){return Z(k(a),e)},s.code=function(a,e,t){var n=(e||"").match(/\S*/)[0];return n?["latex","katex","math"].indexOf(n)>=0?"

      ".concat(a,"

      "):'
      ').concat(t?a:(0,c.escape)(a,!0),"
      \n"):'
      '+(t?a:(0,c.escape)(a,!0))+"
      "},s.heading=function(a,e,t){var n=this.options.headerPrefix+t.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return o.push({anchor:n,level:e,text:a}),"'+a+""},i().setOptions({silent:!0,gfm:!0,pedantic:!1}),i().use({tokenizer:f,renderer:s}),e.ZP=i()},18955:function(a,e){e.Z={lists:"lists___xhHyq",item:"item___pWJAA",children:"children___sDG61",diamond:"diamond___FwgzD",button:"button___WPN6r",mathWrap:"mathWrap___FmnMJ",mathFillWrap:"mathFillWrap___PmY3H"}}}]); \ No newline at end of file diff --git a/index.html b/index.html index ceaf58cb5a..e5a9792061 100644 --- a/index.html +++ b/index.html @@ -166,7 +166,7 @@ body > div:has([class~='ant']) { display: block !important; } - + diff --git a/layouts__GraduationsDetail__index.async.js b/layouts__GraduationsDetail__index.async.js index 6d71b5f0af..3425014706 100644 --- a/layouts__GraduationsDetail__index.async.js +++ b/layouts__GraduationsDetail__index.async.js @@ -1 +1 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[38143],{5530:function(o,a,p){"use strict";p.d(a,{Z:function(){return d}});p(7557),p(41498);var U=p(82100),t=p.n(U),i=p(29186),K=p.n(i),e=p(13720),A=p.n(e),l=p(80619),S=p.n(l),n=p(47074),F=p.n(n),c=p(85573),R=p.n(c),r=p(59301),s=p(8591),m=p(98135),g="codeBox___WpkVl",N=p(92310),u=p.n(N),k=p(37712),T=function(o){S()(p,o);var a=F()(p);function p(o){var U;return t()(this,p),U=a.call(this,o),R()(A()(U),"canvas",void 0),R()(A()(U),"randomNum",(function(o,a){return Math.floor(Math.random()*(a-o)+o)})),R()(A()(U),"drawPic",(function(){U.randomCode()})),R()(A()(U),"reloadPic",(function(){U.drawPic()})),R()(A()(U),"changeCode",(function(o){console.log(o.target.value,222),U.setState({value:o.target.value,showError:!1})})),R()(A()(U),"onVerify",(function(){var o;return""!==U.state.value.toLowerCase()&&U.state.value.toLowerCase()!==U.state.code.toLowerCase()?(o=!0,s.ZP.error("请输入正确的验证码"),U.reloadPic()):""===U.state.value.toLowerCase()?(o=!0,s.ZP.error("请输入验证码")):U.state.value.toLowerCase()===U.state.code.toLowerCase()&&(o=!1),U.setState({showError:o}),o})),U.canvas=r.createRef(),U.state={value:"",code:"",codeLength:4,fontSizeMin:20,fontSizeMax:22,backgroundColorMin:240,backgroundColorMax:250,colorMin:10,colorMax:20,lineColorMin:40,lineColorMax:180,contentWidth:96,contentHeight:38,showError:!1},U}return K()(p,[{key:"componentDidMount",value:function(){this.drawPic()}},{key:"randomColor",value:function(o,a){var p=this.randomNum(o,a),U=this.randomNum(o,a),t=this.randomNum(o,a);return"rgb(".concat(p,", ").concat(U,", ").concat(t,")")}},{key:"drawText",value:function(o,a,p){o.fillStyle=this.randomColor(this.state.colorMin,this.state.colorMax);var U=this.randomNum(this.state.fontSizeMin,this.state.fontSizeMax);o.font=U+"px SimHei";var t=(this.state.contentWidth-40)/(this.state.code.length-1),i=10;p>0&&(i=10+p*t);var K=this.randomNum(this.state.fontSizeMax,this.state.contentHeight-5);U>40&&(K=40);var e=this.randomNum(-10,10);o.translate(i,K),o.rotate(e*Math.PI/180),o.fillText(a,0,0),o.rotate(-e*Math.PI/180),o.translate(-i,-K)}},{key:"drawLine",value:function(o){for(var a=0;a<1;a++)o.strokeStyle=this.randomColor(this.state.lineColorMin,this.state.lineColorMax),o.beginPath(),o.moveTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.lineTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.stroke()}},{key:"drawDot",value:function(o){for(var a=0;a<100;a++)o.fillStyle=this.randomColor(0,255),o.beginPath(),o.arc(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight),1,0,2*Math.PI),o.fill()}},{key:"randomCode",value:function(){for(var o=this,a="",p=0;p-1||j.indexOf("bigfiles1")>-1?I({url:j,fileType:(o=j,o.substring(o.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):Z())}),[B,j]);var Z=function(){var o=A()(K()().mark((function o(){var a,p,U;return K()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("data:",j),a=j,j.startsWith("http")||(a=location.origin+a),p=new URL(a).pathname.split("/").pop(),o.next=6,(0,g.gJ)({attachment_id:p});case 6:(U=o.sent).url=y+U.url,I(U);case 9:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,m.Sv)(C||"educoder",j,C)},_=function(){w&&(0,k.fc)({id:null==w?void 0:w.id,watch_type:1,course_id:null==w?void 0:w.course_id}),(0,m.Nd)(C||"educoder",decodeURIComponent(j))};return(0,T.jsxs)("div",{style:t()({},Q||{}),className:"".concat(P&&F.bgBlack," ").concat(B?F.wrp:"hide"),children:[L&&(0,T.jsxs)("div",{className:F.close,ref:X,children:[!!V&&(0,T.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{onClick:function(){h(),V()},children:(0,T.jsx)("i",{className:"icon-yulanpizhu"})})}),!D&&(0,T.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{onClick:_,children:(0,T.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,T.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{className:"",onClick:h,children:(0,T.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,T.jsx)("div",{className:"".concat(F[x]," ").concat(x," ").concat(F.monaco," ").concat("txt"===B?"show":"hide"),children:"txt"===B&&(0,T.jsx)(T.Fragment,{children:(0,T.jsx)(r.ZP,t()({},f))})}),"audio"===B&&(0,T.jsx)("audio",{src:"".concat((null===(p=j)||void 0===p?void 0:p.indexOf("http://"))>-1||(null===(U=j)||void 0===U?void 0:U.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===B&&(0,T.jsx)(T.Fragment,{children:(null===(i=j)||void 0===i?void 0:i.indexOf("http"))>-1?(0,T.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,T.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===B&&v&&(0,T.jsx)("iframe",{src:"".concat(z,"/office.html?key=").concat(v.key,"&url=").concat(btoa(v.url),"&callbackUrl=").concat(y+v.callbackUrl,"&fileType=").concat(v.fileType,"&title=").concat(v.title,"&model=").concat(q,"&officeServer=").concat(u.Z.ONLYOFFICE,"&disabledDownload=").concat(!!D)}),"html"===B&&(0,T.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===B&&(0,T.jsx)("iframe",{src:"".concat(z,"/js/pdfview/index.html?url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!D)}),"image"===B&&(0,T.jsx)("img",{src:"".concat((null===(e=j)||void 0===e?void 0:e.indexOf("http://"))>-1||(null===(l=j)||void 0===l?void 0:l.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===B||"download"===B)&&(0,T.jsx)(T.Fragment,{children:H?(0,T.jsx)(N.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,T.jsx)(c.ZP,{icon:(0,T.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,children:"下载"})}):(0,T.jsxs)(c.ZP,{type:"primary",size:"middle",onClick:E,children:[(0,T.jsx)(R.Z,{}),"点击下载"]})})]})}},49519:function(o,a,p){"use strict";p.d(a,{z:function(){return T}});var U=p(82242),t=p.n(U),i=p(37205),K=p.n(i),e=p(91232),A=p.n(e),l=p(79800),S=p.n(l),n=p(59301),F=(p(17014),p(60415)),c=(p(64018),p(36422)),R=p(87799),r=p(26453),s=p(15342),m=p(1012),g=p(53399),N=p(37712),u="@▁@",k=/]*>/g;var T=function(o,a){o=o||"";var p=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return a?o.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(p,(function(o,a,p,U,t,i,K){var e=a||U||i,A=p||t||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):o=o.replace(p,(function(o,a,p,U,t,i,K){var e=a||U||i,A=p||t||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,p,U,t){var i=a||U,K=p||t||"";return'"'+R.Z.API_SERVER+"/api/attachments/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,p,U,t){var i=a||U,K=p||t||"";return"("+R.Z.API_SERVER+"/files/uploads/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};a.Z=function(o){var a=o.value,p=void 0===a?"":a,U=o.className,i=o.showTextOnly,e=o.showLines,l=o.style,r=void 0===l?{}:l,T=o.stylesPrev,d=void 0===T?{}:T,q=o.highlightKeywords,j=o.showProgramFill,B=(o.isProgramFill,o.disabledFill),C=void 0!==B&&B,f=o.programFillValue,x=o.onFillChange,Q=void 0===x?function(o){}:x,L=o.onFillBlur,h=void 0===L?function(){}:L,P=String(p),D=(0,n.useState)(""),V=S()(D,2),H=V[0],w=V[1],J=(0,n.useState)("office"),O=S()(J,2),W=O[0],G=O[1],M=(0,n.useState)([]),Y=S()(M,2),b=Y[0],v=Y[1],I=(0,n.useRef)("a"+(0,m.Z)()),z={};var y=function(o){return o.replace(/([\s\S]+?)<\/style>/gim,(function(o,a){var p=a.replace(/(\n|\r)/g,"").split("}"),U=[];return p.map((function(o){""!=o&&U.push(".".concat(I.current," ").concat(o))})),"")}))},X=(0,n.useMemo)((function(){try{P=P.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+R.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+R.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+R.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(o){}if(j){var o=-1;return P=P.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(a,p,U){var t;return function(o,a,p){var U=document.createElement(o===u?"input":"textarea");U.style.width="100%",U.style.height=o===u?"40px":"151px",U.rows=5,U.spellcheck=!1,U.name="edu-program-fill",U.placeholder="请输入",U.dataset.id=a;var t=Object.keys(z).length;return z[t]=U,'')}(a,++o,null==f||null===(t=f[o])||void 0===t?void 0:t.value)})),'
      '.concat(y(P||""),"
      ")}var a=y(P);a=(0,F.ZP)(a);var p=(0,F.ez)();P.match(/\[TOC\]/)&&(a=a.replace("

      [TOC]

      ",(0,F.Qv)()),(0,F.Iy)()),a=a.replace(/(__special_katext_id_\d+__)/g,(function(o,a){var U=p[a],t=U.type,i=U.expression;return(0,s.renderToString)(function(o){var a=document.createElement("div");return a.innerHTML=o,0===a.childNodes.length?"":a.childNodes[0].nodeValue}(i)||"",{displayMode:"block"===t,throwOnError:!1,output:"html"})})),a=a.replace(/▁/g,"▁▁▁▁▁"),(0,F.AL)();var U=document.createElement("div");return U.innerHTML=a,i?U.innerText:q?(_(U,q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),U.innerHTML):(setTimeout((function(){return ao()}),500),U.innerHTML)}),[P,q]);(0,n.useEffect)((function(){$.current&&$.current.querySelectorAll(["input","textarea"]).forEach((function(o){o.oninput=Z,o.onblur=E}))}),[b]),(0,n.useEffect)((function(){if(null!=f&&f.length)try{var o,a=$.current.querySelectorAll(".edu-program-fill-score"),p=$.current.querySelectorAll('[name="edu-program-fill"]'),U=A()(p.entries());try{for(U.s();!(o=U.n()).done;){var t,i,K,e=S()(o.value,2),l=e[0],n=e[1];n.value=(null==f||null===(t=f[l])||void 0===t?void 0:t.value)||"","warning"===(null==f||null===(i=f[l])||void 0===i?void 0:i.type)?n.className="program-fill-warning":"success"===(null==f||null===(K=f[l])||void 0===K?void 0:K.type)?n.className="program-fill-success":n.className=""}}catch(o){U.e(o)}finally{U.f()}var F,c=A()(a.entries());try{for(c.s();!(F=c.n()).done;){var R,r,s=S()(F.value,2),m=s[0];s[1].innerHTML=null!=f&&null!==(R=f[m])&&void 0!==R&&R.score?"".concat(null==f||null===(r=f[m])||void 0===r?void 0:r.score,"分"):""}}catch(o){c.e(o)}finally{c.f()}v(f)}catch(o){console.log(o,"error")}}),[f]);var Z=function(o){b[o.target.dataset.id]=b[o.target.dataset.id]||{},b[o.target.dataset.id].value=o.target.value,v(K()(b)),Q(b,o.target.dataset.id)},E=function(o){b[o.target.dataset.id]=b[o.target.dataset.id]||{},b[o.target.dataset.id].value=o.target.value,v(K()(b)),h(b,o.target.dataset.id)};function _(o,a){return o.childNodes.forEach((function(o){if(o.childNodes.length>0)_(o,a);else if("IMG"!==o.nodeName)if(o.innerHTML){var p;o.innerHTML=null===(p=o.innerHTML)||void 0===p?void 0:p.replace(new RegExp(a,"gi"),'$&')}else{var U=document.createElement("span");U.innerHTML=o.textContent.replace(new RegExp(a,"gi"),'$&'),o.replaceWith(U)}}))}var $=(0,n.useRef)();function oo(o){var a=o.target;if("A"===a.tagName.toUpperCase()){var p=a.getAttribute("href");if(p.indexOf("office")>-1)o.preventDefault(),w(p),G("office");else if(p.indexOf("application/pdf")>-1)o.preventDefault(),w(p),G("pdf");else if(p.indexOf("text/html")>-1)o.preventDefault(),w(p),G("html");else if(p.startsWith("#")){o.preventDefault();var U=document.getElementById(p.replace("#",""));U&&U.scrollIntoView(!0)}}}F.jb.WebkitLineClamp=e,e&&(r=t()(t()({},r),F.jb));var ao=function(){var o,a=null===(o=$.current)||void 0===o?void 0:o.querySelectorAll("video");null==a||a.forEach((function(o){if(o.oncontextmenu=function(){return!1},o.src.indexOf(".m3u8")>-1)if(o.canPlayType("application/vnd.apple.mpegurl"));else if(c.ZP.isSupported()){var a=new c.ZP;a.loadSource(o.src),a.attachMedia(o)}}))};return(0,n.useEffect)((function(){if($.current&&X&&X.match(k)&&window.PR.prettyPrint(),$.current)return $.current.addEventListener("click",oo),function(){var o;null===(o=$.current)||void 0===o||o.removeEventListener("click",oo),(0,F.AL)(),(0,F.Iy)()}}),[X,$.current,oo]),(0,N.jsxs)(N.Fragment,{children:[i&&(0,N.jsx)("div",{ref:$,children:X}),!i&&(0,N.jsx)("div",{ref:$,style:t()({},r),className:"".concat(U||""," ").concat(C?"disabled-fill":""," markdown-body ").concat(I.current),dangerouslySetInnerHTML:{__html:X}}),(0,N.jsx)(g.Z,{close:!0,data:H,type:null!=H&&H.length?W:"",style:t()({},d),onClose:function(){return w("")}})]})}},59566:function(o,a,p){"use strict";p.r(a),p.d(a,{default:function(){return ao}});var U=p(70236),t=p.n(U),i=p(59301),K=p(48323),e=p(44e3),A=p(95237),l=p(37205),S=p.n(l),n=p(79800),F=p.n(n),c=p(39647),R=p.n(c),r="menuWrap___jwziv",s="nav___FPm96",m="li___Fh4Pt",g="icon___XwtGk",N="name___KN1Th",u="down___CRj5d",k="active___JfaaR",T=p(6848),d=p(37712),q=["user","globalSetting","dispatch","graduations"],j=(0,K.connect)((function(o){var a=o.user,p=o.graduations;return{user:a,globalSetting:o.globalSetting,graduations:p}}))((function(o){o.user,o.globalSetting;var a=o.dispatch,p=o.graduations,U=(R()(o,q),(0,K.useLocation)()),t=(0,i.useState)(),e=F()(t,2),A=e[0],l=e[1],n=(0,i.useState)(["_settings"]),c=F()(n,2),j=c[0],B=c[1],C=(0,K.useParams)(),f=C.id,x=p.menus,Q=void 0===x?[]:x;(0,i.useEffect)((function(){if(Q.length){var o,a=(null===(o=U.pathname.split("/"))||void 0===o?void 0:o[3])||"index";l("students"==a?"teachers":a)}}),[U.pathname,Q]);var L=[{icon_type:"index",name:"毕业概览",icon:"iconfont icon-bishegailan"},{icon_type:"topics",name:"课题管理",icon:"iconfont icon-ketiguanli"},{icon_type:"student_selection",name:"学生选题",icon:"icon-xueshengxuanti1"},{icon_type:"tasks",name:"任务书",icon:"icon-renwushu"},{icon_type:"opening_report",name:"开题报告",icon:"iconfont icon-kaitibaogao"},{icon_type:"midterm_report",name:"中期检查",icon:"iconfont icon-kechengjiaoan"},{icon_type:"thesis",name:"毕业论文",icon:"iconfont icon-biyelunwen"},{icon_type:"final_defense",name:"毕业答辩",icon:"iconfont icon-biyedabian"},{icon_type:"final_thesis",name:"论文定稿",icon:"iconfont icon-lunwendinggao"},{icon_type:"archives",name:"归档",icon:"iconfont icon-guidang1"},{icon_type:"grading_summary",name:"毕业成绩",icon:"iconfont icon-bishechengji"},{icon_type:"_settings",name:"毕业设置",icon:"iconfont icon-biyeshezhi",subclass:["settings","teachers","students"]}],h=function o(p){var U,t,e=p.clazz,n=p.name,F=p.children,c=void 0===F?[]:F,R=p.disable,r=(U=e,null===(t=L.find((function(o){return o.icon_type===U})))||void 0===t?void 0:t.icon);return(0,d.jsxs)(i.Fragment,{children:[R?(0,d.jsx)(T.Z,{title:"该阶段未启用",children:(0,d.jsxs)("div",{className:m,onClick:function(){c.length&&(j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])))},children:[(0,d.jsx)("div",{className:g,children:r&&(0,d.jsx)("i",{className:r})}),(0,d.jsx)("span",{className:N,children:n}),!!c.length&&(0,d.jsx)("span",{className:u,children:j.includes(e)?(0,d.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,d.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]})}):(0,d.jsxs)("div",{onClick:function(){c.length?j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])):(l(e),a({type:"graduations/getGraduationsDetails",payload:{id:null==C?void 0:C.id}}),K.history.push("/graduations/".concat(f,"/").concat(e)))},className:A===e?"".concat(m," ").concat(k):m,children:[(0,d.jsx)("div",{className:g,children:r&&(0,d.jsx)("i",{className:r})}),(0,d.jsx)("span",{className:N,children:n}),!!c.length&&(0,d.jsx)("span",{className:u,children:j.includes(e)?(0,d.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,d.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]}),j.includes(e)&&c.map((function(a){return o(a)}))]},e)};return(0,d.jsx)("div",{className:r,children:(0,d.jsx)("div",{className:s,children:Q.map((function(o){return h(o)}))})})})),B=p(82242),C=p.n(B),f=p(7557),x=p.n(f),Q=p(41498),L=p.n(Q),h={flex_box_center:"flex_box_center___Zlh8i",flex_space_between:"flex_space_between___lFY3s",flex_box_vertical_center:"flex_box_vertical_center___dQs2p",flex_box_center_end:"flex_box_center_end___mh3GO",flex_box_column:"flex_box_column___fbLGv",bg:"bg___WhklA",center:"center___yiVRe",name:"name___LmNUZ",line:"line___mHXFG",member:"member___ya2z7",btn:"btn___WFeIH",bg2:"bg2___6yejb",modal:"modal___BTChh",red:"red___WFR6s",row:"row___lGy2T",label:"label___Ixyoi",content:"content___oTCar",input:"input___Q19k0",code:"code___ywBNo",copy:"copy___eV4lI"},P=p.p+"static/bg.224d6d3a.jpg",D=p(78241),V=p(43418),H=p(8591),w=p(98135),J=p(5530),O=p(85677),W=p(13046),G=p(56102),M=p(3793),Y=p(36731),b=p(98390),v=(0,K.connect)((function(o){return{graduations:o.graduations,user:o.user}}))((function(o){var a=o.graduations,p=(o.user,o.dispatch),U=(0,K.useParams)(),t=(0,K.useSearchParams)(),e=F()(t,1)[0],A=(0,i.useState)(!1),l=F()(A,2),S=l[0],n=l[1],c=(0,i.useState)(!1),R=F()(c,2),r=R[0],s=R[1],m=(0,i.useState)(!1),g=F()(m,2),N=g[0],u=g[1],k=(0,i.useState)(!1),q=F()(k,2),j=q[0],B=q[1],f=D.Z.useForm(),Q=F()(f,1)[0],v=(0,i.useRef)(null),I=a.details,z=(I.user_identity,I.code_effect_range),y=I.teachers_count,X=I.students_count,Z=function(){p({type:"graduations/getGraduationsDetails",payload:{id:null==U?void 0:U.id}})},E=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,(0,W.ZP)("/api/graduations/detail.json",{method:"get",params:{code:e.get("code")}});case 2:0===o.sent.status&&s(!0);case 4:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}();(0,i.useEffect)((function(){e.get("code")?E():Z()}),[]);var _="".concat(window.location.origin,"/graduations/").concat(U.id,"?code=").concat(null==I?void 0:I.invite_code);return(0,d.jsxs)("div",{className:"".concat(h.bg," ").concat((0,O.tu)()?"":h.bg2),style:{background:"url('".concat((0,O.tu)()?P:"data:image/jpeg;base64,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pHYUdacKZ0p4oInuLSiko5poUdxw608egqOnrTaLmuo+koo9qImQU5OtNpyHBrV7ASikpc0VnABKKKK1AM0lFFAEisTx6U6olO2paACigGigAooooASpV6CoqkU/pSauTIkooorFoIPQKKKKEUFFFFbICZSSMmnUxCMYp9ZSWpjJahRRRVxHAKKKKs1CiiigBR1FTVBUq/drOa6kTHUtFFZmQUUUUAFFFFBtGVwooooKCiiigAooooAKcpwabRSauDRPSU1W9ad7Vi0Y2sFFFFIApKWkoKCiiigpBSUUUDCiiigA/GkpaSkQwoooqWS2FFFGe9RfUkKVWxTaWtU7jTJgwJ4oqLOOlKDzTLVTuSUlN3+1LmkyudC0UmRRkVLQmxaKKKklhSGlpDUskKKKPakIKWiigAoopaACiiigBaKSloAKWkpaACiiigBaSiigApKWkoAKSlpKlgFJRRWbExKKPej2qSWFFFLQQwooooJFopKKACiiigApKWkoAKPaiigApKWk9qACkPpQTSUAKKKSloAWgUlFA7i0UlFKwXDNJRRTEH40UUdKBXEooooAKSlptAxaKSloAKKKKAEooooAKQ9KXOKjJoJkwopKWgxCijpRQAtFFFAC0UlL7UAFFFLQAUUUVnKPUAooorMAooooAKKKKACiiigQUUUUCCiiigkKKKKCQooooAKKKKBBS0lFS43KjIWkoorNwZXOhaKSlpOLGpIKKKKRQtFFFABS0lLQAUUUUALR7UUUCFFFJS0CaCiiigSXYUGiij2qWyxaKSl9qzYBRRS1IBRRRQAUUUUALS02lzSZk4C0UUdKzkQLRRRUALmikpaACj2oooAUUUUUALRRRQAUUZpfagAooooAKWiigAooooEFFFFBLCiiighiUUe9HtQSJSUuaSgApKWkoAWikpaAClFJRSAUUUUe1QwFooo9qhgFFFLSAKKKKAFpRSClHFACil9qSloAWlpKUUAxaWkpaBIKKKKBhRRRQAUUUUAFKKSlFACilpKWgBwoFJmloIkh1FJkdaXIoM7C0UmRRkUCFooyKMigApQcdKSigB+80u80yigB+40bjTaWgLjt1OyKjp1BSk0PyDRTaX2pco/aMXilpKUVPIHtGKKWkpRS9mPnFFKKSlqXETkKKWkpRUhcWiiigEwooopMtMKKKKhoq4UUUVNmAvvS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","') no-repeat center center")},children:[(0,d.jsxs)("div",{className:h.center,children:[(0,d.jsx)(T.Z,{title:null==I?void 0:I.name,children:(0,d.jsx)("div",{className:h.name,children:null==I?void 0:I.name})}),(0,d.jsx)(M.Z,{className:"ml20",status:I.status}),(0,d.jsxs)("div",{style:{marginLeft:"auto"},children:["邀请码",3===z?(0,d.jsx)("b",{className:"ml10",children:"已停用"}):(0,d.jsx)("b",{className:"ml10",style:{color:"#FED218"},children:null==I?void 0:I.invite_code})]}),[0,1,2].includes(z)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:h.line}),(0,d.jsxs)("div",{className:"current",onClick:function(){return n(!0)},children:[(0,d.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-fenxiangketang font14 mr5"})," 分享毕设"]})]}),(0,O.tu)()&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:h.line}),(0,d.jsxs)("div",{className:"current",onClick:function(){var o;V.Z.confirm({centered:!0,okText:"确定",icon:null,width:443,cancelText:"取消",title:"删除毕业设计",content:(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{children:"该操作无法撤销。删除后,毕业设计内的所有数据将被同时删除"}),(0,d.jsx)("div",{className:"mb5",children:"请输入验证码后确认删除"}),(0,d.jsx)(J.Z,{ref:function(o){return v.current=o}})]}),onOk:(o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!v.current.onVerify()){o.next=2;break}return o.abrupt("return",Promise.reject());case 2:return o.next=4,(0,W.ZP)("/api/graduations/".concat(null==U?void 0:U.id,".json"),{method:"delete"});case 4:0===o.sent.status&&(H.ZP.success("删除成功"),K.history.push("/graduations"));case 6:case"end":return o.stop()}}),o)}))),function(){return o.apply(this,arguments)})})},children:[(0,d.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-shanchu8 font14 mr5"}),"删除毕设"]})]})]}),(0,O.tu)()&&(0,d.jsxs)("div",{className:h.member,children:[(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/teachers"),children:[(0,d.jsx)("i",{className:"iconfont icon-chengyuanguanli1 mr5"}),"成员管理"]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/students"),children:["学生",(0,d.jsx)("span",{className:"ml10",children:X})]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/teachers"),children:["教师",(0,d.jsx)("span",{className:"ml10",children:y})]}),(0,d.jsxs)("span",{onClick:function(){B("添加老师")},style:{marginLeft:"auto"},className:h.btn,children:[(0,d.jsx)("i",{className:"iconfont icon-tianjialaoshi font14 mr5"}),"添加老师"]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)("span",{onClick:function(){B("添加学生")},className:h.btn,children:[(0,d.jsx)("i",{className:"iconfont icon-tianjiaxuesheng font14 mr5"}),"添加学生"]})]}),(0,d.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:S,title:"分享毕设",width:666,onCancel:function(){n(!1)},footer:null,children:(0,d.jsxs)("div",{className:h.modal,children:[1===z&&(0,d.jsx)("div",{className:h.red,children:"邀请码已对管理员禁用,用户将无法通过邀请码以管理员身份加入毕设"}),2===z&&(0,d.jsx)("div",{className:h.red,children:"邀请码和邀请链接已对学生禁用,用户将无法通过邀请码以学生身份加入毕设"}),(0,d.jsxs)("div",{className:h.row,children:[(0,d.jsx)("div",{className:h.label,children:"分享方式一"}),(0,d.jsxs)("div",{className:h.content,children:[(0,d.jsx)("div",{className:"c-black",children:"分享邀请码"}),(0,d.jsxs)("div",{className:h.input,children:[(0,d.jsx)("aside",{className:h.code,children:null==I?void 0:I.invite_code}),(0,d.jsx)(G.CopyToClipboard,{text:null==I?void 0:I.invite_code,onCopy:function(){return H.ZP.success("复制成功")},children:(0,d.jsxs)("div",{className:h.copy,children:[(0,d.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制邀请码"]})})]}),(0,d.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过邀请码加入毕业设计时,可以选择加入毕设的身份(选择管理员(教师),需要管理员审核)"})]})]}),(0,d.jsxs)("div",{className:"".concat(h.row," mt30 mb15"),children:[(0,d.jsx)("div",{className:h.label,children:"分享方式二"}),(0,d.jsxs)("div",{className:h.content,children:[(0,d.jsx)("div",{children:"分享链接"}),(0,d.jsxs)("div",{className:h.input,children:[(0,d.jsx)("aside",{className:h.code,style:{width:440},children:_}),(0,d.jsx)(G.CopyToClipboard,{text:_,onCopy:function(){return H.ZP.success("复制成功")},children:(0,d.jsxs)("div",{className:h.copy,children:[(0,d.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制链接"]})})]}),(0,d.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过分享链接访问毕设时,已登录用户可以直接以学生身份加入毕设,未注册/登录用户在注册/登录后可以直接加入毕设。"})]})]}),(0,d.jsx)("div",{style:{height:"15px"}})]})}),(0,d.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:r,title:"加入毕设",width:527,confirmLoading:N,onCancel:function(){K.history.replace("/graduations")},onOk:function(){return Q.submit()},children:(0,d.jsx)(D.Z,{colon:!1,form:Q,className:h.formWrap,onFinish:function(){var o=L()(x()().mark((function o(a){var p;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return u(!0),o.next=3,(0,W.ZP)("/api/graduations/join.json",{method:"post",body:C()(C()({},a),{},{user_type:2,code:e.get("code")})});case 3:0===(p=o.sent).status&&(null!=p&&p.identifier?(H.ZP.success("加入成功"),K.history.replace("/graduations/".concat(U.id,"/index")),s(!1),Z()):(H.ZP.success(null==p?void 0:p.message),K.history.replace("/graduations"))),u(!1);case 6:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}(),children:(0,d.jsx)(D.Z.Item,{style:{marginBottom:0},name:"major",label:"专业",rules:[{required:!0,message:"请输入专业名称"},{max:60,message:"输入超限,请缩减字符数"},{whitespace:!0,message:"请输入专业名称"}],children:(0,d.jsx)(w.Z,{showCount:!0,maxLength:60})})})}),(0,d.jsx)(Y.Z,{open:j,onCancel:function(){return B(!1)},title:j,OnOk:function(){var o=L()(x()().mark((function o(a){var t;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,("添加老师"==j?b.HF:b.NX)({id:U.id,user_ids:a});case 2:if(0!=o.sent.status){o.next=15;break}if(H.ZP.success("添加成功"),B(!1),p({type:"graduations/getGraduationsDetails",payload:{id:null==U?void 0:U.id}}),"添加老师"!=j||!location.pathname.includes("teachers")){o.next=10;break}return p({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 10:if("添加学生"!=j||!location.pathname.includes("students")){o.next=13;break}return p({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 13:t="/graduations/".concat(null==U?void 0:U.id,"/").concat("添加老师"==j?"teachers":"students"),K.history.push(t);case 15:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}()})]})})),I="icon___qjZkt",z="content___w0ayt",y="dot___vZgx3",X=p(49519);Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Z=p(90758),E=p(26453),_=p(87799),$=(0,K.connect)((function(o){return{graduations:o.graduations}}))((function(o){var a,p,U=o.graduations,t=o.dispatch,e=(0,K.useParams)(),l=(0,K.useLocation)(),S=(0,i.useState)(!1),n=F()(S,2),c=n[0],R=n[1],r=U.menus.find((function(o){return o.stage_url===l.pathname}))||{},s=["opening_report","midterm_report","thesis","final_defense","final_thesis","archives"].includes(null==r?void 0:r.clazz),m=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(R(!0),null==r||!r.notice_view){o.next=3;break}return o.abrupt("return");case 3:return o.next=5,(0,W.ZP)("/api/graduations/".concat(null==e?void 0:e.id,"/graduation_stages/").concat(null==r?void 0:r.id,"/notice_view.json"),{method:"post"});case 5:0===o.sent.status&&t({type:"graduations/getGraduationsDetails",payload:{id:null==e?void 0:e.id}});case 7:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),g=!(null!=r&&null!==(a=r.attachments)&&void 0!==a&&a.length||null!=r&&r.description);return(0,d.jsxs)(i.Fragment,{children:[s&&(0,d.jsx)(T.Z,{title:"阶段公告/描述",placement:"bottom",children:(0,d.jsx)("div",{className:I,onClick:m,children:(0,d.jsxs)("div",{className:z,children:[(0,d.jsx)("img",{height:20,src:"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTMzOC4wNzQgMTY1Ljg4OEEzMzcuMSAzMzcuMSAwIDEgMSAyMDUuMjYgODEyLjkwMlYxOTMuMDI0YTMzNi4wMjYgMzM2LjAyNiAwIDAgMSAxMzIuODEzLTI3LjEzNnptLTIxNC41MjggNzcuMDA1djUyMC4xOTJBMzM2LjM4NCAzMzYuMzg0IDAgMCAxIC45NzMgNTAyLjk4OWMwLTEwNC43MDQgNDcuNzE4LTE5OC4yNDcgMTIyLjU3My0yNjAuMDk2eiIgZmlsbD0iI0ZGOUQxOCIvPjxwYXRoIGQ9Ik0yNDYuMTE4Ljc2OGE0MS4zNSA0MS4zNSAwIDAgMSAxNC43NDYgMi43MTRsNTMzLjMgMjA2LjU0aDE4Ny40OTRjMjIuNTI4IDAgNDAuODU3IDE4LjMzIDQwLjg1NyA0MC44NTh2NDgzLjY4NmMwIDIyLjU4LTE4LjI3OCA0MC44NTgtNDAuODU3IDQwLjg1OEg3OTQuMTEyTDI2MC44NjQgOTgyLjAxNmE0MC44NTggNDAuODU4IDAgMCAxLTU1LjYwMy0zOC4wOTNWNDEuNjI2YzAtMjIuNTggMTguMjc4LTQwLjkxIDQwLjg1Ny00MC45MXptNTYwLjUzOCAzMjQuMTQ3aC01Ny4yNDJhMTIuMjg4IDEyLjI4OCAwIDAgMC0xMi4yODggMTIuMjg4VjYzOS41OWMwIDYuNzU5IDUuNTMgMTIuMjg4IDEyLjI4OCAxMi4yODhoNTcuMjQyYTEyLjI4OCAxMi4yODggMCAwIDAgMTIuMjM3LTEyLjI4OFYzMzcuMjAzYTEyLjI4OCAxMi4yODggMCAwIDAtMTIuMjg4LTEyLjI4OHoiIGZpbGw9IiM3MzlFRkYiLz48L3N2Zz4="}),!(null!=r&&r.notice_view)&&(0,d.jsx)("div",{className:y})]})})}),(0,d.jsx)(V.Z,{centered:!0,destroyOnClose:!0,onCancel:function(){return R(!1)},onOk:function(){return R(!1)},open:c,title:"阶段公告/描述",width:990,cancelButtonProps:{style:{display:"none"}},okText:"我知道了",children:g?(0,d.jsx)(Z.Z,{}):(0,d.jsxs)("div",{style:{maxHeight:500},children:[(0,d.jsx)(X.Z,{className:"mb25",value:(null==r?void 0:r.description)||""}),null==r||null===(p=r.attachments)||void 0===p?void 0:p.map((function(o){return(0,d.jsx)(A.Z,{className:"mt4",align:"middle",children:(0,d.jsxs)("div",{style:{color:"#3061D0"},className:"current c-light-primary",onClick:function(){var a;(0,E.Nd)("","".concat(_.Z.API_SERVER).concat(null==o||null===(a=o.url)||void 0===a?void 0:a.replace("disposition=inline","")))},children:[(0,d.jsx)("i",{className:"iconfont icon-wenjian7 font14 mr5"}),(0,E.tP)(o.title,62)]})},o.id)}))]})})]})})),oo=e.Z.Content,ao=function(o){return t()(o),(0,d.jsxs)("div",{className:"bg-white",children:[(0,d.jsx)(v,{}),(0,d.jsxs)(A.Z,{className:"edu-container",wrap:!1,children:[(0,d.jsx)(j,{}),(0,d.jsxs)(oo,{style:{flex:1,width:0,position:"relative"},children:[(0,d.jsx)($,{}),(0,d.jsx)(K.Outlet,{})]})]})]})}},3793:function(o,a,p){"use strict";p.d(a,{Z:function(){return A}});var U=p(59301),t="tag___NEywM",i=p(92310),K=p.n(i),e=p(37712),A=function(o){var a=o.className,p=o.status;return(0,e.jsxs)(U.Fragment,{children:[0===p&&(0,e.jsx)("div",{className:K()(t,a),children:"未开始"}),1===p&&(0,e.jsx)("div",{className:K()(t,a),style:{background:"#19CB70"},children:"进行中"}),2===p&&(0,e.jsx)("div",{className:K()(t,a),style:{background:"#EE5D5D"},children:"已结束"})]})}},60415:function(o,a,p){"use strict";p.d(a,{AL:function(){return T},Iy:function(){return F},Qv:function(){return r},ez:function(){return k},jb:function(){return c}});var U=p(79800),t=p.n(U),i=p(32834),K=p.n(i),e=p(11690);var A=[],l=["
        "],S=new(K().Renderer),n=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function F(){A.length=0,l=["
          "]}var c={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function R(o,a,p,U){if(a>=o.length||o[a].level<=p)return a;var t=o[a];U.push("
        • "+t.text+"");var i=[];return a=R(o,++a,t.level,i),i.length>0&&(U.push("
            "),i.forEach((function(o){U.push(o)})),U.push("
          ")),U.push("
        • "),a=R(o,a,p,U)}function r(){return R(A,0,0,l),l.push("
        "),l.join("")}var s={heading:function(o){var a=n.exec(o);if(a)return{type:"heading",raw:a[0],depth:a[1].length,text:a[2]}},fences:function(o){var a=this.rules.block.fences.exec(o);if(a){var p=a[0],U=function(o,a){var p=o.match(/^(\s+)(?:```)/);if(null===p)return a;var U=p[1];return a.split("\n").map((function(o){var a=o.match(/^\s+/);return null===a?o:t()(a,1)[0].length>=U.length?o.slice(U.length):o})).join("\n")}(p,a[3]||""),i=a[2]?a[2].trim():a[2];if(["latex","katex","math"].indexOf(i)>=0){var K=N(),e=U;U=K,u[K]={type:"block",expression:e}}return{type:"code",raw:p,lang:i,text:U}}}},m=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,N=function(){return"__special_katext_id_".concat(g++,"__")},u={};function k(){return u}function T(){g=0,u={}}function d(o){return o=o.replace(m,(function(o,a){var p=N();return u[p]={type:"inline",expression:a},p}))}var q=S.listitem;S.listitem=function(o){return q(d(o))};var j=S.paragraph;S.paragraph=function(o){return j(d(o))};var B=S.tablecell;S.tablecell=function(o,a){return B(d(o),a)},S.code=function(o,a,p){var U=(a||"").match(/\S*/)[0];return U?["latex","katex","math"].indexOf(U)>=0?"

        ".concat(o,"

        "):'
        ').concat(p?o:(0,e.escape)(o,!0),"
        \n"):'
        '+(p?o:(0,e.escape)(o,!0))+"
        "},S.heading=function(o,a,p){var U=this.options.headerPrefix+p.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return A.push({anchor:U,level:a,text:o}),"'+o+""},K().setOptions({silent:!0,gfm:!0,pedantic:!1}),K().use({tokenizer:s,renderer:S}),a.ZP=K()},44e3:function(o,a,p){"use strict";var U=p(84966),t=p(10711);const i=U.ZP;i.Header=U.h4,i.Footer=U.$_,i.Content=U.VY,i.Sider=t.Z,a.Z=i},25769:function(o,a,p){"use strict";var U=p(98040),t={"text/plain":"Text","text/html":"Url",default:"Text"};o.exports=function(o,a){var p,i,K,e,A,l,S=!1;a||(a={}),p=a.debug||!1;try{if(K=U(),e=document.createRange(),A=document.getSelection(),(l=document.createElement("span")).textContent=o,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(U){if(U.stopPropagation(),a.format)if(U.preventDefault(),void 0===U.clipboardData){p&&console.warn("unable to use e.clipboardData"),p&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=t[a.format]||t.default;window.clipboardData.setData(i,o)}else U.clipboardData.clearData(),U.clipboardData.setData(a.format,o);a.onCopy&&(U.preventDefault(),a.onCopy(U.clipboardData))})),document.body.appendChild(l),e.selectNodeContents(l),A.addRange(e),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");S=!0}catch(U){p&&console.error("unable to copy using execCommand: ",U),p&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",o),a.onCopy&&a.onCopy(window.clipboardData),S=!0}catch(U){p&&console.error("unable to copy using clipboardData: ",U),p&&console.error("falling back to prompt"),i=function(o){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return o.replace(/#{\s*key\s*}/g,a)}("message"in a?a.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,o)}}finally{A&&("function"==typeof A.removeRange?A.removeRange(e):A.removeAllRanges()),l&&document.body.removeChild(l),K()}return S}},83145:function(o,a,p){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.CopyToClipboard=void 0;var U=i(p(59301)),t=i(p(25769));function i(o){return o&&o.__esModule?o:{default:o}}function K(o){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},K(o)}function e(o,a){var p=Object.keys(o);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(o);a&&(U=U.filter((function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable}))),p.push.apply(p,U)}return p}function A(o,a){if(null==o)return{};var p,U,t=function(o,a){if(null==o)return{};var p,U,t={},i=Object.keys(o);for(U=0;U=0||(t[p]=o[p]);return t}(o,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);for(U=0;U=0||Object.prototype.propertyIsEnumerable.call(o,p)&&(t[p]=o[p])}return t}function l(o,a){if(!(o instanceof a))throw new TypeError("Cannot call a class as a function")}function S(o,a){for(var p=0;p0&&(i=10+p*t);var K=this.randomNum(this.state.fontSizeMax,this.state.contentHeight-5);U>40&&(K=40);var e=this.randomNum(-10,10);o.translate(i,K),o.rotate(e*Math.PI/180),o.fillText(a,0,0),o.rotate(-e*Math.PI/180),o.translate(-i,-K)}},{key:"drawLine",value:function(o){for(var a=0;a<1;a++)o.strokeStyle=this.randomColor(this.state.lineColorMin,this.state.lineColorMax),o.beginPath(),o.moveTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.lineTo(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight)),o.stroke()}},{key:"drawDot",value:function(o){for(var a=0;a<100;a++)o.fillStyle=this.randomColor(0,255),o.beginPath(),o.arc(this.randomNum(0,this.state.contentWidth),this.randomNum(0,this.state.contentHeight),1,0,2*Math.PI),o.fill()}},{key:"randomCode",value:function(){for(var o=this,a="",p=0;p-1||j.indexOf("bigfiles1")>-1?I({url:j,fileType:(o=j,o.substring(o.lastIndexOf("/")+1).split(".").pop()),model:j.indexOf("model=edit")?"edit":"view"}):Z())}),[B,j]);var Z=function(){var o=A()(K()().mark((function o(){var a,p,U;return K()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return console.log("data:",j),a=j,j.startsWith("http")||(a=location.origin+a),p=new URL(a).pathname.split("/").pop(),o.next=6,(0,g.gJ)({attachment_id:p});case 6:(U=o.sent).url=y+U.url,I(U);case 9:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),E=function(){j.startsWith("http")||j.startsWith("blob:")?_():(0,m.Sv)(C||"educoder",j,C)},_=function(){w&&(0,k.fc)({id:null==w?void 0:w.id,watch_type:1,course_id:null==w?void 0:w.course_id}),(0,m.Nd)(C||"educoder",decodeURIComponent(j))};return(0,T.jsxs)("div",{style:t()({},Q||{}),className:"".concat(P&&F.bgBlack," ").concat(B?F.wrp:"hide"),children:[L&&(0,T.jsxs)("div",{className:F.close,ref:X,children:[!!V&&(0,T.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{onClick:function(){h(),V()},children:(0,T.jsx)("i",{className:"icon-yulanpizhu"})})}),!D&&(0,T.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{onClick:_,children:(0,T.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,T.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return X.current},children:(0,T.jsx)("span",{className:"",onClick:h,children:(0,T.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,T.jsx)("div",{className:"".concat(F[x]," ").concat(x," ").concat(F.monaco," ").concat("txt"===B?"show":"hide"),children:"txt"===B&&(0,T.jsx)(T.Fragment,{children:(0,T.jsx)(r.ZP,t()({},f))})}),"audio"===B&&(0,T.jsx)("audio",{src:"".concat((null===(p=j)||void 0===p?void 0:p.indexOf("http://"))>-1||(null===(U=j)||void 0===U?void 0:U.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(j),autoPlay:!0}),"video"===B&&(0,T.jsx)(T.Fragment,{children:(null===(i=j)||void 0===i?void 0:i.indexOf("http"))>-1?(0,T.jsx)("video",{controls:!0,src:"".concat(j),autoPlay:!0}):(0,T.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(j),autoPlay:!0})}),"office"===B&&v&&(0,T.jsx)("iframe",{src:"".concat(z,"/office.html?key=").concat(v.key,"&url=").concat(btoa(v.url),"&callbackUrl=").concat(y+v.callbackUrl,"&fileType=").concat(v.fileType,"&title=").concat(v.title,"&model=").concat(q,"&officeServer=").concat(u.Z.ONLYOFFICE,"&disabledDownload=").concat(!!D)}),"html"===B&&(0,T.jsx)("iframe",{src:j+"&disposition=inline"}),"pdf"===B&&(0,T.jsx)("iframe",{src:"".concat(z,"/js/pdfview/index.html?url=").concat(encodeURIComponent(j),"&disabledDownload=").concat(!!D)}),"image"===B&&(0,T.jsx)("img",{src:"".concat((null===(e=j)||void 0===e?void 0:e.indexOf("http://"))>-1||(null===(l=j)||void 0===l?void 0:l.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(j)}),("other"===B||"download"===B)&&(0,T.jsx)(T.Fragment,{children:H?(0,T.jsx)(N.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,T.jsx)(c.ZP,{icon:(0,T.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,children:"下载"})}):(0,T.jsxs)(c.ZP,{type:"primary",size:"middle",onClick:E,children:[(0,T.jsx)(R.Z,{}),"点击下载"]})})]})}},49519:function(o,a,p){"use strict";p.d(a,{z:function(){return T}});var U=p(82242),t=p.n(U),i=p(37205),K=p.n(i),e=p(91232),A=p.n(e),l=p(79800),S=p.n(l),n=p(59301),F=(p(17014),p(60415)),c=(p(64018),p(77373)),R=p(87799),r=p(26453),s=p(15342),m=p(1012),g=p(53399),N=p(37712),u="@▁@",k=/]*>/g;var T=function(o,a){o=o||"";var p=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return a?o.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(p,(function(o,a,p,U,t,i,K){var e=a||U||i,A=p||t||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):o=o.replace(p,(function(o,a,p,U,t,i,K){var e=a||U||i,A=p||t||K||"?";return R.Z.API_SERVER+"/api/attachments/"+e+A+"&t="+(0,r.Jn)(e,Date.now())+(o.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,p,U,t){var i=a||U,K=p||t||"";return'"'+R.Z.API_SERVER+"/api/attachments/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(o,a,p,U,t){var i=a||U,K=p||t||"";return"("+R.Z.API_SERVER+"/files/uploads/"+i+K+i+K+"&t="+(0,r.Jn)(i,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};a.Z=function(o){var a=o.value,p=void 0===a?"":a,U=o.className,i=o.showTextOnly,e=o.showLines,l=o.style,r=void 0===l?{}:l,T=o.stylesPrev,d=void 0===T?{}:T,q=o.highlightKeywords,j=o.showProgramFill,B=(o.isProgramFill,o.disabledFill),C=void 0!==B&&B,f=o.programFillValue,x=o.onFillChange,Q=void 0===x?function(o){}:x,L=o.onFillBlur,h=void 0===L?function(){}:L,P=String(p),D=(0,n.useState)(""),V=S()(D,2),H=V[0],w=V[1],J=(0,n.useState)("office"),O=S()(J,2),W=O[0],G=O[1],M=(0,n.useState)([]),Y=S()(M,2),b=Y[0],v=Y[1],I=(0,n.useRef)("a"+(0,m.Z)()),z={};var y=function(o){return o.replace(/([\s\S]+?)<\/style>/gim,(function(o,a){var p=a.replace(/(\n|\r)/g,"").split("}"),U=[];return p.map((function(o){""!=o&&U.push(".".concat(I.current," ").concat(o))})),"")}))},X=(0,n.useMemo)((function(){try{P=P.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+R.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+R.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+R.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(o){}if(j){var o=-1;return P=P.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(a,p,U){var t;return function(o,a,p){var U=document.createElement(o===u?"input":"textarea");U.style.width="100%",U.style.height=o===u?"40px":"151px",U.rows=5,U.spellcheck=!1,U.name="edu-program-fill",U.placeholder="请输入",U.dataset.id=a;var t=Object.keys(z).length;return z[t]=U,'')}(a,++o,null==f||null===(t=f[o])||void 0===t?void 0:t.value)})),'
        '.concat(y(P||""),"
        ")}var a=y(P);a=(0,F.ZP)(a);var p=(0,F.ez)();P.match(/\[TOC\]/)&&(a=a.replace("

        [TOC]

        ",(0,F.Qv)()),(0,F.Iy)()),a=a.replace(/(__special_katext_id_\d+__)/g,(function(o,a){var U=p[a],t=U.type,i=U.expression;return(0,s.renderToString)(function(o){var a=document.createElement("div");return a.innerHTML=o,0===a.childNodes.length?"":a.childNodes[0].nodeValue}(i)||"",{displayMode:"block"===t,throwOnError:!1,output:"html"})})),a=a.replace(/▁/g,"▁▁▁▁▁"),(0,F.AL)();var U=document.createElement("div");return U.innerHTML=a,i?U.innerText:q?(_(U,q.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),U.innerHTML):(setTimeout((function(){return ao()}),500),U.innerHTML)}),[P,q]);(0,n.useEffect)((function(){$.current&&$.current.querySelectorAll(["input","textarea"]).forEach((function(o){o.oninput=Z,o.onblur=E}))}),[b]),(0,n.useEffect)((function(){if(null!=f&&f.length)try{var o,a=$.current.querySelectorAll(".edu-program-fill-score"),p=$.current.querySelectorAll('[name="edu-program-fill"]'),U=A()(p.entries());try{for(U.s();!(o=U.n()).done;){var t,i,K,e=S()(o.value,2),l=e[0],n=e[1];n.value=(null==f||null===(t=f[l])||void 0===t?void 0:t.value)||"","warning"===(null==f||null===(i=f[l])||void 0===i?void 0:i.type)?n.className="program-fill-warning":"success"===(null==f||null===(K=f[l])||void 0===K?void 0:K.type)?n.className="program-fill-success":n.className=""}}catch(o){U.e(o)}finally{U.f()}var F,c=A()(a.entries());try{for(c.s();!(F=c.n()).done;){var R,r,s=S()(F.value,2),m=s[0];s[1].innerHTML=null!=f&&null!==(R=f[m])&&void 0!==R&&R.score?"".concat(null==f||null===(r=f[m])||void 0===r?void 0:r.score,"分"):""}}catch(o){c.e(o)}finally{c.f()}v(f)}catch(o){console.log(o,"error")}}),[f]);var Z=function(o){b[o.target.dataset.id]=b[o.target.dataset.id]||{},b[o.target.dataset.id].value=o.target.value,v(K()(b)),Q(b,o.target.dataset.id)},E=function(o){b[o.target.dataset.id]=b[o.target.dataset.id]||{},b[o.target.dataset.id].value=o.target.value,v(K()(b)),h(b,o.target.dataset.id)};function _(o,a){return o.childNodes.forEach((function(o){if(o.childNodes.length>0)_(o,a);else if("IMG"!==o.nodeName)if(o.innerHTML){var p;o.innerHTML=null===(p=o.innerHTML)||void 0===p?void 0:p.replace(new RegExp(a,"gi"),'$&')}else{var U=document.createElement("span");U.innerHTML=o.textContent.replace(new RegExp(a,"gi"),'$&'),o.replaceWith(U)}}))}var $=(0,n.useRef)();function oo(o){var a=o.target;if("A"===a.tagName.toUpperCase()){var p=a.getAttribute("href");if(p.indexOf("office")>-1)o.preventDefault(),w(p),G("office");else if(p.indexOf("application/pdf")>-1)o.preventDefault(),w(p),G("pdf");else if(p.indexOf("text/html")>-1)o.preventDefault(),w(p),G("html");else if(p.startsWith("#")){o.preventDefault();var U=document.getElementById(p.replace("#",""));U&&U.scrollIntoView(!0)}}}F.jb.WebkitLineClamp=e,e&&(r=t()(t()({},r),F.jb));var ao=function(){var o,a=null===(o=$.current)||void 0===o?void 0:o.querySelectorAll("video");null==a||a.forEach((function(o){if(o.oncontextmenu=function(){return!1},o.src.indexOf(".m3u8")>-1)if(o.canPlayType("application/vnd.apple.mpegurl"));else if(c.ZP.isSupported()){var a=new c.ZP;a.loadSource(o.src),a.attachMedia(o)}}))};return(0,n.useEffect)((function(){if($.current&&X&&X.match(k)&&window.PR.prettyPrint(),$.current)return $.current.addEventListener("click",oo),function(){var o;null===(o=$.current)||void 0===o||o.removeEventListener("click",oo),(0,F.AL)(),(0,F.Iy)()}}),[X,$.current,oo]),(0,N.jsxs)(N.Fragment,{children:[i&&(0,N.jsx)("div",{ref:$,children:X}),!i&&(0,N.jsx)("div",{ref:$,style:t()({},r),className:"".concat(U||""," ").concat(C?"disabled-fill":""," markdown-body ").concat(I.current),dangerouslySetInnerHTML:{__html:X}}),(0,N.jsx)(g.Z,{close:!0,data:H,type:null!=H&&H.length?W:"",style:t()({},d),onClose:function(){return w("")}})]})}},59566:function(o,a,p){"use strict";p.r(a),p.d(a,{default:function(){return ao}});var U=p(70236),t=p.n(U),i=p(59301),K=p(48323),e=p(44e3),A=p(95237),l=p(37205),S=p.n(l),n=p(79800),F=p.n(n),c=p(39647),R=p.n(c),r="menuWrap___jwziv",s="nav___FPm96",m="li___Fh4Pt",g="icon___XwtGk",N="name___KN1Th",u="down___CRj5d",k="active___JfaaR",T=p(6848),d=p(37712),q=["user","globalSetting","dispatch","graduations"],j=(0,K.connect)((function(o){var a=o.user,p=o.graduations;return{user:a,globalSetting:o.globalSetting,graduations:p}}))((function(o){o.user,o.globalSetting;var a=o.dispatch,p=o.graduations,U=(R()(o,q),(0,K.useLocation)()),t=(0,i.useState)(),e=F()(t,2),A=e[0],l=e[1],n=(0,i.useState)(["_settings"]),c=F()(n,2),j=c[0],B=c[1],C=(0,K.useParams)(),f=C.id,x=p.menus,Q=void 0===x?[]:x;(0,i.useEffect)((function(){if(Q.length){var o,a=(null===(o=U.pathname.split("/"))||void 0===o?void 0:o[3])||"index";l("students"==a?"teachers":a)}}),[U.pathname,Q]);var L=[{icon_type:"index",name:"毕业概览",icon:"iconfont icon-bishegailan"},{icon_type:"topics",name:"课题管理",icon:"iconfont icon-ketiguanli"},{icon_type:"student_selection",name:"学生选题",icon:"icon-xueshengxuanti1"},{icon_type:"tasks",name:"任务书",icon:"icon-renwushu"},{icon_type:"opening_report",name:"开题报告",icon:"iconfont icon-kaitibaogao"},{icon_type:"midterm_report",name:"中期检查",icon:"iconfont icon-kechengjiaoan"},{icon_type:"thesis",name:"毕业论文",icon:"iconfont icon-biyelunwen"},{icon_type:"final_defense",name:"毕业答辩",icon:"iconfont icon-biyedabian"},{icon_type:"final_thesis",name:"论文定稿",icon:"iconfont icon-lunwendinggao"},{icon_type:"archives",name:"归档",icon:"iconfont icon-guidang1"},{icon_type:"grading_summary",name:"毕业成绩",icon:"iconfont icon-bishechengji"},{icon_type:"_settings",name:"毕业设置",icon:"iconfont icon-biyeshezhi",subclass:["settings","teachers","students"]}],h=function o(p){var U,t,e=p.clazz,n=p.name,F=p.children,c=void 0===F?[]:F,R=p.disable,r=(U=e,null===(t=L.find((function(o){return o.icon_type===U})))||void 0===t?void 0:t.icon);return(0,d.jsxs)(i.Fragment,{children:[R?(0,d.jsx)(T.Z,{title:"该阶段未启用",children:(0,d.jsxs)("div",{className:m,onClick:function(){c.length&&(j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])))},children:[(0,d.jsx)("div",{className:g,children:r&&(0,d.jsx)("i",{className:r})}),(0,d.jsx)("span",{className:N,children:n}),!!c.length&&(0,d.jsx)("span",{className:u,children:j.includes(e)?(0,d.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,d.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]})}):(0,d.jsxs)("div",{onClick:function(){c.length?j.includes(e)?B(j.filter((function(o){return o!==e}))):B([].concat(S()(j),[e])):(l(e),a({type:"graduations/getGraduationsDetails",payload:{id:null==C?void 0:C.id}}),K.history.push("/graduations/".concat(f,"/").concat(e)))},className:A===e?"".concat(m," ").concat(k):m,children:[(0,d.jsx)("div",{className:g,children:r&&(0,d.jsx)("i",{className:r})}),(0,d.jsx)("span",{className:N,children:n}),!!c.length&&(0,d.jsx)("span",{className:u,children:j.includes(e)?(0,d.jsx)("i",{className:"iconfont icon-xialajiantou1"}):(0,d.jsx)("i",{className:"iconfont icon-xialajiantoubeifen"})})]}),j.includes(e)&&c.map((function(a){return o(a)}))]},e)};return(0,d.jsx)("div",{className:r,children:(0,d.jsx)("div",{className:s,children:Q.map((function(o){return h(o)}))})})})),B=p(82242),C=p.n(B),f=p(7557),x=p.n(f),Q=p(41498),L=p.n(Q),h={flex_box_center:"flex_box_center___Zlh8i",flex_space_between:"flex_space_between___lFY3s",flex_box_vertical_center:"flex_box_vertical_center___dQs2p",flex_box_center_end:"flex_box_center_end___mh3GO",flex_box_column:"flex_box_column___fbLGv",bg:"bg___WhklA",center:"center___yiVRe",name:"name___LmNUZ",line:"line___mHXFG",member:"member___ya2z7",btn:"btn___WFeIH",bg2:"bg2___6yejb",modal:"modal___BTChh",red:"red___WFR6s",row:"row___lGy2T",label:"label___Ixyoi",content:"content___oTCar",input:"input___Q19k0",code:"code___ywBNo",copy:"copy___eV4lI"},P=p.p+"static/bg.224d6d3a.jpg",D=p(78241),V=p(43418),H=p(8591),w=p(98135),J=p(5530),O=p(85677),W=p(13046),G=p(56102),M=p(3793),Y=p(36731),b=p(98390),v=(0,K.connect)((function(o){return{graduations:o.graduations,user:o.user}}))((function(o){var a=o.graduations,p=(o.user,o.dispatch),U=(0,K.useParams)(),t=(0,K.useSearchParams)(),e=F()(t,1)[0],A=(0,i.useState)(!1),l=F()(A,2),S=l[0],n=l[1],c=(0,i.useState)(!1),R=F()(c,2),r=R[0],s=R[1],m=(0,i.useState)(!1),g=F()(m,2),N=g[0],u=g[1],k=(0,i.useState)(!1),q=F()(k,2),j=q[0],B=q[1],f=D.Z.useForm(),Q=F()(f,1)[0],v=(0,i.useRef)(null),I=a.details,z=(I.user_identity,I.code_effect_range),y=I.teachers_count,X=I.students_count,Z=function(){p({type:"graduations/getGraduationsDetails",payload:{id:null==U?void 0:U.id}})},E=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,(0,W.ZP)("/api/graduations/detail.json",{method:"get",params:{code:e.get("code")}});case 2:0===o.sent.status&&s(!0);case 4:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}();(0,i.useEffect)((function(){e.get("code")?E():Z()}),[]);var _="".concat(window.location.origin,"/graduations/").concat(U.id,"?code=").concat(null==I?void 0:I.invite_code);return(0,d.jsxs)("div",{className:"".concat(h.bg," ").concat((0,O.tu)()?"":h.bg2),style:{background:"url('".concat((0,O.tu)()?P:"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAeAKADAAQAAAABAAAA+AAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/8AAEQgA+B4AAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAQEBAQEBAgEBAgMCAgIDBAMDAwMEBQQEBAQEBQYFBQUFBQUGBgYGBgYGBgcHBwcHBwgICAgICQkJCQkJCQkJCf/bAEMBAQEBAgICBAICBAkGBQYJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCf/dAAQB4P/aAAwDAQACEQMRAD8A/nFooor/AG5bPlwFFFL7UgClpKWgBaWkpaBBS0lLQTIUUe1FLUSIClpKWsgQUUUe1BqhCM0mwU7NHtQMj2nPFNK45qbNGB0qHICCipsCkKijnQEVJUm31NJt4xmhzQDaSlxRismAU32paT+lADaSnc02gBaBSUtBLFFAopalkC0UlLWbIFpaSlqQClpBS0AM2gUm3HSn0lA+ZjADR7U/3pMCgfMIKOoxTulHtWcpEjNgpmxql96X2pc7Ar0tTYHpSFAaUncrlI/elp2w0FcVIcrEoFGD0pcUE2AdaWkpaTAWikpRWTAWlpKWpAKSlpKACilpKACilpKTJYUUtJWLIaCilpKr2jFzsKWiimqncpVO4U0qDxTqKOdFcyGbFppTnipaKzYWTINp60lT0zAoF7Mjop/FNxQS4CUUUUC5WFKKSloFZi0tJS0CCl9qSl6UFxFFKKSispDaFpaTNL7VBDFooooEFGM0UUAMxSe1PNNrObK5mJTadRUNhzDKSpTSbKQNkdFOK4pMUCYZooxiigQtLSUtAC0e1JS0AKKUUlLUSkKwfSmU+jHap5xpEdJUhWm7Pb9agBtLRg9aXpQAUUdKKAFpRSUtZzExR7UUUvtWZDClpKWggKKKKBBTSoJyadRWbfYaYzYP8/8A66YUNTUVPOylNkJUjmm1YpMLVKoNT7kFFSlMmk8v/P8Ak1XOiudEdLQVNLg+lDZQlLRgjrQOKyYBRj0paWkJxTG0U6jigh0+w2inbfekK4rOZPIxKKMEUVmDTCiiigkKWkpaAFo9qSlrKQCilpBS1AC0UlL7UALRRRQAUhpaSgBuaT2pTSUALQKSlqZbAKKKKX2rEQUtJS0DFooooAWlpKWsZAJSFQTS0dKkBu33pdopaXPegBuKTBp1LnvUuRPMNxSYp1FQqguYbRTsUmKvnQ1JCUUuKSqKCiiigAooorKQBSUtJUANzTacabQAUUUUAKOtHtRS1jJgFLSUtSAtLSUtAgpaSlqJDFooorIBaKKKACiiigAooooAKKKKCGLmikooIYUUUVjJkiigelFLUgFJjtS0tACYPWjB6U6lpMBmG60bTT6UVgKxHgjk0lS0uB2oGQ0e1TYHakwB0oAZg9aMGnUVLYCUUtFRzAFFFFLnAKKKKVwCiiikAUUUUAFFFFJsAooorLnYCc0mDTqWlcTQzB60bTUlLSE4XItrdaNrVLS9KlsXIiAUoqXA9KXApc6F7MhFLUuBRgVm3ctIipak4owKQxnvS07iiglxEoFL0ooFyAOtFFLQL2YCiiikP2aCkoopgoISiiigqyEopaSgYUlLSUAFJS0VUQEooorYzaEo9qWkoEgpKXNJ7UDQopRSUoqojF96KKK2QxKKKKBhRRS4oIbEpcUuKKdyGwoo+lFIQnvRRRQA9O9SU1BgZ9adQwFAzUq1Gvf6VLWDYBUiVHUqjApAOoopKADNFLS4oAbSU7b70ba1gA2kp2DSYI9qsBKSlpKACij6UVUQDGTTNpFSUtbDUiCkqZlB9qjKkGmnYGxv40lLyKStVNCYlFFFUAlFFHFNAJSe1LSVsgEPJ4pvtTqPamA38aKOlAoAKKKStYgHWkpaSrAKSlpKadgEooorZMxlGwlNIBp1J7UxJkRGOtJUvHem7e+aZqpDKKUjFJWqKCiiiqAKiK46VLRQBEKcKXb6UmMUAKKdTc06gAoooq4gFIRkYpaK1AhKkU2rGAetMKA9KaAiopcGkrZAFFFFMApPalpKACkpc0lACZpKWitES43EoopKtEOAUlLSUybBSUtJQAlFFFAIWiiitIjCkoorQYUntS0lBQmBSYFOpParU2KTExS7BRThWiIuxuwdc0nlr/n/APXUlJTDmYzYKTYKkpKrmYczI9go8setPpKpSY+ZjNgpNg9akzSVSbDnYzYPWk2LUlJVBzsj2D1pdgFPpKA5mNHHNFLSUCbCk9qWkqoiCiij2rYBKKM0UAJmiiigBRSiminCtogOFFAoqgEooooAKKKKAsFFFFABRRRQAUUU8JxmqiwFQd6fR0o9qTYBSUUdOKSAKSlpK3QBSUvSkpgFHtRRQAUlLSVcAEpyrn6UAZqUDHSqlKxEpWDpRRRxRF3MhKT2paSrNYR6hSUUdOKCxM0UZooAB1FTD7oqJRzUvQfSgApKWkoAnHQU9OtMHQUfShiZPUgqOpB0rF7ET2uSVIh7VGKcpwahq4upYTrUwPcVXB7ipxWLQ49iYGnA+lRAmpBWbRaJAc0oOKYDTqhxGTUUxW9afWqdwCk9qWkpgFJS0ntQAUlLSVSAKYVz/n/69PpK0iNOwzbQFxT6SqHzsSiiigQCiiimgCij6UVrEBPenoOc0ypV6U5MQ6iiihAFFFFMB6dalqJAc5qWl1AKKKKYBUy/dFQ1Mv3aiewC0lLSe1ZAFS1FUtNgFLSUtIA71KOlRA4qQVTJb1HUlFFJFCr1qQVGp5qQU5GU9xaKKKIjpjk+9Ug9KiU81LRPcU9wpKWkqoEijrU1QipqJlPYSiiiqiADrUi1GOtSLRPYL6jqT2paSsSgFOFNzThQRJCine1NFOFBpHYUdacKZ0p4oInuLSiko5poUdxw608egqOnrTaLmuo+koo9qImQU5OtNpyHBrV7ASikpc0VnABKKKK1AM0lFFAEisTx6U6olO2paACigGigAooooASpV6CoqkU/pSauTIkooorFoIPQKKKKEUFFFFbICZSSMmnUxCMYp9ZSWpjJahRRRVxHAKKKKs1CiiigBR1FTVBUq/drOa6kTHUtFFZmQUUUUAFFFFBtGVwooooKCiiigAooooAKcpwabRSauDRPSU1W9ad7Vi0Y2sFFFFIApKWkoKCiiigpBSUUUDCiiigA/GkpaSkQwoooqWS2FFFGe9RfUkKVWxTaWtU7jTJgwJ4oqLOOlKDzTLVTuSUlN3+1LmkyudC0UmRRkVLQmxaKKKklhSGlpDUskKKKPakIKWiigAoopaACiiigBaKSloAKWkpaACiiigBaSiigApKWkoAKSlpKlgFJRRWbExKKPej2qSWFFFLQQwooooJFopKKACiiigApKWkoAKPaiigApKWk9qACkPpQTSUAKKKSloAWgUlFA7i0UlFKwXDNJRRTEH40UUdKBXEooooAKSlptAxaKSloAKKKKAEooooAKQ9KXOKjJoJkwopKWgxCijpRQAtFFFAC0UlL7UAFFFLQAUUUVnKPUAooorMAooooAKKKKACiiigQUUUUCCiiigkKKKKCQooooAKKKKBBS0lFS43KjIWkoorNwZXOhaKSlpOLGpIKKKKRQtFFFABS0lLQAUUUUALR7UUUCFFFJS0CaCiiigSXYUGiij2qWyxaKSl9qzYBRRS1IBRRRQAUUUUALS02lzSZk4C0UUdKzkQLRRRUALmikpaACj2oooAUUUUUALRRRQAUUZpfagAooooAKWiigAooooEFFFFBLCiiighiUUe9HtQSJSUuaSgApKWkoAWikpaAClFJRSAUUUUe1QwFooo9qhgFFFLSAKKKKAFpRSClHFACil9qSloAWlpKUUAxaWkpaBIKKKKBhRRRQAUUUUAFKKSlFACilpKWgBwoFJmloIkh1FJkdaXIoM7C0UmRRkUCFooyKMigApQcdKSigB+80u80yigB+40bjTaWgLjt1OyKjp1BSk0PyDRTaX2pco/aMXilpKUVPIHtGKKWkpRS9mPnFFKKSlqXETkKKWkpRUhcWiiigEwooopMtMKKKKhoq4UUUVNmAvvS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","') no-repeat center center")},children:[(0,d.jsxs)("div",{className:h.center,children:[(0,d.jsx)(T.Z,{title:null==I?void 0:I.name,children:(0,d.jsx)("div",{className:h.name,children:null==I?void 0:I.name})}),(0,d.jsx)(M.Z,{className:"ml20",status:I.status}),(0,d.jsxs)("div",{style:{marginLeft:"auto"},children:["邀请码",3===z?(0,d.jsx)("b",{className:"ml10",children:"已停用"}):(0,d.jsx)("b",{className:"ml10",style:{color:"#FED218"},children:null==I?void 0:I.invite_code})]}),[0,1,2].includes(z)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:h.line}),(0,d.jsxs)("div",{className:"current",onClick:function(){return n(!0)},children:[(0,d.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-fenxiangketang font14 mr5"})," 分享毕设"]})]}),(0,O.tu)()&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:h.line}),(0,d.jsxs)("div",{className:"current",onClick:function(){var o;V.Z.confirm({centered:!0,okText:"确定",icon:null,width:443,cancelText:"取消",title:"删除毕业设计",content:(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{children:"该操作无法撤销。删除后,毕业设计内的所有数据将被同时删除"}),(0,d.jsx)("div",{className:"mb5",children:"请输入验证码后确认删除"}),(0,d.jsx)(J.Z,{ref:function(o){return v.current=o}})]}),onOk:(o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(!v.current.onVerify()){o.next=2;break}return o.abrupt("return",Promise.reject());case 2:return o.next=4,(0,W.ZP)("/api/graduations/".concat(null==U?void 0:U.id,".json"),{method:"delete"});case 4:0===o.sent.status&&(H.ZP.success("删除成功"),K.history.push("/graduations"));case 6:case"end":return o.stop()}}),o)}))),function(){return o.apply(this,arguments)})})},children:[(0,d.jsx)("i",{style:{color:"#d8d8d8"},className:"iconfont icon-shanchu8 font14 mr5"}),"删除毕设"]})]})]}),(0,O.tu)()&&(0,d.jsxs)("div",{className:h.member,children:[(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/teachers"),children:[(0,d.jsx)("i",{className:"iconfont icon-chengyuanguanli1 mr5"}),"成员管理"]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/students"),children:["学生",(0,d.jsx)("span",{className:"ml10",children:X})]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)(K.Link,{className:h.btn,to:"/graduations/".concat(null==U?void 0:U.id,"/teachers"),children:["教师",(0,d.jsx)("span",{className:"ml10",children:y})]}),(0,d.jsxs)("span",{onClick:function(){B("添加老师")},style:{marginLeft:"auto"},className:h.btn,children:[(0,d.jsx)("i",{className:"iconfont icon-tianjialaoshi font14 mr5"}),"添加老师"]}),(0,d.jsx)("span",{className:h.line}),(0,d.jsxs)("span",{onClick:function(){B("添加学生")},className:h.btn,children:[(0,d.jsx)("i",{className:"iconfont icon-tianjiaxuesheng font14 mr5"}),"添加学生"]})]}),(0,d.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:S,title:"分享毕设",width:666,onCancel:function(){n(!1)},footer:null,children:(0,d.jsxs)("div",{className:h.modal,children:[1===z&&(0,d.jsx)("div",{className:h.red,children:"邀请码已对管理员禁用,用户将无法通过邀请码以管理员身份加入毕设"}),2===z&&(0,d.jsx)("div",{className:h.red,children:"邀请码和邀请链接已对学生禁用,用户将无法通过邀请码以学生身份加入毕设"}),(0,d.jsxs)("div",{className:h.row,children:[(0,d.jsx)("div",{className:h.label,children:"分享方式一"}),(0,d.jsxs)("div",{className:h.content,children:[(0,d.jsx)("div",{className:"c-black",children:"分享邀请码"}),(0,d.jsxs)("div",{className:h.input,children:[(0,d.jsx)("aside",{className:h.code,children:null==I?void 0:I.invite_code}),(0,d.jsx)(G.CopyToClipboard,{text:null==I?void 0:I.invite_code,onCopy:function(){return H.ZP.success("复制成功")},children:(0,d.jsxs)("div",{className:h.copy,children:[(0,d.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制邀请码"]})})]}),(0,d.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过邀请码加入毕业设计时,可以选择加入毕设的身份(选择管理员(教师),需要管理员审核)"})]})]}),(0,d.jsxs)("div",{className:"".concat(h.row," mt30 mb15"),children:[(0,d.jsx)("div",{className:h.label,children:"分享方式二"}),(0,d.jsxs)("div",{className:h.content,children:[(0,d.jsx)("div",{children:"分享链接"}),(0,d.jsxs)("div",{className:h.input,children:[(0,d.jsx)("aside",{className:h.code,style:{width:440},children:_}),(0,d.jsx)(G.CopyToClipboard,{text:_,onCopy:function(){return H.ZP.success("复制成功")},children:(0,d.jsxs)("div",{className:h.copy,children:[(0,d.jsx)("i",{className:"iconfont icon-fuzhi8 font14 mr5"}),"复制链接"]})})]}),(0,d.jsx)("div",{className:"font12",style:{color:"#9096A3"},children:"通过分享链接访问毕设时,已登录用户可以直接以学生身份加入毕设,未注册/登录用户在注册/登录后可以直接加入毕设。"})]})]}),(0,d.jsx)("div",{style:{height:"15px"}})]})}),(0,d.jsx)(V.Z,{centered:!0,keyboard:!1,destroyOnClose:!0,open:r,title:"加入毕设",width:527,confirmLoading:N,onCancel:function(){K.history.replace("/graduations")},onOk:function(){return Q.submit()},children:(0,d.jsx)(D.Z,{colon:!1,form:Q,className:h.formWrap,onFinish:function(){var o=L()(x()().mark((function o(a){var p;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return u(!0),o.next=3,(0,W.ZP)("/api/graduations/join.json",{method:"post",body:C()(C()({},a),{},{user_type:2,code:e.get("code")})});case 3:0===(p=o.sent).status&&(null!=p&&p.identifier?(H.ZP.success("加入成功"),K.history.replace("/graduations/".concat(U.id,"/index")),s(!1),Z()):(H.ZP.success(null==p?void 0:p.message),K.history.replace("/graduations"))),u(!1);case 6:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}(),children:(0,d.jsx)(D.Z.Item,{style:{marginBottom:0},name:"major",label:"专业",rules:[{required:!0,message:"请输入专业名称"},{max:60,message:"输入超限,请缩减字符数"},{whitespace:!0,message:"请输入专业名称"}],children:(0,d.jsx)(w.Z,{showCount:!0,maxLength:60})})})}),(0,d.jsx)(Y.Z,{open:j,onCancel:function(){return B(!1)},title:j,OnOk:function(){var o=L()(x()().mark((function o(a){var t;return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,("添加老师"==j?b.HF:b.NX)({id:U.id,user_ids:a});case 2:if(0!=o.sent.status){o.next=15;break}if(H.ZP.success("添加成功"),B(!1),p({type:"graduations/getGraduationsDetails",payload:{id:null==U?void 0:U.id}}),"添加老师"!=j||!location.pathname.includes("teachers")){o.next=10;break}return p({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 10:if("添加学生"!=j||!location.pathname.includes("students")){o.next=13;break}return p({type:"graduations/setUpdateIndex"}),o.abrupt("return");case 13:t="/graduations/".concat(null==U?void 0:U.id,"/").concat("添加老师"==j?"teachers":"students"),K.history.push(t);case 15:case"end":return o.stop()}}),o)})));return function(a){return o.apply(this,arguments)}}()})]})})),I="icon___qjZkt",z="content___w0ayt",y="dot___vZgx3",X=p(49519);Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable;var Z=p(90758),E=p(26453),_=p(87799),$=(0,K.connect)((function(o){return{graduations:o.graduations}}))((function(o){var a,p,U=o.graduations,t=o.dispatch,e=(0,K.useParams)(),l=(0,K.useLocation)(),S=(0,i.useState)(!1),n=F()(S,2),c=n[0],R=n[1],r=U.menus.find((function(o){return o.stage_url===l.pathname}))||{},s=["opening_report","midterm_report","thesis","final_defense","final_thesis","archives"].includes(null==r?void 0:r.clazz),m=function(){var o=L()(x()().mark((function o(){return x()().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(R(!0),null==r||!r.notice_view){o.next=3;break}return o.abrupt("return");case 3:return o.next=5,(0,W.ZP)("/api/graduations/".concat(null==e?void 0:e.id,"/graduation_stages/").concat(null==r?void 0:r.id,"/notice_view.json"),{method:"post"});case 5:0===o.sent.status&&t({type:"graduations/getGraduationsDetails",payload:{id:null==e?void 0:e.id}});case 7:case"end":return o.stop()}}),o)})));return function(){return o.apply(this,arguments)}}(),g=!(null!=r&&null!==(a=r.attachments)&&void 0!==a&&a.length||null!=r&&r.description);return(0,d.jsxs)(i.Fragment,{children:[s&&(0,d.jsx)(T.Z,{title:"阶段公告/描述",placement:"bottom",children:(0,d.jsx)("div",{className:I,onClick:m,children:(0,d.jsxs)("div",{className:z,children:[(0,d.jsx)("img",{height:20,src:"data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTMzOC4wNzQgMTY1Ljg4OEEzMzcuMSAzMzcuMSAwIDEgMSAyMDUuMjYgODEyLjkwMlYxOTMuMDI0YTMzNi4wMjYgMzM2LjAyNiAwIDAgMSAxMzIuODEzLTI3LjEzNnptLTIxNC41MjggNzcuMDA1djUyMC4xOTJBMzM2LjM4NCAzMzYuMzg0IDAgMCAxIC45NzMgNTAyLjk4OWMwLTEwNC43MDQgNDcuNzE4LTE5OC4yNDcgMTIyLjU3My0yNjAuMDk2eiIgZmlsbD0iI0ZGOUQxOCIvPjxwYXRoIGQ9Ik0yNDYuMTE4Ljc2OGE0MS4zNSA0MS4zNSAwIDAgMSAxNC43NDYgMi43MTRsNTMzLjMgMjA2LjU0aDE4Ny40OTRjMjIuNTI4IDAgNDAuODU3IDE4LjMzIDQwLjg1NyA0MC44NTh2NDgzLjY4NmMwIDIyLjU4LTE4LjI3OCA0MC44NTgtNDAuODU3IDQwLjg1OEg3OTQuMTEyTDI2MC44NjQgOTgyLjAxNmE0MC44NTggNDAuODU4IDAgMCAxLTU1LjYwMy0zOC4wOTNWNDEuNjI2YzAtMjIuNTggMTguMjc4LTQwLjkxIDQwLjg1Ny00MC45MXptNTYwLjUzOCAzMjQuMTQ3aC01Ny4yNDJhMTIuMjg4IDEyLjI4OCAwIDAgMC0xMi4yODggMTIuMjg4VjYzOS41OWMwIDYuNzU5IDUuNTMgMTIuMjg4IDEyLjI4OCAxMi4yODhoNTcuMjQyYTEyLjI4OCAxMi4yODggMCAwIDAgMTIuMjM3LTEyLjI4OFYzMzcuMjAzYTEyLjI4OCAxMi4yODggMCAwIDAtMTIuMjg4LTEyLjI4OHoiIGZpbGw9IiM3MzlFRkYiLz48L3N2Zz4="}),!(null!=r&&r.notice_view)&&(0,d.jsx)("div",{className:y})]})})}),(0,d.jsx)(V.Z,{centered:!0,destroyOnClose:!0,onCancel:function(){return R(!1)},onOk:function(){return R(!1)},open:c,title:"阶段公告/描述",width:990,cancelButtonProps:{style:{display:"none"}},okText:"我知道了",children:g?(0,d.jsx)(Z.Z,{}):(0,d.jsxs)("div",{style:{maxHeight:500},children:[(0,d.jsx)(X.Z,{className:"mb25",value:(null==r?void 0:r.description)||""}),null==r||null===(p=r.attachments)||void 0===p?void 0:p.map((function(o){return(0,d.jsx)(A.Z,{className:"mt4",align:"middle",children:(0,d.jsxs)("div",{style:{color:"#3061D0"},className:"current c-light-primary",onClick:function(){var a;(0,E.Nd)("","".concat(_.Z.API_SERVER).concat(null==o||null===(a=o.url)||void 0===a?void 0:a.replace("disposition=inline","")))},children:[(0,d.jsx)("i",{className:"iconfont icon-wenjian7 font14 mr5"}),(0,E.tP)(o.title,62)]})},o.id)}))]})})]})})),oo=e.Z.Content,ao=function(o){return t()(o),(0,d.jsxs)("div",{className:"bg-white",children:[(0,d.jsx)(v,{}),(0,d.jsxs)(A.Z,{className:"edu-container",wrap:!1,children:[(0,d.jsx)(j,{}),(0,d.jsxs)(oo,{style:{flex:1,width:0,position:"relative"},children:[(0,d.jsx)($,{}),(0,d.jsx)(K.Outlet,{})]})]})]})}},3793:function(o,a,p){"use strict";p.d(a,{Z:function(){return A}});var U=p(59301),t="tag___NEywM",i=p(92310),K=p.n(i),e=p(37712),A=function(o){var a=o.className,p=o.status;return(0,e.jsxs)(U.Fragment,{children:[0===p&&(0,e.jsx)("div",{className:K()(t,a),children:"未开始"}),1===p&&(0,e.jsx)("div",{className:K()(t,a),style:{background:"#19CB70"},children:"进行中"}),2===p&&(0,e.jsx)("div",{className:K()(t,a),style:{background:"#EE5D5D"},children:"已结束"})]})}},60415:function(o,a,p){"use strict";p.d(a,{AL:function(){return T},Iy:function(){return F},Qv:function(){return r},ez:function(){return k},jb:function(){return c}});var U=p(79800),t=p.n(U),i=p(32834),K=p.n(i),e=p(11690);var A=[],l=["
          "],S=new(K().Renderer),n=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function F(){A.length=0,l=["
            "]}var c={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function R(o,a,p,U){if(a>=o.length||o[a].level<=p)return a;var t=o[a];U.push("
          • "+t.text+"");var i=[];return a=R(o,++a,t.level,i),i.length>0&&(U.push("
              "),i.forEach((function(o){U.push(o)})),U.push("
            ")),U.push("
          • "),a=R(o,a,p,U)}function r(){return R(A,0,0,l),l.push("
          "),l.join("")}var s={heading:function(o){var a=n.exec(o);if(a)return{type:"heading",raw:a[0],depth:a[1].length,text:a[2]}},fences:function(o){var a=this.rules.block.fences.exec(o);if(a){var p=a[0],U=function(o,a){var p=o.match(/^(\s+)(?:```)/);if(null===p)return a;var U=p[1];return a.split("\n").map((function(o){var a=o.match(/^\s+/);return null===a?o:t()(a,1)[0].length>=U.length?o.slice(U.length):o})).join("\n")}(p,a[3]||""),i=a[2]?a[2].trim():a[2];if(["latex","katex","math"].indexOf(i)>=0){var K=N(),e=U;U=K,u[K]={type:"block",expression:e}}return{type:"code",raw:p,lang:i,text:U}}}},m=/(?:\${2})([^\n`]+?)(?:\${2})/gi,g=0,N=function(){return"__special_katext_id_".concat(g++,"__")},u={};function k(){return u}function T(){g=0,u={}}function d(o){return o=o.replace(m,(function(o,a){var p=N();return u[p]={type:"inline",expression:a},p}))}var q=S.listitem;S.listitem=function(o){return q(d(o))};var j=S.paragraph;S.paragraph=function(o){return j(d(o))};var B=S.tablecell;S.tablecell=function(o,a){return B(d(o),a)},S.code=function(o,a,p){var U=(a||"").match(/\S*/)[0];return U?["latex","katex","math"].indexOf(U)>=0?"

          ".concat(o,"

          "):'
          ').concat(p?o:(0,e.escape)(o,!0),"
          \n"):'
          '+(p?o:(0,e.escape)(o,!0))+"
          "},S.heading=function(o,a,p){var U=this.options.headerPrefix+p.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return A.push({anchor:U,level:a,text:o}),"'+o+""},K().setOptions({silent:!0,gfm:!0,pedantic:!1}),K().use({tokenizer:s,renderer:S}),a.ZP=K()},44e3:function(o,a,p){"use strict";var U=p(84966),t=p(10711);const i=U.ZP;i.Header=U.h4,i.Footer=U.$_,i.Content=U.VY,i.Sider=t.Z,a.Z=i},25769:function(o,a,p){"use strict";var U=p(98040),t={"text/plain":"Text","text/html":"Url",default:"Text"};o.exports=function(o,a){var p,i,K,e,A,l,S=!1;a||(a={}),p=a.debug||!1;try{if(K=U(),e=document.createRange(),A=document.getSelection(),(l=document.createElement("span")).textContent=o,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",(function(U){if(U.stopPropagation(),a.format)if(U.preventDefault(),void 0===U.clipboardData){p&&console.warn("unable to use e.clipboardData"),p&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var i=t[a.format]||t.default;window.clipboardData.setData(i,o)}else U.clipboardData.clearData(),U.clipboardData.setData(a.format,o);a.onCopy&&(U.preventDefault(),a.onCopy(U.clipboardData))})),document.body.appendChild(l),e.selectNodeContents(l),A.addRange(e),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");S=!0}catch(U){p&&console.error("unable to copy using execCommand: ",U),p&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(a.format||"text",o),a.onCopy&&a.onCopy(window.clipboardData),S=!0}catch(U){p&&console.error("unable to copy using clipboardData: ",U),p&&console.error("falling back to prompt"),i=function(o){var a=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return o.replace(/#{\s*key\s*}/g,a)}("message"in a?a.message:"Copy to clipboard: #{key}, Enter"),window.prompt(i,o)}}finally{A&&("function"==typeof A.removeRange?A.removeRange(e):A.removeAllRanges()),l&&document.body.removeChild(l),K()}return S}},83145:function(o,a,p){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.CopyToClipboard=void 0;var U=i(p(59301)),t=i(p(25769));function i(o){return o&&o.__esModule?o:{default:o}}function K(o){return K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},K(o)}function e(o,a){var p=Object.keys(o);if(Object.getOwnPropertySymbols){var U=Object.getOwnPropertySymbols(o);a&&(U=U.filter((function(a){return Object.getOwnPropertyDescriptor(o,a).enumerable}))),p.push.apply(p,U)}return p}function A(o,a){if(null==o)return{};var p,U,t=function(o,a){if(null==o)return{};var p,U,t={},i=Object.keys(o);for(U=0;U=0||(t[p]=o[p]);return t}(o,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);for(U=0;U=0||Object.prototype.propertyIsEnumerable.call(o,p)&&(t[p]=o[p])}return t}function l(o,a){if(!(o instanceof a))throw new TypeError("Cannot call a class as a function")}function S(o,a){for(var p=0;p-1||V.indexOf("bigfiles1")>-1?B({url:V,fileType:(A=V,A.substring(A.lastIndexOf("/")+1).split(".").pop()),model:V.indexOf("model=edit")?"edit":"view"}):Q())}),[y,V]);var Q=function(){var A=r()(t()().mark((function A(){var g,C,I;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return console.log("data:",V),g=V,V.startsWith("http")||(g=location.origin+g),C=new URL(g).pathname.split("/").pop(),A.next=6,(0,p.gJ)({attachment_id:C});case 6:(I=A.sent).url=G+I.url,B(I);case 9:case"end":return A.stop()}}),A)})));return function(){return A.apply(this,arguments)}}(),E=function(){V.startsWith("http")||V.startsWith("blob:")?_():(0,v.Sv)(w||"educoder",V,w)},_=function(){D&&(0,m.fc)({id:null==D?void 0:D.id,watch_type:1,course_id:null==D?void 0:D.course_id}),(0,v.Nd)(w||"educoder",decodeURIComponent(V))};return(0,b.jsxs)("div",{style:e()({},h||{}),className:"".concat(T&&d.bgBlack," ").concat(y?d.wrp:"hide"),children:[O&&(0,b.jsxs)("div",{className:d.close,ref:Y,children:[!!L&&(0,b.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{onClick:function(){H(),L()},children:(0,b.jsx)("i",{className:"icon-yulanpizhu"})})}),!Z&&(0,b.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{onClick:_,children:(0,b.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,b.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{className:"",onClick:H,children:(0,b.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,b.jsx)("div",{className:"".concat(d[j]," ").concat(j," ").concat(d.monaco," ").concat("txt"===y?"show":"hide"),children:"txt"===y&&(0,b.jsx)(b.Fragment,{children:(0,b.jsx)(u.ZP,e()({},q))})}),"audio"===y&&(0,b.jsx)("audio",{src:"".concat((null===(C=V)||void 0===C?void 0:C.indexOf("http://"))>-1||(null===(I=V)||void 0===I?void 0:I.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(V),autoPlay:!0}),"video"===y&&(0,b.jsx)(b.Fragment,{children:(null===(n=V)||void 0===n?void 0:n.indexOf("http"))>-1?(0,b.jsx)("video",{controls:!0,src:"".concat(V),autoPlay:!0}):(0,b.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(V),autoPlay:!0})}),"office"===y&&R&&(0,b.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(R.key,"&url=").concat(btoa(R.url),"&callbackUrl=").concat(G+R.callbackUrl,"&fileType=").concat(R.fileType,"&title=").concat(R.title,"&model=").concat(z,"&officeServer=").concat(P.Z.ONLYOFFICE,"&disabledDownload=").concat(!!Z)}),"html"===y&&(0,b.jsx)("iframe",{src:V+"&disposition=inline"}),"pdf"===y&&(0,b.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?url=").concat(encodeURIComponent(V),"&disabledDownload=").concat(!!Z)}),"image"===y&&(0,b.jsx)("img",{src:"".concat((null===(l=V)||void 0===l?void 0:l.indexOf("http://"))>-1||(null===(a=V)||void 0===a?void 0:a.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(V)}),("other"===y||"download"===y)&&(0,b.jsx)(b.Fragment,{children:N?(0,b.jsx)(X.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,b.jsx)(i.ZP,{icon:(0,b.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,children:"下载"})}):(0,b.jsxs)(i.ZP,{type:"primary",size:"middle",onClick:E,children:[(0,b.jsx)(c.Z,{}),"点击下载"]})})]})}},49519:function(A,g,C){C.d(g,{z:function(){return b}});var I=C(82242),e=C.n(I),n=C(37205),t=C.n(n),l=C(91232),r=C.n(l),a=C(79800),f=C.n(a),o=C(59301),d=(C(17014),C(60415)),i=(C(64018),C(36422)),c=C(87799),u=C(26453),s=C(15342),v=C(1012),p=C(53399),X=C(37712),P="@▁@",m=/]*>/g;var b=function(A,g){A=A||"";var C=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return g?A.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(C,(function(A,g,C,I,e,n,t){var l=g||I||n,r=C||e||t||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,u.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):A=A.replace(C,(function(A,g,C,I,e,n,t){var l=g||I||n,r=C||e||t||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,u.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var n=g||I,t=C||e||"";return'"'+c.Z.API_SERVER+"/api/attachments/"+n+t+n+t+"&t="+(0,u.Jn)(n,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var n=g||I,t=C||e||"";return"("+c.Z.API_SERVER+"/files/uploads/"+n+t+n+t+"&t="+(0,u.Jn)(n,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};g.Z=function(A){var g=A.value,C=void 0===g?"":g,I=A.className,n=A.showTextOnly,l=A.showLines,a=A.style,u=void 0===a?{}:a,b=A.stylesPrev,x=void 0===b?{}:b,z=A.highlightKeywords,V=A.showProgramFill,y=(A.isProgramFill,A.disabledFill),w=void 0!==y&&y,q=A.programFillValue,j=A.onFillChange,h=void 0===j?function(A){}:j,O=A.onFillBlur,H=void 0===O?function(){}:O,T=String(C),Z=(0,o.useState)(""),L=f()(Z,2),N=L[0],D=L[1],K=(0,o.useState)("office"),F=f()(K,2),W=F[0],k=F[1],S=(0,o.useState)([]),U=f()(S,2),M=U[0],R=U[1],B=(0,o.useRef)("a"+(0,v.Z)()),J={};var G=function(A){return A.replace(/([\s\S]+?)<\/style>/gim,(function(A,g){var C=g.replace(/(\n|\r)/g,"").split("}"),I=[];return C.map((function(A){""!=A&&I.push(".".concat(B.current," ").concat(A))})),"")}))},Y=(0,o.useMemo)((function(){try{T=T.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+c.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+c.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+c.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(A){}if(V){var A=-1;return T=T.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(g,C,I){var e;return function(A,g,C){var I=document.createElement(A===P?"input":"textarea");I.style.width="100%",I.style.height=A===P?"40px":"151px",I.rows=5,I.spellcheck=!1,I.name="edu-program-fill",I.placeholder="请输入",I.dataset.id=g;var e=Object.keys(J).length;return J[e]=I,'')}(g,++A,null==q||null===(e=q[A])||void 0===e?void 0:e.value)})),'
          '.concat(G(T||""),"
          ")}var g=G(T);g=(0,d.ZP)(g);var C=(0,d.ez)();T.match(/\[TOC\]/)&&(g=g.replace("

          [TOC]

          ",(0,d.Qv)()),(0,d.Iy)()),g=g.replace(/(__special_katext_id_\d+__)/g,(function(A,g){var I=C[g],e=I.type,n=I.expression;return(0,s.renderToString)(function(A){var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":g.childNodes[0].nodeValue}(n)||"",{displayMode:"block"===e,throwOnError:!1,output:"html"})})),g=g.replace(/▁/g,"▁▁▁▁▁"),(0,d.AL)();var I=document.createElement("div");return I.innerHTML=g,n?I.innerText:z?(_(I,z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),I.innerHTML):(setTimeout((function(){return gA()}),500),I.innerHTML)}),[T,z]);(0,o.useEffect)((function(){$.current&&$.current.querySelectorAll(["input","textarea"]).forEach((function(A){A.oninput=Q,A.onblur=E}))}),[M]),(0,o.useEffect)((function(){if(null!=q&&q.length)try{var A,g=$.current.querySelectorAll(".edu-program-fill-score"),C=$.current.querySelectorAll('[name="edu-program-fill"]'),I=r()(C.entries());try{for(I.s();!(A=I.n()).done;){var e,n,t,l=f()(A.value,2),a=l[0],o=l[1];o.value=(null==q||null===(e=q[a])||void 0===e?void 0:e.value)||"","warning"===(null==q||null===(n=q[a])||void 0===n?void 0:n.type)?o.className="program-fill-warning":"success"===(null==q||null===(t=q[a])||void 0===t?void 0:t.type)?o.className="program-fill-success":o.className=""}}catch(A){I.e(A)}finally{I.f()}var d,i=r()(g.entries());try{for(i.s();!(d=i.n()).done;){var c,u,s=f()(d.value,2),v=s[0];s[1].innerHTML=null!=q&&null!==(c=q[v])&&void 0!==c&&c.score?"".concat(null==q||null===(u=q[v])||void 0===u?void 0:u.score,"分"):""}}catch(A){i.e(A)}finally{i.f()}R(q)}catch(A){console.log(A,"error")}}),[q]);var Q=function(A){M[A.target.dataset.id]=M[A.target.dataset.id]||{},M[A.target.dataset.id].value=A.target.value,R(t()(M)),h(M,A.target.dataset.id)},E=function(A){M[A.target.dataset.id]=M[A.target.dataset.id]||{},M[A.target.dataset.id].value=A.target.value,R(t()(M)),H(M,A.target.dataset.id)};function _(A,g){return A.childNodes.forEach((function(A){if(A.childNodes.length>0)_(A,g);else if("IMG"!==A.nodeName)if(A.innerHTML){var C;A.innerHTML=null===(C=A.innerHTML)||void 0===C?void 0:C.replace(new RegExp(g,"gi"),'$&')}else{var I=document.createElement("span");I.innerHTML=A.textContent.replace(new RegExp(g,"gi"),'$&'),A.replaceWith(I)}}))}var $=(0,o.useRef)();function AA(A){var g=A.target;if("A"===g.tagName.toUpperCase()){var C=g.getAttribute("href");if(C.indexOf("office")>-1)A.preventDefault(),D(C),k("office");else if(C.indexOf("application/pdf")>-1)A.preventDefault(),D(C),k("pdf");else if(C.indexOf("text/html")>-1)A.preventDefault(),D(C),k("html");else if(C.startsWith("#")){A.preventDefault();var I=document.getElementById(C.replace("#",""));I&&I.scrollIntoView(!0)}}}d.jb.WebkitLineClamp=l,l&&(u=e()(e()({},u),d.jb));var gA=function(){var A,g=null===(A=$.current)||void 0===A?void 0:A.querySelectorAll("video");null==g||g.forEach((function(A){if(A.oncontextmenu=function(){return!1},A.src.indexOf(".m3u8")>-1)if(A.canPlayType("application/vnd.apple.mpegurl"));else if(i.ZP.isSupported()){var g=new i.ZP;g.loadSource(A.src),g.attachMedia(A)}}))};return(0,o.useEffect)((function(){if($.current&&Y&&Y.match(m)&&window.PR.prettyPrint(),$.current)return $.current.addEventListener("click",AA),function(){var A;null===(A=$.current)||void 0===A||A.removeEventListener("click",AA),(0,d.AL)(),(0,d.Iy)()}}),[Y,$.current,AA]),(0,X.jsxs)(X.Fragment,{children:[n&&(0,X.jsx)("div",{ref:$,children:Y}),!n&&(0,X.jsx)("div",{ref:$,style:e()({},u),className:"".concat(I||""," ").concat(w?"disabled-fill":""," markdown-body ").concat(B.current),dangerouslySetInnerHTML:{__html:Y}}),(0,X.jsx)(p.Z,{close:!0,data:N,type:null!=N&&N.length?W:"",style:e()({},x),onClose:function(){return D("")}})]})}},46691:function(A,g,C){C.r(g),C.d(g,{default:function(){return rA}});var I=C(82242),e=C.n(I),n=C(79800),t=C.n(n),l=C(39647),r=C.n(l),a=C(59301),f=C(92736),o=C(81863),d=C(50724),i=C(48323),c=C(99232),u=C.n(c),s="footer___k7tsL",v="fastLink___WjVYd",p=C(37712),X=function(A){A.user;var g,C,I,e,n,t,l=A.globalSetting;return(0,p.jsxs)("div",{className:s,style:{height:null!=l&&null!==(g=l.setting)&&void 0!==g&&g.main_site?"":"80px",lineHeight:null!=l&&null!==(C=l.setting)&&void 0!==C&&C.main_site?"":"80px"},children:[(null==l||null===(I=l.setting)||void 0===I?void 0:I.main_site)&&(0,p.jsxs)("aside",{className:v,children:[(0,p.jsx)("a",{target:"_blank",href:"/",children:"网站首页"}),!(null!=l&&null!==(e=l.setting)&&void 0!==e&&e.is_local)&&(0,p.jsx)("a",{target:"_blank",href:"/help/about_us",children:"关于我们"}),(0,p.jsx)("a",{target:"_blank",href:"/help/contact_us",children:"联系我们"}),(0,p.jsx)("a",{target:"_blank",href:"/help/cooperatives",children:"合作伙伴"}),(0,p.jsx)("a",{target:"_blank",href:"/help/agreement",children:"服务协议"}),(0,p.jsx)("a",{target:"_blank",href:"/help/help_center",children:"帮助中心"}),(0,p.jsx)("a",{target:"_blank",href:"/help/feedback",children:"意见反馈"})]}),null!==(n=l.setting)&&void 0!==n&&n.footer?(0,p.jsx)("div",{dangerouslySetInnerHTML:{__html:null===(t=l.setting)||void 0===t?void 0:t.footer}}):(0,p.jsx)("div",{children:(0,p.jsxs)("p",{className:"footer_con-p inline lineh-30 font-14",children:[(0,p.jsx)("span",{className:"font-18 fl",children:"©"})," ",u()().year()," EduCoder",(0,p.jsx)("a",{style:{color:"#888"},target:"_blank",href:"http://beian.miit.gov.cn/",className:"ml15 mr15",children:"湘ICP备17009477号"}),(0,p.jsxs)("a",{style:{color:"#888"},target:"_blank",href:"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962",className:"mr15",children:[(0,p.jsx)("img",{className:"vertical4",src:"data:image/png;base64,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0p8zAAA7SGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTExLTEwVDE0OjA0OjUwKzA4OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ODBiY2E5ODUtNGY5Yi02ZTRkLTlmYzktZThmNDkyNjdkZjRlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWRkYWU4MGMtODc3MC0xMWU1LTg0OWEtYmNmZGE2MDI4ZjJlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ZDAxN2I5NGUtOTRiZC0yNjQxLThmZjktYmY3YTBhMzY3N2IxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQwMTdiOTRlLTk0YmQtMjY0MS04ZmY5LWJmN2EwYTM2NzdiMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4MGJjYTk4NS00ZjliLTZlNGQtOWZjOS1lOGY0OTI2N2RmNGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaT4zQ0I4RkVFOEMyRUJFNkU1QTREQTk3MzI4MzU0MTI0RTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZGRmY2Y2Zi04NzcwLTExZTUtODQ5YS1iY2ZkYTYwMjhmMmU8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pu6JurQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABRFJREFUeNpE1OtvW/Udx/H3ufj4+Ph2nDh2vLgrTSPaFNqGtd0Gy9LRTVymNoNM6ihCaEwdQ5sYAo0HTOwBYg/Yk0pDiG3qmLSiPtjGJERbdZSQaUArykXt1la9hDRNY6dpYsexj30uPj7ntwcVyT/w0ucrfT5fSQgBdguAEBlZhDhaiVikF2j22lfPjP77+Kc/9ZyO9p37th7s2rLlbegveZ4g6jggS4AMAKkkkhAC366DJJADgaJlgA/unTx+4qmT/7oyKpxJfdYzUDIma7M6TsXoDH+3/8jgnrG/iOC2o8JrIiQJECjpvlt0Q7JoimWEkQHN1Sf+8MbE40+O7226M/rtCYX9+k2e0me55+48XXfn1f1PvvfwiVdfOSLFlKitSbh8hq9+DitZFRlZSaHK1aJ35uV3f3+4zr79/fy42CD9pwtULwdUpwLqu//ID4JzPHPoEQ7+00dc/vM/Eoary3oCPR5dBROeRTxaH7x+9MWpkd3nRsyBPL/InmP6cAN5jUlgtcELkXpMTj19kr3GGfLfuovv7T62Z/GjN67aM2c3XHz/nVUw6jmo7ruJI5eT2idz23lwu0XzbAP5eh3JjBJdCnBP3iSyrhu96VD562nG7m8z8cUm3vwwKCSkVgx5aBWsL1aK4cfvHwilGKg2KWuOxjxEAh+WXKT1Bto2E/lGC42QyrRDX5cHkkStKRPtUQ9sHB5btwLOXHrvh+1yeTiT0KATRRQKZId7aSKw7ukm2Fck8dIQxjNbkHsMctuytOw2CEEhZ0Dp7L1Ls6d+sgIaicxgw/Lp73FB7+bEaQN1V4rqnrUEZQvpfy3sYzfxp5fRnh+m69mtvHWoBsQZ2qzSmlrALU0VV8BwaW5Po6ZyZ9Gi+HWN19+M859XSgztKJA2ktgXaoQLHu65GsnyMudfvsKrh6Lkh0w299WplD38pUvDK6CstkyrIZNavMLe+wM6fgL/6Dzdf/scuS9Cu0chzKlkdxUoTFylcvA8rbbC2GiEZHUSq6GiJuUIgAoQM746Lm+4Nhrk+3jiGxYH+np4vTyIP3uB7uokcjqGc6GGNZCjnCnwdzkGKZMnvrlAJ1nEvEPCyKw5tgKCnBMNwdyUxZ2D0/z2V9t48fkRjlqboeEzalfpMmXeOpakiQFkeO7nOjsGJpmbBFybsGNtXQFVs729k8zjz/uUFi7yy+EoY+NxJo7bXJK38MCmLyjEKnSO9NGuOazZaPDrB65x89Q1bF9Hz2qoprYRuPUcvOYnj1ZP/+6wM9/Gq/hQmmH9Q0NE8zoEVYKqSnPBIb2uC9Z2Q6nC9NuXcZJZEv0JYr0G6YF9O7XM9z+QhBAAdFr/fWzp/IHXAtdJVz6cR40LencOEiw5+HYL2dDRu+JIWoTqqSk6gUp6+3p8l2p6w8gjcTM1Lmn33TrZd2ZwFp2yOx9z9HyYzu8aIKi3CKwGGBqKZqLFoL3cpFWqoa/tRi/m8ZZt3LIlYmuaKKkUsS9rI9pXUfjohdzXkr2RTAGvHhIGKmGg4C5aIELa1TrNyUUkJQKShHujQiQmk/92IasZ1s9Ch9Uta0qKaPeOhyw7/ZpdKrU0ZZlUrkNEstEkH8VbRjgOyY1ZUgMpZK2JmtaQMr3XO+pdv1GN23+kaIus1kb4SBHVblTjTzsX8y859cUHPX9251c29WwKLSmhm3KXGkti3eB6rMe01dzI2aWphXFnpnaib2culBQFEbgA/H8ALiI3EysggNoAAAAASUVORK5CYII="}),"湘公网安备43019002000962号"]}),(0,p.jsx)("a",{href:"https://team.trustie.net",style:{color:"#888"},target:"_blank",children:"Trustie"}),"   &   IntelliDE inside. ",(0,p.jsx)("span",{className:"mr15",children:"版权所有 湖南智擎科技有限公司"})]})})]})},P="newFooter___XUH_2",m=C(43418),b=C(26453),x=C(40937),z=C(49519),V=function(A){A.user;var g,C=A.globalSetting,I=(0,a.useState)(!1),e=t()(I,2),n=e[0],l=e[1];(0,a.useEffect)((function(){return window.addEventListener("click",r),function(){window.removeEventListener("click",r)}}),[]);var r=function(A){var g,C;null==A||!A.target||"头歌教师交流社区"!==(null==A||null===(g=A.target)||void 0===g?void 0:g.innerText)&&"头歌教师交流社区"!==(null==A||null===(C=A.target)||void 0===C||null===(C=C.nextElementSibling)||void 0===C?void 0:C.innerText)||function(A,g){if(A.className===g)return A;for(var C=0,I=A;I=I.parentNode;C++){if(I.className===g)return I;if(I==document.documentElement)return!1}}(A.target,"module-introduce")&&(/macintosh|mac os x/i.test(navigator.userAgent)?l(!0):(0,b.xg)("//shang.qq.com/wpa/qunwpa?idkey=2f2043d88c1bd61d182b98bf1e061c6185e23055bec832c07d8148fe11c5a6cd"))};return(0,p.jsxs)(a.Fragment,{children:[(0,p.jsx)(m.Z,{centered:!0,destroyOnClose:!0,open:n,title:"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return l(!1)},children:(0,p.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,p.jsx)("p",{children:"扫码或搜索加入头歌教师交流QQ群:612934990 "}),(0,p.jsx)("img",{src:x,width:200,height:200})]})}),(0,p.jsx)("div",{className:P,dangerouslySetInnerHTML:{__html:(0,z.z)(null===(g=C.setting)||void 0===g?void 0:g.footer,!0)}})]})},y=(0,i.connect)((function(A){var g=A.user,C=A.loading;return{user:g,globalSetting:A.globalSetting,loading:C.models.index}}))((function(A){var g,C,I=A.user,e=A.globalSetting;A.loading,A.dispatch;return e.showFooter&&e.showHeaderFooter?(0,p.jsx)("section",{id:"footer",children:null==e||null===(g=e.setting)||void 0===g||!g.main_site||null!=e&&null!==(C=e.setting)&&void 0!==C&&C.is_local?(0,p.jsx)(X,{user:I,globalSetting:e}):(0,p.jsx)(V,{user:I,globalSetting:e})}):(0,p.jsx)(p.Fragment,{children:" "})})),w=C(6848),q=C(1260),j=C(98115),h=C(87799),O="sideBar___iM1tf",H="wrap___GEY86",T="backTop___skoyU",Z="ul___JwWww",L=C(47481),N=C(32637),D=(0,i.connect)((function(A){var g=A.loading,C=A.globalSetting,I=A.user,e=A.shixunHomeworks;return{globalSetting:C,user:I,loading:g.models.index,shixunHomeworks:e}}))((function(A){var g,C,I,e,n,l,r,f,o,d,c,u,s,v,X,P=A.globalSetting,x=(A.loading,A.shixunHomeworks),z=A.user,V=(A.dispatch,(0,a.useState)(!1)),y=t()(V,2),D=y[0],K=y[1],F=(0,a.useState)(!1),W=t()(F,2),k=W[0],S=W[1],U=(0,a.useState)(localStorage.hideCustom?JSON.parse(localStorage.hideCustom):[]),M=t()(U,1)[0],R=(0,a.useState)("1"!=(null===(g=localStorage)||void 0===g?void 0:g.hidesidebar)),B=t()(R,2),J=B[0],G=B[1],Y=(0,a.useState)(!1),Q=t()(Y,2),E=(Q[0],Q[1]),_=(0,a.useState)(!1),$=t()(_,2),AA=$[0],gA=$[1],CA=(0,a.useRef)(),IA=(0,i.useLocation)();(0,a.useEffect)((function(){return window.addEventListener("scroll",eA),function(){return window.removeEventListener("scroll",eA)}}),[]),(0,a.useEffect)((function(){setTimeout((function(){localStorage.setItem("hidesidebar","1"),G(!1)}),5e3)}),[]),(0,a.useEffect)((function(){99===x.actionTabs.type&&(E(!0),setTimeout((function(){E(!1)}),5e3))}),[x.actionTabs]),(0,a.useEffect)((function(){"www.educoder.net"===document.domain&&("/"===IA.pathname||IA.pathname.indexOf("/competitions/detail/")>-1||IA.pathname.indexOf("/competitions")>-1&&3===IA.pathname.split("/").length)?gA(!0):gA(!1)}),[IA.pathname]),(0,a.useEffect)((function(){var A,g,C;null!=z&&null!==(A=z.userInfo)&&void 0!==A&&A.login&&(M.includes(null==z||null===(g=z.userInfo)||void 0===g?void 0:g.login)||null!=P&&null!==(C=P.setting)&&void 0!==C&&C.is_local||setTimeout((function(){var A,g,C=document.createEvent("Events");(C.initEvent("mouseout",!0,!1),CA)&&(null===(g=CA.current)||void 0===g||g.dispatchEvent(C));M.push(null==z||null===(A=z.userInfo)||void 0===A?void 0:A.login),localStorage.hideCustom=JSON.stringify(M)}),5e3))}),[z]);var eA=function(){var A;"/Activities"!==IA.pathname?K((null===(A=document)||void 0===A||null===(A=A.documentElement)||void 0===A?void 0:A.scrollTop)>0):K(!1)};return(0,p.jsxs)("div",{className:O,children:[(0,p.jsxs)("div",{id:"wechat_QR_code_ids",children:[AA&&!(0,b.s2)()&&(0,p.jsx)(w.Z,{placement:"left",overlayInnerStyle:{padding:26},getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{className:"flex-wrp flex_box_column flex_box_center",children:[(0,p.jsx)(q.Z,{errorLevel:"H",value:window.location.href,bgColor:"#FFF",size:190,icon:"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(C=P.setting)||void 0===C?void 0:C.tab_logo_url)}),(0,p.jsxs)("div",{className:"tc font15 mt20",children:["请使用微信扫一扫分享",IA.pathname.indexOf("/competitions")>-1?"竞赛":"头歌"]})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-icon-weixin c-light-primary font22"})})}),!P.onlyShowBackTop&&(null==P?void 0:P.onlyShowBackTopIcons)&&J&&(0,p.jsxs)(a.Fragment,{children:[!(null==z||null===(I=z.userInfo)||void 0===I||!I.login)&&(0,p.jsx)(w.Z,{placement:"left",defaultVisible:!(null!=M&&M.includes(null==z||null===(e=z.userInfo)||void 0===e?void 0:e.login)),getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"tc",children:(0,p.jsx)("img",{className:"mt10",src:N,width:"188px",height:"188px"})}),(0,p.jsx)("div",{className:"tc font15 mt10",children:"免费教研助理"}),(0,p.jsx)("div",{className:"tc font15",children:"微信扫一扫添加"}),(0,p.jsx)("div",{className:"pt10 font12",children:(0,p.jsxs)("ul",{className:Z,children:[(0,p.jsx)("li",{children:"解答老师疑惑、帮助老师更快熟悉和使用平台教学"}),(0,p.jsx)("li",{children:"协助老师创建课堂、课程设计、做好教学工作。"}),(0,p.jsx)("li",{children:"根据老师教学方向,分享头歌平台C9院校、985高校、211高校、双一流高校老师经典实践教学案例。"})]})})]}),children:(0,p.jsx)("div",{className:H,ref:CA,children:(0,p.jsx)("a",{href:"javascript:void(0)",children:(0,p.jsx)("i",{className:"iconfont icon-yijianfankui1 c-light-primary font22"})})})}),!(null!=P&&null!==(n=P.setting)&&void 0!==n&&n.is_local)&&(0,p.jsx)(w.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("img",{src:"".concat(h.Z.IMG_SERVER,"/images/educoder/EWM.jpg"),width:"158px",height:"158px"}),(0,p.jsx)("div",{className:"tc font15",children:"微信扫一扫"}),(0,p.jsx)("div",{className:"tc font15",children:"关注公众号"})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),!(null!=P&&null!==(l=P.setting)&&void 0!==l&&l.is_local)&&(0,p.jsx)(w.Z,{placement:"left",title:"在线咨询",children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("a",{onClick:function(){/macintosh|mac os x/i.test(navigator.userAgent);S(!0)},className:"c-white",children:(0,p.jsx)("i",{className:"iconfont icon-QQ1 c-light-primary font22"})})})}),(0,p.jsx)("div",{onClick:function(){G(!1),localStorage.setItem("hidesidebar","1")},style:{textAlign:"center",fontSize:"14px",color:"#0152d9",margin:"10px 0px",cursor:"pointer"},children:"收起"})]}),(null==P||null===(r=P.setting)||void 0===r?void 0:r.main_site)&&!P.onlyShowBackTop&&(null==P?void 0:P.onlyShowBackTopIcons)&&!J&&(0,p.jsx)("div",{onClick:function(){G(!0),localStorage.setItem("hidesidebar","2")},style:{textAlign:"center",fontSize:"16px",color:"#0152d9",background:"#fff",margin:"10px 0px",cursor:"pointer",position:"absolute",left:"80px",top:"-150px",boxShadow:"0px 0px 8px 0px #f1f1f1",width:"30px",writingMode:"vertical-lr",height:"100px",paddingLeft:"3px"},children:"联系我们"}),(null==P?void 0:P.showQuestionBackTop)&&!(null!=P&&null!==(f=P.setting)&&void 0!==f&&f.is_local)&&(0,p.jsx)(w.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("img",{src:L,width:"158px",height:"158px"}),(0,p.jsx)("div",{className:"tc font15 mt10",style:{marginBottom:6},children:"扫码进编程交流群"})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),D&&(0,p.jsx)(w.Z,{placement:"left",title:"返回顶部",children:(0,p.jsx)(j.Z,{className:"".concat(H," ").concat(T),visibilityHeight:0,children:(0,p.jsx)("i",{className:"iconfont icon-huidaodingbu c-light-primary font14"})})})]}),(0,p.jsx)(m.Z,{centered:!0,destroyOnClose:!0,open:k,title:"student"===(null==z||null===(o=z.userInfo)||void 0===o?void 0:o.identity)?"头歌学生交流社区":"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return S(!1)},children:(0,p.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",marginBottom:20},children:[(0,p.jsx)("p",{children:"student"===(null==z||null===(d=z.userInfo)||void 0===d?void 0:d.identity)?"扫码或搜索加入头歌学生交流QQ群:".concat(null==P||null===(c=P.setting)||void 0===c?void 0:c.homepage_stu_qq_number):"扫码或搜索加入头歌教师交流QQ群:".concat(null==P||null===(u=P.setting)||void 0===u?void 0:u.homepage_tea_qq_number)}),(0,p.jsx)("img",{src:"student"===(null==z||null===(s=z.userInfo)||void 0===s?void 0:s.identity)?"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(v=P.setting)||void 0===v?void 0:v.homepage_stu_qq_qrcode_url):"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(X=P.setting)||void 0===X?void 0:X.homepage_tea_qq_qrcode_url),width:200,height:200})]})})]})})),K=C(7557),F=C.n(K),W=C(41498),k=C.n(W),S=C(3113),U=(0,i.connect)((function(A){return{user:A.user,classroomList:A.classroomList}}))((function(A){A.user;var g=A.dispatch,C=A.classroomList;return(0,p.jsx)(m.Z,{title:"温馨提示",zIndex:9999,footer:null,open:"导出提醒"===C.actionTabs.key,onCancel:function(){g({type:"classroomList/setActionTabs",payload:{}})},children:(0,p.jsxs)("div",{children:[(0,p.jsx)("span",{children:"您在当前栏目中有已导出的表格未下载,请先下载已有表格,然后再导出新的表格。"}),(0,p.jsx)("br",{}),(0,p.jsx)("div",{style:{textAlign:"end"},children:(0,p.jsx)(S.ZP,{type:"primary",onClick:k()(F()().mark((function A(){return F()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:g({type:"classroomList/setActionTabs",payload:{}});case 1:case"end":return A.stop()}}),A)}))),children:"知道了"})})]})})})),M=C(95237),R=C(24905),B=(0,i.connect)((function(A){return{user:A.user}}))((function(A){var g,C,I=A.user,e=(0,a.useState)(!1),n=t()(e,2),l=n[0],r=n[1],f=(0,a.useState)(""),o=t()(f,2),d=o[0],i=o[1];(0,a.useEffect)((function(){var A,g,C=localStorage.getItem("extension-modal");if(null!=I&&null!==(A=I.userInfo)&&void 0!==A&&A.login&&C){var e=u()(),n="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),t=localStorage.getItem(n);if(t)if(e<=u()(t))r(!1);else{r(!0),localStorage.removeItem(n),localStorage.removeItem("extension-modal");var l=u()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");i(l)}else{r(!0),localStorage.removeItem("extension-modal");var a=u()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");i(a)}return function(){r(!1)}}}),[null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login]);return(0,p.jsx)(m.Z,{title:"温馨提示",open:l,zIndex:9999,centered:!0,width:594,onCancel:function(){r(!1)},footer:(0,p.jsxs)(M.Z,{align:"middle",justify:"space-between",children:[(0,p.jsx)(R.Z,{onChange:function(A){var g,C="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),e=u()().endOf("day").format("YYYY-MM-DD HH:mm:ss");A.target.checked?localStorage.setItem(C,e):localStorage.removeItem(C)},children:"今日不再提醒"}),(0,p.jsx)(S.ZP,{onClick:function(){r(!1)},style:{borderRadius:4},type:"primary",children:" 关闭"})]}),children:(0,p.jsxs)("div",{className:"font14",style:{paddingLeft:16},children:[(0,p.jsx)("div",{children:"老师您好!"}),(0,p.jsxs)("div",{style:{textIndent:28},children:["感谢您对头歌平台的认可与支持!根据平台",(0,p.jsx)("a",{href:"https://www.educoder.net/help/agreement",target:"_blank",children:"服务协议"}),",贵单位免费试用期已结束,将限制对相关功能和资源的使用。"]}),(0,p.jsx)("div",{style:{textIndent:28},children:"请您添加以下微信客服,协助您完成后续使用及申请流程,感谢支持与理解。"}),(0,p.jsx)("img",{style:{margin:"8px auto",display:"block"},width:160,src:"安徽"===(null===(C=I.userInfo)||void 0===C?void 0:C.school_province)?"data:image/jpeg;base64,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":"data:image/png;base64,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",alt:"二维码"}),(0,p.jsx)("div",{style:{textAlign:"right"},children:"头歌运营中心"}),(0,p.jsx)("div",{style:{textAlign:"right"},children:d})]})})})),J=C(9951),G="modalityModal___fvSjk",Y="modal___wvA_V",Q="itemWarp___JNLoV",E="close___PycHq",_="cancelBtn___kgKTp",$="selfdomModal___doNCF",AA=C(13046),gA=C(89392),CA=C.n(gA),IA=(0,i.connect)((function(A){return{user:A.user,globalSetting:A.globalSetting}}))((function(A){var g,C,I=A.dispatch,e=A.user,n=A.globalSetting,l=(0,a.useState)({}),r=t()(l,2),f=r[0],o=r[1],d=(0,a.useState)([]),c=t()(d,2),s=c[0],v=c[1],X=(0,a.useState)(0),P=t()(X,2),m=P[0],x=P[1],V=(0,a.useState)(!1),y=t()(V,2),w=y[0],q=y[1],j=(0,a.useRef)(null),h=(0,i.useLocation)(),O=function(A){var g,C,I,n="".concat(null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,"-deadline-operate"),t=localStorage.getItem(n)?JSON.parse(localStorage.getItem(n)):[];t=null===(C=t)||void 0===C?void 0:C.filter((function(g){return g.id!==(null==A?void 0:A.id)}));var l=function(A,g){var C=null;return 0===A&&(C=u()().add(100,"month").unix()),1===A&&(C=u()().add(g,"hour").unix()),2===A&&(C=u()().add(g,"days").unix()),3===A&&(C=u()().add(7*g,"days").unix()),4===A&&(C=u()().add(g,"month").unix()),5===A&&(C=u()().add(3*g,"month").unix()),C}(null==A?void 0:A.show_type,null==A?void 0:A.show_count),r={id:null==A?void 0:A.id,deadline:l,type:null==A?void 0:A.show_type};null===(I=t)||void 0===I||I.push(r),localStorage.setItem(n,JSON.stringify(t))},H=function(){W(null==f?void 0:f.id,"close");var A=s[m+1];A?(O(A),o(A),x(m+1),W(null==A?void 0:A.id,"popup")):q(!1)},T=[{name:"首页",key:0,path:"/"},{name:"实践课程",key:1,path:"/paths"},{name:"实践项目",key:2,path:"/shixuns"},{name:"教学课堂",key:3,path:"/classrooms"},{name:"在线竞赛",key:4,path:"/competitions"},{name:"教学案例",key:5,path:"/moop_cases"},{name:"交流问答",key:6,path:"/forums/categories"},{name:"个人中心",key:7,path:"/users"}];(0,a.useEffect)((function(){var A,g;null!=n&&n.operateModelPath&&null!=n&&null!==(A=n.setting)&&void 0!==A&&A.main_site&&null!=e&&null!==(g=e.userInfo)&&void 0!==g&&g.login&&(U(),setTimeout((function(){I({type:"globalSetting/setOperateModelPath",payload:""})}),300))}),[null==n?void 0:n.operateModelPath,null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,null==n||null===(C=n.setting)||void 0===C?void 0:C.main_site]),(0,a.useEffect)((function(){var A,g,C;if(null!=h&&null!==(A=h.pathname)&&void 0!==A&&A.includes("/users")&&4===(null==h||null===(g=h.pathname)||void 0===g||null===(g=g.split("/"))||void 0===g?void 0:g.length))I({type:"globalSetting/setOperateModelPath",payload:"/users"});else if(null!=h&&null!==(C=h.pathname)&&void 0!==C&&C.includes("/forums/categories"))I({type:"globalSetting/setOperateModelPath",payload:"/forums/categories"});else for(var e=0;eparseInt(g)&&V(!0):V(!0)}),[]),(0,p.jsxs)(f.ZP,{locale:o.Z,autoInsertSpaceInButton:!1,children:["/"===P.pathname&&z&&(null==c||null===(g=c.setting)||void 0===g||null===(g=g.adv_index)||void 0===g?void 0:g.image_url)&&(null==c||null===(C=c.setting)||void 0===C?void 0:C.main_site)&&(0,p.jsxs)("div",{onClick:function(){var A;return window.open(null==c||null===(A=c.setting)||void 0===A||null===(A=A.adv_index)||void 0===A?void 0:A.jump_url)},style:{background:"url(".concat(h.Z.IMG_SERVER+(null==c||null===(I=c.setting)||void 0===I||null===(I=I.adv_index)||void 0===I?void 0:I.image_url),") no-repeat center center"),width:"100%",height:60,margin:"0px auto",display:"flex",cursor:"pointer",backgroundSize:"cover"},children:[(0,p.jsxs)("div",{style:{width:1200,margin:"0px auto",height:60,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,p.jsx)("div",{style:{fontSize:24,fontWeight:"bold",color:"#fff",visibility:"hidden"},children:"【计算机学习交流群】领取C语言/Java/Python/程序竞赛资料,点击加入"}),(0,p.jsxs)("div",{onClick:function(){window.open("https://mp.weixin.qq.com/s/31gNJVLlG1nTymoyL1uUJA")},style:{visibility:"hidden",width:"104px",height:"30px",borderRadius:15,display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",cursor:"pointer",background:"linear-gradient(270deg, #FF4C00 0%, #FF9C01 100%)"},children:["查看详情 ",(0,p.jsx)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAAXNSR0IArs4c6QAAALhJREFUOE+dkjEOgVEQhL8pRCNR0UlE5Qg6Z9C5gcIFUDmAEyhVWgqJBIVE4hwanUSlkpEn709EIe/ZcrPzZXZ2RWLZrkq6f48rRW+7DWyBjqTrpyYJEAS2x0AP6Ep6FJBkQIQsgDLQl+TQywUE8R7YSZpmA6KLOnAGJpKWsv228kfdgEbWCtFBCzgCQ0mrLIDtGnACZpLmWRnYrgAHYFMEmAywXQLWwEXSIPuRbDeBUdz7mQ34daEX5wM7Fb5x5tMAAAAASUVORK5CYII=",style:{marginLeft:5}})]})]}),(0,p.jsx)("img",{src:nA,onClick:function(A){A.stopPropagation(),localStorage.setItem("mainclose",u()().add(1,"days").unix()+""),V(!1)},style:{width:16,height:16,marginRight:6,marginTop:6,cursor:"pointer"}})]}),"kepukehuan.educoder.net"!==document.domain&&(0,p.jsx)(d.Z,e()({},X)),(0,p.jsx)("section",{className:eA.Z.layoutMainClass,style:{marginTop:"/training"==P.pathname?"-72px":""},children:(0,p.jsx)(i.Outlet,{})}),(0,p.jsx)(D,{}),!(0,b.Ll)()&&"kepukehuan.educoder.net"!==document.domain&&(0,p.jsx)(y,{}),(0,p.jsx)(U,{}),(0,p.jsx)(B,{}),"Account-ProfessionalAuth"===v.actionTabs.key&&(null===(n=v.actionTabs)||void 0===n||null===(n=n.code)||void 0===n?void 0:n.length)>0&&(0,p.jsx)(tA.Z,{Scoid:null==s||null===(l=s.userInfo)||void 0===l?void 0:l.user_school_id}),!(0,b.Ll)()&&(0,p.jsx)(IA,{})]})}))},29137:function(A,g,C){C.d(g,{Z:function(){return E}});var I=C(82242),e=C.n(I),n=C(7557),t=C.n(n),l=C(41498),r=C.n(l),a=C(79800),f=C.n(a),o=C(39647),d=C.n(o),i=C(59301),c=C(48323),u=C(57809),s=C(46651),v=C(78241),p=C(8591),X=C(43418),P=C(95237),m=C(43604),b=C(71418),x=C(98135),z=C(88522),V=C(3113),y=C(87799),w=C(51941),q=C(3141),j=C(26453),h=C(21894),O=C(19842),H=C(2720),T=C(97650),Z=C(45293),L="flexRow___jGYtM",N="flexColumn___NPMB3",D="formWrap___vwH9N",K="example____BmJC",F="footerWrap___lp1L0",W=C(37712),k=["account","globalSetting","loading","dispatch","schoolName","visible","onClose","onSuccess"],S=function(A,g){return g.some((function(g){return g.label.toLowerCase().indexOf(A.toLowerCase())>-1}))},U=x.Z.TextArea,M=(0,c.connect)((function(A){var g=A.account,C=A.loading;return{account:g,globalSetting:A.globalSetting,loading:C.effects}}))((function(A){A.account,A.globalSetting;var g=A.loading,C=A.dispatch,I=A.schoolName,e=A.visible,n=A.onClose,l=void 0===n?function(){}:n,a=A.onSuccess,o=void 0===a?function(){}:a,c=(d()(A,k),v.Z.useForm()),u=f()(c,1)[0];(0,i.useEffect)((function(){u.setFieldsValue({name:I})}),[I]);var s=function(){var A=r()(t()().mark((function A(g){var I,e,n,r,a,f,d;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return e=(I=g||{}).name,n=I.city,r=void 0===n?[]:n,a=I.address,f=I.remarks,A.next=3,C({type:"account/appplySchool",payload:{name:e,province:r[0],city:r[1],address:a,remarks:f}});case 3:d=A.sent,l(),d&&(p.ZP.success("新增学校/单位成功!"),o(e));case 6:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}();return(0,W.jsx)(X.Z,{centered:!0,keyboard:!1,closable:!1,destroyOnClose:!0,open:e,title:"申请添加单位名称",width:"600px",footer:null,children:(0,W.jsxs)(v.Z,{className:D,form:u,labelCol:{span:4},wrapperCol:{span:20},onFinish:s,children:[(0,W.jsx)(v.Z.Item,{label:"单位全称:",name:"name",rules:[{required:!0,message:"请输入学校或工作单位"}],children:(0,W.jsx)(x.Z,{placeholder:"学校或工作单位"})}),(0,W.jsxs)("div",{className:"".concat(L," ").concat(K),children:[(0,W.jsx)("div",{children:"示例:"}),(0,W.jsxs)("div",{className:N,children:[(0,W.jsxs)("div",{children:[(0,W.jsx)(H.Z,{style:{color:"rgb(82, 196, 26)"}}),(0,W.jsx)("span",{className:"font14 ml5",children:"正确示例:数据结构"})]}),(0,W.jsxs)("div",{children:[(0,W.jsx)(T.Z,{style:{color:"red"}}),(0,W.jsx)("span",{className:"font14 ml5",children:"错误示例:数据结构2019春"})]})]})]}),(0,W.jsx)(v.Z.Item,{label:"地区:",name:"city",children:(0,W.jsx)(O.Z,{allowClear:!0,size:"middle",options:Z.P,placeholder:"请选择所在地",showSearch:{matchInputWidth:!0,filter:S}})}),(0,W.jsx)(v.Z.Item,{label:"详细地址:",name:"address",children:(0,W.jsx)(x.Z,{placeholder:"请填写完整的地址信息"})}),(0,W.jsx)(v.Z.Item,{label:"说明:",name:"remarks",children:(0,W.jsx)(U,{placeholder:"再次说明特别情况(选填)"})}),(0,W.jsx)("div",{className:F,children:(0,W.jsxs)(v.Z.Item,{children:[(0,W.jsx)(V.ZP,{className:"mr5",size:"middle",onClick:function(){l()},children:"取消"}),(0,W.jsx)(V.ZP,{size:"middle",type:"primary",htmlType:"submit",loading:g["account/appplySchool"],children:"保存"})]})})]})})})),R=C(77790),B=C(89392),J=["user","account","globalSetting","loading","dispatch","Scoid"],G=u.default.Option,Y=s.Z.Dragger,Q=function(A){return A[A.Professor=1]="Professor",A[A.AssistantProfessor=2]="AssistantProfessor",A[A.Student=3]="Student",A}(Q||{}),E=(0,c.connect)((function(A){var g=A.user,C=A.account,I=A.loading;return{user:g,account:C,globalSetting:A.globalSetting,loading:I.effects}}))((function(A){var g,C,I=A.user,n=A.account,l=A.globalSetting,a=A.loading,o=A.dispatch,c=A.Scoid,s=(d()(A,J),v.Z.useForm()),O=f()(s,1)[0],H=(0,i.useState)({}),T=f()(H,2),Z=T[0],L=T[1],N=(0,i.useState)([]),D=f()(N,2),K=D[0],F=D[1],k=(0,i.useState)([]),S=f()(k,2),U=S[0],E=S[1],_=(0,i.useState)([]),$=f()(_,2),AA=$[0],gA=$[1],CA=(0,i.useState)([]),IA=f()(CA,2),eA=IA[0],nA=IA[1],tA=(0,i.useState)(),lA=f()(tA,2),rA=lA[0],aA=lA[1],fA=(0,i.useState)(),oA=f()(fA,2),dA=oA[0],iA=oA[1],cA=(0,i.useState)(),uA=f()(cA,2),sA=uA[0],vA=uA[1],pA=(0,i.useState)(),XA=f()(pA,2),PA=XA[0],mA=XA[1],bA=(0,i.useState)(),xA=f()(bA,2),zA=xA[0],VA=xA[1],yA=(0,i.useRef)((0,B.throttle)((function(A){return wA(A)}),1200,{leading:!0,trailing:!0})).current;(0,i.useEffect)((function(){}),[]),(0,i.useEffect)((function(){r()(t()().mark((function A(){var g;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(c){A.next=2;break}return A.abrupt("return");case 2:return A.next=4,qA(c);case 4:g=A.sent,gA(null==g?void 0:g.departments);case 6:case"end":return A.stop()}}),A)})))()}),[c]);var wA=function(){var A=r()(t()().mark((function A(g){var C,I,n;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,o({type:"account/getSchoolOption",payload:{keyword:g,limit:10}});case 2:C=A.sent,F(null==C?void 0:C.schools),g&&""!=g&&(E(null==C||null===(I=C.schools)||void 0===I?void 0:I.filter((function(A){return A.name.includes(g)}))),((null==C||null===(n=C.schools)||void 0===n?void 0:n.find((function(A){return A.name===g})))||{}).id?hA(g,null,null==C?void 0:C.schools):(O.setFieldsValue({department:""}),L(e()(e()({},Z),{school:g,department:""}))));case 5:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),qA=function(A){if(A)return o({type:"account/getDepartmentOption",payload:{id:A}})};(0,i.useEffect)((function(){if(n.basicInfo){var A=n.basicInfo,g={identity:A.identity,school:A.school_name,department:A.department_name,studentNo:A.student_id,jobTitle:"teacher"==A.identity?A.technical_title:"教授",manager:"professional"==A.identity?A.technical_title:"企业管理者"};O.setFieldsValue(g),L(g)}}),[n.basicInfo]);var jA=function(A,g){n.actionTabs.checkedList.includes(Q.Professor)?X.Z.confirm({centered:!0,okText:"确定",cancelText:"取消",title:"提示",content:(0,W.jsx)("div",{className:"tc",children:g||"申请已提交,请等待审核"}),onOk:function(){window.location.href="/classrooms/".concat(A,"/students")}}):window.location.href="/classrooms/".concat(A,"/students")},hA=function(){var A=r()(t()().mark((function A(g,C,I){var n,l,r,a,f;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return r=null===(n=(I||K).find((function(A){return A.name===g})))||void 0===n?void 0:n.id,A.next=3,qA(r);case 3:if(A.t0=A.sent,A.t0){A.next=6;break}A.t0={};case 6:a=A.t0,gA(null==a?void 0:a.departments),f=C||(null==a||null===(l=a.departments)||void 0===l||null===(l=l[0])||void 0===l?void 0:l.name),O.setFieldsValue({department:f}),L(e()(e()({},Z),{school:g,department:f}));case 11:case"end":return A.stop()}}),A)})));return function(g,C,I){return A.apply(this,arguments)}}(),OA=function(){var A=r()(t()().mark((function A(g){return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,wA();case 2:O.setFieldsValue({school:g,department:""}),L(e()(e()({},Z),{school:g,department:""}));case 4:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),HA=function(){var A=r()(t()().mark((function A(g){var C,e,l,r,a,f,d,i,c,u,s,v,X,P,m,b,x;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(f=(a=g||{}).school,d=a.department,i=a.identity,c=a.studentNo,u=a.jobTitle,s=a.manager,rA){A.next=4;break}return p.ZP.info("请先上传照片!"),A.abrupt("return");case 4:return v=null===(C=K.find((function(A){return A.name===f})))||void 0===C?void 0:C.id,X=null===(e=AA.find((function(A){return A.name===d})))||void 0===e?void 0:e.id,P="student"===i?c:"teacher"===i?u:s,A.next=9,o({type:"account/applyProfessionalAuth",payload:{id:(null===(l=n.basicInfo)||void 0===l?void 0:l.id)||(null===(r=I.userInfo)||void 0===r?void 0:r.login),school_id:v,department_id:X,identity:i,extra:P,attachment_ids:[dA]}});case 9:if(m=A.sent,!n.actionTabs.code){A.next=15;break}return A.next=13,(0,R.cR)({invite_code:n.actionTabs.code,professor:n.actionTabs.checkedList.includes(Q.Professor)?1:null,assistant_professor:n.actionTabs.checkedList.includes(Q.AssistantProfessor)?1:null,student:n.actionTabs.checkedList.includes(Q.Student)?1:null});case 13:"加入成功"===(b=A.sent).message&&(null!=b&&b.course_id?jA(b.course_id,b.message):p.ZP.success(b.message));case 15:TA(),m&&(p.ZP.info("申请已提交,请等待审核!"),o({type:"account/getBasicInfo",payload:{login:null===(x=I.userInfo)||void 0===x?void 0:x.login}}));case 17:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),TA=function(){o({type:"account/setActionTabs",payload:{}})},ZA={data:{type:"professional"},multiple:!0,showUploadList:!1,action:"".concat(y.Z.API_SERVER,"/api/attachments.json"),className:q.Z.uploader,onChange:function(A){var g;"uploading"!==A.file.status?"done"===A.file.status&&(console.log(A.file,A.file.response),iA(null===(g=A.file.response)||void 0===g?void 0:g.id),(0,j.y3)(A.file.originFileObj,(function(A){aA(A),vA(!1)}))):vA(!0)},beforeUpload:function(A){var g="image/jpeg"===A.type||"image/png"===A.type||"image/jpg"===A.type||"image/bmp"===A.type;return g||p.ZP.info("请上传正确文件格式"),g}};return(0,W.jsxs)(X.Z,{centered:!0,keyboard:!1,closable:!1,destroyOnClose:!0,className:q.Z.modal,open:"Account-ProfessionalAuth"===n.actionTabs.key,title:(0,W.jsxs)(P.Z,{style:{padding:"25px"},align:"middle",justify:"space-between",children:[(0,W.jsx)(m.Z,{children:"职业认证"}),(0,W.jsx)(m.Z,{children:(0,W.jsx)("i",{className:"iconfont icon-guanbi11",style:{color:"#979797",cursor:"pointer"},onClick:TA})})]}),width:"660px",footer:null,children:[(0,W.jsx)(b.Z,{spinning:!!sA,children:(0,W.jsxs)(v.Z,{className:q.Z.formWrap,form:O,colon:!1,onValuesChange:function(A){(L(e()({},O.getFieldsValue())),"school"in A)&&(E(K.filter((function(g){return g.name.includes(A.school)}))),(K.find((function(g){return g.name===A.school}))||{}).id?hA(A.school):(O.setFieldsValue({department:""}),L(e()(e()({},Z),{school:A.school,department:""}))))},onFinish:HA,children:[(0,W.jsxs)(P.Z,{gutter:[10,0],children:[(0,W.jsx)(m.Z,{flex:"300px",children:(0,W.jsx)(v.Z.Item,{label:"职业",name:"identity",rules:[{required:!0,message:"请先选择职业"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"teacher",children:"教师"}),(0,W.jsx)(G,{value:"student",children:"学生"}),(0,W.jsx)(G,{value:"professional",children:"专业人士"})]})})}),"student"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.studentNo,name:"studentNo",rules:[{required:!0,message:"请先输入学号"}],children:(0,W.jsx)(x.Z,{type:"text",placeholder:"请输入学号"})})}),"teacher"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.jobTitle,name:"jobTitle",rules:[{required:!0,message:"请先选择职称"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"教授",children:"教授"}),(0,W.jsx)(G,{value:"副教授",children:"副教授"}),(0,W.jsx)(G,{value:"讲师",children:"讲师"}),(0,W.jsx)(G,{value:"助教",children:"助教"})]})})}),"professional"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.manager,name:"manager",rules:[{required:!0,message:"请先选择职称"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"企业管理者",children:"企业管理者"}),(0,W.jsx)(G,{value:"部门管理者",children:"部门管理者"}),(0,W.jsx)(G,{value:"高级工程师",children:"高级工程师"}),(0,W.jsx)(G,{value:"工程师",children:"工程师"}),(0,W.jsx)(G,{value:"助理工程师",children:"助理工程师"})]})})})]}),(0,W.jsx)(v.Z.Item,{label:"学校/单位",name:"school",extra:Z.school&&!(null!=K&&K.find((function(A){return A.name===Z.school})))&&(0,W.jsxs)("div",{className:q.Z.schoolHintWrap,children:[(0,W.jsxs)("span",{className:q.Z.colorCDCDCD,children:["未找到包含“",Z.school,"”的高校,"]}),(0,W.jsx)("span",{className:"".concat(q.Z.color0152d9," current"),onClick:function(){mA(!0)},children:"申请新增"})]}),rules:[{required:!0,message:"请先选择学校/单位"}],children:(0,W.jsx)(z.Z,{showSearch:!0,onSearch:yA,options:null==U?void 0:U.map((function(A){return{value:A.name}}))})}),(0,W.jsx)(v.Z.Item,{label:"院系/部门",name:"department",extra:Z.department&&!(null!=AA&&AA.find((function(A){return A.name===Z.department})))&&(0,W.jsxs)("div",{className:q.Z.schoolHintWrap,children:[(0,W.jsx)("span",{className:q.Z.colorCDCDCD,children:Z.department?"未找到包含“".concat(Z.department,"”的高校,"):"未找到院系,"}),(0,W.jsx)("span",{className:"".concat(q.Z.color0152d9," current"),onClick:function(){K.find((function(A){return A.name===Z.school}))?VA(!0):p.ZP.info("请先选择正确的单位或者学校!")},children:"申请新增"})]}),rules:[{required:!0,message:"请先选择院系/部门"}],children:(0,W.jsx)(z.Z,{showSearch:!0,onChange:function(A){return nA(AA.filter((function(g){return g.name.includes(A)})))},options:null==eA?void 0:eA.map((function(A){return{value:A.name}}))})}),(0,W.jsx)(v.Z.Item,{label:"职业证上传",children:(0,W.jsxs)("div",{className:q.Z.flexRow,children:[(0,W.jsxs)("div",{className:q.Z.flexColumn,children:[(0,W.jsx)(Y,e()(e()({},ZA),{},{accept:".png,.jpg,.bmp,.jpeg",children:rA?(0,W.jsx)("img",{src:rA,className:q.Z.uploadImg}):(0,W.jsxs)("div",{className:q.Z.imageTip,children:[(0,W.jsx)("p",{children:(0,W.jsx)("i",{className:"iconfont icon-cuban2shangchuanyunduan ".concat(q.Z.uploadTipIcon)})}),(0,W.jsx)("p",{className:q.Z.uploadTip,children:(0,W.jsx)("a",{className:q.Z.color05101a,children:"点击或拖拽上传图片"})})]})})),(0,W.jsx)("span",{className:"tc",children:(0,W.jsx)("p",{className:q.Z.viewLargerImg,children:"查看大图"})})]}),(0,W.jsxs)("div",{className:"".concat(q.Z.flexColumn," ").concat(q.Z.example),children:[(0,W.jsx)("span",{className:q.Z.exampleImg,children:(0,W.jsx)("img",{src:w})}),(0,W.jsxs)("span",{className:"tc",children:[(0,W.jsx)("p",{children:"示例图片"}),(0,W.jsx)("p",{className:"".concat(q.Z.colorOrange," font12"),children:"(png/jpg/bmp格式,不超过2MB)"})]})]})]})}),(0,W.jsx)("div",{className:q.Z.footerWrap,children:(0,W.jsxs)(v.Z.Item,{children:[(0,W.jsx)(V.ZP,{className:"mr5",size:"middle",onClick:TA,children:"取消"}),(0,W.jsx)(V.ZP,{size:"middle",type:"primary",htmlType:"submit",loading:a["account/applyProfessionalAuth"],children:"保存"})]})}),(0,W.jsxs)("div",{className:q.Z.note,children:[(0,W.jsx)("p",{children:"认证须知:"}),(0,W.jsx)("p",{children:"1.根据职业上传相应的证件照:教师(教师证),专业人士(员工证)、学生(学生证),请确保证件照内容完整并且清晰可见,严禁PS;"}),(0,W.jsx)("p",{children:"2.我们将在你提交职业证信息后的24小时(不包含节假日)内完成审核,审核结果将会以系统消息的形式发送给你;"}),(0,W.jsx)("p",{children:"3.职业认证审核完成后,无法删除,请谨慎填写;职业变更请选择重新认证;"}),(0,W.jsx)("p",{children:"4.职业认证审核完成后,系统将自动发放500个金币作为奖励;"}),(0,W.jsx)("p",{children:"5.我们会确保你所提供的信息均处于严格的保密状态,不会泄露;"}),(0,W.jsxs)("p",{children:["6.如存在恶意乱填写姓名,学号,及上传与职业证件无关图片者,一经发现将冻结",!(null!=l&&null!==(g=l.setting)&&void 0!==g&&g.is_local)&&"EduCoder","账号。"]}),(0,W.jsx)("p",{children:"7.非老师身份提交职业认证后系统会自动将状态改为已认证,你将可以体验平台需要职业认证的功能;如果在认证后的使用过程中未通过审核,你将不能继续体验需要认证的功能。"})]})]})}),(0,W.jsx)(M,{visible:PA,onClose:function(){return mA(!1)},schoolName:Z.school,onSuccess:OA}),(0,W.jsx)(h.Z,{visible:zA,onClose:function(){return VA(!1)},schoolId:null===(C=K.find((function(A){return A.name===Z.school})))||void 0===C?void 0:C.id,schoolName:Z.school,departmentName:Z.department,onSuccess:function(A){return hA(Z.school,A)}})]})}))},60415:function(A,g,C){C.d(g,{AL:function(){return b},Iy:function(){return d},Qv:function(){return u},ez:function(){return m},jb:function(){return i}});var I=C(79800),e=C.n(I),n=C(32834),t=C.n(n),l=C(11690);var r=[],a=["
            "],f=new(t().Renderer),o=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function d(){r.length=0,a=["
              "]}var i={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function c(A,g,C,I){if(g>=A.length||A[g].level<=C)return g;var e=A[g];I.push("
            • "+e.text+"");var n=[];return g=c(A,++g,e.level,n),n.length>0&&(I.push("
                "),n.forEach((function(A){I.push(A)})),I.push("
              ")),I.push("
            • "),g=c(A,g,C,I)}function u(){return c(r,0,0,a),a.push("
            "),a.join("")}var s={heading:function(A){var g=o.exec(A);if(g)return{type:"heading",raw:g[0],depth:g[1].length,text:g[2]}},fences:function(A){var g=this.rules.block.fences.exec(A);if(g){var C=g[0],I=function(A,g){var C=A.match(/^(\s+)(?:```)/);if(null===C)return g;var I=C[1];return g.split("\n").map((function(A){var g=A.match(/^\s+/);return null===g?A:e()(g,1)[0].length>=I.length?A.slice(I.length):A})).join("\n")}(C,g[3]||""),n=g[2]?g[2].trim():g[2];if(["latex","katex","math"].indexOf(n)>=0){var t=X(),l=I;I=t,P[t]={type:"block",expression:l}}return{type:"code",raw:C,lang:n,text:I}}}},v=/(?:\${2})([^\n`]+?)(?:\${2})/gi,p=0,X=function(){return"__special_katext_id_".concat(p++,"__")},P={};function m(){return P}function b(){p=0,P={}}function x(A){return A=A.replace(v,(function(A,g){var C=X();return P[C]={type:"inline",expression:g},C}))}var z=f.listitem;f.listitem=function(A){return z(x(A))};var V=f.paragraph;f.paragraph=function(A){return V(x(A))};var y=f.tablecell;f.tablecell=function(A,g){return y(x(A),g)},f.code=function(A,g,C){var I=(g||"").match(/\S*/)[0];return I?["latex","katex","math"].indexOf(I)>=0?"

            ".concat(A,"

            "):'
            ').concat(C?A:(0,l.escape)(A,!0),"
            \n"):'
            '+(C?A:(0,l.escape)(A,!0))+"
            "},f.heading=function(A,g,C){var I=this.options.headerPrefix+C.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return r.push({anchor:I,level:g,text:A}),"'+A+""},t().setOptions({silent:!0,gfm:!0,pedantic:!1}),t().use({tokenizer:s,renderer:f}),g.ZP=t()},3141:function(A,g){g.Z={modal:"modal___A9Ovz",colorBlue:"colorBlue___XSmR5",formWrap:"formWrap___wRvaA",flexRow:"flexRow___C40dc",flexColumn:"flexColumn___LkZfj",example:"example___bz7Hw",exampleImg:"exampleImg___gNkC_",colorOrange:"colorOrange___Ka6zf",uploader:"uploader___plQRr",uploadImg:"uploadImg___cjOpL",imageTip:"imageTip___p1_lZ",uploadTipIcon:"uploadTipIcon___SpsS2",uploadTip:"uploadTip___e9JlL",color05101a:"color05101a___CDEUv",viewLargerImg:"viewLargerImg___IclRX",footerWrap:"footerWrap___beWC6",note:"note___CXi9y",schoolHintWrap:"schoolHintWrap___Ma6ly",colorCDCDCD:"colorCDCDCD___D0UWo",color0152d9:"color0152d9___hF3Bb"}},9936:function(A){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA0lJREFUWEfFl0tIVFEYx7/vDnNNIWRUdB4hRYQunAHz0ULBFoWMoozgg6k2LhQLXCS0CBcqIUMQCuqEWUtDJBBXiYuidkpORD7KCK0BdRZpEPiYuXS/ODPdaR73zr1XJmYWl7ncc77/73yvcw6Cxl9FRYVxd1ewE8EVIioGgDxEyGPTieAAAA4Q0Y8Iy1arcdXn8wlaTKPaoOJiuykUQjcAXSWibLXx7DsiHgPgG56nGb9/9WeqOYoAkRUHO4jARQRZWoQTxyBCEBHmrdasWSWPyAL8XXU/kVhyGuFkEG6T52lYzhtJAEVFjguINEBE+ekQl2wg4j6AYTAQ+PAt1m4cQGTlMJpu8VgInoe7sZ6IArCY7+wInnS5Xcl7iNymzWa8L+VEFMBiKbslitCRTrcr2eI4mN3bW5sOVwx7RFxPT+WyvbPTbamsdJj6+gY/BYNB0grY0HAt3+1uOdfTc2/18PBIjIs7QpDnsYuFIgxgNjvuEIlOOeNTU4/Kmpvrzy8vvw+0tnb5BCGkCtHcXF/g9XqqmL2amqbXfv9OUKYyFgKBj48xEvvQc6Umk52dw83NPassL7cXaoFg4hMTnipEgN7e/nfz8ws/5BbGmpXNxt9Ei8VxWRTFoVSujYVYWvIF2tq6ZT2hVVzS4jhuAM1mx20isUEttmoQesUjLZt7iUVFdg8AlakBsO9KEE1N9fler6daze3JGrjGAJ4AkFULQDLESmB6eu77yMhQpX7xsA920Wy2vyCiM1oBEiHYuyAIv1MlnHJTwpNTATCDbrercHT0QTX7v7HxZd/pvLGkp09EcgCPdYeATXS5nAXj48PhOt/a8v8qKbloYiXa3t7t0weBu7qSUBIfGxuO1vni4tuD2D6hDwLXNJehnLjUZBKblVaIcBlqaUSpxKUEOw1EuBGpteLEmKfKdj0Q0Vasthk1Nl7Pn5x8GM52LaWWCOFyda4QxW2GYachcpHNiL2k2o5nZibLa2urzVrE5cJRV9fyanPz63FsL2CH1bjtmH1UOpDk5p415OWZjNvb/hM9zcpgMEBp6aWc9fXPR4nzkg4kbEDGj2T/QpGhQ6nkpoweyyWIjF5MJIiMXs1iszZjl9PE0vlf1/M/hZhM6N1gtVgAAAAASUVORK5CYII="},40937:function(A){A.exports="data:image/png;base64,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3Ylm6O6rOZTrnjc9n+ol+1OtNKdZ05zmeJpvuhfVq+DmcHPRum76i4+3ua05unMVhaY70QzdfTWHct3zpudTvWR/qpXmNGua0xxP8033onoV3BxuLlrXTX/x8Ta3NUd3rqLQdCeaobuv5lCue970fKqX7E+10pxmTXOa42m+6V5Ur4Kbw81F67rpLz7e5rbm6M5VFJruRDN099UcynXPm55P9ZL9qVaa06xpTnM8zTfdi+pVcHO4uWhdN/3Fx9vc1hzduYpC051ohu6+mkO57nnT86lesj/VSnOaNc1pjqf5pntRvQpuDjcXreumv/h4m9uaoztXUWi6E83Q3VdzKNc9b3o+1Uv2p1ppTrOmOc3xNN90L6pXwc3h5qJ13fQXH29zW3N05yoKTXeiGbr7ag7luudNz6d6yf5UK81p1jSnOZ7mm+5F9Sq49oebqs1XsRiHp+bV+VRvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+g97nBTtanUVzdVWk99u3PSi2YQrUpGc3TntEPNoXrKVfnqfMJ1z6DzVXHS8cFUXd3nq+ilbjUwrS5aFYcxyv61CjrfLpzsA80qWpWM5ujOaYeaQ/WUq/LV+YTrnkHnq+Kk44OpurrPV9FL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dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2bxIyIAAAOAElEQVSM5khzmkV903rq25l73OFGN0Ga002gvmm9tG/VfJpDuKoM6qucZH0ik+5P9ZRLrkmF5zF/1ZXs7olaVeuW9K3bfZhCNxbKxf9TcdV8VXnVVzntr4KryqC+ylV09xs80/2pnnLJDis8j/mrrmR3T9SqWrekb93uwxS6sVBuDjdv/otCtWfldH0ruKoM6qtcRXe/wTPdn+opl+ywwvOYv+pKdvdErap1S/rW7T5MoRsL5eZwM4cb3gNVe0p9ldNn6Glcuj/VUy65HhWex/xVV7K7J2pVrVvSt273YQrdWCjHv9jUV7n0fGm9dI6q+TSHcFUZ1Fc5yfpEJt2f6imXXJMKz2P+qivZ3RO1qtYt6Vu3+zCFbiyUm8PN/OWG90DVnlJf5fQZehqX7k/1lEuuR4XnMX/VlezuiVpV65b0rdt9mEI3FsrxLzb1VS49X1ovnaNqPs0hXFUG9VVOsj6RSfenesol16TC85i/6kp290StqnVL+tbtPkyhGwvl5nAzf7nhPVC1p9RXOX2Gnsal+1M95ZLrUeF5zF91Jbt7olbVuiV963YfptCNhXL8i019lUvPl9ZL56iaT3MIV5VBfZWTrE9k0v2pnnLJNanwPOavupLdPVGrat2SvnW7D1PoxkK5OdzMX254D1TtKfVVTp+hp3Hp/lRPueR6VHge81ddye6eqFW1bknfut2HKXRjoRz/YlNf5dLzqV53TvtLculOkrOt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"}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[37062],{90758:function(A,g,C){var I=C(82242),e=C.n(I),n=(C(59301),C(93314)),t=C(3113),l=C(37712);g.Z=function(A){var g=A.img,C=A.buttonProps,I=void 0===C?{}:C,r=A.styles,a=void 0===r?{}:r,f=A.customText,o=A.ButtonText,d=A.ButtonClick,i=A.Buttonclass,c=A.ButtonTwo,u=A.imgStyles,s=A.loading,v=void 0!==s&&s;return(0,l.jsxs)("section",{className:"tc animated fadeIn",style:e()(e()({},{color:"#999",margin:"100px auto",visibility:v?"hidden":"visible"}),a),children:[(0,l.jsx)("img",{src:g||n,style:e()(e()({},u),{},{pointerEvents:"none",userSelect:"none"})}),(0,l.jsx)("p",{className:"mt20 font14",children:f||"暂时还没有相关数据哦!"}),o&&(0,l.jsx)(t.ZP,e()(e()({className:i,onClick:d},I),{},{children:o})),c&&c]})}},53399:function(A,g,C){C.d(g,{Z:function(){return x}});var I=C(82242),e=C.n(I),n=C(7557),t=C.n(n),l=C(41498),r=C.n(l),a=C(79800),f=C.n(a),o=C(59301),d={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},i=C(3113),c=C(74516),u=C(29697),s=C(6848),v=C(26453),p=C(17705),X=C(90758),P=C(87799),m=C(29530),b=C(37712),x=function(A){var g,C,I,n,l,a,x=A.editOffice,z=void 0===x?"view":x,V=A.data,y=(A.theme,A.type),w=A.filename,q=A.monacoEditor,j=A.className,h=A.style,O=A.close,H=A.onClose,T=A.hasMask,Z=A.disabledDownload,L=A.onImgDimensions,N=A.showNodata,D=A.recordInfo,K=(0,o.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),F=f()(K,2),W=(F[0],F[1],(0,o.useState)("")),k=f()(W,2),S=(k[0],k[1]),U=(0,o.useState)(),M=f()(U,2),R=M[0],B=M[1],J="build"===window.ENV?"/react/build":"",G=location.host.startsWith("localhost")?P.Z.PROXY_SERVER:P.Z.API_SERVER,Y=(0,o.useRef)();null!==(g=V)&&void 0!==g&&g.startsWith("/api")&&"txt"!==y&&(V=P.Z.API_SERVER+V);w&&(q.filename=w),(0,o.useEffect)((function(){var A,g=null===(A=document.cookie)||void 0===A||null===(A=A.replace(/\s/g,""))||void 0===A?void 0:A.split(";");null==g||g.map((function(A){var g=A.split("=");"_educoder_session"===g[0]&&S(g[1])}))}),[]),(0,o.useEffect)((function(){var A;"office"===y&&(V.indexOf("bigfilescdn.")>-1||V.indexOf("bigfiles1")>-1?B({url:V,fileType:(A=V,A.substring(A.lastIndexOf("/")+1).split(".").pop()),model:V.indexOf("model=edit")?"edit":"view"}):Q())}),[y,V]);var Q=function(){var A=r()(t()().mark((function A(){var g,C,I;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return console.log("data:",V),g=V,V.startsWith("http")||(g=location.origin+g),C=new URL(g).pathname.split("/").pop(),A.next=6,(0,p.gJ)({attachment_id:C});case 6:(I=A.sent).url=G+I.url,B(I);case 9:case"end":return A.stop()}}),A)})));return function(){return A.apply(this,arguments)}}(),E=function(){V.startsWith("http")||V.startsWith("blob:")?_():(0,v.Sv)(w||"educoder",V,w)},_=function(){D&&(0,m.fc)({id:null==D?void 0:D.id,watch_type:1,course_id:null==D?void 0:D.course_id}),(0,v.Nd)(w||"educoder",decodeURIComponent(V))};return(0,b.jsxs)("div",{style:e()({},h||{}),className:"".concat(T&&d.bgBlack," ").concat(y?d.wrp:"hide"),children:[O&&(0,b.jsxs)("div",{className:d.close,ref:Y,children:[!!L&&(0,b.jsx)(s.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{onClick:function(){H(),L()},children:(0,b.jsx)("i",{className:"icon-yulanpizhu"})})}),!Z&&(0,b.jsx)(s.Z,{title:"点击下载此文件",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{onClick:_,children:(0,b.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,b.jsx)(s.Z,{title:"关闭",getPopupContainer:function(){return Y.current},children:(0,b.jsx)("span",{className:"",onClick:H,children:(0,b.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,b.jsx)("div",{className:"".concat(d[j]," ").concat(j," ").concat(d.monaco," ").concat("txt"===y?"show":"hide"),children:"txt"===y&&(0,b.jsx)(b.Fragment,{children:(0,b.jsx)(u.ZP,e()({},q))})}),"audio"===y&&(0,b.jsx)("audio",{src:"".concat((null===(C=V)||void 0===C?void 0:C.indexOf("http://"))>-1||(null===(I=V)||void 0===I?void 0:I.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(V),autoPlay:!0}),"video"===y&&(0,b.jsx)(b.Fragment,{children:(null===(n=V)||void 0===n?void 0:n.indexOf("http"))>-1?(0,b.jsx)("video",{controls:!0,src:"".concat(V),autoPlay:!0}):(0,b.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(V),autoPlay:!0})}),"office"===y&&R&&(0,b.jsx)("iframe",{src:"".concat(J,"/office.html?key=").concat(R.key,"&url=").concat(btoa(R.url),"&callbackUrl=").concat(G+R.callbackUrl,"&fileType=").concat(R.fileType,"&title=").concat(R.title,"&model=").concat(z,"&officeServer=").concat(P.Z.ONLYOFFICE,"&disabledDownload=").concat(!!Z)}),"html"===y&&(0,b.jsx)("iframe",{src:V+"&disposition=inline"}),"pdf"===y&&(0,b.jsx)("iframe",{src:"".concat(J,"/js/pdfview/index.html?url=").concat(encodeURIComponent(V),"&disabledDownload=").concat(!!Z)}),"image"===y&&(0,b.jsx)("img",{src:"".concat((null===(l=V)||void 0===l?void 0:l.indexOf("http://"))>-1||(null===(a=V)||void 0===a?void 0:a.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(V)}),("other"===y||"download"===y)&&(0,b.jsx)(b.Fragment,{children:N?(0,b.jsx)(X.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,b.jsx)(i.ZP,{icon:(0,b.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:E,children:"下载"})}):(0,b.jsxs)(i.ZP,{type:"primary",size:"middle",onClick:E,children:[(0,b.jsx)(c.Z,{}),"点击下载"]})})]})}},49519:function(A,g,C){C.d(g,{z:function(){return b}});var I=C(82242),e=C.n(I),n=C(37205),t=C.n(n),l=C(91232),r=C.n(l),a=C(79800),f=C.n(a),o=C(59301),d=(C(17014),C(60415)),i=(C(64018),C(77373)),c=C(87799),u=C(26453),s=C(15342),v=C(1012),p=C(53399),X=C(37712),P="@▁@",m=/]*>/g;var b=function(A,g){A=A||"";var C=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return g?A.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(C,(function(A,g,C,I,e,n,t){var l=g||I||n,r=C||e||t||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,u.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):A=A.replace(C,(function(A,g,C,I,e,n,t){var l=g||I||n,r=C||e||t||"?";return c.Z.API_SERVER+"/api/attachments/"+l+r+"&t="+(0,u.Jn)(l,Date.now())+(A.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var n=g||I,t=C||e||"";return'"'+c.Z.API_SERVER+"/api/attachments/"+n+t+n+t+"&t="+(0,u.Jn)(n,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(A,g,C,I,e){var n=g||I,t=C||e||"";return"("+c.Z.API_SERVER+"/files/uploads/"+n+t+n+t+"&t="+(0,u.Jn)(n,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};g.Z=function(A){var g=A.value,C=void 0===g?"":g,I=A.className,n=A.showTextOnly,l=A.showLines,a=A.style,u=void 0===a?{}:a,b=A.stylesPrev,x=void 0===b?{}:b,z=A.highlightKeywords,V=A.showProgramFill,y=(A.isProgramFill,A.disabledFill),w=void 0!==y&&y,q=A.programFillValue,j=A.onFillChange,h=void 0===j?function(A){}:j,O=A.onFillBlur,H=void 0===O?function(){}:O,T=String(C),Z=(0,o.useState)(""),L=f()(Z,2),N=L[0],D=L[1],K=(0,o.useState)("office"),F=f()(K,2),W=F[0],k=F[1],S=(0,o.useState)([]),U=f()(S,2),M=U[0],R=U[1],B=(0,o.useRef)("a"+(0,v.Z)()),J={};var G=function(A){return A.replace(/([\s\S]+?)<\/style>/gim,(function(A,g){var C=g.replace(/(\n|\r)/g,"").split("}"),I=[];return C.map((function(A){""!=A&&I.push(".".concat(B.current," ").concat(A))})),"")}))},Y=(0,o.useMemo)((function(){try{T=T.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+c.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+c.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+c.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(A){}if(V){var A=-1;return T=T.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(g,C,I){var e;return function(A,g,C){var I=document.createElement(A===P?"input":"textarea");I.style.width="100%",I.style.height=A===P?"40px":"151px",I.rows=5,I.spellcheck=!1,I.name="edu-program-fill",I.placeholder="请输入",I.dataset.id=g;var e=Object.keys(J).length;return J[e]=I,'')}(g,++A,null==q||null===(e=q[A])||void 0===e?void 0:e.value)})),'
            '.concat(G(T||""),"
            ")}var g=G(T);g=(0,d.ZP)(g);var C=(0,d.ez)();T.match(/\[TOC\]/)&&(g=g.replace("

            [TOC]

            ",(0,d.Qv)()),(0,d.Iy)()),g=g.replace(/(__special_katext_id_\d+__)/g,(function(A,g){var I=C[g],e=I.type,n=I.expression;return(0,s.renderToString)(function(A){var g=document.createElement("div");return g.innerHTML=A,0===g.childNodes.length?"":g.childNodes[0].nodeValue}(n)||"",{displayMode:"block"===e,throwOnError:!1,output:"html"})})),g=g.replace(/▁/g,"▁▁▁▁▁"),(0,d.AL)();var I=document.createElement("div");return I.innerHTML=g,n?I.innerText:z?(_(I,z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),I.innerHTML):(setTimeout((function(){return gA()}),500),I.innerHTML)}),[T,z]);(0,o.useEffect)((function(){$.current&&$.current.querySelectorAll(["input","textarea"]).forEach((function(A){A.oninput=Q,A.onblur=E}))}),[M]),(0,o.useEffect)((function(){if(null!=q&&q.length)try{var A,g=$.current.querySelectorAll(".edu-program-fill-score"),C=$.current.querySelectorAll('[name="edu-program-fill"]'),I=r()(C.entries());try{for(I.s();!(A=I.n()).done;){var e,n,t,l=f()(A.value,2),a=l[0],o=l[1];o.value=(null==q||null===(e=q[a])||void 0===e?void 0:e.value)||"","warning"===(null==q||null===(n=q[a])||void 0===n?void 0:n.type)?o.className="program-fill-warning":"success"===(null==q||null===(t=q[a])||void 0===t?void 0:t.type)?o.className="program-fill-success":o.className=""}}catch(A){I.e(A)}finally{I.f()}var d,i=r()(g.entries());try{for(i.s();!(d=i.n()).done;){var c,u,s=f()(d.value,2),v=s[0];s[1].innerHTML=null!=q&&null!==(c=q[v])&&void 0!==c&&c.score?"".concat(null==q||null===(u=q[v])||void 0===u?void 0:u.score,"分"):""}}catch(A){i.e(A)}finally{i.f()}R(q)}catch(A){console.log(A,"error")}}),[q]);var Q=function(A){M[A.target.dataset.id]=M[A.target.dataset.id]||{},M[A.target.dataset.id].value=A.target.value,R(t()(M)),h(M,A.target.dataset.id)},E=function(A){M[A.target.dataset.id]=M[A.target.dataset.id]||{},M[A.target.dataset.id].value=A.target.value,R(t()(M)),H(M,A.target.dataset.id)};function _(A,g){return A.childNodes.forEach((function(A){if(A.childNodes.length>0)_(A,g);else if("IMG"!==A.nodeName)if(A.innerHTML){var C;A.innerHTML=null===(C=A.innerHTML)||void 0===C?void 0:C.replace(new RegExp(g,"gi"),'$&')}else{var I=document.createElement("span");I.innerHTML=A.textContent.replace(new RegExp(g,"gi"),'$&'),A.replaceWith(I)}}))}var $=(0,o.useRef)();function AA(A){var g=A.target;if("A"===g.tagName.toUpperCase()){var C=g.getAttribute("href");if(C.indexOf("office")>-1)A.preventDefault(),D(C),k("office");else if(C.indexOf("application/pdf")>-1)A.preventDefault(),D(C),k("pdf");else if(C.indexOf("text/html")>-1)A.preventDefault(),D(C),k("html");else if(C.startsWith("#")){A.preventDefault();var I=document.getElementById(C.replace("#",""));I&&I.scrollIntoView(!0)}}}d.jb.WebkitLineClamp=l,l&&(u=e()(e()({},u),d.jb));var gA=function(){var A,g=null===(A=$.current)||void 0===A?void 0:A.querySelectorAll("video");null==g||g.forEach((function(A){if(A.oncontextmenu=function(){return!1},A.src.indexOf(".m3u8")>-1)if(A.canPlayType("application/vnd.apple.mpegurl"));else if(i.ZP.isSupported()){var g=new i.ZP;g.loadSource(A.src),g.attachMedia(A)}}))};return(0,o.useEffect)((function(){if($.current&&Y&&Y.match(m)&&window.PR.prettyPrint(),$.current)return $.current.addEventListener("click",AA),function(){var A;null===(A=$.current)||void 0===A||A.removeEventListener("click",AA),(0,d.AL)(),(0,d.Iy)()}}),[Y,$.current,AA]),(0,X.jsxs)(X.Fragment,{children:[n&&(0,X.jsx)("div",{ref:$,children:Y}),!n&&(0,X.jsx)("div",{ref:$,style:e()({},u),className:"".concat(I||""," ").concat(w?"disabled-fill":""," markdown-body ").concat(B.current),dangerouslySetInnerHTML:{__html:Y}}),(0,X.jsx)(p.Z,{close:!0,data:N,type:null!=N&&N.length?W:"",style:e()({},x),onClose:function(){return D("")}})]})}},46691:function(A,g,C){C.r(g),C.d(g,{default:function(){return rA}});var I=C(82242),e=C.n(I),n=C(79800),t=C.n(n),l=C(39647),r=C.n(l),a=C(59301),f=C(92736),o=C(81863),d=C(50724),i=C(48323),c=C(99232),u=C.n(c),s="footer___k7tsL",v="fastLink___WjVYd",p=C(37712),X=function(A){A.user;var g,C,I,e,n,t,l=A.globalSetting;return(0,p.jsxs)("div",{className:s,style:{height:null!=l&&null!==(g=l.setting)&&void 0!==g&&g.main_site?"":"80px",lineHeight:null!=l&&null!==(C=l.setting)&&void 0!==C&&C.main_site?"":"80px"},children:[(null==l||null===(I=l.setting)||void 0===I?void 0:I.main_site)&&(0,p.jsxs)("aside",{className:v,children:[(0,p.jsx)("a",{target:"_blank",href:"/",children:"网站首页"}),!(null!=l&&null!==(e=l.setting)&&void 0!==e&&e.is_local)&&(0,p.jsx)("a",{target:"_blank",href:"/help/about_us",children:"关于我们"}),(0,p.jsx)("a",{target:"_blank",href:"/help/contact_us",children:"联系我们"}),(0,p.jsx)("a",{target:"_blank",href:"/help/cooperatives",children:"合作伙伴"}),(0,p.jsx)("a",{target:"_blank",href:"/help/agreement",children:"服务协议"}),(0,p.jsx)("a",{target:"_blank",href:"/help/help_center",children:"帮助中心"}),(0,p.jsx)("a",{target:"_blank",href:"/help/feedback",children:"意见反馈"})]}),null!==(n=l.setting)&&void 0!==n&&n.footer?(0,p.jsx)("div",{dangerouslySetInnerHTML:{__html:null===(t=l.setting)||void 0===t?void 0:t.footer}}):(0,p.jsx)("div",{children:(0,p.jsxs)("p",{className:"footer_con-p inline lineh-30 font-14",children:[(0,p.jsx)("span",{className:"font-18 fl",children:"©"})," ",u()().year()," EduCoder",(0,p.jsx)("a",{style:{color:"#888"},target:"_blank",href:"http://beian.miit.gov.cn/",className:"ml15 mr15",children:"湘ICP备17009477号"}),(0,p.jsxs)("a",{style:{color:"#888"},target:"_blank",href:"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=43019002000962",className:"mr15",children:[(0,p.jsx)("img",{className:"vertical4",src:"data:image/png;base64,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0p8zAAA7SGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU1NzcyLCAyMDE0LzAxLzEzLTE5OjQ0OjAwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE1LTExLTEwVDE0OjA0OjUwKzA4OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6ODBiY2E5ODUtNGY5Yi02ZTRkLTlmYzktZThmNDkyNjdkZjRlPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZWRkYWU4MGMtODc3MC0xMWU1LTg0OWEtYmNmZGE2MDI4ZjJlPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6ZDAxN2I5NGUtOTRiZC0yNjQxLThmZjktYmY3YTBhMzY3N2IxPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmQwMTdiOTRlLTk0YmQtMjY0MS04ZmY5LWJmN2EwYTM2NzdiMTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0xMS0xMFQxNDowNDo1MCswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4MGJjYTk4NS00ZjliLTZlNGQtOWZjOS1lOGY0OTI2N2RmNGU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTUtMTEtMTBUMTQ6MDQ6NTArMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaT4zQ0I4RkVFOEMyRUJFNkU1QTREQTk3MzI4MzU0MTI0RTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZGRmY2Y2Zi04NzcwLTExZTUtODQ5YS1iY2ZkYTYwMjhmMmU8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L3Bob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4KICAgICAgICAgPHBob3Rvc2hvcDpDb2xvck1vZGU+MzwvcGhvdG9zaG9wOkNvbG9yTW9kZT4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPnNSR0IgSUVDNjE5NjYtMi4xPC9waG90b3Nob3A6SUNDUHJvZmlsZT4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MjA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pu6JurQAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABRFJREFUeNpE1OtvW/Udx/H3ufj4+Ph2nDh2vLgrTSPaFNqGtd0Gy9LRTVymNoNM6ihCaEwdQ5sYAo0HTOwBYg/Yk0pDiG3qmLSiPtjGJERbdZSQaUArykXt1la9hDRNY6dpYsexj30uPj7ntwcVyT/w0ucrfT5fSQgBdguAEBlZhDhaiVikF2j22lfPjP77+Kc/9ZyO9p37th7s2rLlbegveZ4g6jggS4AMAKkkkhAC366DJJADgaJlgA/unTx+4qmT/7oyKpxJfdYzUDIma7M6TsXoDH+3/8jgnrG/iOC2o8JrIiQJECjpvlt0Q7JoimWEkQHN1Sf+8MbE40+O7226M/rtCYX9+k2e0me55+48XXfn1f1PvvfwiVdfOSLFlKitSbh8hq9+DitZFRlZSaHK1aJ35uV3f3+4zr79/fy42CD9pwtULwdUpwLqu//ID4JzPHPoEQ7+00dc/vM/Eoary3oCPR5dBROeRTxaH7x+9MWpkd3nRsyBPL/InmP6cAN5jUlgtcELkXpMTj19kr3GGfLfuovv7T62Z/GjN67aM2c3XHz/nVUw6jmo7ruJI5eT2idz23lwu0XzbAP5eh3JjBJdCnBP3iSyrhu96VD562nG7m8z8cUm3vwwKCSkVgx5aBWsL1aK4cfvHwilGKg2KWuOxjxEAh+WXKT1Bto2E/lGC42QyrRDX5cHkkStKRPtUQ9sHB5btwLOXHrvh+1yeTiT0KATRRQKZId7aSKw7ukm2Fck8dIQxjNbkHsMctuytOw2CEEhZ0Dp7L1Ls6d+sgIaicxgw/Lp73FB7+bEaQN1V4rqnrUEZQvpfy3sYzfxp5fRnh+m69mtvHWoBsQZ2qzSmlrALU0VV8BwaW5Po6ZyZ9Gi+HWN19+M859XSgztKJA2ktgXaoQLHu65GsnyMudfvsKrh6Lkh0w299WplD38pUvDK6CstkyrIZNavMLe+wM6fgL/6Dzdf/scuS9Cu0chzKlkdxUoTFylcvA8rbbC2GiEZHUSq6GiJuUIgAoQM746Lm+4Nhrk+3jiGxYH+np4vTyIP3uB7uokcjqGc6GGNZCjnCnwdzkGKZMnvrlAJ1nEvEPCyKw5tgKCnBMNwdyUxZ2D0/z2V9t48fkRjlqboeEzalfpMmXeOpakiQFkeO7nOjsGJpmbBFybsGNtXQFVs729k8zjz/uUFi7yy+EoY+NxJo7bXJK38MCmLyjEKnSO9NGuOazZaPDrB65x89Q1bF9Hz2qoprYRuPUcvOYnj1ZP/+6wM9/Gq/hQmmH9Q0NE8zoEVYKqSnPBIb2uC9Z2Q6nC9NuXcZJZEv0JYr0G6YF9O7XM9z+QhBAAdFr/fWzp/IHXAtdJVz6cR40LencOEiw5+HYL2dDRu+JIWoTqqSk6gUp6+3p8l2p6w8gjcTM1Lmn33TrZd2ZwFp2yOx9z9HyYzu8aIKi3CKwGGBqKZqLFoL3cpFWqoa/tRi/m8ZZt3LIlYmuaKKkUsS9rI9pXUfjohdzXkr2RTAGvHhIGKmGg4C5aIELa1TrNyUUkJQKShHujQiQmk/92IasZ1s9Ch9Uta0qKaPeOhyw7/ZpdKrU0ZZlUrkNEstEkH8VbRjgOyY1ZUgMpZK2JmtaQMr3XO+pdv1GN23+kaIus1kb4SBHVblTjTzsX8y859cUHPX9251c29WwKLSmhm3KXGkti3eB6rMe01dzI2aWphXFnpnaib2culBQFEbgA/H8ALiI3EysggNoAAAAASUVORK5CYII="}),"湘公网安备43019002000962号"]}),(0,p.jsx)("a",{href:"https://team.trustie.net",style:{color:"#888"},target:"_blank",children:"Trustie"}),"   &   IntelliDE inside. ",(0,p.jsx)("span",{className:"mr15",children:"版权所有 湖南智擎科技有限公司"})]})})]})},P="newFooter___XUH_2",m=C(43418),b=C(26453),x=C(40937),z=C(49519),V=function(A){A.user;var g,C=A.globalSetting,I=(0,a.useState)(!1),e=t()(I,2),n=e[0],l=e[1];(0,a.useEffect)((function(){return window.addEventListener("click",r),function(){window.removeEventListener("click",r)}}),[]);var r=function(A){var g,C;null==A||!A.target||"头歌教师交流社区"!==(null==A||null===(g=A.target)||void 0===g?void 0:g.innerText)&&"头歌教师交流社区"!==(null==A||null===(C=A.target)||void 0===C||null===(C=C.nextElementSibling)||void 0===C?void 0:C.innerText)||function(A,g){if(A.className===g)return A;for(var C=0,I=A;I=I.parentNode;C++){if(I.className===g)return I;if(I==document.documentElement)return!1}}(A.target,"module-introduce")&&(/macintosh|mac os x/i.test(navigator.userAgent)?l(!0):(0,b.xg)("//shang.qq.com/wpa/qunwpa?idkey=2f2043d88c1bd61d182b98bf1e061c6185e23055bec832c07d8148fe11c5a6cd"))};return(0,p.jsxs)(a.Fragment,{children:[(0,p.jsx)(m.Z,{centered:!0,destroyOnClose:!0,open:n,title:"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return l(!1)},children:(0,p.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,p.jsx)("p",{children:"扫码或搜索加入头歌教师交流QQ群:612934990 "}),(0,p.jsx)("img",{src:x,width:200,height:200})]})}),(0,p.jsx)("div",{className:P,dangerouslySetInnerHTML:{__html:(0,z.z)(null===(g=C.setting)||void 0===g?void 0:g.footer,!0)}})]})},y=(0,i.connect)((function(A){var g=A.user,C=A.loading;return{user:g,globalSetting:A.globalSetting,loading:C.models.index}}))((function(A){var g,C,I=A.user,e=A.globalSetting;A.loading,A.dispatch;return e.showFooter&&e.showHeaderFooter?(0,p.jsx)("section",{id:"footer",children:null==e||null===(g=e.setting)||void 0===g||!g.main_site||null!=e&&null!==(C=e.setting)&&void 0!==C&&C.is_local?(0,p.jsx)(X,{user:I,globalSetting:e}):(0,p.jsx)(V,{user:I,globalSetting:e})}):(0,p.jsx)(p.Fragment,{children:" "})})),w=C(6848),q=C(1260),j=C(98115),h=C(87799),O="sideBar___iM1tf",H="wrap___GEY86",T="backTop___skoyU",Z="ul___JwWww",L=C(47481),N=C(32637),D=(0,i.connect)((function(A){var g=A.loading,C=A.globalSetting,I=A.user,e=A.shixunHomeworks;return{globalSetting:C,user:I,loading:g.models.index,shixunHomeworks:e}}))((function(A){var g,C,I,e,n,l,r,f,o,d,c,u,s,v,X,P=A.globalSetting,x=(A.loading,A.shixunHomeworks),z=A.user,V=(A.dispatch,(0,a.useState)(!1)),y=t()(V,2),D=y[0],K=y[1],F=(0,a.useState)(!1),W=t()(F,2),k=W[0],S=W[1],U=(0,a.useState)(localStorage.hideCustom?JSON.parse(localStorage.hideCustom):[]),M=t()(U,1)[0],R=(0,a.useState)("1"!=(null===(g=localStorage)||void 0===g?void 0:g.hidesidebar)),B=t()(R,2),J=B[0],G=B[1],Y=(0,a.useState)(!1),Q=t()(Y,2),E=(Q[0],Q[1]),_=(0,a.useState)(!1),$=t()(_,2),AA=$[0],gA=$[1],CA=(0,a.useRef)(),IA=(0,i.useLocation)();(0,a.useEffect)((function(){return window.addEventListener("scroll",eA),function(){return window.removeEventListener("scroll",eA)}}),[]),(0,a.useEffect)((function(){setTimeout((function(){localStorage.setItem("hidesidebar","1"),G(!1)}),5e3)}),[]),(0,a.useEffect)((function(){99===x.actionTabs.type&&(E(!0),setTimeout((function(){E(!1)}),5e3))}),[x.actionTabs]),(0,a.useEffect)((function(){"www.educoder.net"===document.domain&&("/"===IA.pathname||IA.pathname.indexOf("/competitions/detail/")>-1||IA.pathname.indexOf("/competitions")>-1&&3===IA.pathname.split("/").length)?gA(!0):gA(!1)}),[IA.pathname]),(0,a.useEffect)((function(){var A,g,C;null!=z&&null!==(A=z.userInfo)&&void 0!==A&&A.login&&(M.includes(null==z||null===(g=z.userInfo)||void 0===g?void 0:g.login)||null!=P&&null!==(C=P.setting)&&void 0!==C&&C.is_local||setTimeout((function(){var A,g,C=document.createEvent("Events");(C.initEvent("mouseout",!0,!1),CA)&&(null===(g=CA.current)||void 0===g||g.dispatchEvent(C));M.push(null==z||null===(A=z.userInfo)||void 0===A?void 0:A.login),localStorage.hideCustom=JSON.stringify(M)}),5e3))}),[z]);var eA=function(){var A;"/Activities"!==IA.pathname?K((null===(A=document)||void 0===A||null===(A=A.documentElement)||void 0===A?void 0:A.scrollTop)>0):K(!1)};return(0,p.jsxs)("div",{className:O,children:[(0,p.jsxs)("div",{id:"wechat_QR_code_ids",children:[AA&&!(0,b.s2)()&&(0,p.jsx)(w.Z,{placement:"left",overlayInnerStyle:{padding:26},getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{className:"flex-wrp flex_box_column flex_box_center",children:[(0,p.jsx)(q.Z,{errorLevel:"H",value:window.location.href,bgColor:"#FFF",size:190,icon:"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(C=P.setting)||void 0===C?void 0:C.tab_logo_url)}),(0,p.jsxs)("div",{className:"tc font15 mt20",children:["请使用微信扫一扫分享",IA.pathname.indexOf("/competitions")>-1?"竞赛":"头歌"]})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-icon-weixin c-light-primary font22"})})}),!P.onlyShowBackTop&&(null==P?void 0:P.onlyShowBackTopIcons)&&J&&(0,p.jsxs)(a.Fragment,{children:[!(null==z||null===(I=z.userInfo)||void 0===I||!I.login)&&(0,p.jsx)(w.Z,{placement:"left",defaultVisible:!(null!=M&&M.includes(null==z||null===(e=z.userInfo)||void 0===e?void 0:e.login)),getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"tc",children:(0,p.jsx)("img",{className:"mt10",src:N,width:"188px",height:"188px"})}),(0,p.jsx)("div",{className:"tc font15 mt10",children:"免费教研助理"}),(0,p.jsx)("div",{className:"tc font15",children:"微信扫一扫添加"}),(0,p.jsx)("div",{className:"pt10 font12",children:(0,p.jsxs)("ul",{className:Z,children:[(0,p.jsx)("li",{children:"解答老师疑惑、帮助老师更快熟悉和使用平台教学"}),(0,p.jsx)("li",{children:"协助老师创建课堂、课程设计、做好教学工作。"}),(0,p.jsx)("li",{children:"根据老师教学方向,分享头歌平台C9院校、985高校、211高校、双一流高校老师经典实践教学案例。"})]})})]}),children:(0,p.jsx)("div",{className:H,ref:CA,children:(0,p.jsx)("a",{href:"javascript:void(0)",children:(0,p.jsx)("i",{className:"iconfont icon-yijianfankui1 c-light-primary font22"})})})}),!(null!=P&&null!==(n=P.setting)&&void 0!==n&&n.is_local)&&(0,p.jsx)(w.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("img",{src:"".concat(h.Z.IMG_SERVER,"/images/educoder/EWM.jpg"),width:"158px",height:"158px"}),(0,p.jsx)("div",{className:"tc font15",children:"微信扫一扫"}),(0,p.jsx)("div",{className:"tc font15",children:"关注公众号"})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),!(null!=P&&null!==(l=P.setting)&&void 0!==l&&l.is_local)&&(0,p.jsx)(w.Z,{placement:"left",title:"在线咨询",children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("a",{onClick:function(){/macintosh|mac os x/i.test(navigator.userAgent);S(!0)},className:"c-white",children:(0,p.jsx)("i",{className:"iconfont icon-QQ1 c-light-primary font22"})})})}),(0,p.jsx)("div",{onClick:function(){G(!1),localStorage.setItem("hidesidebar","1")},style:{textAlign:"center",fontSize:"14px",color:"#0152d9",margin:"10px 0px",cursor:"pointer"},children:"收起"})]}),(null==P||null===(r=P.setting)||void 0===r?void 0:r.main_site)&&!P.onlyShowBackTop&&(null==P?void 0:P.onlyShowBackTopIcons)&&!J&&(0,p.jsx)("div",{onClick:function(){G(!0),localStorage.setItem("hidesidebar","2")},style:{textAlign:"center",fontSize:"16px",color:"#0152d9",background:"#fff",margin:"10px 0px",cursor:"pointer",position:"absolute",left:"80px",top:"-150px",boxShadow:"0px 0px 8px 0px #f1f1f1",width:"30px",writingMode:"vertical-lr",height:"100px",paddingLeft:"3px"},children:"联系我们"}),(null==P?void 0:P.showQuestionBackTop)&&!(null!=P&&null!==(f=P.setting)&&void 0!==f&&f.is_local)&&(0,p.jsx)(w.Z,{placement:"left",getPopupContainer:function(){return document.getElementById("wechat_QR_code_ids")},title:(0,p.jsxs)("div",{children:[(0,p.jsx)("img",{src:L,width:"158px",height:"158px"}),(0,p.jsx)("div",{className:"tc font15 mt10",style:{marginBottom:6},children:"扫码进编程交流群"})]}),children:(0,p.jsx)("div",{className:H,children:(0,p.jsx)("i",{className:"iconfont icon-erweima1 c-light-primary font22"})})}),D&&(0,p.jsx)(w.Z,{placement:"left",title:"返回顶部",children:(0,p.jsx)(j.Z,{className:"".concat(H," ").concat(T),visibilityHeight:0,children:(0,p.jsx)("i",{className:"iconfont icon-huidaodingbu c-light-primary font14"})})})]}),(0,p.jsx)(m.Z,{centered:!0,destroyOnClose:!0,open:k,title:"student"===(null==z||null===(o=z.userInfo)||void 0===o?void 0:o.identity)?"头歌学生交流社区":"头歌教师交流社区",width:"500px",footer:null,onCancel:function(){return S(!1)},children:(0,p.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",marginBottom:20},children:[(0,p.jsx)("p",{children:"student"===(null==z||null===(d=z.userInfo)||void 0===d?void 0:d.identity)?"扫码或搜索加入头歌学生交流QQ群:".concat(null==P||null===(c=P.setting)||void 0===c?void 0:c.homepage_stu_qq_number):"扫码或搜索加入头歌教师交流QQ群:".concat(null==P||null===(u=P.setting)||void 0===u?void 0:u.homepage_tea_qq_number)}),(0,p.jsx)("img",{src:"student"===(null==z||null===(s=z.userInfo)||void 0===s?void 0:s.identity)?"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(v=P.setting)||void 0===v?void 0:v.homepage_stu_qq_qrcode_url):"".concat(h.Z.IMG_SERVER,"/").concat(null==P||null===(X=P.setting)||void 0===X?void 0:X.homepage_tea_qq_qrcode_url),width:200,height:200})]})})]})})),K=C(7557),F=C.n(K),W=C(41498),k=C.n(W),S=C(3113),U=(0,i.connect)((function(A){return{user:A.user,classroomList:A.classroomList}}))((function(A){A.user;var g=A.dispatch,C=A.classroomList;return(0,p.jsx)(m.Z,{title:"温馨提示",zIndex:9999,footer:null,open:"导出提醒"===C.actionTabs.key,onCancel:function(){g({type:"classroomList/setActionTabs",payload:{}})},children:(0,p.jsxs)("div",{children:[(0,p.jsx)("span",{children:"您在当前栏目中有已导出的表格未下载,请先下载已有表格,然后再导出新的表格。"}),(0,p.jsx)("br",{}),(0,p.jsx)("div",{style:{textAlign:"end"},children:(0,p.jsx)(S.ZP,{type:"primary",onClick:k()(F()().mark((function A(){return F()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:g({type:"classroomList/setActionTabs",payload:{}});case 1:case"end":return A.stop()}}),A)}))),children:"知道了"})})]})})})),M=C(95237),R=C(24905),B=(0,i.connect)((function(A){return{user:A.user}}))((function(A){var g,C,I=A.user,e=(0,a.useState)(!1),n=t()(e,2),l=n[0],r=n[1],f=(0,a.useState)(""),o=t()(f,2),d=o[0],i=o[1];(0,a.useEffect)((function(){var A,g,C=localStorage.getItem("extension-modal");if(null!=I&&null!==(A=I.userInfo)&&void 0!==A&&A.login&&C){var e=u()(),n="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),t=localStorage.getItem(n);if(t)if(e<=u()(t))r(!1);else{r(!0),localStorage.removeItem(n),localStorage.removeItem("extension-modal");var l=u()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");i(l)}else{r(!0),localStorage.removeItem("extension-modal");var a=u()(localStorage.getItem("extension-date")).format("YYYY年MM月DD日");i(a)}return function(){r(!1)}}}),[null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login]);return(0,p.jsx)(m.Z,{title:"温馨提示",open:l,zIndex:9999,centered:!0,width:594,onCancel:function(){r(!1)},footer:(0,p.jsxs)(M.Z,{align:"middle",justify:"space-between",children:[(0,p.jsx)(R.Z,{onChange:function(A){var g,C="".concat(null==I||null===(g=I.userInfo)||void 0===g?void 0:g.login,"-extend-date"),e=u()().endOf("day").format("YYYY-MM-DD HH:mm:ss");A.target.checked?localStorage.setItem(C,e):localStorage.removeItem(C)},children:"今日不再提醒"}),(0,p.jsx)(S.ZP,{onClick:function(){r(!1)},style:{borderRadius:4},type:"primary",children:" 关闭"})]}),children:(0,p.jsxs)("div",{className:"font14",style:{paddingLeft:16},children:[(0,p.jsx)("div",{children:"老师您好!"}),(0,p.jsxs)("div",{style:{textIndent:28},children:["感谢您对头歌平台的认可与支持!根据平台",(0,p.jsx)("a",{href:"https://www.educoder.net/help/agreement",target:"_blank",children:"服务协议"}),",贵单位免费试用期已结束,将限制对相关功能和资源的使用。"]}),(0,p.jsx)("div",{style:{textIndent:28},children:"请您添加以下微信客服,协助您完成后续使用及申请流程,感谢支持与理解。"}),(0,p.jsx)("img",{style:{margin:"8px auto",display:"block"},width:160,src:"安徽"===(null===(C=I.userInfo)||void 0===C?void 0:C.school_province)?"data:image/jpeg;base64,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":"data:image/png;base64,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",alt:"二维码"}),(0,p.jsx)("div",{style:{textAlign:"right"},children:"头歌运营中心"}),(0,p.jsx)("div",{style:{textAlign:"right"},children:d})]})})})),J=C(9951),G="modalityModal___fvSjk",Y="modal___wvA_V",Q="itemWarp___JNLoV",E="close___PycHq",_="cancelBtn___kgKTp",$="selfdomModal___doNCF",AA=C(13046),gA=C(89392),CA=C.n(gA),IA=(0,i.connect)((function(A){return{user:A.user,globalSetting:A.globalSetting}}))((function(A){var g,C,I=A.dispatch,e=A.user,n=A.globalSetting,l=(0,a.useState)({}),r=t()(l,2),f=r[0],o=r[1],d=(0,a.useState)([]),c=t()(d,2),s=c[0],v=c[1],X=(0,a.useState)(0),P=t()(X,2),m=P[0],x=P[1],V=(0,a.useState)(!1),y=t()(V,2),w=y[0],q=y[1],j=(0,a.useRef)(null),h=(0,i.useLocation)(),O=function(A){var g,C,I,n="".concat(null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,"-deadline-operate"),t=localStorage.getItem(n)?JSON.parse(localStorage.getItem(n)):[];t=null===(C=t)||void 0===C?void 0:C.filter((function(g){return g.id!==(null==A?void 0:A.id)}));var l=function(A,g){var C=null;return 0===A&&(C=u()().add(100,"month").unix()),1===A&&(C=u()().add(g,"hour").unix()),2===A&&(C=u()().add(g,"days").unix()),3===A&&(C=u()().add(7*g,"days").unix()),4===A&&(C=u()().add(g,"month").unix()),5===A&&(C=u()().add(3*g,"month").unix()),C}(null==A?void 0:A.show_type,null==A?void 0:A.show_count),r={id:null==A?void 0:A.id,deadline:l,type:null==A?void 0:A.show_type};null===(I=t)||void 0===I||I.push(r),localStorage.setItem(n,JSON.stringify(t))},H=function(){W(null==f?void 0:f.id,"close");var A=s[m+1];A?(O(A),o(A),x(m+1),W(null==A?void 0:A.id,"popup")):q(!1)},T=[{name:"首页",key:0,path:"/"},{name:"实践课程",key:1,path:"/paths"},{name:"实践项目",key:2,path:"/shixuns"},{name:"教学课堂",key:3,path:"/classrooms"},{name:"在线竞赛",key:4,path:"/competitions"},{name:"教学案例",key:5,path:"/moop_cases"},{name:"交流问答",key:6,path:"/forums/categories"},{name:"个人中心",key:7,path:"/users"}];(0,a.useEffect)((function(){var A,g;null!=n&&n.operateModelPath&&null!=n&&null!==(A=n.setting)&&void 0!==A&&A.main_site&&null!=e&&null!==(g=e.userInfo)&&void 0!==g&&g.login&&(U(),setTimeout((function(){I({type:"globalSetting/setOperateModelPath",payload:""})}),300))}),[null==n?void 0:n.operateModelPath,null==e||null===(g=e.userInfo)||void 0===g?void 0:g.login,null==n||null===(C=n.setting)||void 0===C?void 0:C.main_site]),(0,a.useEffect)((function(){var A,g,C;if(null!=h&&null!==(A=h.pathname)&&void 0!==A&&A.includes("/users")&&4===(null==h||null===(g=h.pathname)||void 0===g||null===(g=g.split("/"))||void 0===g?void 0:g.length))I({type:"globalSetting/setOperateModelPath",payload:"/users"});else if(null!=h&&null!==(C=h.pathname)&&void 0!==C&&C.includes("/forums/categories"))I({type:"globalSetting/setOperateModelPath",payload:"/forums/categories"});else for(var e=0;eparseInt(g)&&V(!0):V(!0)}),[]),(0,p.jsxs)(f.ZP,{locale:o.Z,autoInsertSpaceInButton:!1,children:["/"===P.pathname&&z&&(null==c||null===(g=c.setting)||void 0===g||null===(g=g.adv_index)||void 0===g?void 0:g.image_url)&&(null==c||null===(C=c.setting)||void 0===C?void 0:C.main_site)&&(0,p.jsxs)("div",{onClick:function(){var A;return window.open(null==c||null===(A=c.setting)||void 0===A||null===(A=A.adv_index)||void 0===A?void 0:A.jump_url)},style:{background:"url(".concat(h.Z.IMG_SERVER+(null==c||null===(I=c.setting)||void 0===I||null===(I=I.adv_index)||void 0===I?void 0:I.image_url),") no-repeat center center"),width:"100%",height:60,margin:"0px auto",display:"flex",cursor:"pointer",backgroundSize:"cover"},children:[(0,p.jsxs)("div",{style:{width:1200,margin:"0px auto",height:60,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,p.jsx)("div",{style:{fontSize:24,fontWeight:"bold",color:"#fff",visibility:"hidden"},children:"【计算机学习交流群】领取C语言/Java/Python/程序竞赛资料,点击加入"}),(0,p.jsxs)("div",{onClick:function(){window.open("https://mp.weixin.qq.com/s/31gNJVLlG1nTymoyL1uUJA")},style:{visibility:"hidden",width:"104px",height:"30px",borderRadius:15,display:"flex",alignItems:"center",justifyContent:"center",color:"#FFFFFF",cursor:"pointer",background:"linear-gradient(270deg, #FF4C00 0%, #FF9C01 100%)"},children:["查看详情 ",(0,p.jsx)("img",{src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAYAAACgu+4kAAAAAXNSR0IArs4c6QAAALhJREFUOE+dkjEOgVEQhL8pRCNR0UlE5Qg6Z9C5gcIFUDmAEyhVWgqJBIVE4hwanUSlkpEn709EIe/ZcrPzZXZ2RWLZrkq6f48rRW+7DWyBjqTrpyYJEAS2x0AP6Ep6FJBkQIQsgDLQl+TQywUE8R7YSZpmA6KLOnAGJpKWsv228kfdgEbWCtFBCzgCQ0mrLIDtGnACZpLmWRnYrgAHYFMEmAywXQLWwEXSIPuRbDeBUdz7mQ34daEX5wM7Fb5x5tMAAAAASUVORK5CYII=",style:{marginLeft:5}})]})]}),(0,p.jsx)("img",{src:nA,onClick:function(A){A.stopPropagation(),localStorage.setItem("mainclose",u()().add(1,"days").unix()+""),V(!1)},style:{width:16,height:16,marginRight:6,marginTop:6,cursor:"pointer"}})]}),"kepukehuan.educoder.net"!==document.domain&&(0,p.jsx)(d.Z,e()({},X)),(0,p.jsx)("section",{className:eA.Z.layoutMainClass,style:{marginTop:"/training"==P.pathname?"-72px":""},children:(0,p.jsx)(i.Outlet,{})}),(0,p.jsx)(D,{}),!(0,b.Ll)()&&"kepukehuan.educoder.net"!==document.domain&&(0,p.jsx)(y,{}),(0,p.jsx)(U,{}),(0,p.jsx)(B,{}),"Account-ProfessionalAuth"===v.actionTabs.key&&(null===(n=v.actionTabs)||void 0===n||null===(n=n.code)||void 0===n?void 0:n.length)>0&&(0,p.jsx)(tA.Z,{Scoid:null==s||null===(l=s.userInfo)||void 0===l?void 0:l.user_school_id}),!(0,b.Ll)()&&(0,p.jsx)(IA,{})]})}))},29137:function(A,g,C){C.d(g,{Z:function(){return E}});var I=C(82242),e=C.n(I),n=C(7557),t=C.n(n),l=C(41498),r=C.n(l),a=C(79800),f=C.n(a),o=C(39647),d=C.n(o),i=C(59301),c=C(48323),u=C(57809),s=C(46651),v=C(78241),p=C(8591),X=C(43418),P=C(95237),m=C(43604),b=C(71418),x=C(98135),z=C(88522),V=C(3113),y=C(87799),w=C(51941),q=C(3141),j=C(26453),h=C(21894),O=C(19842),H=C(2720),T=C(97650),Z=C(45293),L="flexRow___jGYtM",N="flexColumn___NPMB3",D="formWrap___vwH9N",K="example____BmJC",F="footerWrap___lp1L0",W=C(37712),k=["account","globalSetting","loading","dispatch","schoolName","visible","onClose","onSuccess"],S=function(A,g){return g.some((function(g){return g.label.toLowerCase().indexOf(A.toLowerCase())>-1}))},U=x.Z.TextArea,M=(0,c.connect)((function(A){var g=A.account,C=A.loading;return{account:g,globalSetting:A.globalSetting,loading:C.effects}}))((function(A){A.account,A.globalSetting;var g=A.loading,C=A.dispatch,I=A.schoolName,e=A.visible,n=A.onClose,l=void 0===n?function(){}:n,a=A.onSuccess,o=void 0===a?function(){}:a,c=(d()(A,k),v.Z.useForm()),u=f()(c,1)[0];(0,i.useEffect)((function(){u.setFieldsValue({name:I})}),[I]);var s=function(){var A=r()(t()().mark((function A(g){var I,e,n,r,a,f,d;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return e=(I=g||{}).name,n=I.city,r=void 0===n?[]:n,a=I.address,f=I.remarks,A.next=3,C({type:"account/appplySchool",payload:{name:e,province:r[0],city:r[1],address:a,remarks:f}});case 3:d=A.sent,l(),d&&(p.ZP.success("新增学校/单位成功!"),o(e));case 6:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}();return(0,W.jsx)(X.Z,{centered:!0,keyboard:!1,closable:!1,destroyOnClose:!0,open:e,title:"申请添加单位名称",width:"600px",footer:null,children:(0,W.jsxs)(v.Z,{className:D,form:u,labelCol:{span:4},wrapperCol:{span:20},onFinish:s,children:[(0,W.jsx)(v.Z.Item,{label:"单位全称:",name:"name",rules:[{required:!0,message:"请输入学校或工作单位"}],children:(0,W.jsx)(x.Z,{placeholder:"学校或工作单位"})}),(0,W.jsxs)("div",{className:"".concat(L," ").concat(K),children:[(0,W.jsx)("div",{children:"示例:"}),(0,W.jsxs)("div",{className:N,children:[(0,W.jsxs)("div",{children:[(0,W.jsx)(H.Z,{style:{color:"rgb(82, 196, 26)"}}),(0,W.jsx)("span",{className:"font14 ml5",children:"正确示例:数据结构"})]}),(0,W.jsxs)("div",{children:[(0,W.jsx)(T.Z,{style:{color:"red"}}),(0,W.jsx)("span",{className:"font14 ml5",children:"错误示例:数据结构2019春"})]})]})]}),(0,W.jsx)(v.Z.Item,{label:"地区:",name:"city",children:(0,W.jsx)(O.Z,{allowClear:!0,size:"middle",options:Z.P,placeholder:"请选择所在地",showSearch:{matchInputWidth:!0,filter:S}})}),(0,W.jsx)(v.Z.Item,{label:"详细地址:",name:"address",children:(0,W.jsx)(x.Z,{placeholder:"请填写完整的地址信息"})}),(0,W.jsx)(v.Z.Item,{label:"说明:",name:"remarks",children:(0,W.jsx)(U,{placeholder:"再次说明特别情况(选填)"})}),(0,W.jsx)("div",{className:F,children:(0,W.jsxs)(v.Z.Item,{children:[(0,W.jsx)(V.ZP,{className:"mr5",size:"middle",onClick:function(){l()},children:"取消"}),(0,W.jsx)(V.ZP,{size:"middle",type:"primary",htmlType:"submit",loading:g["account/appplySchool"],children:"保存"})]})})]})})})),R=C(77790),B=C(89392),J=["user","account","globalSetting","loading","dispatch","Scoid"],G=u.default.Option,Y=s.Z.Dragger,Q=function(A){return A[A.Professor=1]="Professor",A[A.AssistantProfessor=2]="AssistantProfessor",A[A.Student=3]="Student",A}(Q||{}),E=(0,c.connect)((function(A){var g=A.user,C=A.account,I=A.loading;return{user:g,account:C,globalSetting:A.globalSetting,loading:I.effects}}))((function(A){var g,C,I=A.user,n=A.account,l=A.globalSetting,a=A.loading,o=A.dispatch,c=A.Scoid,s=(d()(A,J),v.Z.useForm()),O=f()(s,1)[0],H=(0,i.useState)({}),T=f()(H,2),Z=T[0],L=T[1],N=(0,i.useState)([]),D=f()(N,2),K=D[0],F=D[1],k=(0,i.useState)([]),S=f()(k,2),U=S[0],E=S[1],_=(0,i.useState)([]),$=f()(_,2),AA=$[0],gA=$[1],CA=(0,i.useState)([]),IA=f()(CA,2),eA=IA[0],nA=IA[1],tA=(0,i.useState)(),lA=f()(tA,2),rA=lA[0],aA=lA[1],fA=(0,i.useState)(),oA=f()(fA,2),dA=oA[0],iA=oA[1],cA=(0,i.useState)(),uA=f()(cA,2),sA=uA[0],vA=uA[1],pA=(0,i.useState)(),XA=f()(pA,2),PA=XA[0],mA=XA[1],bA=(0,i.useState)(),xA=f()(bA,2),zA=xA[0],VA=xA[1],yA=(0,i.useRef)((0,B.throttle)((function(A){return wA(A)}),1200,{leading:!0,trailing:!0})).current;(0,i.useEffect)((function(){}),[]),(0,i.useEffect)((function(){r()(t()().mark((function A(){var g;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(c){A.next=2;break}return A.abrupt("return");case 2:return A.next=4,qA(c);case 4:g=A.sent,gA(null==g?void 0:g.departments);case 6:case"end":return A.stop()}}),A)})))()}),[c]);var wA=function(){var A=r()(t()().mark((function A(g){var C,I,n;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,o({type:"account/getSchoolOption",payload:{keyword:g,limit:10}});case 2:C=A.sent,F(null==C?void 0:C.schools),g&&""!=g&&(E(null==C||null===(I=C.schools)||void 0===I?void 0:I.filter((function(A){return A.name.includes(g)}))),((null==C||null===(n=C.schools)||void 0===n?void 0:n.find((function(A){return A.name===g})))||{}).id?hA(g,null,null==C?void 0:C.schools):(O.setFieldsValue({department:""}),L(e()(e()({},Z),{school:g,department:""}))));case 5:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),qA=function(A){if(A)return o({type:"account/getDepartmentOption",payload:{id:A}})};(0,i.useEffect)((function(){if(n.basicInfo){var A=n.basicInfo,g={identity:A.identity,school:A.school_name,department:A.department_name,studentNo:A.student_id,jobTitle:"teacher"==A.identity?A.technical_title:"教授",manager:"professional"==A.identity?A.technical_title:"企业管理者"};O.setFieldsValue(g),L(g)}}),[n.basicInfo]);var jA=function(A,g){n.actionTabs.checkedList.includes(Q.Professor)?X.Z.confirm({centered:!0,okText:"确定",cancelText:"取消",title:"提示",content:(0,W.jsx)("div",{className:"tc",children:g||"申请已提交,请等待审核"}),onOk:function(){window.location.href="/classrooms/".concat(A,"/students")}}):window.location.href="/classrooms/".concat(A,"/students")},hA=function(){var A=r()(t()().mark((function A(g,C,I){var n,l,r,a,f;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return r=null===(n=(I||K).find((function(A){return A.name===g})))||void 0===n?void 0:n.id,A.next=3,qA(r);case 3:if(A.t0=A.sent,A.t0){A.next=6;break}A.t0={};case 6:a=A.t0,gA(null==a?void 0:a.departments),f=C||(null==a||null===(l=a.departments)||void 0===l||null===(l=l[0])||void 0===l?void 0:l.name),O.setFieldsValue({department:f}),L(e()(e()({},Z),{school:g,department:f}));case 11:case"end":return A.stop()}}),A)})));return function(g,C,I){return A.apply(this,arguments)}}(),OA=function(){var A=r()(t()().mark((function A(g){return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,wA();case 2:O.setFieldsValue({school:g,department:""}),L(e()(e()({},Z),{school:g,department:""}));case 4:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),HA=function(){var A=r()(t()().mark((function A(g){var C,e,l,r,a,f,d,i,c,u,s,v,X,P,m,b,x;return t()().wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(f=(a=g||{}).school,d=a.department,i=a.identity,c=a.studentNo,u=a.jobTitle,s=a.manager,rA){A.next=4;break}return p.ZP.info("请先上传照片!"),A.abrupt("return");case 4:return v=null===(C=K.find((function(A){return A.name===f})))||void 0===C?void 0:C.id,X=null===(e=AA.find((function(A){return A.name===d})))||void 0===e?void 0:e.id,P="student"===i?c:"teacher"===i?u:s,A.next=9,o({type:"account/applyProfessionalAuth",payload:{id:(null===(l=n.basicInfo)||void 0===l?void 0:l.id)||(null===(r=I.userInfo)||void 0===r?void 0:r.login),school_id:v,department_id:X,identity:i,extra:P,attachment_ids:[dA]}});case 9:if(m=A.sent,!n.actionTabs.code){A.next=15;break}return A.next=13,(0,R.cR)({invite_code:n.actionTabs.code,professor:n.actionTabs.checkedList.includes(Q.Professor)?1:null,assistant_professor:n.actionTabs.checkedList.includes(Q.AssistantProfessor)?1:null,student:n.actionTabs.checkedList.includes(Q.Student)?1:null});case 13:"加入成功"===(b=A.sent).message&&(null!=b&&b.course_id?jA(b.course_id,b.message):p.ZP.success(b.message));case 15:TA(),m&&(p.ZP.info("申请已提交,请等待审核!"),o({type:"account/getBasicInfo",payload:{login:null===(x=I.userInfo)||void 0===x?void 0:x.login}}));case 17:case"end":return A.stop()}}),A)})));return function(g){return A.apply(this,arguments)}}(),TA=function(){o({type:"account/setActionTabs",payload:{}})},ZA={data:{type:"professional"},multiple:!0,showUploadList:!1,action:"".concat(y.Z.API_SERVER,"/api/attachments.json"),className:q.Z.uploader,onChange:function(A){var g;"uploading"!==A.file.status?"done"===A.file.status&&(console.log(A.file,A.file.response),iA(null===(g=A.file.response)||void 0===g?void 0:g.id),(0,j.y3)(A.file.originFileObj,(function(A){aA(A),vA(!1)}))):vA(!0)},beforeUpload:function(A){var g="image/jpeg"===A.type||"image/png"===A.type||"image/jpg"===A.type||"image/bmp"===A.type;return g||p.ZP.info("请上传正确文件格式"),g}};return(0,W.jsxs)(X.Z,{centered:!0,keyboard:!1,closable:!1,destroyOnClose:!0,className:q.Z.modal,open:"Account-ProfessionalAuth"===n.actionTabs.key,title:(0,W.jsxs)(P.Z,{style:{padding:"25px"},align:"middle",justify:"space-between",children:[(0,W.jsx)(m.Z,{children:"职业认证"}),(0,W.jsx)(m.Z,{children:(0,W.jsx)("i",{className:"iconfont icon-guanbi11",style:{color:"#979797",cursor:"pointer"},onClick:TA})})]}),width:"660px",footer:null,children:[(0,W.jsx)(b.Z,{spinning:!!sA,children:(0,W.jsxs)(v.Z,{className:q.Z.formWrap,form:O,colon:!1,onValuesChange:function(A){(L(e()({},O.getFieldsValue())),"school"in A)&&(E(K.filter((function(g){return g.name.includes(A.school)}))),(K.find((function(g){return g.name===A.school}))||{}).id?hA(A.school):(O.setFieldsValue({department:""}),L(e()(e()({},Z),{school:A.school,department:""}))))},onFinish:HA,children:[(0,W.jsxs)(P.Z,{gutter:[10,0],children:[(0,W.jsx)(m.Z,{flex:"300px",children:(0,W.jsx)(v.Z.Item,{label:"职业",name:"identity",rules:[{required:!0,message:"请先选择职业"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"teacher",children:"教师"}),(0,W.jsx)(G,{value:"student",children:"学生"}),(0,W.jsx)(G,{value:"professional",children:"专业人士"})]})})}),"student"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.studentNo,name:"studentNo",rules:[{required:!0,message:"请先输入学号"}],children:(0,W.jsx)(x.Z,{type:"text",placeholder:"请输入学号"})})}),"teacher"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.jobTitle,name:"jobTitle",rules:[{required:!0,message:"请先选择职称"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"教授",children:"教授"}),(0,W.jsx)(G,{value:"副教授",children:"副教授"}),(0,W.jsx)(G,{value:"讲师",children:"讲师"}),(0,W.jsx)(G,{value:"助教",children:"助教"})]})})}),"professional"===Z.identity&&(0,W.jsx)(m.Z,{flex:"200px",children:(0,W.jsx)(v.Z.Item,{initialValue:Z.manager,name:"manager",rules:[{required:!0,message:"请先选择职称"}],children:(0,W.jsxs)(u.default,{children:[(0,W.jsx)(G,{value:"企业管理者",children:"企业管理者"}),(0,W.jsx)(G,{value:"部门管理者",children:"部门管理者"}),(0,W.jsx)(G,{value:"高级工程师",children:"高级工程师"}),(0,W.jsx)(G,{value:"工程师",children:"工程师"}),(0,W.jsx)(G,{value:"助理工程师",children:"助理工程师"})]})})})]}),(0,W.jsx)(v.Z.Item,{label:"学校/单位",name:"school",extra:Z.school&&!(null!=K&&K.find((function(A){return A.name===Z.school})))&&(0,W.jsxs)("div",{className:q.Z.schoolHintWrap,children:[(0,W.jsxs)("span",{className:q.Z.colorCDCDCD,children:["未找到包含“",Z.school,"”的高校,"]}),(0,W.jsx)("span",{className:"".concat(q.Z.color0152d9," current"),onClick:function(){mA(!0)},children:"申请新增"})]}),rules:[{required:!0,message:"请先选择学校/单位"}],children:(0,W.jsx)(z.Z,{showSearch:!0,onSearch:yA,options:null==U?void 0:U.map((function(A){return{value:A.name}}))})}),(0,W.jsx)(v.Z.Item,{label:"院系/部门",name:"department",extra:Z.department&&!(null!=AA&&AA.find((function(A){return A.name===Z.department})))&&(0,W.jsxs)("div",{className:q.Z.schoolHintWrap,children:[(0,W.jsx)("span",{className:q.Z.colorCDCDCD,children:Z.department?"未找到包含“".concat(Z.department,"”的高校,"):"未找到院系,"}),(0,W.jsx)("span",{className:"".concat(q.Z.color0152d9," current"),onClick:function(){K.find((function(A){return A.name===Z.school}))?VA(!0):p.ZP.info("请先选择正确的单位或者学校!")},children:"申请新增"})]}),rules:[{required:!0,message:"请先选择院系/部门"}],children:(0,W.jsx)(z.Z,{showSearch:!0,onChange:function(A){return nA(AA.filter((function(g){return g.name.includes(A)})))},options:null==eA?void 0:eA.map((function(A){return{value:A.name}}))})}),(0,W.jsx)(v.Z.Item,{label:"职业证上传",children:(0,W.jsxs)("div",{className:q.Z.flexRow,children:[(0,W.jsxs)("div",{className:q.Z.flexColumn,children:[(0,W.jsx)(Y,e()(e()({},ZA),{},{accept:".png,.jpg,.bmp,.jpeg",children:rA?(0,W.jsx)("img",{src:rA,className:q.Z.uploadImg}):(0,W.jsxs)("div",{className:q.Z.imageTip,children:[(0,W.jsx)("p",{children:(0,W.jsx)("i",{className:"iconfont icon-cuban2shangchuanyunduan ".concat(q.Z.uploadTipIcon)})}),(0,W.jsx)("p",{className:q.Z.uploadTip,children:(0,W.jsx)("a",{className:q.Z.color05101a,children:"点击或拖拽上传图片"})})]})})),(0,W.jsx)("span",{className:"tc",children:(0,W.jsx)("p",{className:q.Z.viewLargerImg,children:"查看大图"})})]}),(0,W.jsxs)("div",{className:"".concat(q.Z.flexColumn," ").concat(q.Z.example),children:[(0,W.jsx)("span",{className:q.Z.exampleImg,children:(0,W.jsx)("img",{src:w})}),(0,W.jsxs)("span",{className:"tc",children:[(0,W.jsx)("p",{children:"示例图片"}),(0,W.jsx)("p",{className:"".concat(q.Z.colorOrange," font12"),children:"(png/jpg/bmp格式,不超过2MB)"})]})]})]})}),(0,W.jsx)("div",{className:q.Z.footerWrap,children:(0,W.jsxs)(v.Z.Item,{children:[(0,W.jsx)(V.ZP,{className:"mr5",size:"middle",onClick:TA,children:"取消"}),(0,W.jsx)(V.ZP,{size:"middle",type:"primary",htmlType:"submit",loading:a["account/applyProfessionalAuth"],children:"保存"})]})}),(0,W.jsxs)("div",{className:q.Z.note,children:[(0,W.jsx)("p",{children:"认证须知:"}),(0,W.jsx)("p",{children:"1.根据职业上传相应的证件照:教师(教师证),专业人士(员工证)、学生(学生证),请确保证件照内容完整并且清晰可见,严禁PS;"}),(0,W.jsx)("p",{children:"2.我们将在你提交职业证信息后的24小时(不包含节假日)内完成审核,审核结果将会以系统消息的形式发送给你;"}),(0,W.jsx)("p",{children:"3.职业认证审核完成后,无法删除,请谨慎填写;职业变更请选择重新认证;"}),(0,W.jsx)("p",{children:"4.职业认证审核完成后,系统将自动发放500个金币作为奖励;"}),(0,W.jsx)("p",{children:"5.我们会确保你所提供的信息均处于严格的保密状态,不会泄露;"}),(0,W.jsxs)("p",{children:["6.如存在恶意乱填写姓名,学号,及上传与职业证件无关图片者,一经发现将冻结",!(null!=l&&null!==(g=l.setting)&&void 0!==g&&g.is_local)&&"EduCoder","账号。"]}),(0,W.jsx)("p",{children:"7.非老师身份提交职业认证后系统会自动将状态改为已认证,你将可以体验平台需要职业认证的功能;如果在认证后的使用过程中未通过审核,你将不能继续体验需要认证的功能。"})]})]})}),(0,W.jsx)(M,{visible:PA,onClose:function(){return mA(!1)},schoolName:Z.school,onSuccess:OA}),(0,W.jsx)(h.Z,{visible:zA,onClose:function(){return VA(!1)},schoolId:null===(C=K.find((function(A){return A.name===Z.school})))||void 0===C?void 0:C.id,schoolName:Z.school,departmentName:Z.department,onSuccess:function(A){return hA(Z.school,A)}})]})}))},60415:function(A,g,C){C.d(g,{AL:function(){return b},Iy:function(){return d},Qv:function(){return u},ez:function(){return m},jb:function(){return i}});var I=C(79800),e=C.n(I),n=C(32834),t=C.n(n),l=C(11690);var r=[],a=["
              "],f=new(t().Renderer),o=/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;function d(){r.length=0,a=["
                "]}var i={overflow:"hidden",WebkitBoxOrient:"vertical",display:"-webkit-box",WebkitLineClamp:2};function c(A,g,C,I){if(g>=A.length||A[g].level<=C)return g;var e=A[g];I.push("
              • "+e.text+"");var n=[];return g=c(A,++g,e.level,n),n.length>0&&(I.push("
                  "),n.forEach((function(A){I.push(A)})),I.push("
                ")),I.push("
              • "),g=c(A,g,C,I)}function u(){return c(r,0,0,a),a.push("
              "),a.join("")}var s={heading:function(A){var g=o.exec(A);if(g)return{type:"heading",raw:g[0],depth:g[1].length,text:g[2]}},fences:function(A){var g=this.rules.block.fences.exec(A);if(g){var C=g[0],I=function(A,g){var C=A.match(/^(\s+)(?:```)/);if(null===C)return g;var I=C[1];return g.split("\n").map((function(A){var g=A.match(/^\s+/);return null===g?A:e()(g,1)[0].length>=I.length?A.slice(I.length):A})).join("\n")}(C,g[3]||""),n=g[2]?g[2].trim():g[2];if(["latex","katex","math"].indexOf(n)>=0){var t=X(),l=I;I=t,P[t]={type:"block",expression:l}}return{type:"code",raw:C,lang:n,text:I}}}},v=/(?:\${2})([^\n`]+?)(?:\${2})/gi,p=0,X=function(){return"__special_katext_id_".concat(p++,"__")},P={};function m(){return P}function b(){p=0,P={}}function x(A){return A=A.replace(v,(function(A,g){var C=X();return P[C]={type:"inline",expression:g},C}))}var z=f.listitem;f.listitem=function(A){return z(x(A))};var V=f.paragraph;f.paragraph=function(A){return V(x(A))};var y=f.tablecell;f.tablecell=function(A,g){return y(x(A),g)},f.code=function(A,g,C){var I=(g||"").match(/\S*/)[0];return I?["latex","katex","math"].indexOf(I)>=0?"

              ".concat(A,"

              "):'
              ').concat(C?A:(0,l.escape)(A,!0),"
              \n"):'
              '+(C?A:(0,l.escape)(A,!0))+"
              "},f.heading=function(A,g,C){var I=this.options.headerPrefix+C.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g,"-");return r.push({anchor:I,level:g,text:A}),"'+A+""},t().setOptions({silent:!0,gfm:!0,pedantic:!1}),t().use({tokenizer:s,renderer:f}),g.ZP=t()},3141:function(A,g){g.Z={modal:"modal___A9Ovz",colorBlue:"colorBlue___XSmR5",formWrap:"formWrap___wRvaA",flexRow:"flexRow___C40dc",flexColumn:"flexColumn___LkZfj",example:"example___bz7Hw",exampleImg:"exampleImg___gNkC_",colorOrange:"colorOrange___Ka6zf",uploader:"uploader___plQRr",uploadImg:"uploadImg___cjOpL",imageTip:"imageTip___p1_lZ",uploadTipIcon:"uploadTipIcon___SpsS2",uploadTip:"uploadTip___e9JlL",color05101a:"color05101a___CDEUv",viewLargerImg:"viewLargerImg___IclRX",footerWrap:"footerWrap___beWC6",note:"note___CXi9y",schoolHintWrap:"schoolHintWrap___Ma6ly",colorCDCDCD:"colorCDCDCD___D0UWo",color0152d9:"color0152d9___hF3Bb"}},9936:function(A){A.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA0lJREFUWEfFl0tIVFEYx7/vDnNNIWRUdB4hRYQunAHz0ULBFoWMoozgg6k2LhQLXCS0CBcqIUMQCuqEWUtDJBBXiYuidkpORD7KCK0BdRZpEPiYuXS/ODPdaR73zr1XJmYWl7ncc77/73yvcw6Cxl9FRYVxd1ewE8EVIioGgDxEyGPTieAAAA4Q0Y8Iy1arcdXn8wlaTKPaoOJiuykUQjcAXSWibLXx7DsiHgPgG56nGb9/9WeqOYoAkRUHO4jARQRZWoQTxyBCEBHmrdasWSWPyAL8XXU/kVhyGuFkEG6T52lYzhtJAEVFjguINEBE+ekQl2wg4j6AYTAQ+PAt1m4cQGTlMJpu8VgInoe7sZ6IArCY7+wInnS5Xcl7iNymzWa8L+VEFMBiKbslitCRTrcr2eI4mN3bW5sOVwx7RFxPT+WyvbPTbamsdJj6+gY/BYNB0grY0HAt3+1uOdfTc2/18PBIjIs7QpDnsYuFIgxgNjvuEIlOOeNTU4/Kmpvrzy8vvw+0tnb5BCGkCtHcXF/g9XqqmL2amqbXfv9OUKYyFgKBj48xEvvQc6Umk52dw83NPassL7cXaoFg4hMTnipEgN7e/nfz8ws/5BbGmpXNxt9Ei8VxWRTFoVSujYVYWvIF2tq6ZT2hVVzS4jhuAM1mx20isUEttmoQesUjLZt7iUVFdg8AlakBsO9KEE1N9fler6daze3JGrjGAJ4AkFULQDLESmB6eu77yMhQpX7xsA920Wy2vyCiM1oBEiHYuyAIv1MlnHJTwpNTATCDbrercHT0QTX7v7HxZd/pvLGkp09EcgCPdYeATXS5nAXj48PhOt/a8v8qKbloYiXa3t7t0weBu7qSUBIfGxuO1vni4tuD2D6hDwLXNJehnLjUZBKblVaIcBlqaUSpxKUEOw1EuBGpteLEmKfKdj0Q0Vasthk1Nl7Pn5x8GM52LaWWCOFyda4QxW2GYachcpHNiL2k2o5nZibLa2urzVrE5cJRV9fyanPz63FsL2CH1bjtmH1UOpDk5p415OWZjNvb/hM9zcpgMEBp6aWc9fXPR4nzkg4kbEDGj2T/QpGhQ6nkpoweyyWIjF5MJIiMXs1iszZjl9PE0vlf1/M/hZhM6N1gtVgAAAAASUVORK5CYII="},40937:function(A){A.exports="data:image/png;base64,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3Ylm6O6rOZTrnjc9n+ol+1OtNKdZ05zmeJpvuhfVq+DmcHPRum76i4+3ua05unMVhaY70QzdfTWHct3zpudTvWR/qpXmNGua0xxP8033onoV3BxuLlrXTX/x8Ta3NUd3rqLQdCeaobuv5lCue970fKqX7E+10pxmTXOa42m+6V5Ur4Kbw81F67rpLz7e5rbm6M5VFJruRDN099UcynXPm55P9ZL9qVaa06xpTnM8zTfdi+pVcHO4uWhdN/3Fx9vc1hzduYpC051ohu6+mkO57nnT86lesj/VSnOaNc1pjqf5pntRvQpuDjcXreumv/h4m9uaoztXUWi6E83Q3VdzKNc9b3o+1Uv2p1ppTrOmOc3xNN90L6pXwc3h5qJ13fQXH29zW3N05yoKTXeiGbr7ag7luudNz6d6yf5UK81p1jSnOZ7mm+5F9Sq49oebqs1XsRiHp+bV+VRvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+jN4abZKuqm17FVbxdOe0lyVd1pBp2vSk99qzjtbwdOO67Kmp5P9dJcur/0fDvozeGm2SrqptexVW8XTntJclXdaQadr0pPfas47W8HTjuuypqeT/XSXLq/9Hw76M3hptkq6qbXsVVvF057SXJV3WkGna9KT32rOO1vB047rsqank/10ly6v/R8O+g97nBTtanUVzdVWk99u3PSi2YQrUpGc3TntEPNoXrKVfnqfMJ1z6DzVXHS8cFUXd3nq+ilbjUwrS5aFYcxyv61CjrfLpzsA80qWpWM5ujOaYeaQ/WUq/LV+YTrnkHnq+Kk44OpurrPV9FL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dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2M5khzmkV903rq25mbw02z1anapGnftF5ymTrPduTU+ZTT7tJ66quczqec+irX3VfnEy7diXjewWiONKdZ1Detp76duTncNFudqk2a9k3rJZep82xHTp1POe0urae+yul8yqmvct19dT7h0p2I5x2bxIyIAAAOAElEQVSM5khzmkV903rq25l73OFGN0Ga002gvmm9tG/VfJpDuKoM6qucZH0ik+5P9ZRLrkmF5zF/1ZXs7olaVeuW9K3bfZhCNxbKxf9TcdV8VXnVVzntr4KryqC+ylV09xs80/2pnnLJDis8j/mrrmR3T9SqWrekb93uwxS6sVBuDjdv/otCtWfldH0ruKoM6qtcRXe/wTPdn+opl+ywwvOYv+pKdvdErap1S/rW7T5MoRsL5eZwM4cb3gNVe0p9ldNn6Glcuj/VUy65HhWex/xVV7K7J2pVrVvSt273YQrdWCjHv9jUV7n0fGm9dI6q+TSHcFUZ1Fc5yfpEJt2f6imXXJMKz2P+qivZ3RO1qtYt6Vu3+zCFbiyUm8PN/OWG90DVnlJf5fQZehqX7k/1lEuuR4XnMX/VlezuiVpV65b0rdt9mEI3FsrxLzb1VS49X1ovnaNqPs0hXFUG9VVOsj6RSfenesol16TC85i/6kp290StqnVL+tbtPkyhGwvl5nAzf7nhPVC1p9RXOX2Gnsal+1M95ZLrUeF5zF91Jbt7olbVuiV963YfptCNhXL8i019lUvPl9ZL56iaT3MIV5VBfZWTrE9k0v2pnnLJNanwPOavupLdPVGrat2SvnW7D1PoxkK5OdzMX254D1TtKfVVTp+hp3Hp/lRPueR6VHge81ddye6eqFW1bknfut2HKXRjoRz/YlNf5dLzqV53TvtLculOkrOt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"}}]); \ No newline at end of file diff --git a/p__Classrooms__Lists__CommonHomework__Comment__index.async.js b/p__Classrooms__Lists__CommonHomework__Comment__index.async.js index 568ac00890..48fecf61c5 100644 --- a/p__Classrooms__Lists__CommonHomework__Comment__index.async.js +++ b/p__Classrooms__Lists__CommonHomework__Comment__index.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[12303],{20360:function(e,t,n){n.d(t,{Z:function(){return l}});var a=n(82871),r=n(59301),s={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z"}}]},name:"delete",theme:"outlined"},i=n(68475),o=function(e,t){return r.createElement(i.Z,(0,a.Z)({},e,{ref:t,icon:s}))};var l=r.forwardRef(o)},90758:function(e,t,n){var a=n(82242),r=n.n(a),s=(n(59301),n(93314)),i=n(3113),o=n(37712);t.Z=function(e){var t=e.img,n=e.buttonProps,a=void 0===n?{}:n,l=e.styles,c=void 0===l?{}:l,d=e.customText,u=e.ButtonText,p=e.ButtonClick,m=e.Buttonclass,h=e.ButtonTwo,f=e.imgStyles,x=e.loading,v=void 0!==x&&x;return(0,o.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:v?"hidden":"visible"}),c),children:[(0,o.jsx)("img",{src:t||s,style:r()(r()({},f),{},{pointerEvents:"none",userSelect:"none"})}),(0,o.jsx)("p",{className:"mt20 font14",children:d||"暂时还没有相关数据哦!"}),u&&(0,o.jsx)(i.ZP,r()(r()({className:m,onClick:p},a),{},{children:u})),h&&h]})}},53399:function(e,t,n){n.d(t,{Z:function(){return k}});var a=n(82242),r=n.n(a),s=n(7557),i=n.n(s),o=n(41498),l=n.n(o),c=n(79800),d=n.n(c),u=n(59301),p={wrp:"wrp___dq7YK",bgBlack:"bgBlack___ARIUV",monaco:"monaco___VnZC3",darkBlue:"darkBlue___UprA9",close:"close___LKoWu",embed:"embed___hvpEJ"},m=n(3113),h=n(74516),f=n(29697),x=n(6848),v=n(26453),g=n(17705),_=n(90758),y=n(87799),j=n(29530),w=n(37712),k=function(e){var t,n,a,s,o,c,k=e.editOffice,b=void 0===k?"view":k,Z=e.data,S=(e.theme,e.type),N=e.filename,I=e.monacoEditor,P=e.className,C=e.style,E=e.close,T=e.onClose,$=e.hasMask,O=e.disabledDownload,A=e.onImgDimensions,H=e.showNodata,R=e.recordInfo,L=(0,u.useState)("https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt"),W=d()(L,2),B=(W[0],W[1],(0,u.useState)("")),F=d()(B,2),z=(F[0],F[1]),M=(0,u.useState)(),J=d()(M,2),V=J[0],D=J[1],G="build"===window.ENV?"/react/build":"",Y=location.host.startsWith("localhost")?y.Z.PROXY_SERVER:y.Z.API_SERVER,U=(0,u.useRef)();null!==(t=Z)&&void 0!==t&&t.startsWith("/api")&&"txt"!==S&&(Z=y.Z.API_SERVER+Z);N&&(I.filename=N),(0,u.useEffect)((function(){var e,t=null===(e=document.cookie)||void 0===e||null===(e=e.replace(/\s/g,""))||void 0===e?void 0:e.split(";");null==t||t.map((function(e){var t=e.split("=");"_educoder_session"===t[0]&&z(t[1])}))}),[]),(0,u.useEffect)((function(){var e;"office"===S&&(Z.indexOf("bigfilescdn.")>-1||Z.indexOf("bigfiles1")>-1?D({url:Z,fileType:(e=Z,e.substring(e.lastIndexOf("/")+1).split(".").pop()),model:Z.indexOf("model=edit")?"edit":"view"}):X())}),[S,Z]);var X=function(){var e=l()(i()().mark((function e(){var t,n,a;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("data:",Z),t=Z,Z.startsWith("http")||(t=location.origin+t),n=new URL(t).pathname.split("/").pop(),e.next=6,(0,g.gJ)({attachment_id:n});case 6:(a=e.sent).url=Y+a.url,D(a);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),q=function(){Z.startsWith("http")||Z.startsWith("blob:")?Q():(0,v.Sv)(N||"educoder",Z,N)},Q=function(){R&&(0,j.fc)({id:null==R?void 0:R.id,watch_type:1,course_id:null==R?void 0:R.course_id}),(0,v.Nd)(N||"educoder",decodeURIComponent(Z))};return(0,w.jsxs)("div",{style:r()({},C||{}),className:"".concat($&&p.bgBlack," ").concat(S?p.wrp:"hide"),children:[E&&(0,w.jsxs)("div",{className:p.close,ref:U,children:[!!A&&(0,w.jsx)(x.Z,{title:"点击对图片进行批注",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:function(){T(),A()},children:(0,w.jsx)("i",{className:"icon-yulanpizhu"})})}),!O&&(0,w.jsx)(x.Z,{title:"点击下载此文件",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{onClick:Q,children:(0,w.jsx)("i",{className:"icon-quxiaozhiding"})})}),(0,w.jsx)(x.Z,{title:"关闭",getPopupContainer:function(){return U.current},children:(0,w.jsx)("span",{className:"",onClick:T,children:(0,w.jsx)("i",{className:"icon-guanbi1"})})})]}),(0,w.jsx)("div",{className:"".concat(p[P]," ").concat(P," ").concat(p.monaco," ").concat("txt"===S?"show":"hide"),children:"txt"===S&&(0,w.jsx)(w.Fragment,{children:(0,w.jsx)(f.ZP,r()({},I))})}),"audio"===S&&(0,w.jsx)("audio",{src:"".concat((null===(n=Z)||void 0===n?void 0:n.indexOf("http://"))>-1||(null===(a=Z)||void 0===a?void 0:a.indexOf("https://"))>-1?"":"data:audio/mp3;base64,").concat(Z),autoPlay:!0}),"video"===S&&(0,w.jsx)(w.Fragment,{children:(null===(s=Z)||void 0===s?void 0:s.indexOf("http"))>-1?(0,w.jsx)("video",{controls:!0,src:"".concat(Z),autoPlay:!0}):(0,w.jsx)("video",{controls:!0,src:"data:video/mp4;base64,".concat(Z),autoPlay:!0})}),"office"===S&&V&&(0,w.jsx)("iframe",{src:"".concat(G,"/office.html?key=").concat(V.key,"&url=").concat(btoa(V.url),"&callbackUrl=").concat(Y+V.callbackUrl,"&fileType=").concat(V.fileType,"&title=").concat(V.title,"&model=").concat(b,"&officeServer=").concat(y.Z.ONLYOFFICE,"&disabledDownload=").concat(!!O)}),"html"===S&&(0,w.jsx)("iframe",{src:Z+"&disposition=inline"}),"pdf"===S&&(0,w.jsx)("iframe",{src:"".concat(G,"/js/pdfview/index.html?url=").concat(encodeURIComponent(Z),"&disabledDownload=").concat(!!O)}),"image"===S&&(0,w.jsx)("img",{src:"".concat((null===(o=Z)||void 0===o?void 0:o.indexOf("http://"))>-1||(null===(c=Z)||void 0===c?void 0:c.indexOf("https://"))>-1?"":"data:image/png;base64,").concat(Z)}),("other"===S||"download"===S)&&(0,w.jsx)(w.Fragment,{children:H?(0,w.jsx)(_.Z,{customText:"当前文件不支持预览,可点击下载查看",ButtonTwo:(0,w.jsx)(m.ZP,{icon:(0,w.jsx)("i",{className:"iconfont icon-xiazai4 font14"}),type:"primary",size:"middle",onClick:q,children:"下载"})}):(0,w.jsxs)(m.ZP,{type:"primary",size:"middle",onClick:q,children:[(0,w.jsx)(h.Z,{}),"点击下载"]})})]})}},49519:function(e,t,n){n.d(t,{z:function(){return w}});var a=n(82242),r=n.n(a),s=n(37205),i=n.n(s),o=n(91232),l=n.n(o),c=n(79800),d=n.n(c),u=n(59301),p=(n(17014),n(60415)),m=(n(64018),n(36422)),h=n(87799),f=n(26453),x=n(15342),v=n(1012),g=n(53399),_=n(37712),y="@▁@",j=/]*>/g;var w=function(e,t){e=e||"";var n=/(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?\)|(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g;return t?e.replaceAll("https://www.educoder.net","").replaceAll("https://www-cdn.educoder.net","").replaceAll("//api/attachments","/api/attachments").replace(n,(function(e,t,n,a,r,s,i){var o=t||a||s,l=n||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+o+l+"&t="+(0,f.Jn)(o,Date.now())+(e.indexOf(")")>-1?")":"&")})).replaceAll('src="(','src="').replaceAll("src='(",'src="'):e=e.replace(n,(function(e,t,n,a,r,s,i){var o=t||a||s,l=n||r||i||"?";return h.Z.API_SERVER+"/api/attachments/"+o+l+"&t="+(0,f.Jn)(o,Date.now())+(e.indexOf(")")>-1?")":"&")})).replace(/\"(?:https?:\/\/[^\/]+)?\/api\/attachments\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/attachments\/download\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(e,t,n,a,r){var s=t||a,i=n||r||"";return'"'+h.Z.API_SERVER+"/api/attachments/"+s+i+s+i+"&t="+(0,f.Jn)(s,Date.now())})).replace(/\(\s+(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?|\"(?:https?:\/\/[^\/]+)?\/files\/uploads\/([A-Za-z0-9+/=]+)(\?.*?)?\//g,(function(e,t,n,a,r){var s=t||a,i=n||r||"";return"("+h.Z.API_SERVER+"/files/uploads/"+s+i+s+i+"&t="+(0,f.Jn)(s,Date.now())})).replaceAll('src="(','src="').replaceAll("src='(",'src="').replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")};t.Z=function(e){var t=e.value,n=void 0===t?"":t,a=e.className,s=e.showTextOnly,o=e.showLines,c=e.style,f=void 0===c?{}:c,w=e.stylesPrev,k=void 0===w?{}:w,b=e.highlightKeywords,Z=e.showProgramFill,S=(e.isProgramFill,e.disabledFill),N=void 0!==S&&S,I=e.programFillValue,P=e.onFillChange,C=void 0===P?function(e){}:P,E=e.onFillBlur,T=void 0===E?function(){}:E,$=String(n),O=(0,u.useState)(""),A=d()(O,2),H=A[0],R=A[1],L=(0,u.useState)("office"),W=d()(L,2),B=W[0],F=W[1],z=(0,u.useState)([]),M=d()(z,2),J=M[0],V=M[1],D=(0,u.useRef)("a"+(0,v.Z)()),G={};var Y=function(e){return e.replace(/([\s\S]+?)<\/style>/gim,(function(e,t){var n=t.replace(/(\n|\r)/g,"").split("}"),a=[];return n.map((function(e){""!=e&&a.push(".".concat(D.current," ").concat(e))})),"")}))},U=(0,u.useMemo)((function(){try{$=$.replace(/\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g,"("+h.Z.API_SERVER+"/api/attachments/").replace(/\"\/api\/attachments\/|\"\/attachments\/download\//g,'"'+h.Z.API_SERVER+"/api/attachments/").replace(/\(\s+\/files\/uploads\/|\"\/files\/uploads\//g,'"'+h.Z.API_SERVER+"/files/uploads/").replaceAll("http://video.educoder","https://video.educoder").replaceAll("http://www.educoder.net/api","https://data.educoder.net/api").replaceAll("https://www.educoder.net/api","https://data.educoder.net/api").replace(/\r\n/g,"\n")}catch(e){}if(Z){var e=-1;return $=$.replaceAll("<","<").replaceAll(">",">").replace(/(@▁▁@|@▁@)/g,(function(t,n,a){var r;return function(e,t,n){var a=document.createElement(e===y?"input":"textarea");a.style.width="100%",a.style.height=e===y?"40px":"151px",a.rows=5,a.spellcheck=!1,a.name="edu-program-fill",a.placeholder="请输入",a.dataset.id=t;var r=Object.keys(G).length;return G[r]=a,'')}(t,++e,null==I||null===(r=I[e])||void 0===r?void 0:r.value)})),'
              '.concat(Y($||""),"
              ")}var t=Y($);t=(0,p.ZP)(t);var n=(0,p.ez)();$.match(/\[TOC\]/)&&(t=t.replace("

              [TOC]

              ",(0,p.Qv)()),(0,p.Iy)()),t=t.replace(/(__special_katext_id_\d+__)/g,(function(e,t){var a=n[t],r=a.type,s=a.expression;return(0,x.renderToString)(function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue}(s)||"",{displayMode:"block"===r,throwOnError:!1,output:"html"})})),t=t.replace(/▁/g,"▁▁▁▁▁"),(0,p.AL)();var a=document.createElement("div");return a.innerHTML=t,s?a.innerText:b?(Q(a,b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),a.innerHTML):(setTimeout((function(){return te()}),500),a.innerHTML)}),[$,b]);(0,u.useEffect)((function(){K.current&&K.current.querySelectorAll(["input","textarea"]).forEach((function(e){e.oninput=X,e.onblur=q}))}),[J]),(0,u.useEffect)((function(){if(null!=I&&I.length)try{var e,t=K.current.querySelectorAll(".edu-program-fill-score"),n=K.current.querySelectorAll('[name="edu-program-fill"]'),a=l()(n.entries());try{for(a.s();!(e=a.n()).done;){var r,s,i,o=d()(e.value,2),c=o[0],u=o[1];u.value=(null==I||null===(r=I[c])||void 0===r?void 0:r.value)||"","warning"===(null==I||null===(s=I[c])||void 0===s?void 0:s.type)?u.className="program-fill-warning":"success"===(null==I||null===(i=I[c])||void 0===i?void 0:i.type)?u.className="program-fill-success":u.className=""}}catch(e){a.e(e)}finally{a.f()}var p,m=l()(t.entries());try{for(m.s();!(p=m.n()).done;){var h,f,x=d()(p.value,2),v=x[0];x[1].innerHTML=null!=I&&null!==(h=I[v])&&void 0!==h&&h.score?"".concat(null==I||null===(f=I[v])||void 0===f?void 0:f.score,"分"):""}}catch(e){m.e(e)}finally{m.f()}V(I)}catch(e){console.log(e,"error")}}),[I]);var X=function(e){J[e.target.dataset.id]=J[e.target.dataset.id]||{},J[e.target.dataset.id].value=e.target.value,V(i()(J)),C(J,e.target.dataset.id)},q=function(e){J[e.target.dataset.id]=J[e.target.dataset.id]||{},J[e.target.dataset.id].value=e.target.value,V(i()(J)),T(J,e.target.dataset.id)};function Q(e,t){return e.childNodes.forEach((function(e){if(e.childNodes.length>0)Q(e,t);else if("IMG"!==e.nodeName)if(e.innerHTML){var n;e.innerHTML=null===(n=e.innerHTML)||void 0===n?void 0:n.replace(new RegExp(t,"gi"),'$&')}else{var a=document.createElement("span");a.innerHTML=e.textContent.replace(new RegExp(t,"gi"),'$&'),e.replaceWith(a)}}))}var K=(0,u.useRef)();function ee(e){var t=e.target;if("A"===t.tagName.toUpperCase()){var n=t.getAttribute("href");if(n.indexOf("office")>-1)e.preventDefault(),R(n),F("office");else if(n.indexOf("application/pdf")>-1)e.preventDefault(),R(n),F("pdf");else if(n.indexOf("text/html")>-1)e.preventDefault(),R(n),F("html");else if(n.startsWith("#")){e.preventDefault();var a=document.getElementById(n.replace("#",""));a&&a.scrollIntoView(!0)}}}p.jb.WebkitLineClamp=o,o&&(f=r()(r()({},f),p.jb));var te=function(){var e,t=null===(e=K.current)||void 0===e?void 0:e.querySelectorAll("video");null==t||t.forEach((function(e){if(e.oncontextmenu=function(){return!1},e.src.indexOf(".m3u8")>-1)if(e.canPlayType("application/vnd.apple.mpegurl"));else if(m.ZP.isSupported()){var t=new m.ZP;t.loadSource(e.src),t.attachMedia(e)}}))};return(0,u.useEffect)((function(){if(K.current&&U&&U.match(j)&&window.PR.prettyPrint(),K.current)return K.current.addEventListener("click",ee),function(){var e;null===(e=K.current)||void 0===e||e.removeEventListener("click",ee),(0,p.AL)(),(0,p.Iy)()}}),[U,K.current,ee]),(0,_.jsxs)(_.Fragment,{children:[s&&(0,_.jsx)("div",{ref:K,children:U}),!s&&(0,_.jsx)("div",{ref:K,style:r()({},f),className:"".concat(a||""," ").concat(N?"disabled-fill":""," markdown-body ").concat(D.current),dangerouslySetInnerHTML:{__html:U}}),(0,_.jsx)(g.Z,{close:!0,data:H,type:null!=H&&H.length?B:"",style:r()({},k),onClose:function(){return R("")}})]})}},59215:function(e,t,n){n.r(t),n.d(t,{default:function(){return le}});var a=n(7557),r=n.n(a),s=n(41498),i=n.n(s),o=n(82242),l=n.n(o),c=n(79800),d=n.n(c),u=n(39647),p=n.n(u),m=n(59301),h=n(99232),f=n.n(h),x=n(86129),v=n.n(x),g=n(13046),_=n(48323),y=n(43418),j=n(8591),w=n(95237),k=n(43604),b=n(3113),Z=n(56511),S=n(66104),N=n(28103),I=n(14491),P=n(10777),C=n(57809),E=n(71418),T=n(22596),$=n(87026),O=n(88289),A=n(20360),H=n(87799),R=n(85677),L=n(26453),W=n(78241),B=n(26220),F=n(98135),z=n(37712),M=function(e){var t=e.defaultValue,n=e.onBlur,a=e.max,r=e.className,s=void 0===r?"game-score":r,i=(0,m.useState)(t),o=d()(i,2),l=o[0],c=o[1];return(0,m.useEffect)((function(){c(t)}),[t]),(0,z.jsx)(B.Z,{max:a,min:0,className:s,value:l,onChange:function(e){c(e)},onBlur:function(){l&&(n(l>a?a:l),c(null))}})},J="greyText___lvEE6",V="info___El01Z",D="label___GmvST",G="blackContent___FYo0Z",Y="orangeContent____uYQ3",U="inputLabel___ruiZm",X="tableTitle___ir3x7",q="scoreTable___b9Z37",Q=(0,_.connect)((function(e){return{shixunHomeworks:e.shixunHomeworks,classroomList:e.classroomList}}))((function(e){var t,n,a=e.shixunHomeworks,s=e.dispatch,o=e.classroomList,l=e.gethomeworkreport,c=e.homeWorkReport,u=(a.shixunWorkReport,(0,_.useParams)()),p=(0,m.useState)(!1),h=d()(p,2),f=h[0],x=h[1],v=(0,m.useState)(!1),b=d()(v,2),Z=b[0],S=b[1],N=(0,m.useState)(""),P=d()(N,2),C=P[0],E=P[1],T=W.Z.useForm(),$=d()(T,1)[0],O=function(){var e=i()(r()().mark((function e(){var t;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return S(!0),t=$.getFieldsValue(),e.next=4,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/shixun_work_comment.json"),{method:"post",body:{hidden_comment:t.hidden_comment,comment:t.comment}});case 4:0===e.sent.status&&(j.ZP.success("点评成功"),$.resetFields(),s({type:"shixunHomeworks/setActionTabs",payload:{}}),l()),S(!1);case 7:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),A=function(){var e=i()(r()().mark((function e(){var t;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(C){e.next=3;break}return j.ZP.warning("请填写分数"),e.abrupt("return");case 3:return S(!0),t=$.getFieldsValue(),e.next=7,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/add_score.json"),{method:"post",body:{comment:t.comment,score:C}});case 7:0===e.sent.status&&(j.ZP.success("点评成功"),s({type:"shixunHomeworks/setActionTabs",payload:{}}),l()),S(!1);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),H=[{title:"任务名称",dataIndex:"shixun_name",ellipsis:!0},{title:"开启时间",dataIndex:"open_time",width:160,render:function(e){return e||"--"}},{title:"评测次数",dataIndex:"evaluate_count",width:110},{title:"完成时间",dataIndex:"finished_time",width:160},{title:"实训耗时",dataIndex:"cost_time",width:160},{title:"缺评扣分",dataIndex:"absence_penalty",width:90,render:function(e){return e||"--"}},{title:"得分",dataIndex:"score",width:90,render:function(e,t){return(0,z.jsxs)("div",{children:[(0,z.jsx)("span",{style:{color:parseFloat(t.score_full)!==parseFloat(e)?"#E30000":"#53C41B"},children:e}),"/",t.score_full]})}},{title:"调分",width:100,dataIndex:"action",render:function(e,t){return(0,R.GJ)()?(0,z.jsx)(M,{max:t.score_full,onBlur:function(){var e=i()(r()().mark((function e(t){var n,a;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(0,R.Rm)()||null!==(n=o.AssistantObject.practice)&&void 0!==n&&n.can_appraise){e.next=3;break}return j.ZP.warning("您未获取此权限,需向管理员申请权限才能使用此功能"),e.abrupt("return");case 3:return e.next=5,(0,g.ZP)("/api/student_works/".concat(u.homeworkId,"/adjust_score.json"),{method:"post",body:{score:t}});case 5:a=e.sent,l(),0===a.status&&j.ZP.success("调分成功");case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}):null!=c&&c.is_anonymous?(0,z.jsx)(B.Z,{min:0,value:C,onChange:function(e){return E(e)},max:t.score_full}):e}}].filter((function(e){return null==c||!c.is_anonymous||!["late_penalty","score","absence_penalty"].includes(e.dataIndex)}));return(0,z.jsxs)(y.Z,{centered:!0,width:1080,title:"点评作业",afterClose:function(){$.resetFields(),E("")},confirmLoading:Z,open:"更改点评"===a.actionTabs.key,okText:"确定",cancelText:"取消",onOk:i()(r()().mark((function e(){var t,n;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(0,R.Rm)()||null!==(t=o.AssistantObject.practice)&&void 0!==t&&t.can_appraise){e.next=3;break}return j.ZP.warning("您未获取此权限,需向管理员申请权限才能使用此功能"),e.abrupt("return");case 3:if(null==c||!c.is_anonymous){e.next=6;break}return A(),e.abrupt("return");case 6:n=$.getFieldsValue(),"{}"===JSON.stringify(n)||""===n.hidden_comment&&""===n.comment?x(!0):O();case 8:case"end":return e.stop()}}),e)}))),onCancel:function(){s({type:"shixunHomeworks/setActionTabs",payload:{}})},children:[(0,z.jsxs)(w.Z,{className:V,children:[(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"姓名"}),(0,z.jsx)("span",{className:G,children:null==c?void 0:c.username})]}),(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"学号"}),(0,z.jsx)("span",{className:G,children:(null==c?void 0:c.student_id)||"--"})]}),!(null!=c&&c.is_anonymous)&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"班级"}),(0,z.jsx)("span",{className:G,children:(null==c?void 0:c.group_name)||"--"})]}),(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"迟交扣分"}),(0,z.jsx)("span",{className:Y,children:(null==c||null===(t=c.stage_list[0])||void 0===t?void 0:t.late_penalty)||"--"})]}),(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"缺评扣分"}),(0,z.jsx)("span",{className:Y,children:(null==c||null===(n=c.stage_list[0])||void 0===n?void 0:n.absence_penalty)||"--"})]}),(0,z.jsxs)(k.Z,{children:[(0,z.jsx)("span",{className:"".concat(D," ").concat(J),children:"总成绩"}),(0,z.jsx)("span",{className:Y,children:(null==c?void 0:c.stage_list[0].score)||"--"})]})]})]}),(0,z.jsxs)(W.Z,{form:$,onChange:function(){f&&x(!1)},children:[(0,z.jsx)("div",{className:"".concat(U," ").concat(J),children:null!=c&&c.is_anonymous?"评语":"学生和课堂老师可见"}),(0,z.jsx)(W.Z.Item,{name:"comment",children:(0,z.jsx)(F.Z.TextArea,{placeholder:"请输入评阅内容",rows:3})}),!(null!=c&&c.is_anonymous)&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)("div",{className:"".concat(U," ").concat(J),children:"仅课堂老师可见"}),(0,z.jsx)(W.Z.Item,{name:"hidden_comment",children:(0,z.jsx)(F.Z.TextArea,{placeholder:"请输入评阅内容",rows:3})})," "]})]}),f&&(0,z.jsx)("p",{className:"c-red",children:"评阅内容至少有一个不为空"}),(0,z.jsx)("div",{className:X,children:"关卡成绩"}),(0,z.jsx)(I.Z,{className:q,dataSource:null==c?void 0:c.stage_list,rowKey:"challenge_id",pagination:!1,columns:H})]})})),K={},ee=(0,_.connect)((function(e){return{shixunHomeworks:e.shixunHomeworks}}))((function(e){var t,n=e.shixunHomeworks,a=e.dispatch,s=e.gethomeworkreport,o=e.homeWorkReport;n.shixunWorkReport;console.log(o,"homeWorkReport");var l=(0,_.useParams)(),c=(0,m.useState)(!1),u=d()(c,2),p=u[0],h=u[1],f=W.Z.useForm(),x=d()(f,1)[0],v=(null==n||null===(t=n.actionTabs)||void 0===t||null===(t=t.selectArrs)||void 0===t?void 0:t.data)||{},k=v.user_name,b=v.score,Z=v.comment_time,S=v.content,N=v.score_id,I=v.user_id,P=function(){var e=i()(r()().mark((function e(){var t;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,x.validateFields();case 2:return h(!0),t=x.getFieldsValue(),e.next=6,(0,g.ZP)("/api/student_works/".concat(l.homeworkId,"/appeal_anonymous_score.json"),{method:"post",body:{comment:t.comment,score_id:N,userId:I}});case 6:0===e.sent.status&&(j.ZP.success("操作成功"),a({type:"shixunHomeworks/setActionTabs",payload:{}}),s()),h(!1);case 9:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,z.jsxs)(y.Z,{centered:!0,width:600,title:"匿评申诉",afterClose:function(){x.resetFields()},confirmLoading:p,open:"匿评申诉"===n.actionTabs.key,okText:"确定",cancelText:"取消",onOk:P,onCancel:function(){a({type:"shixunHomeworks/setActionTabs",payload:{}})},children:[(0,z.jsxs)("div",{className:"p20",style:{background:"#F7F8F9",padding:15,marginBottom:20},children:[(0,z.jsxs)(w.Z,{justify:"space-between",className:K.info,children:[(0,z.jsxs)("span",{children:[(0,z.jsx)("span",{className:"c-grey-666",children:k}),(0,z.jsx)("span",{className:"c-grey-333 ml5",children:"调分为"}),(0,z.jsxs)("span",{className:"c-orange ml5",children:[b,"分"]})]}),(0,z.jsx)("span",{className:"c-grey-333",children:Z})]}),(0,z.jsx)("div",{className:"c-grey-333 mt5",children:S})]}),(0,z.jsx)(W.Z,{form:x,className:"mt15",layout:"vertical",children:(0,z.jsx)(W.Z.Item,{name:"comment",label:"申诉",rules:[{required:!0,message:"请输入申诉原因"}],children:(0,z.jsx)(F.Z.TextArea,{placeholder:"请输入申诉原因",rows:3})})})]})})),te=n(21309),ne={flex_box_center:"flex_box_center___uz0LL",flex_space_between:"flex_space_between___kuKI5",flex_box_vertical_center:"flex_box_vertical_center___VzPH1",flex_box_center_end:"flex_box_center_end___Tyr1U",flex_box_column:"flex_box_column___qsgVa",title:"title___SFyGM",export:"export___ezPhH",title1_right:"title1_right___tMOJn",userPic:"userPic___mW4Rr",userInfo:"userInfo___vYvSZ",listItem:"listItem___gJf4Z",rightInfo:"rightInfo___PRYRt",shixunTitle:"shixunTitle___STlvE",shixunWrp:"shixunWrp___knhTt",footerBar:"footerBar___R5IlQ",footerBarStatic:"footerBarStatic___M4EQj",exitComment:"exitComment___NoCI4",nextComment:"nextComment___sFj7z",modal:"modal___TwQdH",tag:"tag___RErUu"},ae=n(49519),re=n(27549),se=n(44425),ie=n.n(se),oe=["shixunHomeworks","classroomList","globalSetting","loading","user","dispatch"],le=(0,_.connect)((function(e){var t=e.shixunHomeworks,n=e.classroomList,a=e.loading,r=e.globalSetting,s=e.user;return{shixunHomeworks:t,classroomList:n,globalSetting:r,loading:a.effects,user:s}}))((function(e){var t,n,a,s,o=e.shixunHomeworks,c=e.classroomList,u=(e.globalSetting,e.loading,e.user),h=e.dispatch,x=(p()(e,oe),(0,m.useState)(l()({},(0,_.useParams)()))),W=d()(x,2),B=W[0],F=W[1],J=(0,_.useParams)(),V=(0,_.useLocation)(),D=(0,m.useState)([]),G=(d()(D,0),(0,m.useState)({last:!1})),Y=d()(G,2),U=Y[0],X=Y[1],q=(0,m.useState)({last:!1}),K=d()(q,2),se=K[0],le=K[1],ce=(0,m.useRef)(),de=(0,m.useRef)(),ue=(0,m.useState)(!1),pe=d()(ue,2),me=pe[0],he=pe[1],fe=(0,m.useState)(!1),xe=d()(fe,2),ve=xe[0],ge=xe[1],_e=(0,m.useState)(!1),ye=d()(_e,2),je=(ye[0],ye[1]),we=(0,m.useState)(),ke=d()(we,2),be=ke[0],Ze=ke[1],Se=(0,m.useState)(),Ne=d()(Se,2),Ie=Ne[0],Pe=Ne[1],Ce=(0,m.useState)(!0),Ee=d()(Ce,2),Te=Ee[0],$e=Ee[1],Oe=(0,m.useState)(),Ae=d()(Oe,2),He=(Ae[0],Ae[1]),Re=(0,R.GJ)(),Le=(0,m.useState)(new(v())),We=d()(Le,2),Be=We[0],Fe=We[1],ze=(0,m.useState)(0),Me=d()(ze,2),Je=(Me[0],Me[1],(0,m.useState)([])),Ve=d()(Je,2),De=Ve[0],Ge=Ve[1],Ye=(0,m.useState)(!1),Ue=d()(Ye,2),Xe=Ue[0],qe=Ue[1],Qe=(0,m.useState)(!1),Ke=d()(Qe,2),et=Ke[0],tt=Ke[1],nt=(0,m.useState)(""),at=d()(nt,2),rt=at[0],st=at[1],it=(0,m.useState)(!1),ot=d()(it,2),lt=(ot[0],ot[1]),ct=(0,m.useState)(!0),dt=d()(ct,2),ut=(dt[0],dt[1]),pt=(0,m.useState)(0),mt=d()(pt,2),ht=(mt[0],mt[1]),ft=function(){var e=i()(r()().mark((function e(){return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(u.userInfo.is_teacher||u.userInfo.admin)&&(lt(!0),ut(!1));case 1:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();(0,m.useEffect)((function(){ft(),console.log("打印的------",be),console.log(o),st(null==be?void 0:be.repeat_minus_score)}),[be,u]),(0,m.useEffect)((function(){console.log("触发这",null==be?void 0:be.work_score),ht(null==be?void 0:be.work_score)}),[null==be?void 0:be.work_score,rt]),(0,m.useEffect)((function(){return h({type:"globalSetting/footerToggle",payload:!1}),function(){h({type:"globalSetting/footerToggle",payload:!0})}}),[]),(0,m.useEffect)((function(){if(be){var e,t=[];null==be||null===(e=be.target_test_sets)||void 0===e||e.map((function(e,n){var a;null==e||null===(a=e.targets)||void 0===a||a.map((function(a,r){var s;a.name=null==e?void 0:e.name,a.total_target_score=null==e?void 0:e.total_target_score,a.actual_target_score=null==e?void 0:e.actual_target_score,a.rowSpan=0===r?null==e||null===(s=e.targets)||void 0===s?void 0:s.length:0,a.order=n+1,t.push(a)}))})),He(t),h({type:"classroomList/getAssistantPermissions",payload:{course_id:B.coursesId}})}}),[be]),(0,m.useEffect)((function(){"导出实训报告"===o.actionTabs.key&&De.length>0&&null!=be&&be.course_name&&_t("all")}),[null==be?void 0:be.course_name]),(0,m.useEffect)((function(){console.log(J),F(l()({},J))}),[V.pathname]);var xt=function(){document.body.scrollIntoView()};function vt(){return(vt=i()(r()().mark((function e(){var t,n,a,s,i,o,c;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=JSON.parse(localStorage.all_student_works_param||"{}"),e.next=3,h({type:"shixunHomeworks/getAllStudentWorks",payload:l()(l()({},B),a)});case 3:s=e.sent,Ge(s.all_student_works),(i=null===(t=s.all_student_works)||void 0===t?void 0:t.map((function(e){return String(e.student_work_id)})).indexOf(B.homeworkId))===(null===(n=s.all_student_works)||void 0===n?void 0:n.length)-1?X({last:!0}):X(null===(o=s.all_student_works)||void 0===o?void 0:o[i+1]),le(0===i?{last:!0}:null===(c=s.all_student_works)||void 0===c?void 0:c[i-1]);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var gt=function(){document.querySelectorAll("canvas").forEach((function(e){(!e.clientWidth||!e.clientHeight)&&e.remove()}))},_t=function(){var e=i()(r()().mark((function e(t){var n,a,s,o,l,c,d,u,p,m,h,f;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d=function(){return(d=i()(r()().mark((function e(){var t,a,s,i,l;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,g.ZP)("/api/student_works/".concat(De[n].student_work_id,"/jupyter_work_report.json"),{method:"get"});case 2:if(0!==(null==(t=e.sent)?void 0:t.status)){e.next=14;break}if(Ze(t.data),null==t||null===(a=t.data)||void 0===a||null===(a=a.shixun_detail[0])||void 0===a||!a.myshixun_identifier){e.next=13;break}return $e(!0),e.next=9,(0,g.ZP)("/api/jupyters/preview_tpi.json",{method:"get",params:{identifier:null==t||null===(s=t.data)||void 0===s||null===(s=s.shixun_detail[0])||void 0===s?void 0:s.myshixun_identifier,student_work_id:null==t||null===(i=t.data)||void 0===i?void 0:i.work_id}});case 9:0===(l=e.sent).status&&(Pe(l.html_content),$e(!1),bt(),o()),e.next=14;break;case 13:o();case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)},c=function(){return d.apply(this,arguments)},l=function(){return l=i()(r()().mark((function e(){return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:xt(),n++,setTimeout(i()(r()().mark((function e(){var t,o,l,d,u,p;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:gt(),o=Be.folder("".concat(null==be||null===(t=be.stage_list[0])||void 0===t?void 0:t.shixun_name)),l=document.querySelector("#export-all").children,d=ie()(),u=r()().mark((function e(t){return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d.set(s).from(l[t]).toContainer().toCanvas().toPdf().get("pdf").then(function(){var e=i()(r()().mark((function e(n){return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t]*src=['"]([^'"]+)[^>]*>/gi))||void 0===t||t.map((function(e){var t=document.createElement("script");t.src=/