UNPKG

dashjs

Version:

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.

1 lines 117 kB
var e={3282:function(e){function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",s=0,i=-1,o=0,a=0;a<=e.length;++a){if(a<e.length)n=e.charCodeAt(a);else{if(47===n)break;n=47}if(47===n){if(i===a-1||1===o);else if(i!==a-1&&2===o){if(r.length<2||2!==s||46!==r.charCodeAt(r.length-1)||46!==r.charCodeAt(r.length-2))if(r.length>2){var u=r.lastIndexOf("/");if(u!==r.length-1){-1===u?(r="",s=0):s=(r=r.slice(0,u)).length-1-r.lastIndexOf("/"),i=a,o=0;continue}}else if(2===r.length||1===r.length){r="",s=0,i=a,o=0;continue}t&&(r.length>0?r+="/..":r="..",s=2)}else r.length>0?r+="/"+e.slice(i+1,a):r=e.slice(i+1,a),s=a-i-1;i=a,o=0}else 46===n&&-1!==o?++o:o=-1}return r}var r={resolve:function(){for(var e,r="",s=!1,i=arguments.length-1;i>=-1&&!s;i--){var o;i>=0?o=arguments[i]:(void 0===e&&(e=process.cwd()),o=e),t(o),0!==o.length&&(r=o+"/"+r,s=47===o.charCodeAt(0))}return r=n(r,!s),s?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),s=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&s&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n<arguments.length;++n){var s=arguments[n];t(s),s.length>0&&(void 0===e?e=s:e+="/"+s)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var s=1;s<e.length&&47===e.charCodeAt(s);++s);for(var i=e.length,o=i-s,a=1;a<n.length&&47===n.charCodeAt(a);++a);for(var u=n.length-a,c=o<u?o:u,E=-1,l=0;l<=c;++l){if(l===c){if(u>c){if(47===n.charCodeAt(a+l))return n.slice(a+l+1);if(0===l)return n.slice(a+l)}else o>c&&(47===e.charCodeAt(s+l)?E=l:0===l&&(E=0));break}var f=e.charCodeAt(s+l);if(f!==n.charCodeAt(a+l))break;47===f&&(E=l)}var d="";for(l=s+E+1;l<=i;++l)l!==i&&47!==e.charCodeAt(l)||(0===d.length?d+="..":d+="/..");return d.length>0?d+n.slice(a+E):(a+=E,47===n.charCodeAt(a)&&++a,n.slice(a))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,s=-1,i=!0,o=e.length-1;o>=1;--o)if(47===(n=e.charCodeAt(o))){if(!i){s=o;break}}else i=!1;return-1===s?r?"/":".":r&&1===s?"//":e.slice(0,s)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,s=0,i=-1,o=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var a=n.length-1,u=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!o){s=r+1;break}}else-1===u&&(o=!1,u=r+1),a>=0&&(c===n.charCodeAt(a)?-1==--a&&(i=r):(a=-1,i=u))}return s===i?i=u:-1===i&&(i=e.length),e.slice(s,i)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!o){s=r+1;break}}else-1===i&&(o=!1,i=r+1);return-1===i?"":e.slice(s,i)},extname:function(e){t(e);for(var n=-1,r=0,s=-1,i=!0,o=0,a=e.length-1;a>=0;--a){var u=e.charCodeAt(a);if(47!==u)-1===s&&(i=!1,s=a+1),46===u?-1===n?n=a:1!==o&&(o=1):-1!==n&&(o=-1);else if(!i){r=a+1;break}}return-1===n||-1===s||0===o||1===o&&n===s-1&&n===r+1?"":e.slice(n,s)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,s=e.charCodeAt(0),i=47===s;i?(n.root="/",r=1):r=0;for(var o=-1,a=0,u=-1,c=!0,E=e.length-1,l=0;E>=r;--E)if(47!==(s=e.charCodeAt(E)))-1===u&&(c=!1,u=E+1),46===s?-1===o?o=E:1!==l&&(l=1):-1!==o&&(l=-1);else if(!c){a=E+1;break}return-1===o||-1===u||0===l||1===l&&o===u-1&&o===a+1?-1!==u&&(n.base=n.name=0===a&&i?e.slice(1,u):e.slice(a,u)):(0===a&&i?(n.name=e.slice(1,o),n.base=e.slice(1,u)):(n.name=e.slice(a,o),n.base=e.slice(a,u)),n.ext=e.slice(o,u)),a>0?n.dir=e.slice(0,a-1):i&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r},8735:function(e,t,n){n.r(t),n.d(t,{CMCD_DEFAULT_TIME_INTERVAL:function(){return he},CMCD_EVENT_AD_BREAK_END:function(){return D},CMCD_EVENT_AD_BREAK_START:function(){return C},CMCD_EVENT_AD_END:function(){return A},CMCD_EVENT_AD_START:function(){return R},CMCD_EVENT_BACKGROUNDED_MODE:function(){return y},CMCD_EVENT_BITRATE_CHANGE:function(){return f},CMCD_EVENT_CONTENT_ID:function(){return _},CMCD_EVENT_CUSTOM_EVENT:function(){return N},CMCD_EVENT_ERROR:function(){return S},CMCD_EVENT_KEYS:function(){return P},CMCD_EVENT_MODE:function(){return v},CMCD_EVENT_MUTE:function(){return h},CMCD_EVENT_PLAYER_COLLAPSE:function(){return p},CMCD_EVENT_PLAYER_EXPAND:function(){return m},CMCD_EVENT_PLAY_STATE:function(){return d},CMCD_EVENT_RESPONSE_RECEIVED:function(){return I},CMCD_EVENT_SKIP:function(){return M},CMCD_EVENT_TIME_INTERVAL:function(){return g},CMCD_EVENT_UNMUTE:function(){return T},CMCD_FORMATTER_MAP:function(){return E},CMCD_HEADERS:function(){return Ce},CMCD_HEADER_FIELDS:function(){return ie},CMCD_HEADER_MAP:function(){return oe},CMCD_JSON:function(){return De},CMCD_KEYS:function(){return Te},CMCD_MIME_TYPE:function(){return me},CMCD_OBJECT:function(){return ee},CMCD_PARAM:function(){return le},CMCD_QUERY:function(){return Ae},CMCD_REQUEST:function(){return te},CMCD_REQUEST_KEYS:function(){return U},CMCD_REQUEST_MODE:function(){return L},CMCD_RESPONSE_KEYS:function(){return F},CMCD_SESSION:function(){return ne},CMCD_STATUS:function(){return re},CMCD_V1:function(){return pe},CMCD_V1_KEYS:function(){return q},CMCD_V2:function(){return l},CMCD_VALIDATION_SEVERITY_ERROR:function(){return Pe},CMCD_VALIDATION_SEVERITY_WARNING:function(){return Ue},CmcdEventType:function(){return O},CmcdHeaderField:function(){return se},CmcdObjectType:function(){return Ie},CmcdPlayerState:function(){return Re},CmcdReporter:function(){return ve},CmcdReportingMode:function(){return b},CmcdStreamType:function(){return be},CmcdStreamingFormat:function(){return Le},CmcdTransmissionMode:function(){return Me},CmcdValidationSeverity:function(){return we},appendCmcdHeaders:function(){return Ee},appendCmcdQuery:function(){return ye},decodeCmcd:function(){return ke},encodeCmcd:function(){return de},fromCmcdHeaders:function(){return He},fromCmcdQuery:function(){return Ge},fromCmcdUrl:function(){return xe},groupCmcdHeaders:function(){return ae},isCmcdCustomKey:function(){return K},isCmcdEventKey:function(){return B},isCmcdRequestKey:function(){return k},isCmcdResponseReceivedKey:function(){return G},isCmcdV1Data:function(){return Be},isCmcdV1Key:function(){return j},isCmcdV2Data:function(){return Ve},prepareCmcdData:function(){return J},toCmcdHeaders:function(){return ce},toCmcdQuery:function(){return ge},toCmcdUrl:function(){return Se},toCmcdValue:function(){return qe},validateCmcd:function(){return _t},validateCmcdEventReport:function(){return ht},validateCmcdEvents:function(){return yt},validateCmcdHeaders:function(){return Tt},validateCmcdKeys:function(){return Qe},validateCmcdRequest:function(){return mt},validateCmcdStructure:function(){return Xe},validateCmcdValues:function(){return gt}});var r=n(2877),s=n(9259);const i=e=>e instanceof r.SfItem?new r.SfItem(Math.round(e.value),e.params):Math.round(e),o=e=>Array.isArray(e)?e.map(i):i(e),a=(e,t)=>Array.isArray(e)?e.map((e=>a(e,t))):e instanceof r.SfItem&&"string"==typeof e.value?new r.SfItem(a(e.value,t),e.params):(t.baseUrl&&(e=(0,s.urlToRelativePath)(e,(0,s.getBaseUrl)(t.baseUrl))),1===t.version?encodeURIComponent(e):e),u=e=>e instanceof r.SfItem?new r.SfItem(100*Math.round(e.value/100),e.params):100*Math.round(e/100),c=e=>Array.isArray(e)?e.map(u):u(e),E={br:o,d:o,bl:c,dl:c,mtp:c,nor:(e,t)=>{let n=e;return t.version>=2&&(e instanceof r.SfItem&&"string"==typeof e.value?n=new r.SfItem([e]):"string"==typeof e&&(n=[e])),a(n,t)},rtp:c,tb:o},l=2,f="bc",d="ps",S="e",g="t",_="c",y="b",h="m",T="um",m="pe",p="pc",I="rr",R="as",A="ae",C="abs",D="abe",M="sk",N="ce",O={BITRATE_CHANGE:f,PLAY_STATE:d,ERROR:S,TIME_INTERVAL:g,CONTENT_ID:_,BACKGROUNDED_MODE:y,MUTE:h,UNMUTE:T,PLAYER_EXPAND:m,PLAYER_COLLAPSE:p,RESPONSE_RECEIVED:I,AD_START:R,AD_END:A,AD_BREAK_START:C,AD_BREAK_END:D,SKIP:M,CUSTOM_EVENT:N},v="event",L="request",b={REQUEST:L,EVENT:v},P=["cen","e","h","ts"],U=["ab","bg","bl","br","bs","bsa","bsd","bsda","cdn","cid","cs","d","dfa","dl","ec","lab","lb","ltc","msd","mtp","nor","nr","ot","pb","pr","pt","rtp","sf","sid","sn","st","sta","su","tab","tb","tbl","tpb","v"],w=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function K(e){return w.test(e)}const Y=new Set(U);function k(e){return Y.has(e)||K(e)}const F=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"],H=new Set(F);function G(e){return H.has(e)}const x=new Set(P);function B(e){return k(e)||G(e)||x.has(e)}const V=new Set(["ab","bl","br","bsa","bsd","bsda","lab","lb","mtp","pb","tab","tb","tbl","tpb"]),q=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"],W=new Set(q);function j(e){return W.has(e)||K(e)}const $=new Set(["ot","sf","st","e","sta"]);function z(e){return $.has(e)}function Q(e){return"number"==typeof e?Number.isFinite(e):null!=e&&""!==e&&!1!==e}const X={[v]:B,[L]:k};function Z(e,t){if(Array.isArray(e)){let n;return t&&(n=e.find((e=>e.params?.ot===t))),n||(n=e[0]),Z(n)}return e instanceof r.SfItem?e.value:e}function J(e,t={}){const n={};if(null==e||"object"!=typeof e)return n;const s=t.version||e.v||l,i=t.reportingMode||L,o=1===s?function(e){const t={};for(const[n,s]of Object.entries(e))if(null!=s)if("nor"===n){const e=(Array.isArray(s)?s:[s])[0];e instanceof r.SfItem?(t.nor=e.value,e.params?.r&&(t.nrr=e.params.r)):t.nor=e}else V.has(n)?t[n]=Z(s,e.ot):t[n]=s;else t[n]=s;return t}(e):e,a=1===s?j:X[i];let u=Object.keys(o).filter(a);o.e&&o.e!==I&&(u=u.filter((e=>!G(e))));const c=t.filter;"function"==typeof c&&(u=u.filter(c));const f=i===v;if(f){const e=o.e;u.includes("e")||null==e||u.push("e"),u.includes("ts")||u.push("ts"),u.includes("cen")||null==o.cen||e!==N||u.push("cen")}if(0===u.length)return n;s>1&&!u.includes("v")&&u.push("v");const d={version:s,reportingMode:i,baseUrl:t.baseUrl};u.sort();for(const e of u){let i=o[e];const a=t.formatters?.[e]??E[e];if("function"==typeof a&&(i=a(i,d)),"v"===e){if(1===s)continue;i=s}"pr"===e&&1===i||(f&&"ts"===e&&!Number.isFinite(i)&&(i=Date.now()),Q(i)&&(z(e)&&"string"==typeof i&&(i=new r.SfToken(i)),n[e]=i))}return n}const ee="CMCD-Object",te="CMCD-Request",ne="CMCD-Session",re="CMCD-Status",se={OBJECT:ee,REQUEST:te,SESSION:ne,STATUS:re},ie=[ee,te,ne,re],oe={ab:ee,br:ee,d:ee,lab:ee,lb:ee,ot:ee,tab:ee,tb:ee,tpb:ee,bl:te,cs:te,dfa:te,dl:te,ltc:te,mtp:te,nor:te,nrr:te,pb:te,sn:te,sta:te,su:te,tbl:te,cid:ne,msd:ne,sf:ne,sid:ne,st:ne,v:ne,bg:re,bs:re,bsa:re,bsd:re,bsda:re,cdn:re,ec:re,nr:re,pr:re,pt:re,rtp:re};function ae(e,t){const n={};if(!e)return n;const r=Object.keys(e),s=t?(i=t,Object.keys(i).reduce(((e,t)=>(i[t]?.forEach((n=>e[n]=t)),e)),{})):{};var i;for(const t of r){const r=oe[t]||s[t]||se.REQUEST;(n[r]??={})[t]=e[t]}return n}function ue(e,t){const n={},s=ae(e,t);for(const[e,t]of Object.entries(s)){const s=(0,r.encodeSfDict)(t,{whitespace:!1});s&&(n[e]=s)}return n}function ce(e,t={}){return e?ue(J(e,t),t?.customHeaderMap):{}}function Ee(e,t,n){return Object.assign(e,ce(t,n))}const le="CMCD";function fe(e){return(0,r.encodeSfDict)(e,{whitespace:!1})}function de(e,t={}){return e?fe(J(e,t)):""}function Se(e,t={}){if(!e)return"";const n=de(e,t);return encodeURIComponent(n)}function ge(e,t={}){return e?`${le}=${Se(e,t)}`:""}const _e=/CMCD=[^&#]+/;function ye(e,t,n){const r=ge(t,n);return r?_e.test(e)?e.replace(_e,r):`${e}${e.includes("?")?"&":"?"}${r}`:e}const he=30,Te=[...q,...U,...F,...P].filter(((e,t,n)=>n.indexOf(e)===t)),me="application/cmcd",pe=1,Ie={MANIFEST:"m",AUDIO:"a",VIDEO:"v",MUXED:"av",INIT:"i",CAPTION:"c",TIMED_TEXT:"tt",KEY:"k",OTHER:"o"},Re={STARTING:"s",PLAYING:"p",SEEKING:"k",REBUFFERING:"r",PAUSED:"a",WAITING:"w",ENDED:"e",FATAL_ERROR:"f",QUIT:"q",PRELOADING:"d"},Ae="query",Ce="headers",De="json",Me={JSON:De,QUERY:Ae,HEADERS:Ce};function Ne(e,t,n){const r=new Set(t.enabledKeys??[]);return{version:t.version||l,reportingMode:e,filter:e=>r.has(e),baseUrl:n}}function Oe(e){const{url:t,...n}=e;return fetch(t,n)}var ve=class{constructor(e,t=Oe){this.timeOrigin=performance.timeOrigin||performance.timing?.fetchStart||Date.now()-performance.now(),this.data={},this.msd=NaN,this.eventTargets=new Map,this.requestTarget={sn:0,msdSent:!1},this.config=function(e){const{version:t=l,eventTargets:n=[],sid:r=(0,s.uuid)(),transmissionMode:i=Ae,...o}=e;return{...o,version:t,transmissionMode:i,sid:r,eventTargets:n.reduce(((e,t)=>(t?.url&&t.events?.length&&e.push({version:t.version||l,enabledKeys:t.enabledKeys?.slice()||[],url:t.url,events:t.events.slice(),interval:t.interval??he,batchSize:t.batchSize||1}),e)),[])}}(e),this.data={cid:this.config.cid,sid:this.config.sid,v:this.config.version},this.requester=t;for(const e of this.config.eventTargets)this.eventTargets.set(e,{intervalId:void 0,sn:0,msdSent:!1,queue:[]})}start(){this.eventTargets.forEach(((e,t)=>{if(this.disarmInterval(e),0===t.interval||!t.events.includes(O.TIME_INTERVAL))return;const n=()=>{this.recordTargetEvent(e,t,g),this.processEventTargets()};e.intervalId=setInterval(n,1e3*t.interval),n()}))}stop(e=!1){e&&this.flush(),this.eventTargets.forEach((e=>{this.disarmInterval(e)}))}flush(){this.processEventTargets(!0)}update(e){e.sid&&e.sid!==this.data.sid&&this.resetSession(),e.msd&&!isNaN(e.msd)&&(this.msd=e.msd),this.data={...this.data,...e,msd:void 0}}recordEvent(e,t={}){this.eventTargets.forEach(((n,r)=>{this.recordTargetEvent(n,r,e,t)})),this.processEventTargets()}recordTargetEvent(e,t,n,r={}){if(!t.events.includes(n))return;const s={...this.data,...r,e:n,ts:r.ts??Date.now(),sn:e.sn++};isNaN(this.msd)||e.msdSent||(s.msd=this.msd,e.msdSent=!0),e.queue.push(s)}recordResponseReceived(e,t={}){const{request:n}=e,r=t.url??n?.url;if(!r)return;const s=new URL(r);s.searchParams.delete(le);const i={url:s.toString(),rc:e.status},o=e.resourceTiming;o&&(null!=o.startTime&&(i.ts=Math.round(this.timeOrigin+o.startTime),null!=o.responseStart&&(i.ttfb=Math.round(o.responseStart-o.startTime))),null!=o.duration&&(i.ttlb=Math.round(o.duration)));const a=n.customData?.cmcd??{};this.recordEvent(I,{...a,...i,...t})}applyRequestReport(e){return this.createRequestReport(e)??e}isRequestReportingEnabled(){return!!this.config.enabledKeys?.length}createRequestReport(e,t){const{customData:n={},headers:r={},...s}=e,i={...s,headers:{...r},customData:{...n,cmcd:{}}};if(!this.config.enabledKeys?.length||!i.url)return i;const o=new URL(i.url),a={...this.data,...t,sn:this.requestTarget.sn++},u=Ne(L,this.config,i.url);isNaN(this.msd)||this.requestTarget.msdSent||(a.msd=this.msd,this.requestTarget.msdSent=!0);const c=i.customData.cmcd=J(a,u);switch(this.config.transmissionMode){case Ae:const e=fe(c);e&&(o.searchParams.set(le,e),i.url=o.toString());break;case Ce:Object.assign(i.headers,ue(c,u.customHeaderMap))}return i}processEventTargets(e=!1){let t=!1;this.eventTargets.forEach(((n,r)=>{const{queue:s}=n;if(!s.length)return;if(s.length<r.batchSize&&!e)return;const i=e?s.length:r.batchSize,o=s.splice(0,i);this.sendEventReport(r,o).catch((()=>{n.queue.unshift(...o)})),t||=s.length>0})),t&&this.processEventTargets()}async sendEventReport(e,t){const n=Ne(v,e),{status:r}=await this.requester({url:e.url,method:"POST",headers:{"Content-Type":me},body:t.map((e=>de(e,n))).join("\n")+"\n"});if(410===r)this.disposeEventTarget(e);else if(429===r||r>499&&r<600)throw new Error(`Event report failed with status ${r}`)}disarmInterval(e){clearInterval(e.intervalId),e.intervalId=void 0}disposeEventTarget(e){const t=this.eventTargets.get(e);t&&(this.disarmInterval(t),this.eventTargets.delete(e))}resetSession(){this.eventTargets.forEach((e=>e.sn=0)),this.requestTarget.sn=0}};const Le={DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"},be={VOD:"v",LIVE:"l",LOW_LATENCY:"ll"},Pe="error",Ue="warning",we={ERROR:Pe,WARNING:Ue};function Ke(e){if(e.v===l)return e;const t={};for(const[n,r]of Object.entries(e))null!=r?V.has(n)&&!Array.isArray(r)?t[n]=[r]:t[n]="nor"===n&&"string"==typeof r?[r]:r:t[n]=r;return t}function Ye(e){return Array.isArray(e)?e.map(Ye):"symbol"==typeof e?(0,r.symbolToStr)(e):e instanceof r.SfItem&&!e.params?Ye(e.value):e}function ke(e,t){if(!e)return{};const n=(0,r.decodeSfDict)(e),s={};for(const[e,t]of Object.entries(n))s[e]=Ye(t.value);return t?.convertToLatest?Ke(s):s}function Fe(e){return e instanceof Headers?e:new Headers(e)}function He(e,t){const n=Fe(e),r={};for(const e of ie){const t=n.get(e);t&&Object.assign(r,ke(t))}return t?.convertToLatest?Ke(r):r}function Ge(e,t){return"string"==typeof e&&(e=new URLSearchParams(e)),ke(e.get(le)??"",t)}function xe(e,t){return ke(decodeURIComponent(e.replace(/^CMCD=/,"")),t)}function Be(e){return e.v!==l}function Ve(e){return e.v===l}function qe(e,t){return new r.SfItem(e,t)}function We(...e){const t=e.flatMap((e=>e.issues));return{valid:t.every((e=>e.severity!==Pe)),issues:t}}function je(e,t){if(1===t?.version||2===t?.version)return t.version;const n=e.v;return 1===n||2===n?n:pe}const $e=new Set(q),ze=new Set(Te);function Qe(e,t){const n=je(e,t),r=n===pe?$e:ze,s=[];for(const t of Object.keys(e))K(t)||r.has(t)||s.push({key:t,message:`Unknown CMCD key "${t}" for version ${n}.`,severity:Pe});return{valid:0===s.length,issues:s}}function Xe(e,t){const n=je(e,t),r=[];if(t?.reportingMode===L){for(const t of P)t in e&&r.push({key:t,message:`Event key "${t}" must not be present in request mode.`,severity:Pe});for(const t of F)t in e&&r.push({key:t,message:`Response key "${t}" must not be present in request mode.`,severity:Pe})}if(t?.reportingMode===v&&("e"in e||r.push({key:"e",message:'Event mode requires the "e" key to be present.',severity:Pe}),"ts"in e||r.push({key:"ts",message:'Event mode requires the "ts" key to be present.',severity:Pe})),"e"in e){if(e.e===N?"cen"in e||r.push({key:"cen",message:'Custom event (e="ce") requires the "cen" key to be present.',severity:Pe}):"cen"in e&&r.push({key:"cen",message:'The "cen" key must only be present when e="ce".',severity:Pe}),e.e===I)"url"in e||r.push({key:"url",message:'Response received event (e="rr") requires the "url" key to be present.',severity:Pe});else for(const t of F)t in e&&r.push({key:t,message:`Response key "${t}" must only be present when e="rr".`,severity:Pe});e.e!==d||"sta"in e||r.push({key:"sta",message:'Play state event (e="ps") requires the "sta" key to be present.',severity:Pe}),e.e!==S||"ec"in e||r.push({key:"ec",message:'Error event (e="e") requires the "ec" key to be present.',severity:Pe})}return"v"in e&&1!==e.v&&2!==e.v?r.push({key:"v",message:`Unsupported CMCD version "${String(e.v)}". Expected 1 or 2.`,severity:Pe}):n>1&&!("v"in e)?r.push({key:"v",message:'Version 2 payloads require the "v" key to be present.',severity:Pe}):n===pe&&"v"in e&&r.push({key:"v",message:'Version 1 payloads should omit the "v" key (v1 is the default).',severity:Ue}),{valid:r.every((e=>e.severity!==Pe)),issues:r}}const Ze="number[]",Je="string[]",et="integer",tt="number",nt="boolean",rt="string",st="token",it={ab:Ze,bl:Ze,br:Ze,bsa:Ze,bsd:Ze,bsda:Ze,lab:Ze,lb:Ze,mtp:Ze,pb:Ze,tab:Ze,tb:Ze,tbl:Ze,tpb:Ze,ec:Je,nor:Je,d:et,dfa:et,dl:et,ltc:et,msd:et,pt:et,rc:et,rtp:et,sn:et,ts:et,ttfb:et,ttfbb:et,ttlb:et,v:et,pr:tt,bg:nt,bs:nt,nr:nt,su:nt,cdn:rt,cen:rt,cid:rt,cmsdd:rt,cmsds:rt,cs:rt,h:rt,nrr:rt,sid:rt,smrt:rt,url:rt,e:st,ot:st,sf:st,st:st,sta:st},ot={bl:et,br:tt,mtp:et,tb:tt,nor:rt},at={sid:64,cid:128,cdn:128,h:128,cen:64},ut=64,ct={e:["bc","ps","e","t","c","b","m","um","pe","pc","rr","as","ae","abs","abe","sk","ce"],ot:["m","a","v","av","i","c","tt","k","o"],sf:["d","h","s","o"],st:["v","l","ll"],sta:["s","p","k","r","a","w","e","f","q","d"]},Et=new Set(["bl","dl","mtp","rtp","tbl"]),lt=new Set(["br","d","tb"]);function ft(e){return"number"==typeof e&&Number.isFinite(e)}function dt(e,t,n){if(Array.isArray(t))for(let s=0;s<t.length;s++){const i=t[s];i instanceof r.SfItem?ft(i.value)||n.push({key:e,message:`Key "${e}" array element [${s}] must be a finite number.`,severity:Pe}):ft(i)||n.push({key:e,message:`Key "${e}" array element [${s}] must be a finite number.`,severity:Pe})}else n.push({key:e,message:`Key "${e}" must be an array.`,severity:Pe})}function St(e,t,n){if(Array.isArray(t))for(let s=0;s<t.length;s++){const i=t[s];i instanceof r.SfItem?"string"!=typeof i.value&&n.push({key:e,message:`Key "${e}" array element [${s}] must be a string.`,severity:Pe}):"string"!=typeof i&&n.push({key:e,message:`Key "${e}" array element [${s}] must be a string.`,severity:Pe})}else n.push({key:e,message:`Key "${e}" must be an array.`,severity:Pe})}function gt(e,t){const n=je(e,t),r=[];for(const[t,s]of Object.entries(e)){if(K(t)){"string"!=typeof s?r.push({key:t,message:`Custom key "${t}" value must be a string or token.`,severity:Pe}):s.length>ut&&r.push({key:t,message:`Custom key "${t}" value exceeds maximum length of ${ut}.`,severity:Pe});continue}if("v"===t){1!==s&&2!==s&&r.push({key:t,message:'Key "v" must be 1 or 2.',severity:Pe});continue}let e=it[t];if(e)switch(n===pe&&t in ot&&(e=ot[t]),e){case et:ft(s)&&Number.isInteger(s)?Et.has(t)&&s%100!=0&&r.push({key:t,message:`Key "${t}" should be rounded to the nearest 100.`,severity:Ue}):r.push({key:t,message:`Key "${t}" must be a finite integer.`,severity:Pe});break;case tt:ft(s)?Et.has(t)&&s%100!=0?r.push({key:t,message:`Key "${t}" should be rounded to the nearest 100.`,severity:Ue}):lt.has(t)&&!Number.isInteger(s)&&r.push({key:t,message:`Key "${t}" should be rounded to an integer.`,severity:Ue}):r.push({key:t,message:`Key "${t}" must be a finite number.`,severity:Pe});break;case nt:"boolean"!=typeof s&&r.push({key:t,message:`Key "${t}" must be a boolean.`,severity:Pe});break;case rt:"string"!=typeof s?r.push({key:t,message:`Key "${t}" must be a string.`,severity:Pe}):t in at&&s.length>at[t]&&r.push({key:t,message:`Key "${t}" exceeds maximum length of ${at[t]}.`,severity:Pe});break;case st:{const e=ct[t];e&&!e.includes(s)&&r.push({key:t,message:`Key "${t}" has invalid token value "${String(s)}". Expected one of: ${e.join(", ")}.`,severity:Pe});break}case Ze:dt(t,s,r);break;case Je:St(t,s,r)}}return{valid:r.every((e=>e.severity!==Pe)),issues:r}}function _t(e,t){return We(Qe(e,t),gt(e,t),Xe(e,t))}function yt(e,t){const n={...t,reportingMode:v},r=e.split(/\r?\n/).filter((e=>e.length>0));if(0===r.length)return{valid:!1,issues:[{message:"Empty event mode payload. At least one event line is required.",severity:Pe}],data:[]};const s=[],i=[];for(let e=0;e<r.length;e++)try{const t=ke(r[e]);s.push(t),i.push(_t(t,n))}catch{s.push({}),i.push({valid:!1,issues:[{message:`Failed to decode event line ${e+1}: invalid structured field syntax.`,severity:Pe}]})}return{...We(...i),data:s}}function ht(e,t){const n=[];"POST"!==e.method&&n.push({message:`Invalid HTTP method '${e.method??"GET"}'. Event reports must use POST.`,severity:Pe});const r=e.headers?Fe(e.headers).get("Content-Type"):void 0;if(r){const e=r.split(";")[0].trim().toLowerCase();e!==me&&n.push({message:`Invalid Content-Type '${e}'. Event reports must use '${me}'.`,severity:Pe})}else n.push({message:`Missing Content-Type header. Event reports must use '${me}'.`,severity:Pe});const s=e.body;if(null==s)return n.push({message:"Missing request body. Event reports must include a body.",severity:Pe}),{valid:!1,issues:n,data:[]};if("string"!=typeof s)return n.push({message:"Request body must be a string.",severity:Pe}),{valid:!1,issues:n,data:[]};const i=yt(s,t);return{valid:0===n.length&&i.valid,issues:[...n,...i.issues],data:i.data}}function Tt(e,t){const n=Fe(e),r=[],s={};for(const e of ie){const t=n.get(e);if(!t)continue;let i;try{i=ke(t)}catch{r.push({key:e,message:`Failed to decode "${e}" header: invalid structured field syntax.`,severity:Pe});continue}s[e]=i;for(const t of Object.keys(i)){if(K(t))continue;const n=oe[t];n&&n!==e&&r.push({key:t,message:`Key "${t}" is in "${e}" but should be in "${n}".`,severity:Pe})}}const i={valid:0===r.length,issues:r},o=Object.assign({},...ie.map((e=>s[e])).filter(Boolean));return{...We(i,_t(o,{...t,reportingMode:L})),data:o}}function mt(e,t){const n=function(e){if(!e)return;const t=Fe(e),n={};let r=!1;for(const e of ie){const s=t.get(e);s&&(n[e]=s,r=!0)}return r?n:void 0}(e.headers);if(n)return Tt(n,t);const r=new URL(e.url).searchParams.get(le);if(!r)return{valid:!1,issues:[{message:"No CMCD data found in request headers or query parameters.",severity:Pe}],data:{}};let s;try{s=ke(r)}catch{return{valid:!1,issues:[{message:"Failed to decode CMCD query parameter: invalid structured field syntax.",severity:Pe}],data:{}}}return{..._t(s,{...t,reportingMode:L}),data:s}}},2877:function(e,t,n){n.r(t),n.d(t,{SfItem:function(){return s},SfToken:function(){return C},decodeSfDict:function(){return K},decodeSfItem:function(){return k},decodeSfList:function(){return G},encodeSfDict:function(){return re},encodeSfItem:function(){return se},encodeSfList:function(){return oe},parseBareItem:function(){return N},parseBoolean:function(){return f},parseByteSequence:function(){return S},parseDate:function(){return p},parseDict:function(){return w},parseError:function(){return u},parseInnerList:function(){return P},parseIntegerOrDecimal:function(){return m},parseItem:function(){return b},parseItemOrInnerList:function(){return U},parseKey:function(){return v},parseList:function(){return H},parseParameters:function(){return L},parseString:function(){return A},parseToken:function(){return M},serializeBareItem:function(){return X},serializeBoolean:function(){return B},serializeByteSequence:function(){return V},serializeDate:function(){return W},serializeDecimal:function(){return j},serializeDict:function(){return ne},serializeError:function(){return x},serializeInnerList:function(){return te},serializeInteger:function(){return q},serializeItem:function(){return ee},serializeKey:function(){return Z},serializeList:function(){return ie},serializeParams:function(){return J},serializeString:function(){return $},serializeToken:function(){return Q},symbolToStr:function(){return z}});var r=n(9259),s=class e{constructor(t,n){Array.isArray(t)&&(t=t.map((t=>t instanceof e?t:new e(t)))),this.value=t,this.params=n}};const i="Dict";function o(e,t){return{value:e,src:t}}function a(e,t,n,r){return new Error(`failed to ${e} "${s=t,Array.isArray(s)?JSON.stringify(s):s instanceof Map?"Map{}":s instanceof Set?"Set{}":"object"==typeof s?JSON.stringify(s):String(s)}" as ${n}`,{cause:r});var s}function u(e,t,n){return a("parse",e,t,n)}const c="Inner List",E="Bare Item",l="Boolean";function f(e){let t=0;if("?"!==e[t])throw u(e,l);if(t++,"1"===e[t])return o(!0,e.substring(++t));if("0"===e[t])return o(!1,e.substring(++t));throw u(e,l)}const d="Byte Sequence";function S(e){if(":"!==e[0])throw u(e,d);if(!1===(e=e.substring(1)).includes(":"))throw u(e,d);const t=/(^.*?)(:)/g,n=t.exec(e)[1];return e=e.substring(t.lastIndex),o((0,r.decodeBase64)(n),e)}const g="Date",_="Decimal",y="Integer",h=`${y} or ${_}`;function T(e){return e<-999999999999999||999999999999999<e}function m(e){let t,n=1,r="";const s=u(e,h);if("-"===e[0]&&(n=-1,e=e.substring(1)),e.length<=0)throw s;const i=/^(\d+)?/g,a=i.exec(e);if(0===a[0].length)throw s;if(r+=a[1],"."===(e=e.substring(i.lastIndex))[0]){if(r.length>12)throw s;const i=/^(\.\d+)?/g,o=i.exec(e);if(e=e.substring(i.lastIndex),0===o[0].length||o[1].length>4)throw s;if(r+=o[1],r.length>16)throw s;t=parseFloat(r)*n}else{if(r.length>15)throw s;if(t=parseInt(r)*n,T(t))throw u(r,h)}return o(t,e)}function p(e){let t=0;if("@"!==e[t])throw u(e,g);t++;const n=m(e.substring(t));if(!1===Number.isInteger(n.value))throw u(e,g);return o(new Date(1e3*n.value),n.src)}const I="String",R=/[\x00-\x1f\x7f]+/;function A(e){let t="",n=0;if('"'!==e[n])throw u(e,I);for(n++;e.length>n;){if("\\"===e[n]){if(e.length<=n+1)throw u(e,I);if(n++,'"'!==e[n]&&"\\"!==e[n])throw u(e,I);t+=e[n]}else{if('"'===e[n])return o(t,e.substring(++n));if(R.test(e[n]))throw u(e,I);t+=e[n]}n++}throw u(e,I)}var C=class{constructor(e){this.description=e}};const D="Token";function M(e,t){if(!1===/^[a-zA-Z*]$/.test(e[0]))throw u(e,D);const n=/^([!#$%&'*+\-.^_`|~\w:/]+)/g,r=n.exec(e)[1];return e=e.substring(n.lastIndex),o(!1===t?.useSymbol?new C(r):Symbol.for(r),e)}function N(e,t){const n=e[0];if('"'===n)return A(e);if(/^[-0-9]/.test(n))return m(e);if("?"===n)return f(e);if(":"===n)return S(e);if(/^[a-zA-Z*]/.test(n))return M(e,t);if("@"===n)return p(e);throw u(e,E)}const O="Key";function v(e){let t=0;if(!1===/^[a-z*]$/.test(e[t]))throw u(e,O);let n="";for(;e.length>t;){if(!1===/^[a-z0-9_\-.*]$/.test(e[t]))return o(n,e.substring(t));n+=e[t],t++}return o(n,e.substring(t))}function L(e,t){let n;for(;e.length>0&&";"===e[0];){const r=v(e=e.substring(1).trim()),s=r.value;let i=!0;if("="===(e=r.src)[0]){const n=N(e=e.substring(1),t);i=n.value,e=n.src}null==n&&(n={}),n[s]=i}return o(n,e)}function b(e,t){const n=N(e,t),r=L(e=n.src,t);return e=r.src,o(new s(n.value,r.value),e)}function P(e,t){if("("!==e[0])throw u(e,c);e=e.substring(1);const n=[];for(;e.length>0;){if(")"===(e=e.trim())[0]){const r=L(e=e.substring(1),t);return o(new s(n,r.value),r.src)}const r=b(e,t);if(n.push(r.value)," "!==(e=r.src)[0]&&")"!==e[0])throw u(e,c)}throw u(e,c)}function U(e,t){return"("===e[0]?P(e,t):b(e,t)}function w(e,t){const n={};for(;e.length>0;){let r;const a=v(e),c=a.value;if("="===(e=a.src)[0]){const n=U(e.substring(1),t);r=n.value,e=n.src}else{const n=L(e,t);r=new s(!0,n.value),e=n.src}if(n[c]=r,0===(e=e.trim()).length)return o(n,e);if(","!==e[0])throw u(e,i);if(0===(e=e.substring(1).trim()).length||","===e[0])throw u(e,i)}return o(n,e)}function K(e,t){try{const{src:n,value:r}=w(e.trim(),t);if(""!==n)throw u(n,i);return r}catch(t){throw u(e,i,t)}}const Y="Item";function k(e,t){try{const{src:n,value:r}=b(e.trim(),t);if(""!==n)throw u(n,Y);return r}catch(t){throw u(e,Y,t)}}const F="List";function H(e,t){const n=[];for(;e.length>0;){const r=U(e,t);if(n.push(r.value),0===(e=r.src.trim()).length)return o(n,e);if(","!==e[0])throw u(e,F);if(0===(e=e.substring(1).trim()).length||","===e[0])throw u(e,F)}return o(n,e)}function G(e,t){try{const{src:n,value:r}=H(e.trim(),t);if(""!==n)throw u(n,F);return r}catch(t){throw u(e,F,t)}}function x(e,t,n){return a("serialize",e,t,n)}function B(e){if("boolean"!=typeof e)throw x(e,l);return e?"?1":"?0"}function V(e){if(!1===ArrayBuffer.isView(e))throw x(e,d);return`:${(0,r.encodeBase64)(e)}:`}function q(e){if(T(e))throw x(e,y);return e.toString()}function W(e){return`@${q(e.getTime()/1e3)}`}function j(e){const t=(0,r.roundToEven)(e,3);if(Math.floor(Math.abs(t)).toString().length>12)throw x(e,_);const n=t.toString();return n.includes(".")?n:`${n}.0`}function $(e){if(R.test(e))throw x(e,I);return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function z(e){return e.description||e.toString().slice(7,-1)}function Q(e){const t=z(e);if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw x(t,D);return t}function X(e){switch(typeof e){case"number":if(!Number.isFinite(e))throw x(e,E);return Number.isInteger(e)?q(e):j(e);case"string":return $(e);case"symbol":return Q(e);case"boolean":return B(e);case"object":if(e instanceof Date)return W(e);if(e instanceof Uint8Array)return V(e);if(e instanceof C)return Q(e);default:throw x(e,E)}}function Z(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw x(e,O);return e}function J(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Z(e)}`:`;${Z(e)}=${X(t)}`)).join("")}function ee(e){return e instanceof s?`${X(e.value)}${J(e.params)}`:X(e)}function te(e){return`(${e.value.map(ee).join(" ")})${J(e.params)}`}function ne(e,t={whitespace:!0}){if("object"!=typeof e||null==e)throw x(e,i);const n=e instanceof Map?e.entries():Object.entries(e),r=t?.whitespace?" ":"";return Array.from(n).map((([e,t])=>{t instanceof s==0&&(t=new s(t));let n=Z(e);return!0===t.value?n+=J(t.params):(n+="=",Array.isArray(t.value)?n+=te(t):n+=ee(t)),n})).join(`,${r}`)}function re(e,t){return ne(e,t)}function se(e,t){return e instanceof s||(e=new s(e,t)),ee(e)}function ie(e,t={whitespace:!0}){if(!1===Array.isArray(e))throw x(e,F);const n=t?.whitespace?" ":"";return e.map((e=>{e instanceof s==0&&(e=new s(e));const t=e;return Array.isArray(t.value)?te(t):ee(t)})).join(`,${n}`)}function oe(e,t){return ie(e,t)}},9259:function(e,t,n){function r(e){return new Uint8Array(e).reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"")}function s(e){return r(e).replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/,"$1-$2-$3-$4-$5")}function i(e){return new Uint8Array([...atob(e)].map((e=>e.charCodeAt(0))))}n.r(t),n.d(t,{Encoding:function(){return y},RequestResponseType:function(){return p},UTF_16:function(){return l},UTF_16_BE:function(){return f},UTF_16_LE:function(){return d},UTF_8:function(){return S},arrayBufferToHex:function(){return r},arrayBufferToUuid:function(){return s},base64decode:function(){return o},base64encode:function(){return u},convertUint8ToUint16:function(){return c},decodeBase64:function(){return i},decodeText:function(){return g},encodeBase64:function(){return a},encodeText:function(){return _},getBandwidthBps:function(){return h},getBaseUrl:function(){return T},hexToArrayBuffer:function(){return m},isArrayBufferLike:function(){return E},roundToEven:function(){return I},stringToUint16:function(){return R},unescapeHtml:function(){return C},urlToRelativePath:function(){return D},uuid:function(){return M},uuidToArrayBuffer:function(){return N}});const o=i;function a(e){return btoa(String.fromCharCode(...e))}const u=a;function c(e){if(e.length%2!=0){const t=new Uint8Array(e.length+1);return t.set(e),new Uint16Array(t.buffer)}return new Uint16Array(e.buffer)}function E(e){return e instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer}const l="utf-16",f="utf-16be",d="utf-16le",S="utf-8";function g(e,t={}){let n;n=E(e)?new DataView(e):new DataView(e.buffer,e.byteOffset,e.byteLength);let r=0,{encoding:s}=t;if(!s){const e=n.getUint8(0),t=n.getUint8(1);239==e&&187==t&&191==n.getUint8(2)?(s=S,r=3):254==e&&255==t?(s=f,r=2):255==e&&254==t?(s=d,r=2):s=S}if("undefined"!=typeof TextDecoder)return new TextDecoder(s).decode(n);const{byteLength:i}=n,o=s!==f;let a,u="";for(;r<i;){switch(s){case S:if(a=n.getUint8(r),a<128)r++;else if(a>=194&&a<=223)if(r+1<i){const e=n.getUint8(r+1);e>=128&&e<=191?(a=(31&a)<<6|63&e,r+=2):r++}else r++;else if(a>=224&&a<=239)if(r+2<=i-1){const e=n.getUint8(r+1),t=n.getUint8(r+2);e>=128&&e<=191&&t>=128&&t<=191?(a=(15&a)<<12|(63&e)<<6|63&t,r+=3):r++}else r++;else if(a>=240&&a<=244)if(r+3<=i-1){const e=n.getUint8(r+1),t=n.getUint8(r+2),s=n.getUint8(r+3);e>=128&&e<=191&&t>=128&&t<=191&&s>=128&&s<=191?(a=(7&a)<<18|(63&e)<<12|(63&t)<<6|63&s,r+=4):r++}else r++;else r++;break;case f:case l:case d:a=n.getUint16(r,o),r+=2}u+=String.fromCodePoint(a)}return u}function _(e){return(new TextEncoder).encode(e)}const y={UTF8:S,UTF16:l,UTF16BE:f,UTF16LE:d};function h(e){const t=e.duration/1e3;return 8*e.encodedBodySize/t}function T(e){const t="string"==typeof e?new URL(e):e;return t.origin+t.pathname.substring(0,t.pathname.lastIndexOf("/")+1)}function m(e){const t=new ArrayBuffer(e.length/2),n=new Uint8Array(t);for(let t=0;t<e.length;t+=2)n[t/2]=parseInt(e.slice(t,t+2),16);return t}const p={TEXT:"text",JSON:"json",BLOB:"blob",ARRAY_BUFFER:"arrayBuffer",DOCUMENT:"document",STREAM:"stream"};function I(e,t){if(e<0)return-I(-e,t);const n=Math.pow(10,t);if(Math.abs(e*n%1-.5)<Number.EPSILON){const t=Math.floor(e*n);return(t%2==0?t:t+1)/n}return Math.round(e*n)/n}function R(e){const t=new ArrayBuffer(2*e.length),n=new DataView(t);for(let t=0;t<e.length;t++)n.setUint16(2*t,e.charCodeAt(t),!0);return new Uint16Array(t)}const A=/&(?:amp|lt|gt|quot|apos|nbsp|lrm|rlm|#[xX]?[0-9a-fA-F]+);/g;function C(e){return-1===e.indexOf("&")?e:e.replace(A,(e=>{switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'";case"&nbsp;":return" ";case"&lrm;":return"‎";case"&rlm;":return"‏";default:if("#"===e[1]){const t="x"===e[2]||"X"===e[2]?parseInt(e.slice(3),16):parseInt(e.slice(2),10);return String.fromCodePoint(t)}return e}}))}function D(e,t){let n;try{n=new URL(e)}catch{return e}const r=new URL(t);if(n.origin!==r.origin)return e;const s=n.pathname.split("/").slice(1),i=r.pathname.split("/").slice(1,-1),o=Math.min(s.length,i.length);for(let e=0;e<o&&s[e]===i[e];e++)s.shift(),i.shift();for(;i.length;)i.shift(),s.unshift("..");return s.join("/")+n.search+n.hash}function M(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const n=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?n:3&n|8).toString(16)}))}}}function N(e){return m(e.replace(/-/g,""))}},138:function(e,t,n){n.r(t);const r=function(){let e,t=[];const n={},r={};function s(e,n){for(const r in t){const s=t[r];if(s.context===e&&s.name===n)return s.instance}return null}function i(e,t){return t[e]}function o(e,t,n){e in n&&(n[e]=t)}function a(t,n,r){let s;const i=t.__dashjs_factory_name,o=n[i];if(o){let i=o.instance;if(!o.override)return i.apply({context:n,factory:e},r);s=t.apply({context:n},r),i=i.apply({context:n,factory:e,parent:s},r);for(const e in i)s.hasOwnProperty(e)&&(s[e]=i[e])}else s=t.apply({context:n},r);return s.getClassName=function(){return i},s}return e={deleteSingletonInstances:function(e){t=t.filter((t=>t.context!==e))},extend:function(e,t,n,r){!r[e]&&t&&(r[e]={instance:t,override:n})},getClassFactory:function(e){let t=i(e.__dashjs_factory_name,r);return t||(t=function(t){return void 0===t&&(t={}),{create:function(){return a(e,t,arguments)}}},r[e.__dashjs_factory_name]=t),t},getClassFactoryByName:function(e){return i(e,r)},getSingletonFactory:function(e){let r=i(e.__dashjs_factory_name,n);return r||(r=function(n){let r;return void 0===n&&(n={}),{getInstance:function(){return r||(r=s(n,e.__dashjs_factory_name)),r||(r=a(e,n,arguments),t.push({name:e.__dashjs_factory_name,context:n,instance:r})),r}}},n[e.__dashjs_factory_name]=r),r},getSingletonFactoryByName:function(e){return i(e,n)},getSingletonInstance:s,setSingletonInstance:function(e,n,r){for(const s in t){const i=t[s];if(i.context===e&&i.name===n)return void(t[s].instance=r)}t.push({name:n,context:e,instance:r})},updateClassFactory:function(e,t){o(e,t,r)},updateSingletonFactory:function(e,t){o(e,t,n)}},e}();t.default=r},7263:function(e,t,n){n.r(t);var r=n(3282),s=n(5212);class i{static mixin(e,t,n){let r,s={};if(e)for(let o in t)t.hasOwnProperty(o)&&(r=t[o],o in e&&(e[o]===r||o in s&&s[o]===r)||("object"==typeof e[o]&&null!==e[o]?e[o]=i.mixin(e[o],r,n):e[o]=n(r)));return e}static clone(e){if(!e||"object"!=typeof e)return e;if(e instanceof RegExp)return new RegExp(e);let t;if(e instanceof Array){t=[];for(let n=0,r=e.length;n<r;++n)n in e&&t.push(i.clone(e[n]))}else t={};return i.mixin(t,e,i.clone)}static addAdditionalQueryParameterToUrl(e,t){try{if(!t||0===t.length)return e;let n=e;return t.forEach((({key:e,value:t})=>{const r=n.includes("?")?"&":"?";n+=`${r}${encodeURIComponent(e)}=${encodeURIComponent(t)}`})),n}catch(t){return e}}static removeQueryParameterFromUrl(e,t){if(!e||!t)return e;const n=new URL(e),r=new URLSearchParams(n.search);if(!r||0===r.size||!r.has(t))return e;r.delete(t);const s=Array.from(r.entries()).map((([e,t])=>`${e}=${t}`)).join("&"),i=`${n.origin}${n.pathname}`;return s?`${i}?${s}`:i}static parseHttpHeaders(e){let t={};if(!e)return t;let n=e.trim().split("\r\n");for(let e=0,r=n.length;e<r;e++){let r=n[e],s=r.indexOf(": ");s>0&&(t[r.substring(0,s)]=r.substring(s+2))}return t}static parseQueryParams(e){const t=[],n=new URLSearchParams(e);for(const[e,r]of n.entries())t.push({key:decodeURIComponent(e),value:decodeURIComponent(r)});return t}static generateUuid(){let e=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){const n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)}))}static generateHashCode(e){let t=0;if(0===e.length)return t;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t}static getRelativeUrl(e,t){try{const n=new URL(e),s=new URL(t);if(n.protocol=s.protocol,n.origin!==s.origin)return t;let i=r.relative(n.pathname.substr(0,n.pathname.lastIndexOf("/")),s.pathname.substr(0,s.pathname.lastIndexOf("/")));const o=0===i.length?1:0;return i+=s.pathname.substr(s.pathname.lastIndexOf("/")+o,s.pathname.length-1),s.pathname.length<i.length?s.pathname:i}catch(e){return t}}static getHostFromUrl(e){try{return new URL(e).host}catch(e){return null}}static parseUserAgent(e=null){try{const t="string"==typeof e?e.toLowerCase():"undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent.toLowerCase():"",n={name:""};return/edg/.test(t)?n.name="edge":/opr|opios/.test(t)?n.name="opera":/chrome|crios/.test(t)?n.name="chrome":/firefox|fxios/.test(t)?n.name="firefox":/safari/.test(t)&&(n.name="safari"),{browser:n}}catch(e){return{}}}static stringHasProtocol(e){return/(http(s?)):\/\//i.test(e)}static bufferSourceToDataView(e){return i.toDataView(e,DataView)}static bufferSourceToInt8(e){return i.toDataView(e,Uint8Array)}static uint8ArrayToString(e){return new TextDecoder("utf-8").decode(e)}static bufferSourceToHex(e){const t=i.bufferSourceToInt8(e);let n="";for(let e of t)e=e.toString(16),1===e.length&&(e="0"+e),n+=e;return n}static toDataView(e,t){const n=i.getArrayBuffer(e);let r=1;"BYTES_PER_ELEMENT"in DataView&&(r=DataView.BYTES_PER_ELEMENT);const s=((e.byteOffset||0)+e.byteLength)/r,o=(e.byteOffset||0)/r,a=Math.floor(Math.max(0,Math.min(o,s)));return new t(n,a,Math.floor(Math.min(a+Math.max(1/0,0),s))-a)}static getArrayBuffer(e){return e instanceof ArrayBuffer?e:e.buffer}static getCodecFamily(e){const{base:t,profile:n}=i._getCodecParts(e);switch(t){case"mp4a":switch(n){case"69":case"6b":case"40.34":return s.default.CODEC_FAMILIES.MP3;case"66":case"67":case"68":case"40.2":case"40.02":case"40.5":case"40.05":case"40.29":case"40.42":return s.default.CODEC_FAMILIES.AAC;case"a5":return s.default.CODEC_FAMILIES.AC3;case"e6":return s.default.CODEC_FAMILIES.EC3;case"b2":return s.default.CODEC_FAMILIES.DTSX;case"a9":return s.default.CODEC_FAMILIES.DTSC}break;case"avc1":case"avc3":return s.default.CODEC_FAMILIES.AVC;case"hvc1":case"hvc3":return s.default.CODEC_FAMILIES.HEVC;default:return t}return t}static _getCodecParts(e){const[t,...n]=e.split(".");return{base:t,profile:n.join(".")}}}t.default=i},8748:function(e,t,n){n.r(t),t.default=class{extend(e,t){if(!e)return;let n=!!t&&t.override,r=!!t&&t.publicOnly;for(const t in e)!e.hasOwnProperty(t)||this[t]&&!n||r&&-1===e[t].indexOf("public_")||(this[t]=e[t])}}},7252:function(e,t,n){n.r(t),t.default=class{extend(e,t){if(!e)return;let n=!!t&&t.override,r=!!t&&t.publicOnly;for(const t in e)!e.hasOwnProperty(t)||this[t]&&!n||r&&-1===e[t].indexOf("public_")||(this[t]=e[t])}}},8854:function(e,t,n){n.r(t),t.default={ACCESSIBILITY:"Accessibility",ADAPTATION_SET:"AdaptationSet",ADAPTATION_SETS:"adaptationSets",ADAPTATION_SET_SWITCHING_SCHEME_ID_URI:"urn:mpeg:dash:adaptation-set-switching:2016",ADD:"add",ASSET_IDENTIFIER:"AssetIdentifier",AUDIO_CHANNEL_CONFIGURATION:"AudioChannelConfiguration",AUDIO_SAMPLING_RATE:"audioSamplingRate",AVAILABILITY_END_TIME:"availabilityEndTime",AVAILABILITY_START_TIME:"availabilityStartTime",AVAILABILITY_TIME_COMPLETE:"availabilityTimeComplete",AVAILABILITY_TIME_OFFSET:"availabilityTimeOffset",BANDWITH:"bandwidth",BASE_URL:"BaseURL",BITSTREAM_SWITCHING:"BitstreamSwitching",BITSTREAM_SWITCHING_MINUS:"bitstreamSwitching",BYTE_RANGE:"byteRange",CAPTION:"caption",CENC_DEFAULT_KID:"cenc:default_KID",CLIENT_DATA_REPORTING:"ClientDataReporting",CLIENT_REQUIREMENT:"clientRequirement",CMCD_PARAMETERS:"CMCDParameters",CODECS:"codecs",CODEC_PRIVATE_DATA:"codecPrivateData",CODING_DEPENDENCY:"codingDependency",CONTENT_COMPONENT:"ContentComponent",CONTENT_PROTECTION:"ContentProtection",CONTENT_STEERING:"ContentSteering",CONTENT_STEERING_RESPONSE:{VERSION:"VERSION",TTL:"TTL",RELOAD_URI:"RELOAD-URI",PATHWAY_PRIORITY:"PATHWAY-PRIORITY",PATHWAY_CLONES:"PATHWAY-CLONES",BASE_ID:"BASE-ID",ID:"ID",URI_REPLACEMENT:"URI-REPLACEMENT",HOST:"HOST",PARAMS:"PARAMS"},CONTENT_TYPE:"contentType",DEFAULT_SERVICE_LOCATION:"defaultServiceLocation",DEPENDENCY_ID:"dependencyId",DURATION:"duration",DVB_PRIORITY:"dvb:priority",DVB_WEIGHT:"dvb:weight",DVB_URL:"dvb:url",DVB_MIMETYPE:"dvb:mimeType",DVB_FONTFAMILY:"dvb:fontFamily",DYNAMIC:"dynamic",END_NUMBER:"endNumber",ESSENTIAL_PROPERTY:"EssentialProperty",EVENT:"Event",EVENT_STREAM:"EventStream",FORCED_SUBTITLE:"forced-subtitle",FRAMERATE:"frameRate",FRAME_PACKING:"FramePacking",GROUP_LABEL:"GroupLabel",HEIGHT:"height",ID:"id",INBAND:"inband",INBAND_EVENT_STREAM:"InbandEventStream",INDEX:"index",INDEX_RANGE:"indexRange",INITIALIZATION:"Initialization",INITIALIZATION_MINUS:"initialization",K:"k",LA_URL:"Laurl",LA_URL_LOWER_CASE:"laurl",CERT_URL:"Certurl",LABEL:"Label",LANG:"lang",LOCATION:"Location",MAIN:"main",MAXIMUM_SAP_PERIOD:"maximumSAPPeriod",MAX_PLAYOUT_RATE:"maxPlayoutRate",MAX_SEGMENT_DURATION:"maxSegmentDuration",MAX_SUBSEGMENT_DURATION:"maxSubsegmentDuration",MEDIA:"media",MEDIA_PRESENTATION_DURATION:"mediaPresentationDuration",MEDIA_RANGE:"mediaRange",MEDIA_STREAM_STRUCTURE_ID:"mediaStreamStructureId",METRICS:"Metrics",METRICS_MINUS:"metrics",MIME_TYPE:"mimeType",MINIMUM_UPDATE_PERIOD:"minimumUpdatePeriod",MIN_BUFFER_TIME:"minBufferTime",MP4_PROTECTION_SCHEME:"urn:mpeg:dash:mp4protection:2011",MPD:"MPD",MPD_TYPE:"mpd",MPD_PATCH_TYPE:"mpdpatch",ORDER:"order",ORIGINAL_MPD_ID:"mpdId",ORIGINAL_PUBLISH_TIME:"originalPublishTime",PATCH_LOCATION:"PatchLocation",PERIOD:"Period",PRESELECTION:"Preselection",PRESELECTION_COMPONENTS:"preselectionComponents",PRESENTATION_TIME:"presentationTime",PRESENTATION_TIME_OFFSET:"presentationTimeOffset",PRO:"pro",PRODUCER_REFERENCE_TIME:"ProducerReferenceTime",PRODUCER_REFERENCE_TIME_TYPE:{ENCODER:"encoder",CAPTURED:"captured",APPLICATION:"application"},PROFILES:"profiles",PSSH:"pssh",PUBLISH_TIME:"publishTime",QUALITY_RANKING:"qualityRanking",QUERY_BEFORE_START:"queryBeforeStart",QUERY_PART:"$querypart$",RANGE:"range",RATING:"Rating",REF:"ref",REF_ID:"refId",REMOVE:"remove",REPLACE:"replace",REPORTING:"Reporting",REPRESENTATION:"Representation",REPRESENTATION_INDEX:"RepresentationIndex",ROBUSTNESS:"robustness",ROLE:"Role",S:"S",SAR:"sar",SCAN_TYPE:"scanType",SEGMENT_ALIGNMENT:"segmentAlignment",SEGMENT_BASE:"SegmentBase",SEGMENT_LIST:"SegmentList",SEGMENT_PROFILES:"segmentProfiles",SEGMENT_SEQUENCE_PROPERTIES:"SegmentSequenceProperties",SEGMENT_TEMPLATE:"SegmentTemplate",SEGMENT_TIMELINE:"SegmentTimeline",SEGMENT_TYPE:"segment",SEGMENT_URL:"SegmentURL",SERVICE_DESCRIPTION:"ServiceDescription",SERVICE_DESCRIPTION_LATENCY:"Latency",SERVICE_DESCRIPTION_OPERATING_BANDWIDTH:"OperatingBandwidth",SERVICE_DESCRIPTION_OPERATING_QUALITY:"OperatingQuality",SERVICE_DESCRIPTION_PLAYBACK_RATE:"PlaybackRate",SERVICE_DESCRIPTION_SCOPE:"Scope",SERVICE_LOCATION:"serviceLocation",SERVICE_LOCATIONS:"serviceLocations",SOURCE_URL:"sourceURL",START:"start",START_NUMBER:"startNumber",START_WITH_SAP:"startWithSAP",STATIC:"static",STEERING_TYPE:"steering",SUBSET:"Subset",SUBTITLE:"subtitle",SUB_REPRESENTATION:"SubRepresentation",SUB_SEGMENT_ALIGNMENT:"subsegmentAlignment",SUGGESTED_PRESENTATION_DELAY:"suggestedPresentationDelay",SUPPLEMENTAL_PROPERTY:"SupplementalProperty",SUPPLEMENTAL_CODECS:"scte214:supplementalCodecs",TAG:"tag",TIMESCALE:"timescale",TIMESHIFT_BUFFER_DEPTH:"timeShiftBufferDepth",TTL:"ttl",TYPE:"type",UTC_TIMING:"UTCTiming",VALUE:"value",VIEWPOINT:"Viewpoint",WALL_CLOCK_TIME:"wallClockTime",WIDTH:"width"}},5212:function(e,t,n){n.r(t);var r=n(8735);t.default={STREAM:"stream",VIDEO:"video",ENHANCEMENT:"enhancement",AUDIO:"audio",TEXT:"text",MUXED:"muxed",IMAGE:"image",STPP:"stpp",TTML:"ttml",VTT:"vtt",WVTT:"wvtt",CONTENT_STEERING:"contentSteering",LIVE_CATCHUP_MODE_DEFAULT:"liveCatchupModeDefault",LIVE_CATCHUP_MODE_LOLP:"liveCatchupModeLoLP",LIVE_CATCHUP_MODE_STEP:"liveCatchupModeStep",MOVING_AVERAGE_SLIDING_WINDOW:"slidingWindow",MOVING_AVERAGE_EWMA:"ewma",BAD_ARGUMENT_ERROR:"Invalid Arguments",MISSING_CONFIG_ERROR:"Missing config parameter(s)",TRACK_SWITCH_MODE_ALWAYS_REPLACE:"alwaysReplace",TRACK_SWITCH_MODE_NEVER_REPLACE:"neverReplace",TRACK_SELECTION_MODE_FIRST_TRACK:"firstTrack",TRACK_SELECTION_MODE_HIGHEST_BITRATE:"highestBitrate",TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY:"highestEfficiency",TRACK_SELECTION_MODE_LOWEST_STARTUP_DELAY:"lowestStartupDelay",TRACK_SELECTION_MODE_WIDEST_RANGE:"widestRange",CMCD_QUERY_KEY:r.CMCD_PARAM,CMCD_MODE_QUERY:r.CmcdTransmissionMode.QUERY,CMCD_MODE_HEADERS:r.CmcdTransmissionMode.HEADERS,CMCD_MODE_BODY:"body",CMCD_AVAILABLE_REQUESTS:["segment","mpd","xlink","steering","other"],CMCD_DEFAULT_TIME_INTERVAL:r.CMCD_DEFAULT_TIME_INTERVAL,CMCD_REPORTING_MODE:r.CmcdReportingMode,CMCD_KEYS:r.CMCD_KEYS,CMCD_REPORTING_EVENTS:r.CmcdEventType,CMCD_PLAYER_STATES:r.CmcdPlayerState,CMCD_DEFAULT_VERSION:1,CMCD_DEFAULT_INCLUDE_IN_REQUESTS:"segment",CMCD_CONTENT_TYPE_HEADER:{"Content-Type":"text/cmcd"},INITIALIZE:"initialize",TEXT_SHOWING:"showing",TEXT_HIDDEN:"hidden",TEXT_DISABLED:"disabled",ACCESSIBILITY_CEA608_SCHEME:"urn:scte:dash:cc:cea-608:2015",CC1:"CC1",CC3:"CC3",UTF8:"utf-8",SCHEME_ID_URI:"schemeIdUri",START_TIME:"starttime",SERVICE_DESCRIPTION_DVB_LL_SCHEME:"urn:dvb:dash:lowlatency:scope:2019",SUPPLEMENTAL_PROPERTY_DVB_LL_SCHEME:"urn:dvb:dash:lowlatency:critical:2019",CTA_5004_2023_SCHEME:"urn:mpeg:dash:cta-5004:2023",CTA_5004_2025_SCHEME:"urn:dashif:cta-5004:2025",THUMBNAILS_SCHEME_ID_URIS:["http://dashif.org/thumbnail_til