video-fps-probe 0.3.0 → 0.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +19 -11
  3. package/dist/analyze.js +10 -1
  4. package/dist/api/codes.d.ts +6 -0
  5. package/dist/api/codes.js +90 -0
  6. package/dist/aspect/index.d.ts +13 -0
  7. package/dist/aspect/index.js +180 -0
  8. package/dist/aspect/rational.js +61 -0
  9. package/dist/cjs/analyze.d.cts +9 -0
  10. package/dist/cjs/api/agreement.d.cts +18 -0
  11. package/dist/cjs/api/codes.d.cts +6 -0
  12. package/dist/cjs/api/errors.d.cts +12 -0
  13. package/dist/cjs/api/guards.d.cts +4 -0
  14. package/dist/cjs/api/summary.d.cts +22 -0
  15. package/dist/cjs/aspect/index.d.cts +13 -0
  16. package/dist/cjs/aspect.cjs +1 -0
  17. package/dist/cjs/check/index.d.cts +60 -0
  18. package/dist/cjs/check.cjs +1 -0
  19. package/dist/cjs/chunks/boxes-B0T2nt3e.cjs +1 -0
  20. package/dist/cjs/chunks/build-DhETwJLO.cjs +1 -0
  21. package/dist/cjs/chunks/color-xqJHSfhZ.cjs +1 -0
  22. package/dist/cjs/chunks/compare-B_HKNwqg.cjs +1 -0
  23. package/dist/cjs/chunks/config-CSbXzEqr.cjs +1 -0
  24. package/dist/cjs/chunks/errors-0oBg1Ai6.cjs +1 -0
  25. package/dist/cjs/chunks/fallback-CyPIR3RM.cjs +1 -0
  26. package/dist/cjs/chunks/guards-DbQNcAZS.cjs +1 -0
  27. package/dist/cjs/chunks/inline-Bx-TQg8f.cjs +1 -0
  28. package/dist/cjs/chunks/isobmff-4RrRf9N-.cjs +1 -0
  29. package/dist/cjs/chunks/matroska-BhgWtuPU.cjs +1 -0
  30. package/dist/cjs/chunks/metadata-ECdzNLkE.cjs +1 -0
  31. package/dist/cjs/chunks/options-B_vLHxHd.cjs +1 -0
  32. package/dist/cjs/chunks/probe-Cn1DtL-C.cjs +1 -0
  33. package/dist/cjs/chunks/rational-Dq5Vza-Q.cjs +1 -0
  34. package/dist/cjs/chunks/reader-Dw11ozVU.cjs +1 -0
  35. package/dist/cjs/chunks/rfps-C-pyKnu8.cjs +1 -0
  36. package/dist/cjs/chunks/runtime-BgAlQQee.cjs +1 -0
  37. package/dist/cjs/chunks/segments-B1H6bDz-.cjs +1 -0
  38. package/dist/cjs/chunks/sniff-CXwqOGwh.cjs +1 -0
  39. package/dist/cjs/chunks/stats-DW7dVdFa.cjs +1 -0
  40. package/dist/cjs/client/types.d.cts +96 -0
  41. package/dist/cjs/color/index.d.cts +7 -0
  42. package/dist/cjs/color.cjs +1 -0
  43. package/dist/cjs/core/reader.d.cts +47 -0
  44. package/dist/cjs/core/types.d.cts +194 -0
  45. package/dist/cjs/engines/types.d.cts +69 -0
  46. package/dist/cjs/header/index.d.cts +28 -0
  47. package/dist/cjs/header/limits.d.cts +26 -0
  48. package/dist/cjs/header.cjs +1 -0
  49. package/dist/cjs/index.cjs +1 -0
  50. package/dist/cjs/index.d.cts +13 -0
  51. package/dist/cjs/plugins/types.d.cts +17 -0
  52. package/dist/cjs/presets/index.d.cts +19 -0
  53. package/dist/cjs/presets.cjs +1 -0
  54. package/dist/cjs/probe.d.cts +3 -0
  55. package/dist/cjs/url/index.d.cts +47 -0
  56. package/dist/cjs/url.cjs +1 -0
  57. package/dist/cjs/worker/protocol.d.cts +47 -0
  58. package/dist/color/codec-string.js +121 -0
  59. package/dist/color/config.js +199 -0
  60. package/dist/color/index.d.ts +7 -0
  61. package/dist/color/index.js +139 -0
  62. package/dist/color/names.js +33 -0
  63. package/dist/color/sps.js +275 -0
  64. package/dist/core/dispatch.js +18 -29
  65. package/dist/core/isobmff/boxes.js +6 -5
  66. package/dist/core/isobmff/build.js +401 -0
  67. package/dist/core/isobmff/config.js +34 -0
  68. package/dist/core/isobmff/header.js +677 -0
  69. package/dist/core/isobmff/index.js +9 -381
  70. package/dist/core/isobmff/moof.js +2 -2
  71. package/dist/core/isobmff/moov.js +3 -3
  72. package/dist/core/matroska/header.js +10 -4
  73. package/dist/core/matroska/index.js +11 -5
  74. package/dist/core/options.js +1 -0
  75. package/dist/core/reader.d.ts +3 -0
  76. package/dist/core/reader.js +13 -7
  77. package/dist/core/result.js +1 -0
  78. package/dist/core/stats.js +3 -0
  79. package/dist/core/types.d.ts +60 -1
  80. package/dist/engines/common.js +2 -0
  81. package/dist/header/index.d.ts +28 -0
  82. package/dist/header/index.js +182 -0
  83. package/dist/header/limits.d.ts +26 -0
  84. package/dist/header/limits.js +144 -0
  85. package/dist/header/metadata.js +2 -0
  86. package/dist/index.d.ts +1 -0
  87. package/dist/index.js +1 -0
  88. package/dist/standalone/own-isobmff.worker.js +1 -1
  89. package/dist/standalone/own-matroska.worker.js +1 -1
  90. package/dist/standalone/own.worker.js +1 -1
  91. package/dist/url/index.d.ts +47 -0
  92. package/dist/url/index.js +335 -0
  93. package/dist/worker/single.js +2 -1
  94. package/package.json +117 -2
@@ -1 +1 @@
1
- (function(){var e=Object.defineProperty,t=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},n=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function r(e){if(e?.aborted)throw e.reason??new DOMException(`Aborted`,`AbortError`)}var i=t((()=>{}));function a(e,t){let n={...e};if(!t)return n;for(let e of Object.keys(t)){let r=t[e];r!==void 0&&(n[e]=r)}return n}function o(e={}){return{signal:e.signal??null,matroskaMode:e.matroskaMode??`auto`,exactBudgetMs:e.exactBudgetMs??150,readAhead:a(c,e.readAhead),costModel:a(l,e.costModel),maxExpandedSamples:e.maxExpandedSamples??5e6,onProgress:e.onProgress??null}}function s(e,t,n){return t*e.perReadMs+n/e.bytesPerMs}var c,l,u=t((()=>{c={head:65536,fragment:1048576,matroskaScan:1048576,tail:262144},l={perReadMs:.8,bytesPerMs:5e5,perBlockMs:2e-4}}));function d(e,t){if(!Number.isSafeInteger(e)||e<0)throw RangeError(`${t} must be a non-negative safe integer, got ${e}`)}function f(e,t){return e.getUint8(t)*65536+e.getUint16(t+1)}function p(e,t,n){let r=``;for(let i=0;i<n;i++)r+=String.fromCharCode(e.getUint8(t+i));return r}function m(e,t){return p(e,t,4).replace(/[^ -~]/g,`?`)}var h,g=t((()=>{i(),h=class{size;headWindow;maxWindows;signal;#e;#t=[];#n=[];#r=0;#i=0;constructor(e,t={}){d(e.size,`blob size`),this.#e=e,this.size=e.size,this.headWindow=t.headWindow??65536,this.maxWindows=Math.max(1,t.maxWindows??4),this.signal=t.signal??null,d(this.headWindow,`headWindow`)}get reads(){return this.#r}get bytesFetched(){return this.#i}checkAbort(){r(this.signal)}async read(e,t){if(d(e,`offset`),d(t,`length`),e>this.size)throw RangeError(`offset ${e} is beyond the end of the file (${this.size})`);let n=Math.min(this.size,e+t);if(n===e)return new Uint8Array;this.checkAbort();let r;try{r=await this.#e.slice(e,n).arrayBuffer()}catch(e){throw this.checkAbort(),e?.name===`AbortError`?e:Error(`file read failed: ${e}`)}if(this.checkAbort(),this.#r++,r.byteLength!==n-e)throw Error(`file read failed: short read at ${e}: expected ${n-e} bytes, got ${r.byteLength}`);return this.#a(e,n),new Uint8Array(r)}async readMany(e,t=4){let n=Array(e.length),r=0,i=async()=>{for(;r<e.length;){let t=r++,[i,a]=e[t],o=this.peek(i,a);n[t]=o?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):await this.read(i,a)}},a=[];for(let n=0;n<Math.max(1,Math.min(t,e.length));n++)a.push(i());return await Promise.all(a),n}peek(e,t){let n=Math.min(this.size,e+t);for(let t=0;t<this.#t.length;t++){let r=this.#t[t];if(e>=r.off&&n<=r.off+r.buf.length)return t>0&&(this.#t.splice(t,1),this.#t.unshift(r)),new DataView(r.buf.buffer,r.buf.byteOffset+(e-r.off),n-e)}return null}async view(e,t,n=this.headWindow){if(d(e,`offset`),d(t,`length`),d(n,`readAhead`),e>this.size)throw RangeError(`offset ${e} is beyond the end of the file (${this.size})`);let r=Math.min(this.size,e+t);if(r===e)return new DataView(new ArrayBuffer(0));let i=this.peek(e,r-e);if(i)return i;let a=Math.min(this.size,Math.max(r,e+n)),o=this.#t.find(t=>e>=t.off&&e<t.off+t.buf.length),s;if(o){let t=o.buf.subarray(e-o.off),n=await this.read(o.off+o.buf.length,a-(o.off+o.buf.length));s=new Uint8Array(t.length+n.length),s.set(t,0),s.set(n,t.length)}else s=await this.read(e,a-e);return this.#t.unshift({off:e,buf:s}),this.#t.length>this.maxWindows&&(this.#t.length=this.maxWindows),new DataView(s.buffer,s.byteOffset,r-e)}async bytes(e,t,n=this.headWindow){let r=await this.view(e,t,n);return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}#a(e,t){let n=this.#n,r=0,i=n.length;for(;r<i;){let t=r+i>>>1;n[t].end<e?r=t+1:i=t}let a=r,o=e,s=t,c=0;for(;a<n.length&&n[a].start<=t;){let r=n[a],i=Math.min(t,r.end)-Math.max(e,r.start);i>0&&(c+=i),r.start<o&&(o=r.start),r.end>s&&(s=r.end),a++}n.splice(r,a-r,{start:o,end:s}),this.#i+=t-e-c}}}));function _(e,t=null){return{container:e,brand:null,formatDurationSec:null,scan:null,videoTracks:[],audioTrackCount:0,primaryTrackId:null,error:t,warnings:[]}}function v(e){return{trackId:e,fourccOrCodecId:``,codecName:``,width:0,height:0,rotation:0,timescale:0,frames:null,presentedFrames:null,durationSec:null,startSec:null,avgFps:null,avgFpsFfprobe:null,rFpsFfprobe:null,nominalFps:null,dominantFps:null,minFps:null,maxFps:null,isVfr:null,vfrRatio:0,distinctDeltas:0,duplicateTimestamps:0,timestampsQuantized:!1,isStill:!1,rateProfile:null,provenance:{},warnings:[]}}var y=t((()=>{}));u(),g(),y();let b=new Set([`ftyp`,`moov`,`mdat`,`free`,`skip`,`wide`,`pnot`,`uuid`,`moof`,`styp`,`sidx`]),x=[26,69,223,163],S=[{bytes:[137,80,78,71,13,10,26,10],offset:0,label:`PNG image`},{bytes:[255,216,255],offset:0,label:`JPEG image`},{bytes:[71,73,70,56],offset:0,label:`GIF image`},{bytes:[82,73,70,70],offset:0,label:`RIFF file (AVI/WAV/WebP)`},{bytes:[79,103,103,83],offset:0,label:`Ogg file`},{bytes:[70,76,86,1],offset:0,label:`FLV file`},{bytes:[0,0,1,186],offset:0,label:`MPEG program stream`},{bytes:[37,80,68,70],offset:0,label:`PDF document`},{bytes:[80,75,3,4],offset:0,label:`ZIP archive`},{bytes:[73,68,51],offset:0,label:`MP3 file`}];function C(e,t,n){if(e.length<n+t.length)return!1;for(let r=0;r<t.length;r++)if(e[n+r]!==t[r])return!1;return!0}function w(e){for(let t=4;t<8;t++){let n=e[t];if(n<32||n>126)return!1}return!0}function T(e){let t=Math.min(e.length,512);if(t===0)return!1;for(let n=0;n<t;n++){let t=e[n];if(t!==9&&t!==10&&t!==13&&(t<32||t===127))return!1}return!0}function E(e){for(let t of S)if(C(e,t.bytes,t.offset))return t.label;return e.length>=188&&e[0]===71&&e[188]===71?`MPEG transport stream`:T(e)?`text file`:`no known signature`}function D(e){if(e.length===0)return{kind:`unknown`,reason:`empty file`};if(C(e,x,0))return{kind:`matroska`,reason:`EBML header 1A45DFA3`};if(e.length>=8&&w(e)){let t=String.fromCharCode(e[4],e[5],e[6],e[7]);if(b.has(t)){let n=e[0]*16777216+e[1]*65536+e[2]*256+e[3];if(n===0)return{kind:`isobmff`,reason:`top-level '${t}' box running to end of file`};if(n>=8)return{kind:`isobmff`,reason:`top-level '${t}' box`};if(n===1){if(e.length<16)return{kind:`unknown`,reason:`'${t}' box with a truncated 64-bit size`};let n=0;for(let t=8;t<16;t++)n=n*256+e[t];if(n>=16)return{kind:`isobmff`,reason:`top-level '${t}' box with 64-bit size`}}return{kind:`unknown`,reason:`'${t}' box with invalid size ${n}`}}}return e.length<8?{kind:`unknown`,reason:`too small (${e.length} bytes)`}:{kind:`unknown`,reason:E(e)}}async function O(e){let{kind:t}=D(new Uint8Array(await e.slice(0,Math.min(1024,e.size)).arrayBuffer()));return t===`unknown`?null:t}i();function k(e,t){let{perReadMs:n,bytesPerMs:r}=t.costModel,i=t.readAhead.head;return e<Math.max(i,Math.min(i+n*r,1048576))?e:i}function ee(e){return e?.name===`AbortError`}function A(e){return e instanceof Error?e.message||e.name:String(e)}function te(e,t){e.container=t.container,e.brand=t.brand,e.formatDurationSec=t.formatDurationSec,e.scan=t.scan,e.videoTracks=t.videoTracks,e.audioTrackCount=t.audioTrackCount,e.primaryTrackId=t.primaryTrackId,e.error=t.error,e.warnings=t.warnings}async function j(e,t,n,i){let a=performance.now(),s=o(n);r(s.signal);let c={name:t,size:e.size,..._(`unknown`),io:{reads:0,bytesRead:0,ms:0},engine:`own`},l=null,u=0;try{if(l=new h(e,{headWindow:s.readAhead.head,signal:s.signal}),l.size===0)c.error=`not a recognised container: empty file`;else{let e=D(await l.bytes(0,Math.min(1024,l.size),k(l.size,s)));if(e.kind===`unknown`)c.error=`not a recognised container: ${e.reason}`;else{c.container=e.kind===`isobmff`?`mp4`:`matroska`;let t=performance.now(),n=await i(e.kind);u=performance.now()-t,te(c,await n(l,s))}}}catch(e){if(s.signal?.aborted||ee(e))throw e;c.error=A(e)}return l&&(c.io.reads=l.reads,c.io.bytesRead=l.bytesFetched),c.io.ms=performance.now()-a-u,c}function M(e){return e<0n?-e:e}function ne(e,t){for(;t!==0n;){let n=e%t;e=t,t=n}return e}function re(e,t){if(typeof e==`bigint`)return e;if(!Number.isSafeInteger(e))throw RangeError(`${t} must be a safe integer, got ${e}`);return BigInt(e)}function N(e,t,n=L){let r=re(e,`num`),i=re(t,`den`),a=re(n,`max`),o=0n,s=1n,c=1n,l=0n,u=r<0n!=i<0n,d=ne(M(r),M(i));for(d!==0n&&(r=M(r)/d,i=M(i)/d),r<=a&&i<=a&&(c=r,l=i,i=0n);i!==0n;){let e=r/i,t=r-i*e,n=e*c+o,u=e*l+s;if(n>a||u>a){if(c!==0n&&(e=(a-o)/c),l!==0n){let t=(a-s)/l;t<e&&(e=t)}i*(2n*e*l+s)>r*l&&(c=e*c+o,l=e*l+s);break}o=c,s=l,c=n,l=u,r=i,i=t}let f=Number(c);return{num:u?-f:f,den:Number(l),exact:i===0n}}function ie(e){return e.den===0?0:e.num/e.den}function P(e){return e?`${e.num}/${e.den}`:`0/0`}function F(e,t){return{num:e,den:t,value:ie({num:e,den:t})}}function I(e,t,n=L){let r=N(e,t,n);return F(r.num,r.den)}function ae(e,t,n){return t<=0||n<=0||e<=0?null:I(BigInt(e)*BigInt(t),n,L)}var L,oe=t((()=>{L=2147483647})),se=n({CUSUM_ALARM_PERIODS:()=>2,FREEZE_FACTOR:()=>4,FREEZE_MIN_SEC:()=>Ze,MAX_ANOMALIES:()=>50,MAX_BUCKETS:()=>120,MAX_SEGMENTS:()=>50,MIN_SEGMENT_FRAMES:()=>5,MIN_SEGMENT_SEC:()=>le,UNEVEN_DOMINANT_SHARE:()=>ue,rateProfile:()=>pe});function ce(e,t,n){e.t0=Math.min(e.t0,t.t0),e.t1=Math.max(e.t1,t.t1),e.frames+=t.frames,n?(e.n+=t.n,e.sum+=t.sum,e.ex+=t.ex):e.ex+=t.t1-t.t0}var le,ue,R,de,fe,pe,me=t((()=>{$e(),le=.5,ue=.8,R=1+Ye,de=e=>String(+e.toPrecision(4)),fe=e=>({t0:e,t1:e,n:0,sum:0,frames:0,ex:0,d:0,kind:`steady`}),pe=(e,t,n,r)=>{let i=t,a=Ze*i,o=e=>i*e.n/e.sum,s=e=>e.n>=5&&e.t1-e.t0>=.5*i,c=[],l=e=>{let t=c[c.length-1];s(e)?c.push(e):t?.kind===`short`?ce(t,e,!0):c.push({...e,kind:`short`})},u=fe(0),d=fe(0),f=fe(0),p=0,m=0,h=0,g=0,_=0,v=!1,y=()=>{u.t1=p,v?c.push({...u,kind:`hold`}):l(u),u=fe(p),v=!1,g=_=0},b=Math.min(120,Math.floor(n/2)),x=r/b,S=new Float64Array(b),C=(e,t)=>{u.n+=e,u.sum+=e*t,u.frames+=e,p+=e*t},w=(e,t)=>{let n=e;if(t<=0)u.frames+=n,h+=n;else{for(let e=p,r=e+n*t,i=Math.floor(e/x);e<r&&i<b;i++){let n=Math.min(r,(i+1)*x);n>e&&(S[i]+=(n-e)/t),e=Math.max(e,n)}for(;n>0;){let e=u.sum/u.n;if(u.n&&t>=Math.max(a,4*e)){y(),v=!0,C(1,t),n--;continue}if(v&&Math.abs(t-e)>.075*e&&y(),v=!1,!u.n){C(n,t);return}let r=t-e,i=Xe*e,o=2*e,s=Math.abs(r)>i,c=s?1:n;if(s&&(r>0?!g||r-i>o:!_)){let e={...u,t1:p,d:t};r>0?d=e:f=e}if(g=Math.max(0,g+c*(r-i)),_=Math.max(0,_-c*(r+i)),C(c,t),n-=c,g>o||_>o){let e=g>o?d:f,t=u.n-e.n-1;t>0&&Math.abs(Math.log(e.d*e.n/e.sum))<Math.abs(Math.log(e.d*t/(u.sum-e.sum-e.d)))&&(e.t1+=e.d,e.n++,e.sum+=e.d,e.frames++),u.t0=e.t1,u.n-=e.n,u.sum-=e.sum,u.frames-=e.frames,l(e),g=_=0}}}},T=0,E=0;if(e((e,t)=>{e>0&&(m+=e,T&&t!==E&&(w(T,E),T=0),T+=e,E=t)}),T&&w(T,E),!(p>0))return null;u.n?y():c[c.length-1].frames+=u.frames;let D=[],O=(e,t,n,r,a=t.t1-t.t0)=>{D.push({kind:e,atSec:t.t0/i,durationSec:a/i,fromFps:n,toFps:r})},k=[],ee=(e,t)=>e?Math.abs(Math.log(o(e)/t)):1/0;c.forEach((e,t)=>{let n=k[k.length-1];if(e.kind===`short`||e.kind===`hold`){let r=o(e),i=c[t+1]?.kind===`steady`?c[t+1]:void 0,l=ee(n,r)<=ee(i,r)?n:i;if(e.kind=s(e)?`variable`:`steady`,e.kind===`steady`&&l){let t=o(l),n=e.sum>=e.n*Math.max(a,4*l.sum/l.n)?`freeze`:r*R<t?`gap`:r>t*R?`burst`:null;n&&O(n,e,t,r),ce(l,e,!n);return}}let r=n?o(e)/o(n):0;n?.kind===`steady`&&e.kind===`steady`&&r<R&&r*R>1?ce(n,e,!0):k.push(e)});let A=k[k.length-1],te=p+A.sum/A.n;A.frames+=n-m,A.t1=te;for(let e=1;e<k.length;e++){let t=k[e-1],n=k[e],r=o(n)/o(t);(t.kind===`steady`&&n.kind===`steady`||r>=R||r*R<=1)&&O(`rate-change`,n,o(t),o(n),0)}D.sort((e,t)=>e.atSec-t.atSec);let j=k.filter(e=>e.kind===`steady`).map(e=>[o(e),e.t1-e.t0-e.ex,e.n]).sort((e,t)=>e[0]-t[0]),M=0,ne=0,re=0,N=0,ie=0;for(let[e,t,n]of j){for(re+=t,N+=n;e>=j[ie][0]*R;ie++)re-=j[ie][1],N-=j[ie][2];M=Math.max(M,re),ne=Math.max(ne,N)}let P=M/te,F=P<.8||ne<.8*(m-h)||j.length>1&&j[j.length-1][0]>=j[0][0]*R,I=k.slice(0,3).map(e=>`${e.kind===`variable`?`~`:``}${de(o(e))} fps for ${de((e.t1-e.t0)/i)} s`);k.length>3&&I.push(`+${k.length-3} more`);let ae=``,L=(e,t)=>{e&&(ae+=`${ae?`, `:`; `}${e} ${t}${e>1?`s`:``}`)};for(let e of[`freeze`,`gap`,`burst`])L(D.filter(t=>t.kind===e).length,e);return L(h,`duplicate timestamp`),{segments:k.slice(0,50).map(e=>({startSec:e.t0/i,endSec:e.t1/i,frames:e.frames,fps:o(e),kind:e.kind})),moreSegments:Math.max(0,k.length-50),anomalies:D.slice(0,50),moreAnomalies:Math.max(0,D.length-50),buckets:{bucketSec:x/i,fps:Array.from(S,e=>e*i/x)},uneven:F,dominantShare:P,summary:`${F?`Uneven`:ae?`Mostly steady`:`Steady`}: ${I.join(`, `)}${ae}`}}})),he=n({CUSUM_DRIFT:()=>Xe,FREEZE_FACTOR:()=>4,FREEZE_MIN_SEC:()=>Ze,MAX_REORDER_DEPTH:()=>16,RATE_CHANGE_RELATIVE:()=>Ye,SNAP_RELATIVE_TOLERANCE:()=>qe,VFR_RELATIVE_TOLERANCE:()=>Je,analyzeTimeline:()=>xe,msGridTicks:()=>_e,rateFromTicks:()=>z,rateProfileOf:()=>Pe,reorderDepthFromCts:()=>ye,snapToStandardRate:()=>ge,vfrTolerance:()=>ve});function ge(e,t=qe){if(!(e>0))return null;let n=null,r=1/0;for(let t of Qe){let i=Math.abs(e-t.value)/t.value;i<r&&(r=i,n=t)}return r<=t?n:null}function _e(e,t){if(!(e>1e3)||t.length===0)return 0;for(let n of t){let t=n*1e3;if(!Number.isSafeInteger(t)||t%e!==0)return 0}return e/1e3}function ve(e,t,n){return Math.max(1,Math.round(Je*e),_e(t,n))}function ye(e,t,n){return!(t>e)||!(n>0)?0:Math.min(16,Math.ceil((t-e)/n))}function be(e){if(Number.isInteger(e)||!(e>0))return null;let t=1e9/e,n=Math.round(t);return n>0&&Math.abs(t-n)<=1e-6*n?n:null}function z(e,t){let n=be(e);return n!==null&&t>0&&Number.isSafeInteger(n*t)?I(1e9,n*t,2**53-1):we(e,t,2**53-1)}function xe(e){let t=[],n=Ee(e.timescale,t);return`segments`in e?He(e,n,t):Ke(e,n,t)}function Se(e){return`counts`in e&&`deltas`in e?{n:Math.min(e.counts.length,e.deltas.length),counts:e.counts,values:e.deltas}:{n:e.length,counts:null,values:e}}function Ce(e){return e?`counts`in e&&`offsets`in e?{n:Math.min(e.counts.length,e.offsets.length),counts:e.counts,values:e.offsets}:{n:e.length,counts:null,values:e}:null}function we(e,t,n=L){if(!(e>0)||!(t>0))return null;if(Number.isSafeInteger(e)&&Number.isSafeInteger(t))return I(e,t,n);let r=1e6,i=Math.round(e*r),a=Math.round(t*r);return Number.isSafeInteger(i)&&Number.isSafeInteger(a)?I(i,a,n):F(e/t,1)}function Te(e,t,n){if(!(t>0)||!(n>0))return null;let r=be(e);return r!==null&&Number.isSafeInteger(t)&&Number.isSafeInteger(n)?I(BigInt(t)*1000000000n,BigInt(r)*BigInt(n),L):Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&Number.isSafeInteger(n)?I(BigInt(e)*BigInt(t),n,L):we(e*t,n)}function Ee(e,t){return e>0&&Number.isFinite(e)?e:(t.push(`invalid timescale ${e}, using 1`),1)}function De(e){return e?{ws:e.start,we:e.end>e.start?e.end:1/0}:{ws:-1/0,we:1/0}}function Oe(e,t){return{timescale:e,sampleCount:0,durationSum:0,avgFps:null,avgFpsString:`0/0`,presentedAvgFps:null,presentedFrames:null,firstPts:null,lastPts:null,deltaCount:0,excludedTailDeltas:0,reorderDepth:0,duplicateTimestamps:0,discontinuities:0,histogram:[],distinctDeltas:0,minDelta:null,maxDelta:null,medianDelta:null,meanDelta:null,tolerance:null,minFps:null,maxFps:null,isVfr:null,vfrRatio:0,nominalFps:null,dominantFps:null,timestampsQuantized:!1,profile:null,fastPath:!1,warnings:t}}function ke(e,t,n,r,i,a){let o=e.timescale,s=e.isVfr===!1&&n-t<=(e.tolerance??0)&&n<2*t;return n>t*1.075&&!s?e=>e(r,o,i,a):null}function Ae(e,t){let n=e.medianDelta,r=e.timescale;!n||!t||t<4*n||t<.5*r||e.warnings.push(`last frame held ${(t/r).toFixed(3)} s (${(t/n).toFixed(1)}x the median frame interval): the average is below the frame rate`)}function je(e,t){if(Ae(e,t),e.presentedFrames===null||e.presentedFrames<=0||e.firstPts===null||e.lastPts===null)return;let n=t>0?t:e.medianDelta??0;e.presentedAvgFps=Te(e.timescale,e.presentedFrames,e.lastPts-e.firstPts+n)}function Me(e,t){let n=0;for(let[r,i]of ze(e)){if(t<n+r)return i;n+=r}return 0}async function Ne(){try{let{rateProfile:e}=await Promise.resolve().then(()=>(me(),se));return e}catch{return null}}async function Pe(e){let t=e&&await Ne();return t?e(t):null}function Fe(e,t){return e-t>=2?e-t:e}function Ie(e,t,n){let r=e.timescale,i=[...t.keys()].sort((e,t)=>e-t),a=i.map(e=>[e,t.get(e)??0]),o=0,s=0;for(let[e,t]of a)o+=t,s+=e*t;if(e.histogram=a,e.distinctDeltas=i.length,o===0)return;let c=0,l=i[0];for(let[e,t]of a)if(c+=t,c*2>=o){l=e;break}let u=i[0],d=0;for(let[e,t]of a)t>d&&(u=e,d=t);let f=_e(r,i),p=Math.max(1,Math.round(Je*l),f),m=0;for(let[e,t]of a)Math.abs(e-l)>p&&(m+=t);let h=i[0],g=i[i.length-1],_=o>=2&&m>0;if(e.minDelta=h,e.maxDelta=g,e.medianDelta=l,e.meanDelta=s/o,e.tolerance=p,e.minFps=z(r,g),e.maxFps=z(r,h),e.isVfr=_,e.vfrRatio=m/o,i.length===1){let t=z(r,h);t&&(e.nominalFps={...t,kind:`exact`})}else if(_&&d*2>=o){let t=z(r,u);t&&(e.dominantFps={rate:t,share:d/o})}e.timestampsQuantized=(n||f>0)&&!_&&i.length>1}function Le(e){if(e.nominalFps||e.isVfr!==!1||e.distinctDeltas<2||!e.avgFps)return;let t=ge(e.meanDelta?e.timescale/e.meanDelta:e.avgFps.value);t&&(e.nominalFps={...t,kind:`snapped`})}function Re(e){let t={n:0,d:0,constantCts:!0,ctsValue:0,ctsMin:1/0,ctsMax:-1/0,firstDelta:0,negativeDurations:!1,discontinuities:0,startDts:0,ctsMismatch:0},n=!1,r=e=>{n?e!==t.ctsValue&&(t.constantCts=!1):(t.ctsValue=e,n=!0),e<t.ctsMin&&(t.ctsMin=e),e>t.ctsMax&&(t.ctsMax=e)},i=0;for(let n=0;n<e.length;n++){let a=e[n];a.baseDts!==void 0&&a.baseDts!==null&&(n===0?t.startDts=a.baseDts:a.baseDts!==i&&t.discontinuities++,i=a.baseDts);let o=Se(a.durations),s=0;for(let e=0;e<o.n;e++){let n=o.counts?o.counts[e]:1;if(n<=0)continue;let r=o.values[e];s+=n,t.d+=n*r,i+=n*r,r<0&&(t.negativeDurations=!0),t.firstDelta===0&&r>0&&(t.firstDelta=r)}t.n+=s;let c=Ce(a.cts),l=0,u=0;if(c){for(let e=0;e<c.n;e++){let t=c.counts?c.counts[e]:1;if(t<=0)continue;u+=t;let n=Math.min(t,s-l);n<=0||(l+=n,r(c.values[e]))}u!==s&&t.ctsMismatch++}l<s&&r(0)}return n||(t.ctsMin=0,t.ctsMax=0),t}function*ze(e){for(let t of e){let e=Se(t.durations);for(let t=0;t<e.n;t++){let n=e.counts?e.counts[t]:1;n>0&&(yield[n,e.values[t]])}}}function Be(e,t,n,r){if(n===-1/0)return 0;if(n===1/0)return r;let i=t,a=0;for(let[t,r]of ze(e)){if(r===0){if(i<n){a+=t;continue}return a}if(i+(t-1)*r<n)a+=t,i+=t*r;else return a+Math.max(0,Math.min(t,Math.ceil((n-i)/r)))}return a}function Ve(e,t,n){let r=t,i=0;for(let[t,a]of ze(e)){if(n<i+t)return r+(n-i)*a;i+=t,r+=t*a}return r}function He(e,t,n){let r=e.segments,i=Re(r);i.ctsMismatch>0&&n.push(`composition offsets do not match the sample count in ${i.ctsMismatch} segment(s)`),i.discontinuities>0&&n.push(`decode timestamp discontinuities: ${i.discontinuities}`),i.negativeDurations&&n.push(`negative sample durations`),Number.isSafeInteger(i.d)||n.push(`duration sum exceeds 2^53-1`);let a=Oe(t,n);if(a.sampleCount=i.n,a.durationSum=i.d,a.discontinuities=i.discontinuities,a.avgFps=Te(t,i.n,i.d),a.avgFpsString=P(a.avgFps),i.n===0)return a.presentedFrames=0,a;let o=e.reorderDepth??ye(i.ctsMin,i.ctsMax,i.firstDelta);a.reorderDepth=o;let s=1+o,{ws:c,we:l}=De(e.editWindow),u=e.tickQuantized??!1;if(!e.forceExpand&&i.constantCts&&i.discontinuities===0&&!i.negativeDurations){a.fastPath=!0;let e=i.startDts+i.ctsValue,t=Be(r,e,c,i.n),n=Math.max(t,Be(r,e,l,i.n));if(a.presentedFrames=n-t,n===t)return a;let o=Ve(r,e,t),d=Ve(r,e,n-1);a.firstPts=o,a.lastPts=d;let f=n-t-1,p=Fe(f,s),m=new Map,h=0,g=1/0,_=0;for(let[e,n]of ze(r)){if(h>=t+f)break;let r=Math.max(h,t),i=Math.min(h+e,t+f);if(i>r){if(n===0)a.duplicateTimestamps+=i-r;else{g=Math.min(g,n),_=Math.max(_,n);let i=Math.min(h+e,t+p);i>r&&(m.set(n,(m.get(n)??0)+(i-r)),a.deltaCount+=i-r)}}h+=e}return a.excludedTailDeltas=f-p,Ie(a,m,u),Le(a),je(a,Me(r,n-1)),a.profile=ke(a,g,_,e=>{let n=0;for(let[i,a]of ze(r)){if(n>=t+f)break;let r=Math.max(n,t),o=Math.min(n+i,t+f);o>r&&e(o-r,a),n+=i}},n-t,d-o),a}let d=e.maxExpandedSamples??5e6;if(i.n>d)return n.push(`per-sample analysis skipped: ${i.n} samples exceed the limit of ${d}`),a;let f=new Float64Array(i.n),p=0,m=0;for(let e of r){e.baseDts!==void 0&&e.baseDts!==null&&(m=e.baseDts);let t=p,n=Se(e.durations);for(let e=0;e<n.n;e++){let t=n.counts?n.counts[e]:1,r=n.values[e];for(let e=0;e<t;e++)f[p++]=m,m+=r}let r=Ce(e.cts);if(r){let e=t;for(let t=0;t<r.n&&e<p;t++){let n=r.counts?r.counts[t]:1,i=r.values[t];for(let t=0;t<n&&e<p;t++)f[e++]+=i}}}let h=-1;for(let e=0;e<f.length;e++){let t=f[e];t>=c&&t<l&&(h<0||t>=f[h])&&(h=e)}let g=h>=0?Me(r,h):0;return We(a,Ue(f,c,l),s,u),je(a,g),Le(a),a}function Ue(e,t,n){let r=e.length;if(t!==-1/0||n!==1/0){r=0;for(let i=0;i<e.length;i++){let a=e[i];a>=t&&a<n&&(e[r++]=a)}}let i=e.subarray(0,r);for(let e=1;e<r;e++)if(i[e]<i[e-1]){i.sort();break}return i}function We(e,t,n,r){let i=t.length;if(e.presentedFrames=i,i===0)return;e.firstPts=t[0],e.lastPts=t[i-1];let a=i-1,o=Fe(a,n),s=new Map,c=1/0,l=0;for(let n=1;n<=a;n++){let r=t[n]-t[n-1];r<=0?e.duplicateTimestamps++:(c=Math.min(c,r),l=Math.max(l,r),n<=o&&(s.set(r,(s.get(r)??0)+1),e.deltaCount++))}e.excludedTailDeltas=a-o,Ie(e,s,r),e.profile=ke(e,c,l,e=>{for(let n=1;n<=a;n++)e(1,t[n]-t[n-1])},i,t[a]-t[0])}function Ge(e){let t=-1/0,n=0;for(let r=0;r<e.length;r++){let i=e[r];i>t?t=i:t-i>n&&(n=t-i)}return n}function Ke(e,t,n){let r=e.pts,i=r.length,a=Oe(t,n);if(a.sampleCount=i,i===0)return a.presentedFrames=0,a;let o=1/0,s=-1/0;for(let e=0;e<i;e++){let t=r[e];t<o&&(o=t),t>s&&(s=t)}let{ws:c,we:l}=De(e.editWindow),u=Ue(Float64Array.from(r),c,l),d=e.reorderDepth;if(d===void 0){let t=0;for(let e=1;e<u.length;e++){let n=u[e]-u[e-1];if(n>0){t=n;break}}d=e.ctsRange?ye(e.ctsRange.min,e.ctsRange.max,t):ye(0,Ge(r),t)}a.reorderDepth=d,We(a,u,1+d,e.tickQuantized??!1),Ae(a,e.lastDuration);let f=e.lastDuration??a.medianDelta??0;return a.durationSum=s-o+f,a.avgFps=Te(t,i,a.durationSum),a.avgFpsString=P(a.avgFps),a.presentedAvgFps=a.avgFps,Le(a),a}var qe,Je,Ye,Xe,Ze,Qe,$e=t((()=>{oe(),u(),qe=.001,Je=.005,Ye=.15,Xe=Ye/2,Ze=.5,Qe=(()=>{let e=[];for(let t of[24,30,48,60,120,240])e.push(F(t*1e3,1001));for(let t=1;t<=240;t++)e.push(F(t,1));return e})()}));function B(e,t,n,r=0){let i=Math.min(e.byteLength,n);if(t+8>i)return null;let a=e.getUint32(t),o=m(e,t+4),s=8,c=a;if(a===1){if(t+16>i)return null;let n=e.getBigUint64(t+8);if(n>BigInt(2**53-1))throw new H(`corrupt file: box '${o}' at ${r+t} has a size above 2^53-1`);c=Number(n),s=16}else a===0&&(c=n-t);if(o===`uuid`&&(s+=16),c<s)throw new H(`corrupt file: box '${o}' at ${r+t} is smaller than its header`);let l=t+c;return{type:o,start:t,size:c,headerSize:s,end:Math.min(l,n),truncated:l>n}}function*V(e,t,n,r){let i=t;for(;i+8<=n;){let t;try{t=B(e,i,n)}catch(e){r?.push(e.message.replace(/^corrupt file: /,`ignored invalid child: `));return}if(!t)return;yield t,i=t.start+t.size}}function et(e,t,n,r){let i=e.getBigUint64(t);if(i>BigInt(2**53-1))throw new H(`unsupported: box '${n}' at ${r} holds a value above 2^53-1`);return Number(i)}function tt(e,t,n,r){let i=e.getBigInt64(t);if(i>BigInt(2**53-1)||i<-BigInt(2**53-1))throw new H(`unsupported: box '${n}' at ${r} holds a value beyond 2^53-1`);return Number(i)}function nt(e,t,n,r,i){let a=Math.max(0,Math.floor(t/n));return e>a?(i.push(`${r} declares ${e} entries but its box holds only ${a}`),a):e}var H,rt=t((()=>{g(),H=class extends Error{constructor(e){super(e),this.name=`IsoBmffError`}}}));function it(){if(U)return U;U=new Map;for(let e of st.split(`|`)){let t=e.indexOf(`:`),n=e.slice(0,t);for(let r=t+1;r+4<=e.length;r+=4)U.set(e.slice(r,r+4),n)}return U}function at(e){return it().has(e)}function ot(e,t=null,n=!1){return t!==null&&ct[t]?ct[t]:e===`dvh1`&&n?`hevc`:it().get(e)??`unknown`}var st,U,ct,lt=t((()=>{st=`rawvideo:raw yuv22vuyyuvs|v210:v210|mjpeg:jpegmjpaAVDJAVRndmb1|mpeg4:mp4vDIVXXVID3IV2|h263:h263s263H263|dvvideo:dvcpdvc dvppdv5pdv5nAVdvAVd1dvhqdvhpdvh1dvh2dvh3dvh4dvh5dvh6|qtrle:rle |cinepak:cvid|svq1:SVQ1svq1svqi|svq3:SVQ3|vvc:vvc1vvi1|hevc:hev1hvc1dvhe|h264:avc1avc2avc3avc4ai5pai5qai52ai53ai55ai56ai1pai1qai12ai13ai15ai16AVinaivxdva1dvav|evc:evc1|vp8:vp08|vp9:vp09|av1:av01|mpeg1video:m1v m1v1mpegmp1v|mpeg2video:m2v1hdv1hdv2hdv3hdv4hdv5hdv6hdv7hdv8hdv9hdvamx5nmx5pmx4nmx4pmx3nmx3pxd51xd54xd55xd59xd5axd5bxd5cxd5dxd5exd5fxdv1xdv2xdv3xdv4xdv5xdv6xdv7xdv8xdv9xdvaxdvbxdvcxdvdxdvexdvfxdhdxdh2AVmpmp2v|jpeg2000:mjp2|png:png MNG |gif:gif |tiff:tiff|vc1:vc-1|cavs:avs2|avs3:avs3|dirac:drac|dnxhd:AVdnAVdh|prores:apchapcnapcsapcoap4hap4x|prores_raw:aprnaprh|hap:Hap1Hap5HapYHapAHapM|cfhd:CFHD|lcevc:lvc1|apv:apv1`,U=null,ct={32:`mpeg4`,33:`h264`,35:`hevc`,51:`vvc`,96:`mpeg2video`,97:`mpeg2video`,98:`mpeg2video`,99:`mpeg2video`,100:`mpeg2video`,101:`mpeg2video`,106:`mpeg1video`,108:`mjpeg`,109:`png`,110:`jpeg2000`,163:`vc1`,164:`dirac`,177:`vp9`}}));function ut(e){return{fileSize:e,brand:null,compatibleBrands:[],hasFtyp:!1,hasMvhd:!1,timescale:1,duration:0,matrix:Int32Array.from(pt),tracks:[],chapterTrackIds:new Set,hasMvex:!1,trex:new Map,moofCount:0,topLevel:[],truncated:!1,ffprobeMoofLimit:1/0,ffprobeReject:null,warnings:[]}}function dt(){return{id:0,enabled:!1,handler:``,timescale:0,hasMdhd:!1,mdhdDuration:0,matrix:Int32Array.from(pt),sampleEntry:``,originalFormat:null,stsdCount:0,width:0,height:0,esdsObjectType:null,hasHvcc:!1,sttsCounts:new Uint32Array,sttsDeltas:new Uint32Array,cttsCounts:null,cttsOffsets:null,dtsShift:0,sampleCount:null,sampleSize:0,overruns:[],edits:[],fragments:[],warnings:[],dv:null,stss:null,stsz:null,stz2:null,stsc:null,stco:null,co64:null}}var ft,pt,mt=t((()=>{ft=2**53-1,pt=[65536,0,0,0,65536,0,0,0,1<<30]}));function ht(e){let t=0;for(let n=256;n<=2048;n<<=1)e&n&&(t+=4);return t}function gt(e,t,n,r,i,a,o=i+t-8){if(t+8>n)return null;let s=f(e,t+1),c=e.getUint32(t+4),l=r.trex.get(c),u=t+8,d=e=>u+e<=n,p=s&131072?i:a;if(s&1){if(!d(8))return null;p=et(e,u,`tfhd`,o),u+=8}s&2&&(u+=4);let m=l?l.duration:null;if(s&8){if(!d(4))return null;m=e.getUint32(u),u+=4}let h=l?l.size:0;if(s&16){if(!d(4))return null;h=e.getUint32(u)}return{flags:s,trackId:c,baseDataOffset:p,defaultDuration:m,defaultSize:h,trexMissing:!l}}function _t(e,t,n,r,i,a,o,s){let c=f(e,t+1),l=e.getUint32(t+4),u=t+8,d=i;c&1&&(d=r.baseDataOffset+e.getInt32(u),u+=4),c&4&&(u+=4);let p=ht(c),m;p>0?m=nt(l,n-u,p,`trun`,o):(m=l,m>s&&(o.push(`trun count ${l} limited to ${s}`),m=s));let h=p>0&&m<l,g=!!(c&256);if(!g&&r.defaultDuration===null&&m>0)throw new H(`corrupt file: no sample duration for track ${r.trackId}`);let _=r.defaultDuration??0,v=g?new Uint32Array(m):null,y=c&2048?new Int32Array(m):null,b=!!(c&512),x=g?0:_*m,S=d,C=0,w=0;if(p>0)for(let t=0;t<m;t++){if(g){let n=e.getUint32(u);v[t]=n,x+=n,u+=4}let n=r.defaultSize;b&&(n=e.getUint32(u),u+=4),c&1024&&(u+=4),y&&(y[t]=e.getInt32(u),u+=4),S<a&&C++,w===t&&S+n<=a&&w++,S+=n}if(!b){let e=r.defaultSize,t=Math.max(0,a-d);C=e>0?Math.min(m,Math.ceil(t/e)):Math.min(m,t),w=e>0?Math.min(m,Math.floor(t/e)):C,S=d+e*m}return{fragment:{moofIndex:0,baseDts:null,count:m,durations:v,defaultDuration:_,cts:y,durationSum:x,present:C,complete:w,trexMissing:r.trexMissing,overrun:h},dataEnd:S}}function vt(e,t,n,r,i,a){let o=n,s=!1,c=e=>{i.ffprobeReject||={moof:r,reason:e}},l=new Map;for(let e of i.tracks)l.has(e.id)||l.set(e.id,e);for(let u of V(e,t.start+t.headerSize,t.end,i.warnings)){if(u.type!==`traf`)continue;let t=null,d,f=null,p=0;for(let m of V(e,u.start+u.headerSize,u.end,i.warnings)){let u=m.start+m.headerSize;if(m.type===`tfhd`){if(t=gt(e,u,m.end,i,n,o,n+m.start),!t)continue;t.trackId===0?c(`rejects this file: tfhd with track_ID 0`):t.trexMissing||(s=!0),p=t.baseDataOffset,d=l.get(t.trackId),d||i.warnings.push(`fragment for unknown track ${t.trackId}`)}else if(m.type===`tfdt`&&u+8<=m.end)f=e.getUint8(u)===1&&u+12<=m.end?et(e,u+4,`tfdt`,n+m.start):e.getUint32(u+4);else if(m.type===`trun`&&u+8<=m.end){if(s?(!t||t.trexMissing)&&c(`misreads this file: a traf without trex is read as another track`):c(`rejects this file: trun without a tfhd that has a trex`),!t||!d)continue;let n=d,{fragment:l,dataEnd:h}=_t(e,u,m.end,t,p,i.fileSize,n.warnings,a);l.moofIndex=r,l.baseDts=f,f=null,p=h,o=h,l.trexMissing&&!n.warnings.includes(bt)&&n.warnings.push(bt),n.fragments.push(l)}}}}function yt(e,t,n){let r=t.start+t.headerSize,i=r<t.end&&e.getUint8(r)===1;if(r+(i?32:24)>t.end)throw new H(`corrupt file: box 'sidx' at ${n} is truncated`);let a=r+12,o=i?et(e,a,`sidx`,n):e.getUint32(a),s=i?et(e,a+8,`sidx`,n):e.getUint32(a+4);a+=i?16:8;let c=e.getUint16(a+2);a+=4;let l=n+(t.end-t.start),u=l+s,d=0,f=!1,p=[];for(let n=0;n<c&&a+12<=t.end;n++,a+=12){let t=e.getUint32(a);t&2147483648&&(f=!0);let n=t&2147483647;p.push([u,n]),u+=n,d+=e.getUint32(a+4)}return{start:n,end:l,referenceId:e.getUint32(r+4),timescale:e.getUint32(r+8),earliestPts:o,firstOffset:s,coverageEnd:u,durationSum:d,subsegments:p,hierarchical:f}}var bt,xt=t((()=>{g(),rt(),bt=`no trex: sample defaults taken from tfhd`}));function W(e,t,n,r=0){return St(V(e,t.start+t.headerSize+r,t.end,n.warnings),n,t.type)}function*St(e,t,n){for(let r of e){if(r.truncated){if(t.strict)throw new H(`incomplete file: moov is truncated`);t.warnings.push(`'${r.type}' overruns '${n}'`)}yield r}}function G(e){return e.start+e.headerSize}function Ct(e,t){let n=new Int32Array(9);for(let r=0;r<9;r++)n[r]=e.getInt32(t+r*4);return n}function wt(e){return e>0&&e<=2147483647?e:1}function Tt(e){return{start:G(e),end:e.end}}function Et(e,t,n){let r=G(t);if(r+8>t.end)return;let i=e.getUint32(r+4),a=nt(i,t.end-r-8,8,`stts`,n.warnings);a<i&&n.overruns.push(`stts`);let o=new Uint32Array(a),s=new Uint32Array(a),c=!1;for(let t=0;t<a;t++)o[t]=e.getUint32(r+8+t*8),s[t]=e.getUint32(r+12+t*8),s[t]>4294487295&&(c=!0);c&&Dt(o,s,n.warnings),n.sttsCounts=o,n.sttsDeltas=s}function Dt(e,t,n){let r=0n,i=0n;for(let a=0;a<e.length;a++){let o=BigInt(e[a]),s=t[a];if(s>4294487295){n.push(`stts delta ${s} clipped to 1`);let e=s|0;s=1,i+=BigInt(e<0?e:1)*o}else i+=BigInt(s)*o;if(r+=BigInt(s)*o,r>i){let e=(r-i)/(o>0n?o:1n),t=BigInt(s)>e?e:BigInt(s-1>>>0);r-=t*o,s=Number(BigInt(s)-t&4294967295n)}t[a]=s}}function Ot(e,t,n){let r=G(t);if(r+8>t.end)return;let i=e.getUint32(r+4),a=nt(i,t.end-r-8,8,`ctts`,n.warnings);if(a<i&&n.overruns.push(`ctts`),a===0)return;let o=[],s=[],c=0;for(let t=0;t<a;t++){let n=e.getInt32(r+8+t*8),a=e.getInt32(r+12+t*8);n<=0||(o.push(n),s.push(a),t+2<i&&a<0&&(c=Math.max(c,a===-2147483648?2147483647:-a)))}n.cttsCounts=Uint32Array.from(o),n.cttsOffsets=Int32Array.from(s),n.dtsShift=c}function kt(e,t,n,r,i){let a=G(t);if(a+8>t.end)return;let o=e.getUint8(a),s=o===1?20:12,c=e.getUint32(a+4),l=t.end-a-8,u=c*s===l?c:Math.floor(l/s);if(u!==c&&n.warnings.push(`elst declares ${c} entries but its box holds ${u}`),u===0)return;n.edits.length&&(n.warnings.push(`duplicated elst: the last one is used`),n.edits=[]);let d=r.base+t.start;for(let t=0;t<u;t++){let r=a+8+t*s;if(o===1){let t=tt(e,r+8,`elst`,d),a=e.getBigInt64(r)===-1n;a&&(n.warnings.push(`unknown elst duration: ${t===-1?`the empty edit is ignored`:`the edit lasts to the end`}`),i.ffprobeReject??={moof:-1,reason:`rejects this file: an elst duration of -1`}),n.edits.push({duration:a?t===-1?0:ft:et(e,r,`elst`,d),mediaTime:t,rate:e.getInt32(r+16)/65536})}else n.edits.push({duration:e.getUint32(r),mediaTime:e.getInt32(r+4),rate:e.getInt32(r+8)/65536})}}function At(e,t,n){let r=t+4,i=()=>{if(r+2>n)return null;let t=e.getUint8(r++),i=0;for(let t=0;t<4&&r<n;t++){let t=e.getUint8(r++);if(i=i*128+(t&127),!(t&128))break}return[t,i]},a=i();if(a&&a[0]===3){if(r+3>n)return null;let t=e.getUint8(r+2);r+=3,t&128&&(r+=2),t&64&&r<n&&(r+=1+e.getUint8(r)),t&32&&(r+=2),a=i()}return a&&a[0]===4&&r<n?e.getUint8(r):null}function jt(e,t,n,r){let i=G(t);if(i+8>t.end||(n.stsdCount=e.getUint32(i+4),n.stsdCount===0))return;let a;try{a=B(e,i+8,t.end)}catch(e){n.warnings.push(e.message);return}if(a&&(n.sampleEntry=a.type,!(n.handler===`soun`||a.start+86>a.end))){n.width=e.getUint16(a.start+32),n.height=e.getUint16(a.start+34);for(let t of V(e,a.start+86,a.end,r.warnings))if(t.type===`esds`)n.esdsObjectType=At(e,G(t),t.end);else if(t.type===`hvcC`)n.hasHvcc=!0;else if(t.type===`sinf`)for(let i of V(e,G(t),t.end,r.warnings))i.type===`frma`&&G(i)+4<=i.end&&(n.originalFormat=m(e,G(i)))}}function Mt(e,t,n,r){n.dv=e;for(let i of W(e,t,r)){let t=G(i);switch(i.type){case`stsd`:jt(e,i,n,r);break;case`stts`:Et(e,i,n);break;case`ctts`:Ot(e,i,n);break;case`stsz`:case`stz2`:t+12<=i.end&&(n.sampleCount=e.getUint32(t+8),n.sampleSize=i.type===`stsz`?e.getUint32(t+4):0),i.type===`stsz`?n.stsz=Tt(i):n.stz2=Tt(i);break;case`stss`:n.stss=Tt(i),t+8<=i.end&&e.getUint32(t+4)>Math.floor((i.end-t-8)/4)&&n.overruns.push(`stss`);break;case`stsc`:n.stsc=Tt(i);break;case`stco`:n.stco=Tt(i);break;case`co64`:n.co64=Tt(i)}}}function Nt(e,t,n,r){for(let i of W(e,t,r)){let t=G(i);if(i.type===`mdhd`&&t+24<=i.end){let r=e.getUint8(t)===1;if(r&&t+32>i.end)continue;n.hasMdhd=!0;let a=e.getUint32(t+(r?20:12));if(n.timescale=wt(a),n.timescale!==a&&n.warnings.push(`invalid mdhd timescale ${a}, using 1`),r){let r=e.getBigUint64(t+24);n.mdhdDuration=r===18446744073709551615n?0:Number(r)}else{let r=e.getUint32(t+16);n.mdhdDuration=r===It?0:r}}else if(i.type===`hdlr`&&t+12<=i.end)n.handler=m(e,t+8);else if(i.type===`minf`)for(let t of W(e,i,r))t.type===`stbl`&&Mt(e,t,n,r)}}function Pt(e,t,n,r){let i=dt();for(let a of W(e,t,r)){let t=G(a);if(a.type===`tkhd`&&t+84<=a.end){let n=e.getUint8(t)===1;if(n&&t+96>a.end)continue;i.enabled=(e.getUint8(t+3)&1)==1,i.id=e.getUint32(t+(n?20:12)),i.matrix=Ct(e,t+(n?52:40))}else if(a.type===`edts`)for(let t of W(e,a,r))t.type===`elst`&&kt(e,t,i,r,n);else if(a.type===`mdia`)Nt(e,a,i,r);else if(a.type===`tref`){for(let t of W(e,a,r))if(t.type===`chap`)for(let r=G(t);r+4<=t.end;r+=4)n.chapterTrackIds.add(e.getUint32(r))}}return i}function Ft(e,t,n,r,i=0){let a={strict:r,warnings:n.warnings,base:i};for(let r of W(e,t,a)){let t=G(r);switch(r.type){case`mvhd`:{if(t+24>r.end)break;let i=e.getUint8(t)===1;if(i&&t+84>r.end)break;n.hasMvhd=!0,n.timescale=wt(e.getUint32(t+(i?20:12))),n.duration=i?Number(e.getBigUint64(t+24)):e.getUint32(t+16),t+(i?84:72)<=r.end&&(n.matrix=Ct(e,t+(i?48:36)));break}case`trak`:n.tracks.push(Pt(e,r,n,a));break;case`mvex`:n.hasMvex=!0;for(let t of W(e,r,a)){let r=G(t);t.type===`trex`&&r+24<=t.end&&n.trex.set(e.getUint32(r+4),{duration:e.getUint32(r+12),size:e.getUint32(r+16)})}break;case`cmov`:throw new H(`unsupported: compressed movie header (cmov)`)}}}var It,Lt=t((()=>{g(),rt(),mt(),It=4294967295}));function Rt(){return{windows:[],hints:[],next:0,mfraTried:!1}}function zt(e,t,n){for(let[r,i]of e.windows)if(t>=r&&t+n<=r+i.byteLength)return new DataView(i.buffer,i.byteOffset+t-r,n);return null}async function Bt(e,t,n,r){for(;t.next<t.hints.length&&t.hints[t.next]<=n;)t.next++;let i=[];for(let n=t.next;n<t.hints.length&&i.length<8;n++)t.hints[n]<e.size&&i.push([t.hints[n],Math.min(r,e.size-t.hints[n])]);if(t.next+=i.length,!i.length)return;let a=await e.readMany(i,4);t.windows=i.map(([e],t)=>[e,new DataView(a[t].buffer,a[t].byteOffset,a[t].byteLength)]),t.windows.every(([,e])=>Vt(e))||(t.hints=[],t.next=0)}function Vt(e){return e.byteLength>=8&&e.getUint32(0)>=8&&qt.has(m(e,4))}function Ht(e,t,n,r,i=2**53-1){for(let a of V(e,t,n)){let t=a.start+a.headerSize;if(a.type!==`tfra`||t+16>a.end)continue;let n=e.getUint8(t)===1,o=e.getUint32(t+8),s=(n?16:8)+(o>>4&3)+(o>>2&3)+(o&3)+3,c=Math.min(e.getUint32(t+12),Math.floor((a.end-t-16)/s));for(let a=0;a<c;a++){let o=t+16+a*s,c=n?e.getBigUint64(o+8):BigInt(e.getUint32(o+4));c>0n&&c<BigInt(i)&&r.add(Number(c))}}}async function Ut(e){try{return await Wt(e)}catch(t){if(e.signal?.aborted||t?.name===`AbortError`)throw t;return[]}}async function Wt(e){let t=e.size,n=Math.min(t,Gt);if(n<16)return[];let r=await e.view(t-n,n,0);if(m(r,n-12)!==`mfro`)return[];let i=r.getUint32(n-4);if(i<24||i>Math.min(t,Kt))return[];let a=i<=n?new DataView(r.buffer,r.byteOffset+n-i,i):await e.view(t-i,i,0),o;try{o=B(a,0,i)}catch{return[]}if(!o||o.type!==`mfra`)return[];let s=new Set;return Ht(a,o.headerSize,o.end,s,t),[...s].sort((e,t)=>e-t)}var Gt,Kt,qt,Jt=t((()=>{g(),rt(),Gt=65536,Kt=16777216,qt=new Set([`moof`,`styp`,`sidx`,`ssix`,`emsg`,`prft`,`free`,`skip`,`uuid`])}));function Yt(e,t,n){if(!(n>0))return 0;let r=BigInt(Math.abs(e))*BigInt(t),i=BigInt(n),a=Number((r+i/2n)/i);return e<0?-a:a}function Xt(e){let t=0,n=0;for(let r=0;r<e.sttsCounts.length;r++)t+=e.sttsCounts[r],n+=e.sttsCounts[r]*e.sttsDeltas[r];let r=0;for(let t of e.fragments)r+=t.count;return{moovSamples:t,moovDuration:n,fragmentSamples:r}}function Zt(e,t,n){let r=0n,i=0n;if(n){for(let t=0;t<e.sttsCounts.length;t++)r+=BigInt(e.sttsCounts[t]),i+=BigInt(e.sttsCounts[t])*BigInt(e.sttsDeltas[t]);i<=0n&&(r=0n,i=0n)}for(let n of e.fragments)t(n.moofIndex,n.trexMissing)&&(r+=BigInt(n.count),i+=BigInt(n.durationSum));return[r,i]}function Qt(e,t,n){return t<=0n||n<=0n?null:I(BigInt(e)*t,n,L)}function $t(e,t){let n=e.timescale,r=(e,n)=>e<t.ffprobeMoofLimit&&!n,[i,a]=Zt(e,()=>!0,!0),[o,s]=Zt(e,r,!0),c=e.overruns.includes(`stts`)||e.fragments.some(e=>e.overrun&&r(e.moofIndex,e.trexMissing))?null:Qt(n,o,s);return{avg:Qt(n,i,a),ffprobe:c?P(c):null}}function en(e){let t=e.dv,n=e=>t&&e&&e.start+8<=e.end?t.getUint32(e.start+4):0,r=n(e.co64??e.stco),i=e.sttsCounts.length>0||e.overruns.includes(`stts`),a=e.sampleCount??0;return r>0&&(!i||n(e.stsc)===0||e.sampleSize===0&&a===0)||a>0&&r===0}function tn(e,t,n){let r=0,i=0,a=0,o=null,s=(e.cttsOffsets?.[0]??0)+n.moovDuration;for(let n of e.edits){let c=n.duration===ft?Math.max(0,s-n.mediaTime):Yt(n.duration,e.timescale,t);i+=c,n.mediaTime===-1?o||(r+=c):(a++,o||={mediaTime:n.mediaTime,duration:c,rate:n.rate})}return{emptyBefore:r,firstMedia:o,editSum:i,mediaEdits:a}}function nn(e,t,n,r){let i=e.mdhdDuration;n.moovDuration>0&&(i=Math.min(i,n.moovDuration));let a=e.edits.length>0&&n.moovSamples>0;a&&(i=Math.min(i,r.editSum));let o=n.moovDuration,s=null,c=an(e,t);for(let t of e.fragments)t.baseDts!==null&&(o=t.baseDts),s===null&&t.count>0&&(s=o-c+(t.cts?t.cts[0]:0)),o+=t.durationSum,o>i&&(i=o);let l=rn(e,t);l!==null&&l>i&&(i=l);let u=null;return u=a?r.emptyBefore:n.moovSamples>0?e.cttsOffsets&&e.cttsOffsets.length?e.cttsOffsets[0]:0:s,{durationTs:i,startPts:u}}function rn(e,t){if(t.ffprobeMoofLimit===1/0)return null;let n=0,r=null;for(let i of t.topLevel){if(i.type===`moof`&&++n>t.ffprobeMoofLimit)break;let a=i.sidx;a&&!a.hierarchical&&a.referenceId===e.id&&a.timescale===e.timescale&&(r=a.earliestPts+a.durationSum)}return r}function an(e,t){let n=0,r=0,i=0;return e.edits.forEach((e,t)=>{t===0&&e.mediaTime===-1?(n=e.duration,i=1):t===i&&e.mediaTime>=0&&(r=e.mediaTime)}),!n&&!r?0:r-Yt(n,e.timescale,t.timescale)}function on(e,t,n){let r=new Float64Array(e.length+1),i=new Float64Array(e.length),a=0,o=0;for(let s=0;s<e.length&&o<n;s++)e[s]<=0||(r[a]=o,i[a]=t[s],o+=Math.min(e[s],n-o),a++);return r[a]=o,{count:a,starts:r,values:i,total:o}}function sn(e){let t=e.starts,n=0;return r=>{if(r>=t[n]&&r<t[n+1])return n;let i=0,a=e.count-1;for(;i<a;){let e=Math.ceil((i+a)/2);t[e]<=r?i=e:a=e-1}return n=i,i}}function cn(e,t){let n=e.stss;if(!n||!e.dv)return{all:!0,list:new Float64Array};let r=e.dv,i=n.start+8<=n.end?Math.min(r.getUint32(n.start+4),Math.floor((n.end-n.start-8)/4)):0;if(i===0)return{all:!1,list:Float64Array.of(0)};let a=+(r.getUint32(n.start+8)>0),o=new Float64Array(i),s=0,c=-1;for(let e=0;e<i;e++){let i=r.getUint32(n.start+8+e*4)-a;if(i<=c||i>=t)break;o[s++]=i,c=i}return{all:!1,list:o.subarray(0,s)}}function ln(e,t,n){if(n>=t)return-1;if(e.all)return n;let r=e.list,i=0,a=r.length;for(;i<a;){let e=Math.floor((i+a)/2);r[e]<n?i=e+1:a=e}return i<r.length?r[i]:-1}function un(e,t){if(t<0)return-1;if(e.all)return t;let n=e.list,r=0,i=n.length;for(;r<i;){let e=Math.floor((r+i)/2);n[e]<=t?r=e+1:i=e}return r>0?n[r-1]:-1}function dn(e,t,n){let r=n;r<=0||e.len===0&&(e.first=t,e.last=t,e.len=1,r--,r===0)||((e.len>=2&&e.last!==e.first||r>=2&&t!==e.first)&&(e.bad=!0),e.last=t,e.len+=r)}function fn(e,t,n,r,i){let a=r,o=Math.min(i,t.total-r),s=0;for(;o>0&&!e.bad;){let r=n(a),i=Math.min(t.starts[r+1]-a,o);dn(e,t.values[r],i),a+=i,o-=i,s++}return s}function pn(e,t){return e.bad||e.len===0||!(e.first>0)?null:I(t,e.first,L)}function mn(e,t,n,r,i){let a=Math.min(n,e.sampleCount??0);if(a<=0||e.sttsCounts.length===0||e.overruns.length>0)return null;let o=e.timescale,s=on(e.sttsCounts,e.sttsDeltas,a),c=sn(s),l={len:0,first:0,last:0,bad:!1};if(e.edits.length===0)return fn(l,s,c,0,a),pn(l,o);if(!e.edits.some(e=>e.mediaTime!==-1))return null;let u=!0;for(let e=1;e<s.count&&u;e++)u=s.values[e]===s.values[0];if(u)return s.values[0]>0?I(o,s.values[0],L):null;let d=Math.min(r,bn),f=0,p=!1,m=e=>(f+=e,f>d&&(p=!0),p),h=new Float64Array(s.count+1);for(let e=0;e<s.count;e++)h[e+1]=h[e]+(s.starts[e+1]-s.starts[e])*s.values[e];let g=e=>{let t=c(e);return h[t]+(e-s.starts[t])*s.values[t]},_=e=>s.values[c(e)],v=!!e.cttsCounts&&e.cttsCounts.length>0,y=v?on(e.cttsCounts,e.cttsOffsets,a):null,b=y?sn(y):null,x=e=>y&&e<y.total?y.values[b(e)]:0,S=cn(e,a),C=e=>ln(S,a,e),w=e=>un(S,e),T=e.dtsShift,E=(e,t)=>{let n=0,r=t;for(;n<r;){let t=Math.floor((n+r)/2);g(t)>=e?r=t:n=t+1}return n},D=(e,t)=>{let n=T>0?e-T:e,r=-1,i=a;for(g(a-1)-T<n&&(r=a-1);i-r>1;){let e=Math.floor((r+i)/2),t=g(e)-T;t>=n&&(i=e),t<=n&&(r=e)}let o=t?r:w(r);if(o>0){let e=E(g(o),o);if(e<o){if(t)o=e;else{let t=C(e);t>=0&&t<o&&(o=t)}}}if(v&&o>=0){let e=w(o);for(;e>=0&&!m(1)&&g(e)-T+x(e)>n;)e=w(e-1);o=e}return o},O=0,k=!1;for(let n of e.edits){let r=n.mediaTime;if(!k&&r===-1)continue;if(k=!0,m(64))break;let i=Yt(n.duration,e.timescale,t.timescale),o=D(r,!1);if(o<0&&!p&&(o=D(r,!0)),p)break;o<0&&(o=0,O=0),v&&(O=o);let u=-1;if(v){let e=!1;for(let t=C(o);t>=0&&!m(1);t=C(t+1)){let n=t+1<a?_(t):i;if(g(t)+x(t)+n>=i+r){if(e){u=t;break}e=!0}}if(p)break}else{let e=o,t=a;for(;e<t;){let n=Math.floor((e+t)/2);(n+1<a?g(n+1):g(a-1)+i)>=i+r?t=n:e=n+1}e<a&&(u=C(e))}let d=u<0?a-o:u-o+1,f=Math.min(d,a-O);if(f>0&&(m(fn(l,s,c,O,f)),O+=f),l.bad)return null;if(p)break}return p?(i?.push(`r_frame_rate not reproduced: edit list walk limit reached`),null):pn(l,o)}function hn(e,t,n){let r=[],i=[],a=n;for(let n=0;n<e.length&&a>0;n++){let o=Math.min(e[n],a);o<=0||(r.push(o),i.push(t[n]),a-=o)}return{counts:r,values:i}}function gn(e,t){let n=[];if(t>0){let r=hn(e.sttsCounts,e.sttsDeltas,t),i=e.cttsCounts&&e.cttsOffsets?hn(e.cttsCounts,e.cttsOffsets,t):null;n.push({durations:{counts:r.counts,deltas:r.values},cts:i?{counts:i.counts,offsets:i.values}:null})}for(let t of e.fragments){let e=t.complete;n.push({baseDts:t.baseDts,durations:t.durations?t.durations.subarray(0,e):{counts:[e],deltas:[t.defaultDuration]},cts:t.cts?t.cts.subarray(0,e):null})}return n}function _n(e,t,n){let r=t.firstMedia;if(!r)return e.edits.length&&n.push(`edit list has no media edit`),null;t.mediaEdits>1&&n.push(`edit list has ${t.mediaEdits} media edits, only the first is applied`),r.rate!==1&&n.push(`edit rate ${r.rate} is not applied`);let i=e.fragments.length>0||r.duration<=0?r.mediaTime:r.mediaTime+r.duration;return{start:r.mediaTime,end:i}}function vn(e,t,n){let r=e.dv,i=e.co64??e.stco,a=e.stsz??e.stz2;if(!r||!i||!a||!e.stsc||i.start+8>i.end||e.stsc.start+8>e.stsc.end||a.start+12>a.end)return null;let o=!!e.co64,s=Math.min(r.getUint32(i.start+4),Math.floor((i.end-i.start-8)/(o?8:4))),c=Math.min(r.getUint32(e.stsc.start+4),Math.floor((e.stsc.end-e.stsc.start-8)/12)),l=e.stsz?r.getUint32(a.start+4):0,u=e.stz2?r.getUint8(a.start+7):32,d=Math.min(r.getUint32(a.start+8),n),f=a.end-a.start-12,p=e=>{if(l)return l;let t=a.start+12;if(u===32)return(e+1)*4<=f?r.getUint32(t+e*4):0;if(u===16)return(e+1)*2<=f?r.getUint16(t+e*2):0;if(u===8)return e<f?r.getUint8(t+e):0;let n=e>>1<f?r.getUint8(t+(e>>1)):0;return e&1?n&15:n>>4},m=0,h=0,g=0,_=0;for(let n=0;n<s&&g<d;n++){for(;_+1<c&&r.getUint32(e.stsc.start+8+(_+1)*12)<=n+1;)_++;let a=c?r.getUint32(e.stsc.start+12+_*12):0,s=o?Number(r.getBigUint64(i.start+8+n*8)):r.getUint32(i.start+8+n*4);for(let e=0;e<a&&g<d;e++,g++){let e=p(g);s<t&&m++,s+e<=t&&h===g&&h++,s+=e}}return{present:m,complete:h}}function yn(e,t){let n=[16n,16n,30n],r=new Int32Array(9);for(let i=0;i<3;i++)for(let a=0;a<3;a++){let o=0n;for(let r=0;r<3;r++)o+=BigInt(e[i*3+r])*BigInt(t[r*3+a])>>n[r];r[i*3+a]=Number(BigInt.asIntN(32,o))}if(r[0]===65536&&r[4]===65536&&r[8]===1<<30&&!r[1]&&!r[2]&&!r[3]&&!r[5]&&!r[6]&&!r[7])return 0;let i=r[0]/65536,a=r[1]/65536,o=Math.hypot(i,r[3]/65536),s=Math.hypot(a,r[4]/65536);return o===0||s===0?0:Math.trunc(-(Math.atan2(a/s,i/o)*180/Math.PI))||0}var bn,xn=t((()=>{oe(),mt(),bn=2e6})),Sn=n({IsoBmffError:()=>H,MOOF_HARD_CAP:()=>Rn,MOOV_HARD_CAP:()=>Ln,MOOV_SUSPECT_CAP:()=>In,analyzeIsoBmff:()=>Fn,analyzeIsoBmffDetailed:()=>Pn});function Cn(e,t){return t.signal?.aborted===!0||e?.name===`AbortError`}function wn(e){return e.brand===`qt `||!e.hasFtyp&&e.topLevel.length>0?`mov`:`mp4`}async function Tn(e,t,n){let r=e.size,i=t.start+t.size>r;if(!i&&t.size>268435456)throw new H(`unsupported: moov larger than 256 MiB`);let a=i?Math.min(r-t.start,In):t.size,o=await e.view(t.start,a,0),s=B(o,0,o.byteLength);if(!s)throw new H(`incomplete file: moov is truncated`);Ft(o,s,n,i,t.start),i&&n.warnings.push(`moov size exceeds the file; parsed what is there`)}async function En(e,t,n){let r=e.size,i=0,a=t.readAhead.head,o=!1,s=0,c=!1,l=Rt(),u=async(t,n,r)=>zt(l,t,n)??e.view(t,n,r);for(;i+8<=r;){if(e.checkAbort(),++s>zn){n.warnings.push(`too many top-level boxes`);break}let d=c&&!o&&r-i<=16777216?r-i:a,f=await u(i,Math.min(Vn,r-i),d),p;try{p=B(f,0,r-i,i)}catch(e){if(!o)throw e;n.warnings.push(`ignored trailing data at ${i}: ${e.message}`);break}if(!p)break;let m={...p,start:i,end:Math.min(i+p.size,r)},h=i+p.size,g=p.truncated&&o&&m.type!==`mdat`&&m.type!==`moof`;p.truncated&&(n.truncated=!0,n.warnings.push(g?`ignored trailing data at ${i}: not a box`:`'${m.type}' at ${i} is truncated`));let _={type:m.type,start:i,end:m.end,sidx:null};if(n.topLevel.push(_),g)break;if(m.type===`ftyp`){let t=await e.view(i,Math.min(m.size,1024)),r=m.headerSize;if(r+4<=t.byteLength){n.hasFtyp=!0,n.brand=String.fromCharCode(t.getUint8(r),t.getUint8(r+1),t.getUint8(r+2),t.getUint8(r+3));for(let e=r+8;e+4<=t.byteLength;e+=4)n.compatibleBrands.push(String.fromCharCode(t.getUint8(e),t.getUint8(e+1),t.getUint8(e+2),t.getUint8(e+3)))}}else if(m.type===`moov`)o?n.warnings.push(`ignored a second moov at ${i}`):(await Tn(e,m,n),o=!0);else if(m.type===`moof`){if(!o)throw new H(`corrupt file: movie fragment (moof) before moov`);if(m.size>67108864)throw new H(`corrupt file: moof larger than 64 MiB at ${i}`);let s=Math.min(m.size+Vn,r-i),c=await u(i,s,0),d=B(c,0,Math.min(m.size,c.byteLength));d&&vt(c,d,i,n.moofCount,n,t.maxExpandedSamples),n.moofCount++;let f=0;try{let e=B(c,m.size,c.byteLength);e&&e.type===`mdat`&&(f=e.size)}catch{f=0}a=f<=Bn?t.readAhead.fragment:Math.min(65536,Math.max(1024,2*m.size+64)),f>Bn&&(!l.hints.length&&!l.mfraTried&&(r-i)/(m.size+f)>16&&(l.mfraTried=!0,l.hints=await Ut(e)),l.next<l.hints.length&&!zt(l,i+m.size+f,Vn)&&await Bt(e,l,i,a)),t.onProgress&&n.moofCount%64==0&&t.onProgress({phase:`fragments`,done:i,total:r})}else if(m.type===`sidx`&&!p.truncated){let e=await u(i,m.size,0),t=B(e,0,e.byteLength);t&&(_.sidx=yt(e,t,i)),_.sidx&&_.sidx.subsegments.length>1&&!l.hints.length&&(l.hints=_.sidx.subsegments.map(([e])=>e))}else if(m.type===`mfra`)break;c=m.type===`mdat`,i=h}if(!o)throw new H(`incomplete file: no moov`)}async function Dn(e,t){let n=e.size,r=new Set(t.tracks.map(e=>e.id)),i=!1,a=!1,o=!1,s=null,c=0;for(let l of t.topLevel){if(l.type===`moof`)c++;else if(l.type===`moov`)i=!0;else if(l.type===`mdat`&&l.end-l.start>8)a=!0;else if(l.type===`sidx`&&i&&l.sidx&&!l.sidx.hierarchical&&r.has(l.sidx.referenceId)){let t=l.sidx.coverageEnd===n;!t&&n>=4&&(s===null&&(s=(await e.view(n-4,4,0)).getUint32(0)),t=l.sidx.coverageEnd===n-s),t&&l.sidx.firstOffset===0&&(o=!0)}if(i&&a&&(o||l.end===n)){t.ffprobeMoofLimit=c;return}}}function On(e,t){return t.chapterTrackIds.has(e.id)?!1:e.handler===`vide`||e.handler!==`soun`&&at(e.originalFormat??e.sampleEntry)}function kn(e,t,n,r){let i=v(r.reportedId),a=i.warnings;r.reportedId!==e.id&&a.push(`duplicate track_ID ${e.id}: reported as ${r.reportedId}`),a.push(...e.warnings);let o=e.handler===`auxv`;o&&a.push(`auxiliary video track (handler 'auxv')`);let s=en(e);s&&a.push(`missing mandatory sample tables: ffprobe ignores the samples and timing of this track`);let c=e.hasMdhd?e.timescale:t.timescale;e.hasMdhd||(a.push(`no mdhd: using the movie timescale`),e.timescale=c),i.fourccOrCodecId=e.sampleEntry,i.codecName=ot(e.originalFormat??e.sampleEntry,e.esdsObjectType,e.hasHvcc),e.originalFormat&&a.push(`encrypted: ${e.sampleEntry} of ${e.originalFormat}`),e.stsdCount>1&&a.push(`${e.stsdCount} sample descriptions, first used`),i.width=e.width,i.height=e.height,i.rotation=yn(e.matrix,t.matrix),i.timescale=c;let l=Xt(e),u=t.truncated,d=0;for(let t of e.fragments)d+=t.present;let f=l.moovSamples+l.fragmentSamples,p=l.moovSamples+d;i.frames=p,i.isStill=p<=1,l.moovSamples>0&&e.fragments.length>0&&a.push(`hybrid fragmented file: moov holds ${l.moovSamples} of ${f} samples`),p<f&&a.push(`truncated: ${f-p} of ${f} samples missing`);let m=$t(e,t);i.avgFps=m.avg,i.avgFpsFfprobe=r.ffprobeFails?null:m.ffprobe,i.avgFpsFfprobe!==null&&i.avgFpsFfprobe!==P(m.avg)&&a.push(`ffprobe reads part of the fragments: avg_frame_rate ${i.avgFpsFfprobe}`),m.ffprobe===null&&!r.ffprobeFails&&f>0&&a.push(`avg_frame_rate of ffprobe is not reproduced: its header values are incomplete or overrun a box`);let h=r.ffprobeFails||s?null:mn(e,t,l.moovSamples,n.maxExpandedSamples,a);i.rFpsFfprobe=h?P(h):null;let g=tn(e,t.timescale,l);if(!s){let n=nn(e,t,l,g);i.durationSec=n.durationTs/c,i.startSec=n.startPts===null?null:n.startPts/c}let _=l.moovSamples;if(e.sampleCount!==null&&e.sampleCount<_&&(a.push(`stts describes ${_} samples but the sample size table holds ${e.sampleCount}`),_=e.sampleCount),s)return i.presentedFrames=0,An(i),{result:i,enabled:e.enabled,auxiliary:o};if(u&&_>0){let n=vn(e,t.fileSize,l.moovSamples);n&&n.complete<_&&(a.push(`truncated: ${n.complete} of ${_} samples complete`),_=n.complete)}let y=_n(e,g,a);y&&!e.cttsCounts&&!e.fragments.length&&y.start<=0&&(y.end<=y.start||y.end>=l.moovDuration)&&(y=null);let b=xe({segments:gn(e,_),timescale:c,editWindow:y,maxExpandedSamples:n.maxExpandedSamples});return a.push(...b.warnings),i.presentedFrames=b.presentedFrames,i.minFps=b.minFps,i.maxFps=b.maxFps,i.isVfr=b.isVfr,i.vfrRatio=b.vfrRatio,i.distinctDeltas=b.distinctDeltas,i.duplicateTimestamps=b.duplicateTimestamps,i.nominalFps=b.nominalFps,i.dominantFps=b.dominantFps,i.timestampsQuantized=b.timestampsQuantized,b.presentedAvgFps&&(i.avgFps=b.presentedAvgFps),i.duplicateTimestamps>0&&a.push(`${i.duplicateTimestamps} duplicate timestamps`),An(i),b.presentedAvgFps&&(i.provenance.avgFps=`exact`),{result:i,enabled:e.enabled,auxiliary:o,profile:b.profile}}function An(e){let t=e.provenance;for(let e of[`codec`,`dimensions`,`rotation`,`frames`,`avgFps`])t[e]=`header`;e.durationSec!==null&&(t.durationSec=`header`),e.startSec!==null&&(t.startSec=`header`),e.presentedFrames!==null&&(t.presentedFrames=`exact`),e.isVfr!==null&&(t.minFps=`exact`,t.maxFps=`exact`,t.isVfr=`exact`,t.duplicateTimestamps=`exact`),e.nominalFps&&(t.nominalFps=`exact`),e.dominantFps&&(t.dominantFps=`exact`)}function jn(e){let t=null,n=e=>(e.result.frames??0)>1?e.auxiliary?.5:e.enabled?2:1:0;for(let r of e)(!t||n(r)>n(t)||n(r)===n(t)&&(r.result.frames??0)>(t.result.frames??0))&&(t=r);return t?t.result.trackId:null}function Mn(e,t){let n=2**53-1,r=n,i=n,a=-n,o=-n,s=-n,c=-n;for(let n of e.tracks){if(!n.hasMdhd)continue;let l=t.has(n)||n.handler===`soun`;if(en(n)){let e=Yt(n.mdhdDuration,1e6,Hn);l?s=Math.max(s,e):c=Math.max(c,e);continue}let u=Xt(n),d=nn(n,e,u,tn(n,e.timescale,u)),f=Yt(d.durationTs,1e6,n.timescale);if(d.startPts!==null){let e=Yt(d.startPts,1e6,n.timescale);l?(r=Math.min(r,e),a=Math.max(a,e+f)):(i=Math.min(i,e),o=Math.max(o,e+f))}l?s=Math.max(s,f):c=Math.max(c,f)}return(r===n||r>i&&r-i<1e6)&&(r=i),(a===-n||a<o&&o-a<1e6)&&(a=o),(s===-n||s<c&&c-s<1e6)&&(s=c),r!==n&&a!==-n&&a>=r&&(s=Math.max(s,a-r)),s>0?s/1e6:null}function Nn(e){let t=new Map,n=new Set,r=e.reduce((e,t)=>Math.max(e,t.id),0)+1;for(let i of e)n.has(i.id)?t.set(i,r++):(n.add(i.id),t.set(i,i.id));return t}async function Pn(e,t){let n=ut(e.size),r=t=>{if(Cn(t,e))throw t;let r=t instanceof Error?t.message:String(t),i=_(wn(n),t instanceof H||r.startsWith(`file read failed`)?r:`corrupt file: ${r}`);return i.brand=n.brand,i.warnings=n.warnings,{analysis:i,movie:n}};try{await En(e,t,n),await Dn(e,n);let r=_(wn(n));r.brand=n.brand,r.scan=`exact`,r.warnings=n.warnings;let i=n.ffprobeReject,a=i!==null&&i.moof<n.ffprobeMoofLimit;a&&n.warnings.push(`ffprobe 8.1.1 ${i.reason}`);let o=Nn(n.tracks);[...o].some(([e,t])=>e.id!==t)&&n.warnings.push(`duplicate track_ID values`);let s=n.tracks.filter(e=>On(e,n)),c=s.map(e=>kn(e,n,t,{reportedId:o.get(e)??e.id,ffprobeFails:a}));for(let e of c)e.result.rateProfile=await Pe(e.profile??null);return r.videoTracks=c.map(e=>e.result),r.audioTrackCount=n.tracks.filter(e=>e.handler===`soun`).length,r.primaryTrackId=jn(c),r.formatDurationSec=Mn(n,new Set(s)),{analysis:r,movie:n}}catch(e){return r(e)}}async function Fn(e,t){return(await Pn(e,t)).analysis}var In,Ln,Rn,zn,Bn,Vn,Hn,Un=t((()=>{y(),$e(),oe(),rt(),lt(),mt(),xt(),Lt(),Jt(),xn(),In=16777216,Ln=268435456,Rn=67108864,zn=4e6,Bn=65536,Vn=16,Hn=9e4}));function K(e){return e===0?0:Math.clz32(e)-23}function Wn(e,t){if(t>=e.length)return null;let n=K(e[t]);if(n<1||n>4||t+n>e.length)return null;let r=0;for(let i=0;i<n;i++)r=r*256+e[t+i];return{id:r,length:n}}function Gn(e,t){if(t>=e.length)return null;let n=e[t],r=K(n);if(r<1||t+r>e.length)return null;let i=255>>r,a=(n&i)===i,o=n&i;for(let n=1;n<r;n++){let r=e[t+n];r!==255&&(a=!1),o=o*256+r}return a?{size:-1,length:r}:o>2**53-1?null:{size:o,length:r}}function q(e,t,n){let r=Wn(e,t);if(!r)return null;let i=Gn(e,t+r.length);return i?{id:r.id,pos:n+t,size:i.size,dataStart:n+t+r.length+i.length}:null}function Kn(e,t){if(t>=e.length)return!0;let n=K(e[t]);if(n<1||n>4)return!1;let r=t+n;return r>=e.length||e[r]!==0&&r+K(e[r])>e.length}function qn(e,t,n){let r=t<n?K(e[t]):0;if(r<1||t+r>n)return null;let i=e[t]&255>>r;for(let n=1;n<r;n++)i=i*256+e[t+n];return{value:i,length:r}}function Jn(e,t,n){let r=0;for(let i=0;i<n;i++)r=r*256+e[t+i];return r}function Yn(e,t,n){let r=0n;for(let i=0;i<n;i++)r=r<<8n|BigInt(e[t+i]);return r}function Xn(e,t,n){if(n===0)return 0;let r=new DataView(e.buffer,e.byteOffset+t,n);return n===4?r.getFloat32(0):n===8?r.getFloat64(0):NaN}function Zn(e,t,n){let r=t;for(;r<t+n&&e[r]!==0;)r++;return kr.decode(e.subarray(t,r)).replace(/[^\x20-\x7e\xa0-\uffff]/g,`?`)}function*Qn(e,t,n){let r=t,i=Math.min(n,e.length);for(;r<i;){let t=q(e,r,0);if(!t||t.size===-1||t.dataStart+t.size>i)return;yield{id:t.id,start:t.dataStart,size:t.size},r=t.dataStart+t.size}}function $n(e,t){return t.size>6?Number(Yn(e,t.start,t.size)):Jn(e,t.start,t.size)}var er,J,tr,nr,rr,Y,ir,ar,X,or,sr,cr,lr,ur,dr,fr,pr,mr,Z,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,Or,kr,Ar=t((()=>{er=408125543,J=290298740,tr=19899,nr=21419,rr=21420,Y=357149030,ir=2807729,ar=17545,X=374648427,or=29637,sr=2352003,cr=2306383,lr=22186,ur=25506,dr=28032,fr=2327523,pr=524531317,mr=475249515,Z=307544935,hr=29555,gr=25536,_r=25541,vr=26568,yr=17827,br=17543,xr=423732329,Sr=24999,Cr=18016,wr=272869232,Tr=17849,Er=30113,Dr=30114,Or=new Set([J,Y,X,mr,Z,pr,wr,xr]),kr=new TextDecoder}));function jr(e,t,n){if(e[t]!==31||e[t+1]!==67||e[t+2]!==182||e[t+3]!==117)return!1;let r=Gn(e,t+4);if(!r)return!1;let i=t+4+r.length,a=r.size===-1?e.length:Math.min(e.length,i+r.size);if(r.size!==-1&&i+r.size>n)return!1;for(let t=0;t<4&&i<a;t++){let t=Wn(e,i);if(!t)return!1;let n=Gn(e,i+t.length);if(!n||n.size===-1)return!1;if(t.id===231)return n.size<=8;if(t.id!==191&&t.id!==236&&t.id!==167&&t.id!==171)return!1;i+=t.length+n.length+n.size}return!1}function Mr(e,t,n,r){let i=Wn(e,t);if(i?.length!==4)return!1;if(i.id===524531317)return jr(e,t,n);let a=Rr.get(i.id),o=Gn(e,t+4);if(!a||!o||o.size<2)return!1;let s=t+4+o.length+o.size,c=s<=r?q(e,t+4+o.length,0):null;return!!c&&c.size!==-1&&c.dataStart+c.size<=s&&(a.includes(c.id)||c.id===236||c.id===191)}async function Nr(e,t,n,r,i={}){let a=i.clustersOnly?Br:zr,o=i.step??Math.max(e.window,65536),s=Math.max(0,t),c=Math.min(n,e.size);for(;s<c;){let t=e.chunkAt(s);if(!t||t.base+t.buf.length<e.size&&t.base+t.buf.length-s<128){if(i.canLoad&&!i.canLoad())return-1;let n=Math.min(o,c-s+64);await e.load(s,Math.min(n,e.size-s),n),t={base:e.base,buf:e.buf}}let n=t.buf,l=t.base,u=Math.min(l+n.length>=e.size?n.length:n.length-64,c-l);if(u<=s-l)break;for(let e=s-l;e<u;e++)if(a[n[e]]&&r(n,e,l))return l+e;s=l+u}return-1}function Pr(e,t,n,r,i={}){return Nr(e,t,n,(e,t,n)=>jr(e,t,r-n),{...i,clustersOnly:!0})}function Fr(e,t,n,r,i={}){let a=e.size;return Nr(e,t,n,(e,t,n)=>Mr(e,t,r-n,a-n),i)}var Ir,Lr,Rr,zr,Br,Vr=t((()=>{Ar(),Ir=4,Lr=class{reader;size;window;buf=new Uint8Array;base=0;#e=[];constructor(e,t){this.reader=e,this.size=e.size,this.window=t;let n=e.peek(0,Math.min(e.size,e.headWindow));n&&n.byteLength>0&&this.#t({base:0,buf:new Uint8Array(n.buffer,n.byteOffset,n.byteLength)})}has(e,t){return e>=this.base&&Math.min(this.size,e+t)<=this.base+this.buf.length}cached(e,t){let n=Math.min(this.size,e+t);return this.#e.some(t=>e>=t.base&&n<=t.base+t.buf.length)||this.reader.peek(e,n-e)!==null}async load(e,t,n=this.window){if(this.has(e,t))return;let r=Math.min(this.size,e+t);for(let t of this.#e)if(e>=t.base&&r<=t.base+t.buf.length){this.#t(t);return}let i=Math.max(t,n),a=await this.reader.view(e,i,i);this.#t({base:e,buf:new Uint8Array(a.buffer,a.byteOffset,a.byteLength)})}chunkAt(e){return this.#e.find(t=>e>=t.base&&e<t.base+t.buf.length)??null}async header(e){return this.has(e,12)||await this.load(e,12),q(this.buf,e-this.base,this.base)}#t(e){this.buf=e.buf,this.base=e.base;let t=this.#e.indexOf(e);t>=0&&this.#e.splice(t,1),this.#e.unshift(e),this.#e.length>Ir&&(this.#e.length=Ir)}},Rr=new Map([[J,[tr]],[Y,[ir,ar,19840,22337,29604,17505,31657,29572,3979555,3965867,4110627,4096955,17476,26916]],[X,[174]],[mr,[187]],[Z,[hr]],[wr,[Tr]],[xr,[Sr]]]),zr=new Uint8Array(256);for(let e of Or)zr[e>>>24]=1;Br=new Uint8Array(256),Br[pr>>>24]=1}));function Hr(e,t=0){return e.reader.reads<5&&e.reader.bytesFetched+Math.max(t,e.window)<=1048576}function Ur(e){let t=/^\s*(\d+):(\d{1,2}):(\d{1,2}(?:\.\d+)?)\s*$/.exec(e);return t?Number(t[1])*3600+Number(t[2])*60+Number(t[3]):null}function Wr(){return{number:0,uid:0n,type:0,codecId:``,defaultDuration:0,frameRate:0,trackTimestampScale:1,codecDelay:0,codecPrivate:null,encoded:!1,width:0,height:0}}function Gr(e,t){t.trackTimestampScale>=.01||(t.trackTimestampScale=1),!t.defaultDuration&&t.frameRate>0&&(t.defaultDuration=Math.trunc(1e9/t.frameRate)),Number.isSafeInteger(t.defaultDuration)||(t.defaultDuration=0),e.tracks.push(t)}function Kr(e,t,n,r,i,a=null,o=null){let s=o??Wr(),c=-1,l=-1,u=[],d=[],f=``,p=``,m=!1,h=(n,r,i,o)=>{let g=ai.get(n)??[];if(o>16)m=!0;else for(let m of Qn(t,r,i)){if(!g.includes(m.id))continue;let r=m.start,i=m.size,_=()=>$n(t,m),v=()=>h(m.id,r,r+i,o+1);switch(m.id){case 174:s=Wr(),v(),Gr(e,s);break;case hr:u=[],d=[],v();for(let t of d)for(let n of u.length?u:[0n])e.tagDurations.has(n)||e.tagDurations.set(n,t);break;case vr:{let e=[f,p];f=p=``,v();let t=n===29555&&(f===`DURATION`||f.startsWith(`DURATION-`))?Ur(p):null;t!==null&&d.push(t),[f,p]=e;break}case tr:c=l=-1,v(),c>=0&&l>=0&&!e.seek.has(c)&&e.seek.set(c,e.segmentData+l);break;case 215:s.number=_();break;case or:s.uid=Yn(t,r,i);break;case 131:s.type=_();break;case 134:s.codecId=Zn(t,r,i);break;case sr:s.defaultDuration=_();break;case cr:s.trackTimestampScale=Xn(t,r,i);break;case lr:s.codecDelay=_();break;case dr:s.encoded=!0;break;case ur:s.codecPrivate=t.slice(r,r+Math.min(i,ti));break;case 176:s.width=_();break;case 186:s.height=_();break;case fr:s.frameRate=Xn(t,r,i);break;case ir:_()>0&&(e.timestampScale=_());break;case ar:{let n=Xn(t,r,i);i!==0&&i!==4&&i!==8?e.warnings.push(`Duration has an invalid size of ${i} bytes`):Number.isFinite(n)?e.duration=n:e.warnings.push(`invalid Duration value ${n}`);break}case nr:c=i<=4?_():-1;break;case rr:l=_();break;case _r:u.push(Yn(t,r,i));break;case yr:f=Zn(t,r,i).toUpperCase();break;case br:p=Zn(t,r,i);break;case Cr:Zn(t,r,i).startsWith(`image/`)&&e.attachedImages++;break;case 241:a?.push(e.segmentData+_());break;default:v()}}};h(i,n,r,2),m&&e.warnings.push(`elements nested deeper than 16 levels ignored`)}async function qr(e,t){return e.cached(t,12)||Hr(e)?e.header(t):null}async function Jr(e,t,n){let r=Math.min(n.dataStart+n.size,e.size),i=n.dataStart;for(;i<r;){let n=await qr(e,i);if(!n||n.size===-1)break;let a=Math.min(n.dataStart+n.size,r);if(n.id===174){let r=Wr();for(let i=n.dataStart;i<a;){let n=await qr(e,i);if(!n||n.size===-1)break;let o=n.dataStart+n.size-n.pos;n.size<=ei&&n.pos+o<=a&&(e.cached(n.pos,o)||Hr(e,o))&&(await e.load(n.pos,o),Kr(t,e.buf,n.pos-e.base,n.pos-e.base+o,174,null,r)),i=n.pos+o}Gr(t,r)}i=n.dataStart+n.size}i<r&&t.warnings.push(`Tracks at ${n.pos} only partly read (header budget)`)}async function Yr(e,t,n,r){if(r.at.add(n.pos),n.id===475249515&&(t.cuesPos??=n.pos),!ii.has(n.id))return;let i=Math.max(0,Math.min(n.size,e.size-n.dataStart)),a=Math.min(i,$r),o=e.cached(n.dataStart,a);if(n.id===374648427&&a<i&&!o){r.ids.add(n.id),await Jr(e,t,n);return}if(!o&&(!Hr(e,a)||n.id===423732329)){n.id===374648427?(r.ids.add(n.id),await Jr(e,t,n)):n.id!==423732329&&t.warnings.push(`${ri.get(n.id)??oi(n.id)} element at byte ${n.pos} not read (header budget)`);return}r.ids.add(n.id),await e.load(n.dataStart,a);let s=n.dataStart-e.base;Kr(t,e.buf,s,s+a,n.id)}function Xr(e,t,n){e.segmentUnknownSize||e.segmentExtended||(e.segmentExtended=!0,e.segmentEnd=t.size,e.declaredEnd=Math.max(e.declaredEnd,t.size),e.warnings.push(`${n}: the Segment size is wrong, reading to the end of the file like ffprobe`))}async function Zr(e,t,n){let r=n;for(let n=0;n<ni&&r<e.size;n++){if(!e.cached(r,12)&&!Hr(e))return t.warnings.push(`Segment search stopped at ${r} (header budget)`),null;let n=await e.header(r),i=e.buf,a=r-e.base;if(i[a]===24&&i[a+1]===83&&i[a+2]===128&&i[a+3]===103)return n||(t.warnings.push(`corrupt Segment size at ${r}`),t.segmentExtended=!0,{id:er,pos:r,size:-1,dataStart:r+4+(K(i[a+4])||8)});if(!n||n.size===-1)return null;r=n.dataStart+n.size}return null}async function Qr(e){let t={docType:`matroska`,segmentData:0,segmentEnd:0,declaredEnd:0,segmentUnknownSize:!1,segmentExtended:!1,timestampScale:1e6,duration:0,tracks:[],tagDurations:new Map,firstCluster:null,walkEnd:0,cuesPos:null,seek:new Map,attachedImages:0,warnings:[]},n=await e.header(0);if(!n||n.id!==440786851||n.size===-1||n.dataStart+n.size>e.size)throw Error(`invalid EBML header`);await e.load(n.dataStart,Math.min(n.size,4096));let r=n.dataStart-e.base;for(let i of Qn(e.buf,r,r+n.size))i.id===17026&&(t.docType=Zn(e.buf,i.start,i.size));let i=()=>Hr(e),a=await Zr(e,t,n.dataStart+n.size);if(!a){let r=await Fr(e,n.dataStart+n.size,e.size,e.size,{canLoad:i});if(r<0)throw Error(`no Segment element`);t.warnings.push(`no valid Segment header: reading level-1 elements from ${r}`),t.segmentExtended=!0,a={id:er,pos:r,size:-1,dataStart:r}}t.segmentData=a.dataStart,t.segmentUnknownSize=a.size===-1&&!t.segmentExtended,t.declaredEnd=a.size===-1?2**53-1:a.dataStart+a.size,t.segmentEnd=Math.min(e.size,t.declaredEnd),t.declaredEnd>e.size&&a.size!==-1&&t.warnings.push(`truncated file: Segment ends ${t.declaredEnd-e.size} bytes after EOF`);let o={ids:new Set,at:new Set},s=t.segmentData,c=s,l=-1;for(;!(s>=t.segmentEnd&&(s>=e.size||(Xr(t,e,`Segment ends at ${s} before any Cluster`),s>=t.segmentEnd)));){if(!e.cached(s,12)&&!i()){t.warnings.push(`header walk stopped at ${s} (header budget)`),l=s;break}let n=await e.header(s);if(n?.id===524531317){t.firstCluster=s;break}let r=`invalid data at ${s} before the first Cluster`;if(n&&n.size!==-1&&(Or.has(n.id)||n.id===236||n.id===191)){let i=n.dataStart+n.size;if(i>t.segmentEnd&&i<=e.size&&Xr(t,e,`${oi(n.id)} at ${s} ends after the Segment`),await Yr(e,t,n,o),c=s+1,i<=e.size){s=i;continue}r=`${oi(n.id)} at ${s} ends after the end of the file`}let a=await Fr(e,c,e.size,Math.max(t.declaredEnd,e.size),{canLoad:i});if(t.warnings.push(a<0?r:`${r}: resynchronised at ${a}`),a<0)break;a>=t.segmentEnd&&Xr(t,e,`level-1 element at ${a} after the Segment end`),c=a+1,s=a}t.walkEnd=t.firstCluster??(l>=0?l:c);for(let n of[J,Y,X,Z]){let r=t.seek.get(n);if(r===void 0||o.at.has(r)||n!==290298740&&o.ids.has(n)||r>=t.segmentEnd)continue;let i=await qr(e,r);i?.id===n?await Yr(e,t,i,o):t.warnings.push(`SeekHead entry ${oi(n)} not followed`)}if(t.cuesPos??=t.seek.get(475249515)??null,o.ids.has(357149030)||t.warnings.push(`no Info element: TimestampScale 1000000 assumed`),!t.tracks.length)throw Error(o.ids.has(374648427)?`no complete TrackEntry in Tracks`:`no Tracks element found`);return t}var $r,ei,ti,ni,ri,ii,ai,oi,si=t((()=>{Ar(),Vr(),$r=1048576,ei=65536,ti=4096,ni=16,ri=new Map([[J,`SeekHead`],[Y,`Info`],[Z,`Tags`]]),ii=new Set([J,Y,X,Z,xr]),ai=new Map([[J,[tr]],[tr,[nr,rr]],[Y,[ir,ar]],[X,[174]],[174,[215,or,131,134,ur,dr,sr,cr,lr,224]],[224,[176,186,fr]],[Z,[hr]],[hr,[gr,vr]],[gr,[_r]],[vr,[yr,br,vr]],[xr,[Sr]],[Sr,[Cr]],[mr,[187]],[187,[183]],[183,[241]]]),oi=e=>e.toString(16).toUpperCase()}));function ci(e,t,n,r=1/0){let i=new Map;for(let t of n){let n=Math.trunc(e.timestampScale*t.trackTimestampScale)||e.timestampScale;i.set(t.number,{track:t,tickNs:n,codecDelayTicks:Math.round(t.codecDelay/n),pts:new Float64Array(256),n:0,blocks:0,frames:0,invisible:0,missingPts:0,noPtsFrames:0,nextPts:NaN,pending:[],overLimit:0,maxPts:-1/0,maxPtsDur:0})}return{header:e,tracks:i,known:new Set(e.tracks.map(e=>e.number)),fileSize:t,maxSamples:r,clusters:0,truncated:!1,missingClusterTs:0,maxAnyTicks:-1/0,lastGood:-1,resyncs:0,afterSegment:-1,switchReads:1/0,largeWindow:0,warnings:[]}}function li(e,t,n){if(e.n===e.pts.length){let t=new Float64Array(Math.max(e.n+1,Math.min(e.pts.length*2,n)));t.set(e.pts),e.pts=t}e.pts[e.n++]=t}function ui(e,t,n){let r=Math.min(e.length,t+n),i=qn(e,t,r);if(!i)return null;let a=t+i.length;if(a+3>r)return null;let o=e[a]<<24>>16|e[a+1],s=e[a+2],c=1;if(s&6){if(a+4>r)return null;c=e[a+3]+1}return{track:i.value,rel:o,flags:s,laces:c}}function di(e,t,n,r){if(t>=n)return`invalid`;if(t>=r)return`more`;let i=K(e[t]);if(!i||t+i>n)return`invalid`;if(t+i>r)return`more`;let a=BigInt(e[t]&255>>i);for(let n=1;n<i;n++)a=a*256n+BigInt(e[t+n]);return{v:a,n:i}}function fi(e,t,n,r){let i=t+n,a=Math.min(i,e.length),o=ui(e,t,a-t);if(!o){let n=t<a?K(e[t]):0;return a<i&&(t>=a||n>0&&t+n+4>a)?`more`:`invalid`}let s=t+K(e[t]);if(r&&!r.has(o.track))return`invalid`;let c=o.flags>>1&3;if(!c)return o;let l=i-s-4;if(l<0)return`invalid`;let u=o.laces,d=s+4;if(c===2)return l%u?`invalid`:o;if(c===1){let t=0;for(let n=0;n<u-1;n++){let n;do{if(l<=t)return`invalid`;if(d>=a)return`more`;n=e[d++],t+=n,l--}while(n===255)}return l<t?`invalid`:o}let f=di(e,d,i,a);if(typeof f==`string`)return f;if(f.v>Di)return`invalid`;let p=f.v,m=f.v;d+=f.n;for(let t=1;t<u-1;t++){if(f=di(e,d,i,a),typeof f==`string`)return f;let t=p+f.v-((1n<<BigInt(7*f.n-1))-1n);if(t<0n||t>Di)return`invalid`;p=t,m+=t,d+=f.n}return BigInt(i-d)<m?`invalid`:o}function pi(e,t,n,r){t.n<e.maxSamples?li(t,n,e.maxSamples):t.overLimit++,n>=t.maxPts&&(t.maxPts=n,t.maxPtsDur=r),t.nextPts=n+r}function mi(e,t,n,r){let i=n+t.rel;i>e.maxAnyTicks&&(e.maxAnyTicks=i);let a=e.tracks.get(t.track);if(!a)return null;let o=t.laces;a.blocks++,a.frames+=o,t.flags&8&&a.invisible++;let s=r>0?r:Math.floor(a.track.defaultDuration*o/e.header.timestampScale),c=e=>Math.floor(s*e/o);if(i<0){a.noPtsFrames+=o;for(let t=0;t<o;t++)Number.isNaN(a.nextPts)?a.pending.push(c(t+1)-c(t)):pi(e,a,a.nextPts,c(t+1)-c(t));return a}let l=a.track.trackTimestampScale,u=(l===1?n:Math.floor(n/l))+t.rel-a.codecDelayTicks,d=u;for(let e of a.pending)d-=e;for(let t of a.pending.splice(0))pi(e,a,d,t),d+=t;for(let t=0;t<o;t++){if(t>0&&s===0){a.missingPts+=o-t;break}pi(e,a,u+c(t),c(t+1)-c(t))}return a}async function hi(e,t,n){let r=Math.min(n.size,Ti);for(;;){e.has(n.dataStart,r)||await e.load(n.dataStart,r);let i=fi(e.buf,n.dataStart-e.base,n.size,t.known);if(i!==`more`)return i;if(r>=n.size)return`invalid`;r=Math.min(n.size,r*8)}}function gi(e,t){return e.has(t,12)?q(e.buf,t-e.base,e.base):void 0}async function _i(e,t){return(gi(e,t)??await e.header(t))||(Kn(e.buf,t-e.base)?`eof`:`invalid`)}function vi(e,t){return e.has(t.dataStart,t.size)?Jn(e.buf,t.dataStart-e.base,t.size):void 0}async function yi(e,t){return await e.load(t.dataStart,t.size),Jn(e.buf,t.dataStart-e.base,t.size)}function bi(e,t){return e.size===-1||e.dataStart+e.size>t||ji.has(e.id)&&e.size>8||(e.id===163||e.id===161)&&e.size>Ei?`invalid`:null}async function xi(e,t,n,r=1/0){let i=gi(e,n)??await e.header(n);if(!i||i.id!==524531317)return null;let a=t.fileSize,o=i.size===-1?1/0:i.dataStart+i.size;t.clusters++;let s=-1,c=0,l=i.dataStart,u=e=>({next:l,videoBlocks:c,error:e});for(;l<o;){if(c>=r||t.stop)return{next:Math.min(o,l),videoBlocks:c,error:null};if(t.switchReads<=e.reader.reads&&(e.window=t.largeWindow,t.switchReads=1/0),l>=a)return o===1/0?{next:l,videoBlocks:c,error:null}:u(`eof`);let n=gi(e,l);if(n||=await _i(e,l),typeof n==`string`)return u(n);let i=ki.has(n.id);if(!i&&o===1/0&&(Or.has(n.id)||n.id===408125543))return{next:l,videoBlocks:c,error:null};let d=bi(n,o);if(d)return u(d);i&&(t.lastGood=l);let f=n.dataStart+n.size;if(f>a)return u(`eof`);if(n.id===231)s=vi(e,n)??await yi(e,n);else if(n.id===163||n.id===160){let r=n,i=0;if(n.id===160){r=null;for(let a=n.dataStart;a<f;){let n=gi(e,a)||await _i(e,a),o=typeof n==`string`?n:bi(n,f);if(o||typeof n==`string`)return l=a,u(o??`invalid`);Ai.has(n.id)&&(t.lastGood=a),n.id===161?r=n:n.id===155&&(i=vi(e,n)??await yi(e,n)),a=n.dataStart+n.size}}if(r){let n=e.has(r.dataStart,Math.min(r.size,Ti))?fi(e.buf,r.dataStart-e.base,r.size,t.known):`more`;if(n===`more`&&(n=await hi(e,t,r)),n===`invalid`)return u(`invalid`);s<0&&(t.missingClusterTs++,s=0);let a=mi(t,n,s,i);t.onBlock?.(n,s,i,r),a&&a.track.type===1&&c++}}l=f}return{next:o,videoBlocks:c,error:null}}function Si(e,t,n,r){n<0&&r===`eof`?e.truncated=!0:++e.resyncs>Oi||(n<0?e.warnings.push(`invalid data at ${t}, no further level-1 element`):n>=t?e.warnings.push(`skipped ${n-t} bytes of invalid data at ${t}`):e.warnings.push(`invalid data at ${t}: resynchronised at ${n}`))}async function Ci(e,t,n,r){let i=t.header,a=t.fileSize,o=i.segmentUnknownSize||i.segmentExtended?1/0:i.declaredEnd,s=n;for(t.lastGood=n-1;!t.stop;){e.reader.checkAbort(),r?.(s,Math.min(a,o));let n=null,i=s;if(s>=a){s<o&&o!==1/0&&(t.truncated=!0);break}if(s>=o){o=1/0;let n=await Fr(e,Math.max(t.lastGood+1,s),a,1/0);if(n<0)break;t.afterSegment<0&&(t.afterSegment=s),s=n;continue}let c=await _i(e,s);if(typeof c==`string`)n=c;else{let r=Or.has(c.id)||c.id===236||c.id===191;if(c.id===408125543&&o===1/0?(t.afterSegment<0&&(t.afterSegment=s),n=`invalid`):c.size===-1?c.id===524531317?o=1/0:n=`invalid`:c.dataStart+c.size>o&&(n=`invalid`),!n){if(r&&(t.lastGood=s),c.id===524531317){let r=await xi(e,t,s);r.error?(n=r.error,i=r.next):s=r.next}else c.dataStart+c.size>a?n=`eof`:s=c.dataStart+c.size}}if(!n)continue;o=1/0;let l=await Fr(e,t.lastGood+1,a,1/0);if((n!==`invalid`||i!==t.afterSegment)&&Si(t,i,l,n),l<0)break;s=l}t.resyncs>Oi&&t.warnings.push(`${t.resyncs-Oi} more resynchronisation(s) after invalid data`),t.afterSegment>=0&&t.warnings.push(`data after the Segment end at ${t.afterSegment} was scanned like ffprobe does (concatenated files?)`)}async function wi(e,t,n,r){await e.load(t,n-t,n-t);let i=e.buf,a=e.base,o=[];for(let e=n-a-4;e>=t-a;e--)i[e]===31&&jr(i,e,r-a)&&o.push(a+e);return o}var Ti,Ei,Di,Oi,ki,Ai,ji,Mi=t((()=>{Ar(),Vr(),Ti=16,Ei=268435456,Di=2147483647n,Oi=5,ki=new Set([231,163,160,167,171,236,191]),Ai=new Set([161,155,251,Dr,Er,164,236,191]),ji=new Set([231,155,251,Dr])})),Ni=n({attachEstimate:()=>Wi,av1TimingInfo:()=>Vi,h264Sps:()=>Ri,setupUnsupported:()=>Ui});function Pi(e){let t=Math.floor(e),n=e-t;return n>.5||n===.5&&t%2!=0?t+1:t}function Fi(e,t){for(;t;)[e,t]=[t,e%t];return e}function Ii(e,t){let n=e>>3,r=n<12?[480,960,1920,2880][n&3]:n<16?[480,960][n&1]:[120,240,480,960][n&3],i=e&3,a=i===0?1:i<3?2:t&63;return a>0&&r*a<=5760?r*a:0}function Li(e){let t=[];for(let n=1,r=0;n<e.length;n++)r>=2&&e[n]===3?r=0:(t.push(e[n]),r=e[n]?0:r+1);let n=0,r=e=>{let r=0;for(let i=n+e;n<i;n++){if(n>>3>=t.length)throw RangeError();r=r*2+(t[n>>3]>>7-(n&7)&1)}return r};return{u:r,ue:()=>{let e=0;for(;!r(1);)if(++e>31)throw RangeError();return 2**e-1+r(e)}}}function Ri(e){let{u:t,ue:n}=Li(e);try{let e=t(8);if(e!==66)return`H.264 profile ${e}`;t(16),n();let r={frameNumBits:n()+4,pocType:n(),pocLsbBits:0,fixedDelay:!1};if(r.pocType===0&&(r.pocLsbBits=n()+4),r.pocType===1){t(1),n(),n();for(let e=n();e>0;e--)n()}if(r.frameNumBits>16||r.pocLsbBits>16||r.pocType>2)return`bad H.264 SPS`;n(),t(1),n(),n();let i=t(1)||(t(1),0);if(t(1),t(1))for(let e=0;e<4;e++)n();if(t(1)){if(t(1)&&t(8)===255&&t(32),t(1)&&t(1),t(1)&&(t(4),t(1))&&t(24),t(1)&&(n(),n()),t(1))return`H.264 timing info`;if(t(1)||t(1)||t(1))return`H.264 HRD or pic_struct`;if(t(1)){t(1);for(let e=0;e<4;e++)n();if(n())return`H.264 reordering`;r.fixedDelay=!0}}return r.pocType===1?`H.264 pic_order_cnt_type 1`:i?r:`H.264 field coding`}catch{return`bad H.264 SPS`}}function zi(e,t){let n=[];if(t)for(let r=0;r+t<=e.length;){let i=0;for(let n=r+t;r<n;r++)i=i*256+e[r];n.push(e.subarray(r,r+=i))}else for(let t=0,r=-1;t<=e.length;t++)t<e.length&&(e[t]||e[t+1]||e[t+2]!==1)||(r>=0&&n.push(e.subarray(r,t)),r=t+3,t+=2);return n}function Bi(e,t){let n=e?(e[4]&3)+1:0,r=e?[]:zi(t[0],0);if(e){let t=5;for(let n of[31,255])for(let i=e[t++]&n,a=0;i-->0&&t+2<=e.length;t+=2+a)a=e[t]<<8|e[t+1],r.push(e.subarray(t+2,t+2+a))}let i=e=>e[0]&31,a=r.find(e=>i(e)===7),o=a?Ri(a):`no H.264 SPS`;if(typeof o==`string`)return o;let s=[];for(let e of t){let t=zi(e,n).find(e=>i(e)===1||i(e)===5);if(!t)return`no H.264 slice header`;s.push(t)}if(i(s[0])!==5)return`H.264 does not start with an IDR`;let c=r.filter(e=>i(e)===8);if(!c.length)return`no H.264 PPS`;let l=2**o.frameNumBits,u=0,d=NaN,f=-1,p=0,m=null;try{for(let e of c){let{u:t,ue:n}=Li(e);if(n(),n(),t(1),t(1)&&!o.pocType)return`H.264 bottom field POC`}for(let e of s){let{u:t,ue:n}=Li(e);n(),n(),n();let r=t(o.frameNumBits);if(i(e)===5)n(),u=p=0,d=NaN,m=null;else if(f>=0&&r!==f&&r!==(f+1)%l)return`H.264 frame_num gap`;else r<f&&(p+=l);f=r;let a=2*(p+r)-(e[0]&96?0:1);if(!o.pocType){let n=t(o.pocLsbBits),r=2**o.pocLsbBits;d>=0||(d=n);let i=n<d&&d-n>=r/2?u+r:n>d&&n-d>r/2?u-r:u;a=i+n,e[0]&96&&([u,d]=[i,n])}if(m!==null&&(o.fixedDelay?a<m:a-m!==1&&a-m!==2))return`H.264 POC step ${a-m}`;m=a}}catch{return`bad H.264 PPS or slice header`}return null}function Vi(e){for(let t=0;t<e.length;){let n=e[t],r=t+1+(n>>2&1),i=e.length-r;if(n&2)for(let t=0,n=128;n&128;t+=7)i=(t?i:0)+((n=e[r++]??0)&127)*2**t;if((n>>3&15)==1)return r<e.length?(e[r]&12)==4:null;t=r+i}return null}function Hi(e,t){let n=e.codecPrivate;if(e.codecId===Xi){let e=Vi(n&&n.length>4?n.subarray(4):t[0]);return e===null?`no AV1 sequence header`:e?`AV1 timing info`:null}return e.codecId===Yi?Bi(n,t):null}function Ui(e){let t=e.tracks.filter(e=>e.type===1);if(t.length!==1)return`${t.length} video tracks`;if(new Set(e.tracks.map(e=>e.number)).size<e.tracks.length)return`duplicate track numbers`;if(e.attachedImages)return`attached pictures`;if(![`V_VP8`,`V_VP9`,Xi,Yi].includes(t[0].codecId))return`codec ${t[0].codecId}`;for(let t of e.tracks){if(t.trackTimestampScale!==1||t.encoded)return`track ${t.number} scale or encoding`;let e=t.codecPrivate;if(t.type!==1&&(t.codecId!==`A_OPUS`||!e||String.fromCharCode(...e.subarray(0,8))!==`OpusHead`||e[18]!==0))return`track ${t.number} (${t.codecId||t.type})`}return null}function Wi(e,t,n,r,i=!1){let a=Ui(t);if(a)return a;let o=new Map;for(let e of t.tracks){let n=N(Math.trunc(t.timestampScale*e.trackTimestampScale),1e9,L);o.set(e.number,{tb:n,nb:0,cid:0,durs:0,seen:!1,first:null,firstIdx:0,last:null,lastIdx:0})}let s=t.tracks.find(e=>e.type===1),c=o.get(s.number),l=c.tb,u=l.num/l.den,d=s.codecId===Yi,f=d||l.den>=101*l.num||l.den<5*l.num,p=f?u>5e-4?40:20:0,m=new Float64Array(4*Q),h=(e,t)=>{let n=m[2*e*Q+t]/_;return m[(2*e+1)*Q+t]/_-n*n},g=null,_=0,v=0,y=0,b=0,x=null,S=null,C=null,w=()=>r.resyncs||r.truncated||r.missingClusterTs,T=[],E=n.newScanState(t,e.size,t.tracks),D=(r,i,a,s)=>{let f=n.addBlock(E,r,i,a);if(b>=Gi||c.nb&&_>=p&&[...o.values()].every(e=>e.seen||e.nb>=Ki))return!1;let S=o.get(f.track.number),C=s.dataStart+Math.clz32(e.buf[s.dataStart-e.base])-20,w=s.dataStart+s.size-C,D=S===c,O=a||Math.floor(f.track.defaultDuration*r.laces/t.timestampScale);if(r.laces>1||f.noPtsFrames?x=`laced or untimed blocks`:!O&&!D?(O=Math.floor(Ii(e.buf[C-e.base],w>1?e.buf[C+1-e.base]:0)*S.tb.den/(48e3*S.tb.num)),(!O||w<1)&&(x=`a bad Opus packet`)):!O&&l.num*1e3>l.den&&(O=1),D&&!c.nb&&s.id===163&&!(r.flags&128)&&(x=`no keyframe first`),x)return!1;b+=w;let k=D&&d&&c.nb<qi?null:f.pts[f.n-1];if(k!==null&&S.nb>1&&(S.last!==null&&(S.last>=k||S.first!==null&&S.lastIdx>S.firstIdx&&Math.floor((k-S.last)/1e3)>Math.floor((S.last-S.first)/(S.lastIdx-S.firstIdx)))&&(S.first=null),S.first===null&&(S.first=k,S.firstIdx=S.nb),S.last=k,S.lastIdx=S.nb),S.nb>1){let e=Qi(S.cid,S.tb);if(!e&&S.nb>30&&S.first!==null&&S.last!==null&&(e=Qi(S.last-S.first,S.tb)),e>=Gi)return!1;O>0&&(S.cid+=O,S.durs++)}if(D&&k!==null&&g!==null&&k>g){let e=k*u;for(let t=0;t<Q;t++){if(!(m[Q+t]<1e10))continue;let n=e*Zi(t)/12012;for(let e=0;e<2;e++){let r=n-Pi(n+e*.5)+e*.5;m[2*e*Q+t]+=r,m[(2*e+1)*Q+t]+=r*r}}if(_++,v+=k-g,_%10==0)for(let e=0;e<Q;e++)m[Q+e]<1e10&&h(0,e)>.04&&h(1,e)>.04&&(m[Q+e]=m[3*Q+e]=2e10);_>3&&(y=Fi(y,k-g))}if(D&&k!==null&&(g=k),k!==null&&(S.seen=!0),D&&c.nb<(d?qi:1)){let t=Math.min(w,Ji);T.push(e.has(C,t)?e.buf.slice(C-e.base,C+t-e.base):[C,t])}return S.nb++,!0};return r.onBlock=(e,t,n,a)=>{if(C===null){try{if(D(e,t,n,a))return}catch(e){S=[e]}C=w(),i&&(r.stop=!0)}},async()=>{if(S)throw S[0];if(x)return x;if(!c.nb||(C??w()))return`damaged first Clusters`;let t=[];for(let n of T)t.push(n instanceof Uint8Array?n:(await e.load(n[0],n[1],n[1]),e.buf.slice(n[0]-e.base,n[0]+n[1]-e.base)));let n=Hi(s,t);if(n)return n;let r=null,i=null;if(f&&_>15&&y>Math.max(1,Math.floor(l.den/(500*l.num)))&&(r=N(l.den,BigInt(l.num)*BigInt(y),L)),_>1&&!r&&f){let e=0,t=.01;for(let n=0;n<Q;n++){let r=Zi(n);if(!((c.cid?c.cid*u<11511.5/r:r<12012)||u*v/_<9609.6/r))for(let i=0;i<2;i++){let a=h(i,n);a<t&&t>1e-9&&(t=a,e=r)}}e&&e/12012<1.01*(l.den/l.num)&&(r=N(e,12012,L))}if(r&&v&&c.cid<=0&&_>2&&Math.abs(1/(r.num/r.den*u)-v/_)<=1&&(i=r),c.durs&&!i&&c.cid){i=N(BigInt(c.durs)*BigInt(l.den),BigInt(c.cid)*BigInt(l.num),6e4);let e=.01,t=0;for(let n=0;n<Q;n++){let r=Math.abs(i.num/i.den/(Zi(n)/12012)-1);r<e&&(e=r,t=Zi(n))}t&&(i=N(t,12012,L))}return r??={num:l.den,den:l.num},{avg:i?`${i.num}/${i.den}`:`0/0`,r:`${r.num}/${r.den}`,packets:c.nb}}}var Q,Gi,Ki,qi,Ji,Yi,Xi,Zi,Qi,$i=t((()=>{oe(),Q=399,Gi=5e6,Ki=50,qi=7,Ji=1024,Yi=`V_MPEG4/ISO/AVC`,Xi=`V_AV1`,Zi=e=>e<360?(e+1)*1001:e<390?(e-329)*12012:e<393?[80,120,240][e-390]*12012:[24,30,60,12,15,48][e-393]*12e3,Qi=(e,t)=>Number((BigInt(e)*BigInt(t.num)*1000000n+BigInt(t.den>>1))/BigInt(t.den))})),ea=n({CPU_MS_PER_BLOCK:()=>Ia,LARGE_FRAME_BYTES:()=>wa,MAX_CUES_BYTES:()=>Ea,MAX_TAIL_BYTES:()=>Ta,PROBE_BLOCKS:()=>32,PROBE_CLUSTERS:()=>8,SMALL_SCAN_WINDOW:()=>$,analyzeMatroska:()=>Ca,codecNameOf:()=>ta,declaredRate:()=>na,estimateScan:()=>da,estimateWalkMs:()=>fa,mergeRunStats:()=>ra,planExactScan:()=>pa});function ta(e){for(let t of za.split(` `)){let[n,r]=t.split(`:`);if(e.startsWith(n))return r}return``}function na(e){if(!(e>0))return null;let t=I(1e9,e,3e4),n=P(t);return{avg:n,r:t.num<t.den*1e3&&t.num>t.den*5?n:null}}function ra(e,t){let n=new Map,r={minFps:null,maxFps:null,isVfr:null,vfrRatio:0,distinctDeltas:0,duplicateTimestamps:0,timestampsQuantized:!1,medianDelta:null},i=0;for(let e of t){r.duplicateTimestamps+=e.duplicateTimestamps;for(let[t,r]of e.histogram)n.set(t,(n.get(t)??0)+r),i+=r}let a=[...n.keys()].sort((e,t)=>e-t);if(r.distinctDeltas=a.length,i===0)return r;let o=0,s=a.find(e=>(o+=n.get(e)??0)*2>=i)??a[0],c=ve(s,e,a),l=0;for(let e of a)Math.abs(e-s)>c&&(l+=n.get(e)??0);return r.medianDelta=s,r.minFps=z(e,a[a.length-1]),r.maxFps=z(e,a[0]),r.isVfr=i>=2&&l>0,r.vfrRatio=l/i,r.timestampsQuantized=!r.isVfr&&a.length>1,r}function ia(e,t,n){e.minFps=t.minFps,e.maxFps=t.maxFps,e.isVfr=t.isVfr,e.vfrRatio=t.vfrRatio,e.distinctDeltas=t.distinctDeltas,e.duplicateTimestamps=t.duplicateTimestamps,e.timestampsQuantized=t.timestampsQuantized;for(let t of[`minFps`,`maxFps`,`isVfr`,`duplicateTimestamps`])e.provenance[t]=n}function aa(e,t){let n=v(t.number);n.fourccOrCodecId=t.codecId,n.codecName=ta(t.codecId),n.width=t.width,n.height=t.height,n.timescale=1e9/(Math.trunc(e.timestampScale*t.trackTimestampScale)||e.timestampScale),n.provenance.codec=n.provenance.dimensions=`header`;let r=na(t.defaultDuration);r?(n.avgFpsFfprobe=r.avg,n.rFpsFfprobe=r.r,n.nominalFps={...I(1e9,t.defaultDuration,3e4),kind:`declared`},n.provenance.nominalFps=`header`,t.frameRate>0&&t.defaultDuration===Math.trunc(1e9/t.frameRate)&&n.warnings.push(`DefaultDuration derived from Video FrameRate ${t.frameRate}`)):n.warnings.push(Ra);let i=e.tagDurations.get(t.uid);return i!==void 0&&(n.durationSec=i,n.provenance.durationSec=`header`),n}function oa(e){return e.duration*e.timestampScale/1e9}function sa(e,t,n){let r=n.durationSec??oa(e);r>0&&t.defaultDuration>0&&n.warnings.push(`about ${Math.round(r*1e9/t.defaultDuration)} frames (estimated from duration x DefaultDuration, assumes CFR)`)}function ca(e,t,n){let r=oa(e),i=t*e.timestampScale/1e9;r>0&&Number.isFinite(i)&&r-i>Math.max(.5,.02*r)&&n.push(`Info Duration ${r.toFixed(3)} s exceeds the last block at ${i.toFixed(3)} s (false Duration or truncated file)`)}function la(e,t,n){e.provenance.durationSec===`header`&&e.durationSec!==null&&Math.abs(e.durationSec-t)>Math.max(2/e.timescale,1/(e.nominalFps?.value||1/0))&&e.warnings.push(`DURATION tag ${e.durationSec.toFixed(3)} s differs from the scanned ${t.toFixed(3)} s`),e.durationSec=t,e.provenance.durationSec=n}async function ua(e,t,n,r){let i=Math.min(r,Aa);await e.load(n,i,i);let a=e.chunkAt(n);if(!a)return null;let o=a.buf,s=a.base,c=s+o.length,l={bytes:0,blocks:0,video:0,large:0,smallBytes:0},u=n;for(;u<c;){let e=q(o,u-s,s);if(e?.id===524531317){u=e.dataStart;continue}if(!e||e.size===-1)break;let i=e.dataStart+e.size,a=e.id===163||e.id===160;if(a?e.size>Pa||i>n+r:i>c||!Fa.has(e.id))break;if(a){let n=e.id===160?q(o,e.dataStart-s,s):e,r=n&&(n.id===163||n.id===161)?ui(o,n.dataStart-s,n.size):null,a=r&&t.some(e=>e.number===r.track)?r.laces:0;l.blocks+=Math.max(1,a),l.video+=a,i-e.pos>=4096?l.large++:l.smallBytes+=i-e.pos}l.bytes=i-n,u=i}return l.blocks&&l.bytes>0?l:null}function da(e,t,n){if(!t){if(!(n>0))return null;let t=e/n>=$;return{blocks:n,large:t?n:0,smallBytes:t?0:e}}let r=e/t.bytes,i=t.video*r;return{blocks:t.blocks*r*(t.video>0&&n>i?n/i:1),large:t.large*r,smallBytes:t.smallBytes*r}}function fa(e,t,n){let r=Math.min(e,Ma,t?.video?Math.ceil(ja*t.bytes/t.video):Ma);return s(n.costModel,Math.ceil(r/n.readAhead.head),r)}function pa(e,t,n){let r=(t?.blocks??0)*n.costModel.perBlockMs,i=(e,t,i)=>({window:e,reads:t,bytes:i,ms:s(n.costModel,t,i)+r}),a=n.readAhead.matroskaScan,o=i(a,Math.ceil(e/a),e);if(!t)return o;let c=Math.ceil(t.large+t.smallBytes/$),l=i($,c,Math.min(e,c*$));return l.ms<o.ms?l:o}async function ma(){try{return await Promise.resolve().then(()=>($i(),Ni))}catch{return`the estimate code did not load`}}async function ha(e,t){try{return await t()}catch(t){return e.reader.checkAbort(),`the estimate failed: ${t instanceof Error?t.message:String(t)}`}}async function ga(e,t,n,r){let i=e.reader,a=r.onProgress,o=i.reads,s=t.header.segmentEnd-n;a?.({phase:`matroska-exact`,done:0,total:s}),await Ci(e,t,n,(e,t)=>{s=Math.max(s,t-n),a&&i.reads!==o&&(o=i.reads,a({phase:`matroska-exact`,done:Math.min(e-n,s),total:s}))}),a?.({phase:`matroska-exact`,done:s,total:s})}async function _a(e,t){let n=t.firstCluster===null?null:await e.header(t.firstCluster);if(n?.id===524531317)return n.pos;let r=Math.max(t.segmentData,t.walkEnd),i=await Pr(e,r,Math.min(t.segmentEnd,r+ka),t.declaredEnd,{step:Oa});if(i>=0)return i;for(let n of(await va(e,t)).slice(0,Na))if((await e.header(n))?.id===524531317)return n;return null}async function va(e,t){let n=t.cuesPos===null||t.cuesPos>=t.segmentEnd?null:await e.header(t.cuesPos);if(n?.id!==475249515||n.size===-1)return[];let r=Math.min(n.size,Ea,e.size-n.dataStart);await e.load(n.dataStart,r,r);let i=[];return Kr(t,e.buf,n.dataStart-e.base,n.dataStart-e.base+r,mr,i),[...new Set(i)].filter(e=>e<t.segmentEnd).sort((e,t)=>e-t)}function ya(e,t){return e.length<=t?[...e]:[...new Set(Array.from({length:t},(n,r)=>e[Math.round(r*(e.length-1)/(t-1))]))]}async function ba(e,t,n,r,i){let a=Math.max(i.readAhead.tail,4096),o=t.segmentEnd,s=-1/0;for(;;){let i=Math.max(r,t.segmentEnd-a);for(let r of i<o?await wi(e,i,o,t.declaredEnd):[]){let i=ci(t,e.size,n);if(await xi(e,i,r),s=Math.max(s,i.maxAnyTicks),i.tracks.get(n[0].number)?.n)return{st:i,maxAnyTicks:s}}if(i<=r||a>=16777216)return null;o=i+4,a=Math.min(a*4,Ta)}}async function xa(e,t,n,r,i,a,o){let s=await ba(e,t,n,i,a),c=await va(e,t),l=ya(c[0]===i||!c.length?c:[i,...c.filter(e=>e>i)],8);if(!c.length){l=[i];let n=t.segmentEnd-i;for(let r=1;r<8;r++){let a=i+Math.floor(r*n/8),o=await Pr(e,a,Math.min(t.segmentEnd,a+Da),t.declaredEnd,{step:Oa});o>l[l.length-1]&&l.push(o)}}let u=new Map,d=null,f=0;for(let r of l){let a=ci(t,e.size,n);if(await xi(e,a,r,32)){f++,r===i&&(d=a);for(let e of a.tracks.values()){if(e.n<2)continue;let t=u.get(e.track.number)??[];t.push(xe({timescale:1e9/e.tickNs,pts:e.pts.subarray(0,e.n),tickQuantized:!0})),u.set(e.track.number,t)}}}o.push(`probe: ${f} cluster(s) sampled via ${c.length?`Cues`:`sync search`}, up to 32 video blocks each`),s||o.push(`probe: no video block found in the tail`),ca(t,s?.maxAnyTicks??-1/0,o),n.forEach((e,n)=>{let i=r[n],a=i.timescale,o=ra(a,u.get(e.number)??[]);o.isVfr===null?f>0&&i.warnings.push(`probe: every sampled cluster holds fewer than 2 frames of this track, so no frame interval was measured; scan all frames for min, max and VFR`):ia(i,o,`sampled`);let c=d?.tracks.get(e.number),l=c?.n?Math.min(...c.pts.subarray(0,c.n)):null;l!==null&&(i.startSec=l/a,i.provenance.startSec=`sampled`);let p=s?.st.tracks.get(e.number);p?.n&&la(i,(p.maxPts+(p.maxPtsDur>0?p.maxPtsDur:o.medianDelta??0)-(l??0))/a,`sampled`),sa(t,e,i)})}function Sa(e,t){let n=e.timescale;if(e.frames=e.presentedFrames=t.frames,e.provenance.frames=e.provenance.presentedFrames=`computed`,e.isStill=t.frames===1,t.invisible&&e.warnings.push(`${t.invisible} invisible block(s) counted as frames`),t.missingPts&&e.warnings.push(`${t.missingPts} laced frame(s) without a timestamp`),t.noPtsFrames&&e.warnings.push(`${t.noPtsFrames} frame(s) before time 0 have no timestamp; interpolated from the neighbouring frames like ffmpeg`),t.overLimit&&e.warnings.push(`per-frame statistics skipped: more than ${t.n} frames`),!t.n||t.overLimit)return t.n||e.warnings.push(`no blocks for this track`),null;let r=xe({timescale:n,pts:t.pts.subarray(0,t.n),lastDuration:t.maxPtsDur>0?t.maxPtsDur:null,tickQuantized:!0});return e.warnings.push(...r.warnings),la(e,r.durationSum/n,`exact`),ia(e,r,`exact`),e.avgFps=t.frames!==t.n&&Number.isSafeInteger(n)&&Number.isSafeInteger(r.durationSum)?ae(n,t.frames,r.durationSum):r.avgFps,e.startSec=r.firstPts===null?null:r.firstPts/n,e.dominantFps=r.dominantFps,e.provenance.avgFps=e.provenance.startSec=e.provenance.dominantFps=`exact`,!e.nominalFps&&r.nominalFps?(e.nominalFps=r.nominalFps,e.provenance.nominalFps=`exact`):e.nominalFps&&e.avgFps&&Math.abs(e.avgFps.value/e.nominalFps.value-1)>.005&&e.warnings.push(`declared rate ${e.avgFpsFfprobe} differs from the measured average ${e.avgFps.value.toFixed(3)}`),r.duplicateTimestamps&&e.warnings.push(`${r.duplicateTimestamps} duplicate block timestamp(s) excluded from the instantaneous rates`),r.profile}async function Ca(e,t){let n=new Lr(e,t.readAhead.head),r=await Qr(n),i=_(r.docType===`webm`?`webm`:`matroska`),a=i.warnings;i.brand=r.docType,i.scan=`header`,a.push(...r.warnings),r.docType!==`webm`&&r.docType!==`matroska`&&a.push(`unexpected DocType '${r.docType}'`),r.segmentUnknownSize&&a.push(`Segment has an unknown size (live or unfinished recording)`),i.formatDurationSec=r.duration===0?null:Math.trunc(r.duration*r.timestampScale*1e3/1e6)/1e6,i.audioTrackCount=r.tracks.filter(e=>e.type===2).length,r.attachedImages&&a.push(`${r.attachedImages} attached image(s) ignored: ffprobe lists them as attached_pic video streams`);let o=r.tracks.filter(e=>e.type===1);if(!o.length)return a.push(`no video track`),i;i.primaryTrackId=o[0].number,i.videoTracks=o.map(e=>aa(r,e));let s=t.matroskaMode,c=null;if(s!==`header`&&(c=await _a(n,r),c===null&&a.push(`no Cluster found: nothing to scan`)),c===null)return o.forEach((e,t)=>sa(r,e,i.videoTracks[t])),i;let l=r.segmentEnd-c,u=o[0],d=r.tagDurations.get(u.uid)??oa(r),f=d>0&&u.defaultDuration>0?d*1e9/u.defaultDuration:0,p=await ua(n,o,c,l),m=pa(l,da(l,p,f),t),h=u.defaultDuration?null:await ma();if(s===`auto`){let e=typeof h==`object`&&h&&!h.setupUnsupported(r)?fa(l,p,t):0;s=m.ms<=t.exactBudgetMs+e?`exact`:`probe`;let n=e?` plus the ${e.toFixed(0)} ms that probe mode reads for the ffprobe estimate`:``;s===`probe`&&a.push(`exact block scan skipped: predicted ${m.ms.toFixed(0)} ms exceeds the ${t.exactBudgetMs} ms budget${n}`)}let g=i.videoTracks[0],v=e=>{typeof e!=`string`&&(g.avgFpsFfprobe=e.avg,g.rFpsFfprobe=e.r),g.warnings[g.warnings.indexOf(Ra)]=typeof e==`string`?`${La}not reproduced (${e})`:`${La}estimated like ffprobe from ${e.packets} video packets`};if(s===`exact`){n.window=m.window;let s=ci(r,n.size,o,t.maxExpandedSamples);m.window<t.readAhead.matroskaScan&&(s.switchReads=e.reads+2*m.reads+16,s.largeWindow=t.readAhead.matroskaScan);let l=typeof h==`object`&&h?h.attachEstimate(n,r,Ba,s):h;await ga(n,s,c,t),l!==null&&v(typeof l==`function`?await ha(n,l):l),i.scan=`exact`,a.push(...s.warnings),s.truncated&&a.push(`truncated file: the last Cluster or block ends beyond EOF`),s.missingClusterTs&&a.push(`${s.missingClusterTs} block(s) in Clusters without a Timestamp`),ca(r,s.maxAnyTicks,a);for(let[e,t]of o.entries()){let n=i.videoTracks[e];n.rateProfile=await Pe(Sa(n,s.tracks.get(t.number)))}return i}if(h!==null){let e=ci(r,n.size,[]),t=typeof h==`string`?h:h.attachEstimate(n,r,Ba,e,!0);v(typeof t==`string`?t:await ha(n,()=>Ci(n,e,c).then(t)))}return n.window=m.window===4096?$:t.readAhead.head,await xa(n,r,o,i.videoTracks,c,t,a),i.scan=`probe`,i}var wa,$,Ta,Ea,Da,Oa,ka,Aa,ja,Ma,Na,Pa,Fa,Ia,La,Ra,za,Ba,Va=t((()=>{u(),oe(),y(),$e(),Ar(),si(),Mi(),Vr(),wa=32768,$=4096,Ta=16777216,Ea=524288,Da=1048576,Oa=262144,ka=16777216,Aa=16384,ja=48,Ma=5e6,Na=4,Pa=268435456,Fa=new Set([231,236,191,167,171]),Ia=l.perBlockMs,La=`no DefaultDuration: avg_frame_rate and r_frame_rate `,Ra=`${La}come from the first packets, which header mode does not read`,za=`V_AV1:av1 V_VP8:vp8 V_VP9:vp9 V_MPEG4/ISO/AVC:h264 V_MPEGH/ISO/HEVC:hevc V_MPEGI/ISO/VVC:vvc V_MPEG4/ISO/ASP:mpeg4 V_MPEG4/ISO/AP:mpeg4 V_MPEG4/ISO/SP:mpeg4 V_MPEG4/MS/V3:msmpeg4v3 V_MPEG1:mpeg1video V_MPEG2:mpeg2video V_PRORES:prores V_MJPEG:mjpeg V_FFV1:ffv1 V_THEORA:theora V_UNCOMPRESSED:rawvideo V_DIRAC:dirac`,Ba={newScanState:ci,addBlock:mi}}));let Ha={isobmff:async()=>(await Promise.all([Promise.resolve().then(()=>(Un(),Sn)),Promise.resolve().then(()=>($e(),he))]))[0].analyzeIsoBmff,matroska:async()=>(await Promise.all([Promise.resolve().then(()=>(Va(),ea)),Promise.resolve().then(()=>($e(),he))]))[0].analyzeMatroska},Ua={isobmff:async(e,t)=>(await Ha.isobmff())(e,t),matroska:async(e,t)=>(await Ha.matroska())(e,t)};function Wa(e,t,n={},r=Ua,i=r===Ua?Ha:null){return j(e,t,n,i?e=>i[e]():e=>r[e])}let Ga=(e,t)=>Object.assign(Error(e),{code:t}),Ka=e=>e===`isobmff`||e===`matroska`;function qa(e){let t=self,n=new Map,r=new Map,i=e=>t.postMessage({v:1,...e}),a=t=>{let r=n.get(t);if(!r){let i=Object.hasOwn(e,t)?e[t]:void 0;if(!i)return Promise.reject(Ga(`unknown engine ${t}`,`unknown-engine`));r=(typeof i==`function`?Promise.all([i(),Promise.resolve().then(()=>($e(),he))]).then(([e])=>e):Promise.resolve(i)).catch(e=>{throw n.delete(t),e}),n.set(t,r)}return r},o=(e,t,n=!1,r=!1)=>{let a=t?.code,o=a===`unknown-engine`||a===`protocol`;i({type:`error`,id:e,message:A(t),aborted:n||ee(t),...o?{code:a}:r&&{reason:`load`}})},s=async e=>{let t=new AbortController;r.set(e.id,t);let n=0,s=!0;try{if(!(e.file instanceof Blob))throw Ga(`malformed analyze request`,`protocol`);let r=await a(e.engine);if(s=!1,r.containers!==`any`){let t=await O(e.file);if(!t||!r.containers.includes(t))return i({type:`skipped`,id:e.id,reason:`unsupported-container`,family:t})}let o=await r.run(e.file,e.name,{...e.options,signal:t.signal,onProgress:t=>{let r=performance.now();r-n<50||(n=r,i({type:`progress`,id:e.id,progress:t}))}});i({type:`result`,id:e.id,result:o})}catch(n){o(e.id,n,t.signal.aborted,s)}finally{r.delete(e.id)}},c=async e=>{try{if(![e.engines,e.containers].every(Array.isArray)||!e.containers.every(Ka))throw Ga(`malformed warm request`,`protocol`);await Promise.all(e.engines.map(async t=>(await a(t)).warm?.(e.containers))),i({type:`warmed`,id:e.id})}catch(t){o(e.id,t,!1,!0)}};t.onmessage=({data:e})=>{if(e?.v!==1)return o(e?.id??0,Ga(`unsupported protocol version ${e?.v}`,`protocol`));if(e.type===`cancel`)r.get(e.id)?.abort();else if(e.type===`analyze`)s(e);else if(e.type===`warm`)c(e);else{let t=e;o(t.id,Ga(`unknown request type ${t.type}`,`protocol`))}}}qa({own:{run:(e,t,n)=>Wa(e,t,n),containers:`any`,warm:async e=>{await Promise.all(e.map(e=>Ha[e]()))}}})})();
1
+ (function(){var e=Object.defineProperty,t=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},n=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r};function r(e){if(e?.aborted)throw e.reason??new DOMException(`Aborted`,`AbortError`)}var i=t((()=>{}));function a(e,t){let n={...e};if(!t)return n;for(let e of Object.keys(t)){let r=t[e];r!==void 0&&(n[e]=r)}return n}function o(e={}){return{...e,signal:e.signal??null,matroskaMode:e.matroskaMode??`auto`,exactBudgetMs:e.exactBudgetMs??150,readAhead:a(c,e.readAhead),costModel:a(l,e.costModel),maxExpandedSamples:e.maxExpandedSamples??5e6,onProgress:e.onProgress??null}}function s(e,t,n){return t*e.perReadMs+n/e.bytesPerMs}var c,l,u=t((()=>{c={head:65536,fragment:1048576,matroskaScan:1048576,tail:262144},l={perReadMs:.8,bytesPerMs:5e5,perBlockMs:2e-4}}));function d(e,t,n=RangeError){if(!Number.isSafeInteger(e)||e<0)throw new n(`${t} must be a non-negative safe integer, got ${e}`)}function f(e,t){return e.getUint8(t)*65536+e.getUint16(t+1)}function p(e,t,n){let r=``;for(let i=0;i<n;i++)r+=String.fromCharCode(e.getUint8(t+i));return r}function m(e,t){return p(e,t,4).replace(/[^ -~]/g,`?`)}function h(e,t){return Object.assign(Error(t),{errorCode:e})}function g(e,t=`internal`){return e?.errorCode??(e instanceof RangeError?`corrupt`:t)}var _,v=t((()=>{i(),_=class{size;headWindow;maxWindows;signal;#e;#t=[];#n=[];#r=0;#i=0;constructor(e,t={}){d(e.size,`blob size`,TypeError),this.#e=e,this.size=e.size,this.headWindow=t.headWindow??65536,this.maxWindows=Math.max(1,t.maxWindows??4),this.signal=t.signal??null,d(this.headWindow,`headWindow`,TypeError)}get reads(){return this.#r}get bytesFetched(){return this.#i}checkAbort(){r(this.signal)}async read(e,t){if(d(e,`offset`),d(t,`length`),e>this.size)throw RangeError(`offset ${e} is beyond the end of the file (${this.size})`);let n=Math.min(this.size,e+t);if(n===e)return new Uint8Array;this.checkAbort();let r;try{r=await this.#e.slice(e,n).arrayBuffer()}catch(e){throw this.checkAbort(),e?.name===`AbortError`?e:h(`read-failed`,`file read failed: ${e}`)}if(this.checkAbort(),this.#r++,r.byteLength!==n-e)throw h(`read-failed`,`file read failed: short read at ${e}: expected ${n-e} bytes, got ${r.byteLength}`);return this.#a(e,n),new Uint8Array(r)}async readMany(e,t=4){let n=Array(e.length),r=0,i=async()=>{for(;r<e.length;){let t=r++,[i,a]=e[t],o=this.peek(i,a);n[t]=o?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):await this.read(i,a)}},a=[];for(let n=0;n<Math.max(1,Math.min(t,e.length));n++)a.push(i());return await Promise.all(a),n}peek(e,t){let n=Math.min(this.size,e+t);for(let t=0;t<this.#t.length;t++){let r=this.#t[t];if(e>=r.off&&n<=r.off+r.buf.length)return t>0&&(this.#t.splice(t,1),this.#t.unshift(r)),new DataView(r.buf.buffer,r.buf.byteOffset+(e-r.off),n-e)}return null}async view(e,t,n=this.headWindow){if(d(e,`offset`),d(t,`length`),d(n,`readAhead`,TypeError),e>this.size)throw RangeError(`offset ${e} is beyond the end of the file (${this.size})`);let r=Math.min(this.size,e+t);if(r===e)return new DataView(new ArrayBuffer(0));let i=this.peek(e,r-e);if(i)return i;let a=Math.min(this.size,Math.max(r,e+n)),o=this.#t.find(t=>e>=t.off&&e<t.off+t.buf.length),s;if(o){let t=o.buf.subarray(e-o.off),n=await this.read(o.off+o.buf.length,a-(o.off+o.buf.length));s=new Uint8Array(t.length+n.length),s.set(t,0),s.set(n,t.length)}else s=await this.read(e,a-e);return this.#t.unshift({off:e,buf:s}),this.#t.length>this.maxWindows&&(this.#t.length=this.maxWindows),new DataView(s.buffer,s.byteOffset,r-e)}async bytes(e,t,n=this.headWindow){let r=await this.view(e,t,n);return new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}#a(e,t){let n=this.#n,r=0,i=n.length;for(;r<i;){let t=r+i>>>1;n[t].end<e?r=t+1:i=t}let a=r,o=e,s=t,c=0;for(;a<n.length&&n[a].start<=t;){let r=n[a],i=Math.min(t,r.end)-Math.max(e,r.start);i>0&&(c+=i),r.start<o&&(o=r.start),r.end>s&&(s=r.end),a++}n.splice(r,a-r,{start:o,end:s}),this.#i+=t-e-c}}}));function y(e,t=null){return{container:e,brand:null,formatDurationSec:null,scan:null,videoTracks:[],audioTrackCount:0,primaryTrackId:null,error:t,warnings:[]}}function b(e){return{trackId:e,fourccOrCodecId:``,codecName:``,width:0,height:0,rotation:0,timescale:0,frames:null,presentedFrames:null,durationSec:null,startSec:null,avgFps:null,avgFpsFfprobe:null,rFpsFfprobe:null,nominalFps:null,dominantFps:null,minFps:null,maxFps:null,isVfr:null,vfrRatio:0,distinctDeltas:0,duplicateTimestamps:0,timestampsQuantized:!1,isStill:!1,rateProfile:null,medianFrameInterval:null,provenance:{},warnings:[]}}var x=t((()=>{}));u(),v(),x();let S=new Set([`ftyp`,`moov`,`mdat`,`free`,`skip`,`wide`,`pnot`,`uuid`,`moof`,`styp`,`sidx`]),C=[26,69,223,163],w=[{bytes:[137,80,78,71,13,10,26,10],offset:0,label:`PNG image`},{bytes:[255,216,255],offset:0,label:`JPEG image`},{bytes:[71,73,70,56],offset:0,label:`GIF image`},{bytes:[82,73,70,70],offset:0,label:`RIFF file (AVI/WAV/WebP)`},{bytes:[79,103,103,83],offset:0,label:`Ogg file`},{bytes:[70,76,86,1],offset:0,label:`FLV file`},{bytes:[0,0,1,186],offset:0,label:`MPEG program stream`},{bytes:[37,80,68,70],offset:0,label:`PDF document`},{bytes:[80,75,3,4],offset:0,label:`ZIP archive`},{bytes:[73,68,51],offset:0,label:`MP3 file`}];function T(e,t,n){if(e.length<n+t.length)return!1;for(let r=0;r<t.length;r++)if(e[n+r]!==t[r])return!1;return!0}function E(e){for(let t=4;t<8;t++){let n=e[t];if(n<32||n>126)return!1}return!0}function D(e){let t=Math.min(e.length,512);if(t===0)return!1;for(let n=0;n<t;n++){let t=e[n];if(t!==9&&t!==10&&t!==13&&(t<32||t===127))return!1}return!0}function O(e){for(let t of w)if(T(e,t.bytes,t.offset))return t.label;return e.length>=188&&e[0]===71&&e[188]===71?`MPEG transport stream`:D(e)?`text file`:`no known signature`}function k(e){if(e.length===0)return{kind:`unknown`,reason:`empty file`};if(T(e,C,0))return{kind:`matroska`,reason:`EBML header 1A45DFA3`};if(e.length>=8&&E(e)){let t=String.fromCharCode(e[4],e[5],e[6],e[7]);if(S.has(t)){let n=e[0]*16777216+e[1]*65536+e[2]*256+e[3];if(n===0)return{kind:`isobmff`,reason:`top-level '${t}' box running to end of file`};if(n>=8)return{kind:`isobmff`,reason:`top-level '${t}' box`};if(n===1){if(e.length<16)return{kind:`unknown`,reason:`'${t}' box with a truncated 64-bit size`};let n=0;for(let t=8;t<16;t++)n=n*256+e[t];if(n>=16)return{kind:`isobmff`,reason:`top-level '${t}' box with 64-bit size`}}return{kind:`unknown`,reason:`'${t}' box with invalid size ${n}`}}}return e.length<8?{kind:`unknown`,reason:`too small (${e.length} bytes)`}:{kind:`unknown`,reason:O(e)}}async function ee(e){let{kind:t}=k(new Uint8Array(await e.slice(0,Math.min(1024,e.size)).arrayBuffer()));return t===`unknown`?null:t}i();function te(e,t){let{perReadMs:n,bytesPerMs:r}=t.costModel,i=t.readAhead.head;return e<Math.max(i,Math.min(i+n*r,1048576))?e:i}function ne(e){return e?.name===`AbortError`}function A(e){return e instanceof Error?e.message||e.name:String(e)}async function re(e,t,n,i){let a=performance.now(),s=o(n);r(s.signal);let c={name:t,size:e.size,...y(`unknown`),errorCode:null,layout:null,io:{reads:0,bytesRead:0,ms:0},engine:`own`},l=null,u=0,d=!1;try{if(l=new _(e,{headWindow:s.readAhead.head,signal:s.signal}),l.size===0)throw h(`empty-file`,`not a recognised container: empty file`);let t=k(await l.bytes(0,Math.min(1024,l.size),te(l.size,s)));if(t.kind===`unknown`)throw h(`unrecognised`,`not a recognised container: ${t.reason}`);c.container=t.kind===`isobmff`?`mp4`:`matroska`;let n=performance.now();d=!0;let r=await i(t.kind);d=!1,u=performance.now()-n,Object.assign(c,await r(l,s))}catch(e){if(s.signal?.aborted||ne(e))throw e;c.error=A(e),c.errorCode=g(e,d?`load-failed`:`internal`)}return l&&(c.io.reads=l.reads,c.io.bytesRead=l.bytesFetched),c.io.ms=performance.now()-a-u,c}function j(e){return e<0n?-e:e}function ie(e,t){for(;t!==0n;){let n=e%t;e=t,t=n}return e}function M(e,t){if(typeof e==`bigint`)return e;if(!Number.isSafeInteger(e))throw RangeError(`${t} must be a safe integer, got ${e}`);return BigInt(e)}function N(e,t,n=L){let r=M(e,`num`),i=M(t,`den`),a=M(n,`max`),o=0n,s=1n,c=1n,l=0n,u=r<0n!=i<0n,d=ie(j(r),j(i));for(d!==0n&&(r=j(r)/d,i=j(i)/d),r<=a&&i<=a&&(c=r,l=i,i=0n);i!==0n;){let e=r/i,t=r-i*e,n=e*c+o,u=e*l+s;if(n>a||u>a){if(c!==0n&&(e=(a-o)/c),l!==0n){let t=(a-s)/l;t<e&&(e=t)}i*(2n*e*l+s)>r*l&&(c=e*c+o,l=e*l+s);break}o=c,s=l,c=n,l=u,r=i,i=t}let f=Number(c);return{num:u?-f:f,den:Number(l),exact:i===0n}}function ae(e){return e.den===0?0:e.num/e.den}function P(e){return e?`${e.num}/${e.den}`:`0/0`}function F(e,t){return{num:e,den:t,value:ae({num:e,den:t})}}function I(e,t,n=L){let r=N(e,t,n);return F(r.num,r.den)}function oe(e,t,n){return t<=0||n<=0||e<=0?null:I(BigInt(e)*BigInt(t),n,L)}var L,se=t((()=>{L=2147483647})),ce=n({CUSUM_ALARM_PERIODS:()=>2,FREEZE_FACTOR:()=>4,FREEZE_MIN_SEC:()=>Qe,MAX_ANOMALIES:()=>50,MAX_BUCKETS:()=>120,MAX_SEGMENTS:()=>50,MIN_SEGMENT_FRAMES:()=>5,MIN_SEGMENT_SEC:()=>ue,UNEVEN_DOMINANT_SHARE:()=>de,rateProfile:()=>me});function le(e,t,n){e.t0=Math.min(e.t0,t.t0),e.t1=Math.max(e.t1,t.t1),e.frames+=t.frames,n?(e.n+=t.n,e.sum+=t.sum,e.ex+=t.ex):e.ex+=t.t1-t.t0}var ue,de,R,fe,pe,me,he=t((()=>{et(),ue=.5,de=.8,R=1+Xe,fe=e=>String(+e.toPrecision(4)),pe=e=>({t0:e,t1:e,n:0,sum:0,frames:0,ex:0,d:0,kind:`steady`}),me=(e,t,n,r)=>{let i=t,a=Qe*i,o=e=>i*e.n/e.sum,s=e=>e.n>=5&&e.t1-e.t0>=.5*i,c=[],l=e=>{let t=c[c.length-1];s(e)?c.push(e):t?.kind===`short`?le(t,e,!0):c.push({...e,kind:`short`})},u=pe(0),d=pe(0),f=pe(0),p=0,m=0,h=0,g=0,_=0,v=!1,y=()=>{u.t1=p,v?c.push({...u,kind:`hold`}):l(u),u=pe(p),v=!1,g=_=0},b=Math.min(120,Math.floor(n/2)),x=r/b,S=new Float64Array(b),C=(e,t)=>{u.n+=e,u.sum+=e*t,u.frames+=e,p+=e*t},w=(e,t)=>{let n=e;if(t<=0)u.frames+=n,h+=n;else{for(let e=p,r=e+n*t,i=Math.floor(e/x);e<r&&i<b;i++){let n=Math.min(r,(i+1)*x);n>e&&(S[i]+=(n-e)/t),e=Math.max(e,n)}for(;n>0;){let e=u.sum/u.n;if(u.n&&t>=Math.max(a,4*e)){y(),v=!0,C(1,t),n--;continue}if(v&&Math.abs(t-e)>.075*e&&y(),v=!1,!u.n){C(n,t);return}let r=t-e,i=Ze*e,o=2*e,s=Math.abs(r)>i,c=s?1:n;if(s&&(r>0?!g||r-i>o:!_)){let e={...u,t1:p,d:t};r>0?d=e:f=e}if(g=Math.max(0,g+c*(r-i)),_=Math.max(0,_-c*(r+i)),C(c,t),n-=c,g>o||_>o){let e=g>o?d:f,t=u.n-e.n-1;t>0&&Math.abs(Math.log(e.d*e.n/e.sum))<Math.abs(Math.log(e.d*t/(u.sum-e.sum-e.d)))&&(e.t1+=e.d,e.n++,e.sum+=e.d,e.frames++),u.t0=e.t1,u.n-=e.n,u.sum-=e.sum,u.frames-=e.frames,l(e),g=_=0}}}},T=0,E=0;if(e((e,t)=>{e>0&&(m+=e,T&&t!==E&&(w(T,E),T=0),T+=e,E=t)}),T&&w(T,E),!(p>0))return null;u.n?y():c[c.length-1].frames+=u.frames;let D=[],O=(e,t,n,r,a=t.t1-t.t0)=>{D.push({kind:e,atSec:t.t0/i,durationSec:a/i,fromFps:n,toFps:r})},k=[],ee=(e,t)=>e?Math.abs(Math.log(o(e)/t)):1/0;c.forEach((e,t)=>{let n=k[k.length-1];if(e.kind===`short`||e.kind===`hold`){let r=o(e),i=c[t+1]?.kind===`steady`?c[t+1]:void 0,l=ee(n,r)<=ee(i,r)?n:i;if(e.kind=s(e)?`variable`:`steady`,e.kind===`steady`&&l){let t=o(l),n=e.sum>=e.n*Math.max(a,4*l.sum/l.n)?`freeze`:r*R<t?`gap`:r>t*R?`burst`:null;n&&O(n,e,t,r),le(l,e,!n);return}}let r=n?o(e)/o(n):0;n?.kind===`steady`&&e.kind===`steady`&&r<R&&r*R>1?le(n,e,!0):k.push(e)});let te=k[k.length-1],ne=p+te.sum/te.n;te.frames+=n-m,te.t1=ne;for(let e=1;e<k.length;e++){let t=k[e-1],n=k[e],r=o(n)/o(t);(t.kind===`steady`&&n.kind===`steady`||r>=R||r*R<=1)&&O(`rate-change`,n,o(t),o(n),0)}D.sort((e,t)=>e.atSec-t.atSec);let A=k.filter(e=>e.kind===`steady`).map(e=>[o(e),e.t1-e.t0-e.ex,e.n]).sort((e,t)=>e[0]-t[0]),re=0,j=0,ie=0,M=0,N=0;for(let[e,t,n]of A){for(ie+=t,M+=n;e>=A[N][0]*R;N++)ie-=A[N][1],M-=A[N][2];re=Math.max(re,ie),j=Math.max(j,M)}let ae=re/ne,P=ae<.8||j<.8*(m-h)||A.length>1&&A[A.length-1][0]>=A[0][0]*R,F=k.slice(0,3).map(e=>`${e.kind===`variable`?`~`:``}${fe(o(e))} fps for ${fe((e.t1-e.t0)/i)} s`);k.length>3&&F.push(`+${k.length-3} more`);let I=``,oe=(e,t)=>{e&&(I+=`${I?`, `:`; `}${e} ${t}${e>1?`s`:``}`)};for(let e of[`freeze`,`gap`,`burst`])oe(D.filter(t=>t.kind===e).length,e);return oe(h,`duplicate timestamp`),{segments:k.slice(0,50).map(e=>({startSec:e.t0/i,endSec:e.t1/i,frames:e.frames,fps:o(e),kind:e.kind})),moreSegments:Math.max(0,k.length-50),anomalies:D.slice(0,50),moreAnomalies:Math.max(0,D.length-50),buckets:{bucketSec:x/i,fps:Array.from(S,e=>e*i/x)},uneven:P,dominantShare:ae,summary:`${P?`Uneven`:I?`Mostly steady`:`Steady`}: ${F.join(`, `)}${I}`}}})),ge=n({CUSUM_DRIFT:()=>Ze,FREEZE_FACTOR:()=>4,FREEZE_MIN_SEC:()=>Qe,MAX_REORDER_DEPTH:()=>16,RATE_CHANGE_RELATIVE:()=>Xe,SNAP_RELATIVE_TOLERANCE:()=>Je,VFR_RELATIVE_TOLERANCE:()=>Ye,analyzeTimeline:()=>Se,msGridTicks:()=>ve,rateFromTicks:()=>z,rateProfileOf:()=>Fe,reorderDepthFromCts:()=>be,snapToStandardRate:()=>_e,vfrTolerance:()=>ye});function _e(e,t=Je){if(!(e>0))return null;let n=null,r=1/0;for(let t of $e){let i=Math.abs(e-t.value)/t.value;i<r&&(r=i,n=t)}return r<=t?n:null}function ve(e,t){if(!(e>1e3)||t.length===0)return 0;for(let n of t){let t=n*1e3;if(!Number.isSafeInteger(t)||t%e!==0)return 0}return e/1e3}function ye(e,t,n){return Math.max(1,Math.round(Ye*e),ve(t,n))}function be(e,t,n){return!(t>e)||!(n>0)?0:Math.min(16,Math.ceil((t-e)/n))}function xe(e){if(Number.isInteger(e)||!(e>0))return null;let t=1e9/e,n=Math.round(t);return n>0&&Math.abs(t-n)<=1e-6*n?n:null}function z(e,t){let n=xe(e);return n!==null&&t>0&&Number.isSafeInteger(n*t)?I(1e9,n*t,2**53-1):Te(e,t,2**53-1)}function Se(e){let t=[],n=De(e.timescale,t);return`segments`in e?Ue(e,n,t):qe(e,n,t)}function Ce(e){return`counts`in e&&`deltas`in e?{n:Math.min(e.counts.length,e.deltas.length),counts:e.counts,values:e.deltas}:{n:e.length,counts:null,values:e}}function we(e){return e?`counts`in e&&`offsets`in e?{n:Math.min(e.counts.length,e.offsets.length),counts:e.counts,values:e.offsets}:{n:e.length,counts:null,values:e}:null}function Te(e,t,n=L){if(!(e>0)||!(t>0))return null;if(Number.isSafeInteger(e)&&Number.isSafeInteger(t))return I(e,t,n);let r=1e6,i=Math.round(e*r),a=Math.round(t*r);return Number.isSafeInteger(i)&&Number.isSafeInteger(a)?I(i,a,n):F(e/t,1)}function Ee(e,t,n){if(!(t>0)||!(n>0))return null;let r=xe(e);return r!==null&&Number.isSafeInteger(t)&&Number.isSafeInteger(n)?I(BigInt(t)*1000000000n,BigInt(r)*BigInt(n),L):Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&Number.isSafeInteger(n)?I(BigInt(e)*BigInt(t),n,L):Te(e*t,n)}function De(e,t){return e>0&&Number.isFinite(e)?e:(t.push(`invalid timescale ${e}, using 1`),1)}function Oe(e){return e?{ws:e.start,we:e.end>e.start?e.end:1/0}:{ws:-1/0,we:1/0}}function ke(e,t){return{timescale:e,sampleCount:0,durationSum:0,avgFps:null,avgFpsString:`0/0`,presentedAvgFps:null,presentedFrames:null,firstPts:null,lastPts:null,deltaCount:0,excludedTailDeltas:0,reorderDepth:0,duplicateTimestamps:0,discontinuities:0,histogram:[],distinctDeltas:0,minDelta:null,maxDelta:null,medianDelta:null,medianFrameInterval:null,meanDelta:null,tolerance:null,minFps:null,maxFps:null,isVfr:null,vfrRatio:0,nominalFps:null,dominantFps:null,timestampsQuantized:!1,profile:null,fastPath:!1,warnings:t}}function Ae(e,t,n,r,i,a){let o=e.timescale,s=e.isVfr===!1&&n-t<=(e.tolerance??0)&&n<2*t;return n>t*1.075&&!s?e=>e(r,o,i,a):null}function je(e,t){let n=e.medianDelta,r=e.timescale;!n||!t||t<4*n||t<.5*r||e.warnings.push(`last frame held ${(t/r).toFixed(3)} s (${(t/n).toFixed(1)}x the median frame interval): the average is below the frame rate`)}function Me(e,t){if(je(e,t),e.presentedFrames===null||e.presentedFrames<=0||e.firstPts===null||e.lastPts===null)return;let n=t>0?t:e.medianDelta??0;e.presentedAvgFps=Ee(e.timescale,e.presentedFrames,e.lastPts-e.firstPts+n)}function Ne(e,t){let n=0;for(let[r,i]of Be(e)){if(t<n+r)return i;n+=r}return 0}async function Pe(){try{let{rateProfile:e}=await Promise.resolve().then(()=>(he(),ce));return e}catch{return null}}async function Fe(e){let t=e&&await Pe();return t?e(t):null}function Ie(e,t){return e-t>=2?e-t:e}function Le(e,t,n){let r=e.timescale,i=[...t.keys()].sort((e,t)=>e-t),a=i.map(e=>[e,t.get(e)??0]),o=0,s=0;for(let[e,t]of a)o+=t,s+=e*t;if(e.histogram=a,e.distinctDeltas=i.length,o===0)return;let c=0,l=i[0];for(let[e,t]of a)if(c+=t,c*2>=o){l=e;break}let u=i[0],d=0;for(let[e,t]of a)t>d&&(u=e,d=t);let f=ve(r,i),p=Math.max(1,Math.round(Ye*l),f),m=0;for(let[e,t]of a)Math.abs(e-l)>p&&(m+=t);let h=i[0],g=i[i.length-1],_=o>=2&&m>0;e.minDelta=h,e.maxDelta=g,e.medianDelta=l;let v=z(r,l);if(e.medianFrameInterval=v&&F(v.den,v.num),e.meanDelta=s/o,e.tolerance=p,e.minFps=z(r,g),e.maxFps=z(r,h),e.isVfr=_,e.vfrRatio=m/o,i.length===1){let t=z(r,h);t&&(e.nominalFps={...t,kind:`exact`})}else if(_&&d*2>=o){let t=z(r,u);t&&(e.dominantFps={rate:t,share:d/o})}e.timestampsQuantized=(n||f>0)&&!_&&i.length>1}function Re(e){if(e.nominalFps||e.isVfr!==!1||e.distinctDeltas<2||!e.avgFps)return;let t=_e(e.meanDelta?e.timescale/e.meanDelta:e.avgFps.value);t&&(e.nominalFps={...t,kind:`snapped`})}function ze(e){let t={n:0,d:0,constantCts:!0,ctsValue:0,ctsMin:1/0,ctsMax:-1/0,firstDelta:0,negativeDurations:!1,discontinuities:0,startDts:0,ctsMismatch:0},n=!1,r=e=>{n?e!==t.ctsValue&&(t.constantCts=!1):(t.ctsValue=e,n=!0),e<t.ctsMin&&(t.ctsMin=e),e>t.ctsMax&&(t.ctsMax=e)},i=0;for(let n=0;n<e.length;n++){let a=e[n];a.baseDts!==void 0&&a.baseDts!==null&&(n===0?t.startDts=a.baseDts:a.baseDts!==i&&t.discontinuities++,i=a.baseDts);let o=Ce(a.durations),s=0;for(let e=0;e<o.n;e++){let n=o.counts?o.counts[e]:1;if(n<=0)continue;let r=o.values[e];s+=n,t.d+=n*r,i+=n*r,r<0&&(t.negativeDurations=!0),t.firstDelta===0&&r>0&&(t.firstDelta=r)}t.n+=s;let c=we(a.cts),l=0,u=0;if(c){for(let e=0;e<c.n;e++){let t=c.counts?c.counts[e]:1;if(t<=0)continue;u+=t;let n=Math.min(t,s-l);n<=0||(l+=n,r(c.values[e]))}u!==s&&t.ctsMismatch++}l<s&&r(0)}return n||(t.ctsMin=0,t.ctsMax=0),t}function*Be(e){for(let t of e){let e=Ce(t.durations);for(let t=0;t<e.n;t++){let n=e.counts?e.counts[t]:1;n>0&&(yield[n,e.values[t]])}}}function Ve(e,t,n,r){if(n===-1/0)return 0;if(n===1/0)return r;let i=t,a=0;for(let[t,r]of Be(e)){if(r===0){if(i<n){a+=t;continue}return a}if(i+(t-1)*r<n)a+=t,i+=t*r;else return a+Math.max(0,Math.min(t,Math.ceil((n-i)/r)))}return a}function He(e,t,n){let r=t,i=0;for(let[t,a]of Be(e)){if(n<i+t)return r+(n-i)*a;i+=t,r+=t*a}return r}function Ue(e,t,n){let r=e.segments,i=ze(r);i.ctsMismatch>0&&n.push(`composition offsets do not match the sample count in ${i.ctsMismatch} segment(s)`),i.discontinuities>0&&n.push(`decode timestamp discontinuities: ${i.discontinuities}`),i.negativeDurations&&n.push(`negative sample durations`),Number.isSafeInteger(i.d)||n.push(`duration sum exceeds 2^53-1`);let a=ke(t,n);if(a.sampleCount=i.n,a.durationSum=i.d,a.discontinuities=i.discontinuities,a.avgFps=Ee(t,i.n,i.d),a.avgFpsString=P(a.avgFps),i.n===0)return a.presentedFrames=0,a;let o=e.reorderDepth??be(i.ctsMin,i.ctsMax,i.firstDelta);a.reorderDepth=o;let s=1+o,{ws:c,we:l}=Oe(e.editWindow),u=e.tickQuantized??!1;if(!e.forceExpand&&i.constantCts&&i.discontinuities===0&&!i.negativeDurations){a.fastPath=!0;let e=i.startDts+i.ctsValue,t=Ve(r,e,c,i.n),n=Math.max(t,Ve(r,e,l,i.n));if(a.presentedFrames=n-t,n===t)return a;let o=He(r,e,t),d=He(r,e,n-1);a.firstPts=o,a.lastPts=d;let f=n-t-1,p=Ie(f,s),m=new Map,h=0,g=1/0,_=0;for(let[e,n]of Be(r)){if(h>=t+f)break;let r=Math.max(h,t),i=Math.min(h+e,t+f);if(i>r){if(n===0)a.duplicateTimestamps+=i-r;else{g=Math.min(g,n),_=Math.max(_,n);let i=Math.min(h+e,t+p);i>r&&(m.set(n,(m.get(n)??0)+(i-r)),a.deltaCount+=i-r)}}h+=e}return a.excludedTailDeltas=f-p,Le(a,m,u),Re(a),Me(a,Ne(r,n-1)),a.profile=Ae(a,g,_,e=>{let n=0;for(let[i,a]of Be(r)){if(n>=t+f)break;let r=Math.max(n,t),o=Math.min(n+i,t+f);o>r&&e(o-r,a),n+=i}},n-t,d-o),a}let d=e.maxExpandedSamples??5e6;if(i.n>d)return n.push(`per-sample analysis skipped: ${i.n} samples exceed the limit of ${d}`),a;let f=new Float64Array(i.n),p=0,m=0;for(let e of r){e.baseDts!==void 0&&e.baseDts!==null&&(m=e.baseDts);let t=p,n=Ce(e.durations);for(let e=0;e<n.n;e++){let t=n.counts?n.counts[e]:1,r=n.values[e];for(let e=0;e<t;e++)f[p++]=m,m+=r}let r=we(e.cts);if(r){let e=t;for(let t=0;t<r.n&&e<p;t++){let n=r.counts?r.counts[t]:1,i=r.values[t];for(let t=0;t<n&&e<p;t++)f[e++]+=i}}}let h=-1;for(let e=0;e<f.length;e++){let t=f[e];t>=c&&t<l&&(h<0||t>=f[h])&&(h=e)}let g=h>=0?Ne(r,h):0;return Ge(a,We(f,c,l),s,u),Me(a,g),Re(a),a}function We(e,t,n){let r=e.length;if(t!==-1/0||n!==1/0){r=0;for(let i=0;i<e.length;i++){let a=e[i];a>=t&&a<n&&(e[r++]=a)}}let i=e.subarray(0,r);for(let e=1;e<r;e++)if(i[e]<i[e-1]){i.sort();break}return i}function Ge(e,t,n,r){let i=t.length;if(e.presentedFrames=i,i===0)return;e.firstPts=t[0],e.lastPts=t[i-1];let a=i-1,o=Ie(a,n),s=new Map,c=1/0,l=0;for(let n=1;n<=a;n++){let r=t[n]-t[n-1];r<=0?e.duplicateTimestamps++:(c=Math.min(c,r),l=Math.max(l,r),n<=o&&(s.set(r,(s.get(r)??0)+1),e.deltaCount++))}e.excludedTailDeltas=a-o,Le(e,s,r),e.profile=Ae(e,c,l,e=>{for(let n=1;n<=a;n++)e(1,t[n]-t[n-1])},i,t[a]-t[0])}function Ke(e){let t=-1/0,n=0;for(let r=0;r<e.length;r++){let i=e[r];i>t?t=i:t-i>n&&(n=t-i)}return n}function qe(e,t,n){let r=e.pts,i=r.length,a=ke(t,n);if(a.sampleCount=i,i===0)return a.presentedFrames=0,a;let o=1/0,s=-1/0;for(let e=0;e<i;e++){let t=r[e];t<o&&(o=t),t>s&&(s=t)}let{ws:c,we:l}=Oe(e.editWindow),u=We(Float64Array.from(r),c,l),d=e.reorderDepth;if(d===void 0){let t=0;for(let e=1;e<u.length;e++){let n=u[e]-u[e-1];if(n>0){t=n;break}}d=e.ctsRange?be(e.ctsRange.min,e.ctsRange.max,t):be(0,Ke(r),t)}a.reorderDepth=d,Ge(a,u,1+d,e.tickQuantized??!1),je(a,e.lastDuration);let f=e.lastDuration??a.medianDelta??0;return a.durationSum=s-o+f,a.avgFps=Ee(t,i,a.durationSum),a.avgFpsString=P(a.avgFps),a.presentedAvgFps=a.avgFps,Re(a),a}var Je,Ye,Xe,Ze,Qe,$e,et=t((()=>{se(),u(),Je=.001,Ye=.005,Xe=.15,Ze=Xe/2,Qe=.5,$e=(()=>{let e=[];for(let t of[24,30,48,60,120,240])e.push(F(t*1e3,1001));for(let t=1;t<=240;t++)e.push(F(t,1));return e})()}));function B(e,t,n,r=0){let i=Math.min(e.byteLength,n);if(t+8>i)return null;let a=e.getUint32(t),o=m(e,t+4),s=8,c=a;if(a===1){if(t+16>i)return null;let n=e.getBigUint64(t+8);if(n>BigInt(2**53-1))throw new H(`corrupt`,`corrupt file: box '${o}' at ${r+t} has a size above 2^53-1`);c=Number(n),s=16}else a===0&&(c=n-t);if(o===`uuid`&&(s+=16),c<s)throw new H(`corrupt`,`corrupt file: box '${o}' at ${r+t} is smaller than its header`);let l=t+c;return{type:o,start:t,size:c,headerSize:s,end:Math.min(l,n),truncated:l>n}}function*V(e,t,n,r){let i=t;for(;i+8<=n;){let t;try{t=B(e,i,n)}catch(e){r?.push(e.message.replace(/^corrupt file: /,`ignored invalid child: `));return}if(!t)return;yield t,i=t.start+t.size}}function tt(e,t,n,r){let i=e.getBigUint64(t);if(i>BigInt(2**53-1))throw new H(`unsupported`,`unsupported: box '${n}' at ${r} holds a value above 2^53-1`);return Number(i)}function nt(e,t,n,r){let i=e.getBigInt64(t);if(i>BigInt(2**53-1)||i<-BigInt(2**53-1))throw new H(`unsupported`,`unsupported: box '${n}' at ${r} holds a value beyond 2^53-1`);return Number(i)}function rt(e,t,n,r,i){let a=Math.max(0,Math.floor(t/n));return e>a?(i.push(`${r} declares ${e} entries but its box holds only ${a}`),a):e}var H,it=t((()=>{v(),H=class extends Error{constructor(e,t){super(t),this.name=`IsoBmffError`,this.errorCode=e}}}));function at(){if(lt)return lt;lt=new Map;for(let e of ct.split(`|`)){let t=e.indexOf(`:`),n=e.slice(0,t);for(let r=t+1;r+4<=e.length;r+=4)lt.set(e.slice(r,r+4),n)}return lt}function ot(e){return at().has(e)}function st(e,t=null,n=!1){return t!==null&&ut[t]?ut[t]:e===`dvh1`&&n?`hevc`:at().get(e)??`unknown`}var ct,lt,ut,dt=t((()=>{ct=`rawvideo:raw yuv22vuyyuvs|v210:v210|mjpeg:jpegmjpaAVDJAVRndmb1|mpeg4:mp4vDIVXXVID3IV2|h263:h263s263H263|dvvideo:dvcpdvc dvppdv5pdv5nAVdvAVd1dvhqdvhpdvh1dvh2dvh3dvh4dvh5dvh6|qtrle:rle |cinepak:cvid|svq1:SVQ1svq1svqi|svq3:SVQ3|vvc:vvc1vvi1|hevc:hev1hvc1dvhe|h264:avc1avc2avc3avc4ai5pai5qai52ai53ai55ai56ai1pai1qai12ai13ai15ai16AVinaivxdva1dvav|evc:evc1|vp8:vp08|vp9:vp09|av1:av01|mpeg1video:m1v m1v1mpegmp1v|mpeg2video:m2v1hdv1hdv2hdv3hdv4hdv5hdv6hdv7hdv8hdv9hdvamx5nmx5pmx4nmx4pmx3nmx3pxd51xd54xd55xd59xd5axd5bxd5cxd5dxd5exd5fxdv1xdv2xdv3xdv4xdv5xdv6xdv7xdv8xdv9xdvaxdvbxdvcxdvdxdvexdvfxdhdxdh2AVmpmp2v|jpeg2000:mjp2|png:png MNG |gif:gif |tiff:tiff|vc1:vc-1|cavs:avs2|avs3:avs3|dirac:drac|dnxhd:AVdnAVdh|prores:apchapcnapcsapcoap4hap4x|prores_raw:aprnaprh|hap:Hap1Hap5HapYHapAHapM|cfhd:CFHD|lcevc:lvc1|apv:apv1`,lt=null,ut={32:`mpeg4`,33:`h264`,35:`hevc`,51:`vvc`,96:`mpeg2video`,97:`mpeg2video`,98:`mpeg2video`,99:`mpeg2video`,100:`mpeg2video`,101:`mpeg2video`,106:`mpeg1video`,108:`mjpeg`,109:`png`,110:`jpeg2000`,163:`vc1`,164:`dirac`,177:`vp9`}}));function ft(e){let t=0;for(let n=256;n<=2048;n<<=1)e&n&&(t+=4);return t}function pt(e,t,n,r,i,a,o=i+t-8){if(t+8>n)return null;let s=f(e,t+1),c=e.getUint32(t+4),l=r.trex.get(c),u=t+8,d=e=>u+e<=n,p=s&131072?i:a;if(s&1){if(!d(8))return null;p=tt(e,u,`tfhd`,o),u+=8}s&2&&(u+=4);let m=l?l.duration:null;if(s&8){if(!d(4))return null;m=e.getUint32(u),u+=4}let h=l?l.size:0;if(s&16){if(!d(4))return null;h=e.getUint32(u)}return{flags:s,trackId:c,baseDataOffset:p,defaultDuration:m,defaultSize:h,trexMissing:!l}}function mt(e,t,n,r,i,a,o,s){let c=f(e,t+1),l=e.getUint32(t+4),u=t+8,d=i;c&1&&(d=r.baseDataOffset+e.getInt32(u),u+=4),c&4&&(u+=4);let p=ft(c),m;p>0?m=rt(l,n-u,p,`trun`,o):(m=l,m>s&&(o.push(`trun count ${l} limited to ${s}`),m=s));let h=p>0&&m<l,g=!!(c&256);if(!g&&r.defaultDuration===null&&m>0)throw new H(`corrupt`,`corrupt file: no sample duration for track ${r.trackId}`);let _=r.defaultDuration??0,v=g?new Uint32Array(m):null,y=c&2048?new Int32Array(m):null,b=!!(c&512),x=g?0:_*m,S=d,C=0,w=0;if(p>0)for(let t=0;t<m;t++){if(g){let n=e.getUint32(u);v[t]=n,x+=n,u+=4}let n=r.defaultSize;b&&(n=e.getUint32(u),u+=4),c&1024&&(u+=4),y&&(y[t]=e.getInt32(u),u+=4),S<a&&C++,w===t&&S+n<=a&&w++,S+=n}if(!b){let e=r.defaultSize,t=Math.max(0,a-d);C=e>0?Math.min(m,Math.ceil(t/e)):Math.min(m,t),w=e>0?Math.min(m,Math.floor(t/e)):C,S=d+e*m}return{fragment:{moofIndex:0,baseDts:null,count:m,durations:v,defaultDuration:_,cts:y,durationSum:x,present:C,complete:w,trexMissing:r.trexMissing,overrun:h},dataEnd:S}}function ht(e,t,n,r,i,a){let o=n,s=!1,c=e=>{i.ffprobeReject||={moof:r,reason:e}},l=new Map;for(let e of i.tracks)l.has(e.id)||l.set(e.id,e);for(let u of V(e,t.start+t.headerSize,t.end,i.warnings)){if(u.type!==`traf`)continue;let t=null,d,f=null,p=0;for(let m of V(e,u.start+u.headerSize,u.end,i.warnings)){let u=m.start+m.headerSize;if(m.type===`tfhd`){if(t=pt(e,u,m.end,i,n,o,n+m.start),!t)continue;t.trackId===0?c(`rejects this file: tfhd with track_ID 0`):t.trexMissing||(s=!0),p=t.baseDataOffset,d=l.get(t.trackId),d||i.warnings.push(`fragment for unknown track ${t.trackId}`)}else if(m.type===`tfdt`&&u+8<=m.end)f=e.getUint8(u)===1&&u+12<=m.end?tt(e,u+4,`tfdt`,n+m.start):e.getUint32(u+4);else if(m.type===`trun`&&u+8<=m.end){if(s?(!t||t.trexMissing)&&c(`misreads this file: a traf without trex is read as another track`):c(`rejects this file: trun without a tfhd that has a trex`),!t||!d)continue;let n=d,{fragment:l,dataEnd:h}=mt(e,u,m.end,t,p,i.fileSize,n.warnings,a);l.moofIndex=r,l.baseDts=f,f=null,p=h,o=h,l.trexMissing&&!n.warnings.includes(_t)&&n.warnings.push(_t),n.fragments.push(l)}}}}function gt(e,t,n){let r=t.start+t.headerSize,i=r<t.end&&e.getUint8(r)===1;if(r+(i?32:24)>t.end)throw new H(`corrupt`,`corrupt file: box 'sidx' at ${n} is truncated`);let a=r+12,o=i?tt(e,a,`sidx`,n):e.getUint32(a),s=i?tt(e,a+8,`sidx`,n):e.getUint32(a+4);a+=i?16:8;let c=e.getUint16(a+2);a+=4;let l=n+(t.end-t.start),u=l+s,d=0,f=!1,p=[];for(let n=0;n<c&&a+12<=t.end;n++,a+=12){let t=e.getUint32(a);t&2147483648&&(f=!0);let n=t&2147483647;p.push([u,n]),u+=n,d+=e.getUint32(a+4)}return{start:n,end:l,referenceId:e.getUint32(r+4),timescale:e.getUint32(r+8),earliestPts:o,firstOffset:s,coverageEnd:u,durationSum:d,subsegments:p,hierarchical:f}}var _t,vt=t((()=>{v(),it(),_t=`no trex: sample defaults taken from tfhd`}));function yt(e){return{fileSize:e,brand:null,compatibleBrands:[],hasFtyp:!1,hasMvhd:!1,timescale:1,duration:0,matrix:Int32Array.from(St),tracks:[],chapterTrackIds:new Set,hasMvex:!1,trex:new Map,moofCount:0,topLevel:[],truncated:!1,ffprobeMoofLimit:1/0,ffprobeReject:null,warnings:[]}}function bt(){return{id:0,enabled:!1,handler:``,timescale:0,hasMdhd:!1,mdhdDuration:0,matrix:Int32Array.from(St),sampleEntry:``,originalFormat:null,stsdCount:0,width:0,height:0,esdsObjectType:null,hasHvcc:!1,sttsCounts:new Uint32Array,sttsDeltas:new Uint32Array,cttsCounts:null,cttsOffsets:null,dtsShift:0,sampleCount:null,sampleSize:0,overruns:[],edits:[],fragments:[],warnings:[],dv:null,stss:null,stsz:null,stz2:null,stsc:null,stco:null,co64:null}}var xt,St,Ct=t((()=>{xt=2**53-1,St=[65536,0,0,0,65536,0,0,0,1<<30]}));function U(e,t,n,r=0){return wt(V(e,t.start+t.headerSize+r,t.end,n.warnings),n,t.type)}function*wt(e,t,n){for(let r of e){if(r.truncated){if(t.strict)throw new H(`truncated`,`incomplete file: moov is truncated`);t.warnings.push(`'${r.type}' overruns '${n}'`)}yield r}}function W(e){return e.start+e.headerSize}function Tt(e,t){let n=new Int32Array(9);for(let r=0;r<9;r++)n[r]=e.getInt32(t+r*4);return n}function Et(e){return e>0&&e<=2147483647?e:1}function G(e){return{start:W(e),end:e.end}}function Dt(e,t,n){let r=W(t);if(r+8>t.end)return;let i=e.getUint32(r+4),a=rt(i,t.end-r-8,8,`stts`,n.warnings);a<i&&n.overruns.push(`stts`);let o=new Uint32Array(a),s=new Uint32Array(a),c=!1;for(let t=0;t<a;t++)o[t]=e.getUint32(r+8+t*8),s[t]=e.getUint32(r+12+t*8),s[t]>4294487295&&(c=!0);c&&Ot(o,s,n.warnings),n.sttsCounts=o,n.sttsDeltas=s}function Ot(e,t,n){let r=0n,i=0n;for(let a=0;a<e.length;a++){let o=BigInt(e[a]),s=t[a];if(s>4294487295){n.push(`stts delta ${s} clipped to 1`);let e=s|0;s=1,i+=BigInt(e<0?e:1)*o}else i+=BigInt(s)*o;if(r+=BigInt(s)*o,r>i){let e=(r-i)/(o>0n?o:1n),t=BigInt(s)>e?e:BigInt(s-1>>>0);r-=t*o,s=Number(BigInt(s)-t&4294967295n)}t[a]=s}}function kt(e,t,n){let r=W(t);if(r+8>t.end)return;let i=e.getUint32(r+4),a=rt(i,t.end-r-8,8,`ctts`,n.warnings);if(a<i&&n.overruns.push(`ctts`),a===0)return;let o=[],s=[],c=0;for(let t=0;t<a;t++){let n=e.getInt32(r+8+t*8),a=e.getInt32(r+12+t*8);n<=0||(o.push(n),s.push(a),t+2<i&&a<0&&(c=Math.max(c,a===-2147483648?2147483647:-a)))}n.cttsCounts=Uint32Array.from(o),n.cttsOffsets=Int32Array.from(s),n.dtsShift=c}function At(e,t,n,r,i){let a=W(t);if(a+8>t.end)return;let o=e.getUint8(a),s=o===1?20:12,c=e.getUint32(a+4),l=t.end-a-8,u=c*s===l?c:Math.floor(l/s);if(u!==c&&n.warnings.push(`elst declares ${c} entries but its box holds ${u}`),u===0)return;n.edits.length&&(n.warnings.push(`duplicated elst: the last one is used`),n.edits=[]);let d=r.base+t.start;for(let t=0;t<u;t++){let r=a+8+t*s;if(o===1){let t=nt(e,r+8,`elst`,d),a=e.getBigInt64(r)===-1n;a&&(n.warnings.push(`unknown elst duration: ${t===-1?`the empty edit is ignored`:`the edit lasts to the end`}`),i.ffprobeReject??={moof:-1,reason:`rejects this file: an elst duration of -1`}),n.edits.push({duration:a?t===-1?0:xt:tt(e,r,`elst`,d),mediaTime:t,rate:e.getInt32(r+16)/65536})}else n.edits.push({duration:e.getUint32(r),mediaTime:e.getInt32(r+4),rate:e.getInt32(r+8)/65536})}}function jt(e,t,n){let r=t+4,i=()=>{if(r+2>n)return null;let t=e.getUint8(r++),i=0;for(let t=0;t<4&&r<n;t++){let t=e.getUint8(r++);if(i=i*128+(t&127),!(t&128))break}return[t,i]},a=i();if(a&&a[0]===3){if(r+3>n)return null;let t=e.getUint8(r+2);r+=3,t&128&&(r+=2),t&64&&r<n&&(r+=1+e.getUint8(r)),t&32&&(r+=2),a=i()}return a&&a[0]===4&&r<n?e.getUint8(r):null}function Mt(e,t,n,r){let i=W(t);if(i+8>t.end||(n.stsdCount=e.getUint32(i+4),n.stsdCount===0))return;let a;try{a=B(e,i+8,t.end)}catch(e){n.warnings.push(e.message);return}if(a&&(n.sampleEntry=a.type,!(n.handler===`soun`||a.start+86>a.end))){n.width=e.getUint16(a.start+32),n.height=e.getUint16(a.start+34);for(let t of V(e,a.start+86,a.end,r.warnings))if(t.type===`esds`)n.esdsObjectType=jt(e,W(t),t.end);else if(t.type===`hvcC`)n.hasHvcc=!0;else if(t.type===`sinf`)for(let i of V(e,W(t),t.end,r.warnings))i.type===`frma`&&W(i)+4<=i.end&&(n.originalFormat=m(e,W(i)))}}function Nt(e,t,n,r){for(let i of U(e,t,r)){let t=W(i);switch(i.type){case`stsd`:Mt(e,i,n,r);break;case`stts`:Dt(e,i,n);break;case`ctts`:kt(e,i,n);break;case`stsz`:case`stz2`:t+12<=i.end&&(n.sampleCount=e.getUint32(t+8),n.sampleSize=i.type===`stsz`?e.getUint32(t+4):0),i.type===`stsz`?n.stsz=G(i):n.stz2=G(i);break;case`stss`:n.stss=G(i),t+8<=i.end&&e.getUint32(t+4)>Math.floor((i.end-t-8)/4)&&n.overruns.push(`stss`);break;case`stsc`:n.stsc=G(i);break;case`stco`:n.stco=G(i);break;case`co64`:n.co64=G(i)}}}function Pt(e,t,n,r){for(let i of U(e,t,r)){let t=W(i);if(i.type===`mdhd`&&t+24<=i.end){let r=e.getUint8(t)===1;if(r&&t+32>i.end)continue;n.hasMdhd=!0;let a=e.getUint32(t+(r?20:12));if(n.timescale=Et(a),n.timescale!==a&&n.warnings.push(`invalid mdhd timescale ${a}, using 1`),r){let r=e.getBigUint64(t+24);n.mdhdDuration=r===18446744073709551615n?0:Number(r)}else{let r=e.getUint32(t+16);n.mdhdDuration=r===Lt?0:r}}else if(i.type===`hdlr`&&t+12<=i.end)n.handler=m(e,t+8);else if(i.type===`minf`)for(let t of U(e,i,r))t.type===`stbl`&&Nt(e,t,n,r)}}function Ft(e,t,n,r){let i=bt();i.dv=e;for(let a of U(e,t,r)){let t=W(a);if(a.type===`tkhd`&&t+84<=a.end){let n=e.getUint8(t)===1;if(n&&t+96>a.end)continue;i.enabled=(e.getUint8(t+3)&1)==1,i.id=e.getUint32(t+(n?20:12)),i.matrix=Tt(e,t+(n?52:40))}else if(a.type===`edts`)for(let t of U(e,a,r))t.type===`elst`&&At(e,t,i,r,n);else if(a.type===`mdia`)Pt(e,a,i,r);else if(a.type===`tref`){for(let t of U(e,a,r))if(t.type===`chap`)for(let r=W(t);r+4<=t.end;r+=4)n.chapterTrackIds.add(e.getUint32(r))}}return i}function It(e,t,n,r,i=0){let a={strict:r,warnings:n.warnings,base:i};for(let r of U(e,t,a)){let t=W(r);switch(r.type){case`mvhd`:{if(t+24>r.end)break;let i=e.getUint8(t)===1;if(i&&t+84>r.end)break;n.hasMvhd=!0,n.timescale=Et(e.getUint32(t+(i?20:12))),n.duration=i?Number(e.getBigUint64(t+24)):e.getUint32(t+16),t+(i?84:72)<=r.end&&(n.matrix=Tt(e,t+(i?48:36)));break}case`trak`:n.tracks.push(Ft(e,r,n,a));break;case`mvex`:n.hasMvex=!0;for(let t of U(e,r,a)){let r=W(t);t.type===`trex`&&r+24<=t.end&&n.trex.set(e.getUint32(r+4),{duration:e.getUint32(r+12),size:e.getUint32(r+16)})}break;case`cmov`:throw new H(`unsupported`,`unsupported: compressed movie header (cmov)`)}}}var Lt,Rt=t((()=>{v(),it(),Ct(),Lt=4294967295}));function zt(){return{windows:[],hints:[],next:0,mfraTried:!1}}function Bt(e,t,n){for(let[r,i]of e.windows)if(t>=r&&t+n<=r+i.byteLength)return new DataView(i.buffer,i.byteOffset+t-r,n);return null}async function Vt(e,t,n,r){for(;t.next<t.hints.length&&t.hints[t.next]<=n;)t.next++;let i=[];for(let n=t.next;n<t.hints.length&&i.length<8;n++)t.hints[n]<e.size&&i.push([t.hints[n],Math.min(r,e.size-t.hints[n])]);if(t.next+=i.length,!i.length)return;let a=await e.readMany(i,4);t.windows=i.map(([e],t)=>[e,new DataView(a[t].buffer,a[t].byteOffset,a[t].byteLength)]),t.windows.every(([,e])=>Ht(e))||(t.hints=[],t.next=0)}function Ht(e){return e.byteLength>=8&&e.getUint32(0)>=8&&Jt.has(m(e,4))}function Ut(e,t,n,r,i=2**53-1){for(let a of V(e,t,n)){let t=a.start+a.headerSize;if(a.type!==`tfra`||t+16>a.end)continue;let n=e.getUint8(t)===1,o=e.getUint32(t+8),s=(n?16:8)+(o>>4&3)+(o>>2&3)+(o&3)+3,c=Math.min(e.getUint32(t+12),Math.floor((a.end-t-16)/s));for(let a=0;a<c;a++){let o=t+16+a*s,c=n?e.getBigUint64(o+8):BigInt(e.getUint32(o+4));c>0n&&c<BigInt(i)&&r.add(Number(c))}}}async function Wt(e){try{return await Gt(e)}catch(t){if(e.signal?.aborted||t?.name===`AbortError`)throw t;return[]}}async function Gt(e){let t=e.size,n=Math.min(t,Kt);if(n<16)return[];let r=await e.view(t-n,n,0);if(m(r,n-12)!==`mfro`)return[];let i=r.getUint32(n-4);if(i<24||i>Math.min(t,qt))return[];let a=i<=n?new DataView(r.buffer,r.byteOffset+n-i,i):await e.view(t-i,i,0),o;try{o=B(a,0,i)}catch{return[]}if(!o||o.type!==`mfra`)return[];let s=new Set;return Ut(a,o.headerSize,o.end,s,t),[...s].sort((e,t)=>e-t)}var Kt,qt,Jt,Yt=t((()=>{v(),it(),Kt=65536,qt=16777216,Jt=new Set([`moof`,`styp`,`sidx`,`ssix`,`emsg`,`prft`,`free`,`skip`,`uuid`])}));function K(e,t,n){if(!(n>0))return 0;let r=BigInt(Math.abs(e))*BigInt(t),i=BigInt(n),a=Number((r+i/2n)/i);return e<0?-a:a}function Xt(e){let t=0,n=0;for(let r=0;r<e.sttsCounts.length;r++)t+=e.sttsCounts[r],n+=e.sttsCounts[r]*e.sttsDeltas[r];let r=0;for(let t of e.fragments)r+=t.count;return{moovSamples:t,moovDuration:n,fragmentSamples:r}}function Zt(e,t,n){let r=0n,i=0n;if(n){for(let t=0;t<e.sttsCounts.length;t++)r+=BigInt(e.sttsCounts[t]),i+=BigInt(e.sttsCounts[t])*BigInt(e.sttsDeltas[t]);i<=0n&&(r=0n,i=0n)}for(let n of e.fragments)t(n.moofIndex,n.trexMissing)&&(r+=BigInt(n.count),i+=BigInt(n.durationSum));return[r,i]}function Qt(e,t,n){return t<=0n||n<=0n?null:I(BigInt(e)*t,n,L)}function $t(e,t){let n=e.timescale,r=(e,n)=>e<t.ffprobeMoofLimit&&!n,[i,a]=Zt(e,()=>!0,!0),[o,s]=Zt(e,r,!0),c=e.overruns.includes(`stts`)||e.fragments.some(e=>e.overrun&&r(e.moofIndex,e.trexMissing))?null:Qt(n,o,s);return{avg:Qt(n,i,a),ffprobe:c?P(c):null}}function en(e){let t=e.dv,n=e=>t&&e&&e.start+8<=e.end?t.getUint32(e.start+4):0,r=n(e.co64??e.stco),i=e.sttsCounts.length>0||e.overruns.includes(`stts`),a=e.sampleCount??0;return r>0&&(!i||n(e.stsc)===0||e.sampleSize===0&&a===0)||a>0&&r===0}function tn(e,t,n){let r=0,i=0,a=0,o=null,s=(e.cttsOffsets?.[0]??0)+n.moovDuration;for(let n of e.edits){let c=n.duration===xt?Math.max(0,s-n.mediaTime):K(n.duration,e.timescale,t);i+=c,n.mediaTime===-1?o||(r+=c):(a++,o||={mediaTime:n.mediaTime,duration:c,rate:n.rate})}return{emptyBefore:r,firstMedia:o,editSum:i,mediaEdits:a}}function nn(e,t,n,r){let i=e.mdhdDuration;n.moovDuration>0&&(i=Math.min(i,n.moovDuration));let a=e.edits.length>0&&n.moovSamples>0;a&&(i=Math.min(i,r.editSum));let o=n.moovDuration,s=null,c=an(e,t);for(let t of e.fragments)t.baseDts!==null&&(o=t.baseDts),s===null&&t.count>0&&(s=o-c+(t.cts?t.cts[0]:0)),o+=t.durationSum,o>i&&(i=o);let l=rn(e,t);l!==null&&l>i&&(i=l);let u=null;return u=a?r.emptyBefore:n.moovSamples>0?e.cttsOffsets&&e.cttsOffsets.length?e.cttsOffsets[0]:0:s,{durationTs:i,startPts:u}}function rn(e,t){if(t.ffprobeMoofLimit===1/0)return null;let n=0,r=null;for(let i of t.topLevel){if(i.type===`moof`&&++n>t.ffprobeMoofLimit)break;let a=i.sidx;a&&!a.hierarchical&&a.referenceId===e.id&&a.timescale===e.timescale&&(r=a.earliestPts+a.durationSum)}return r}function an(e,t){let n=0,r=0,i=0;return e.edits.forEach((e,t)=>{t===0&&e.mediaTime===-1?(n=e.duration,i=1):t===i&&e.mediaTime>=0&&(r=e.mediaTime)}),!n&&!r?0:r-K(n,e.timescale,t.timescale)}function on(e,t,n){let r=new Float64Array(e.length+1),i=new Float64Array(e.length),a=0,o=0;for(let s=0;s<e.length&&o<n;s++)e[s]<=0||(r[a]=o,i[a]=t[s],o+=Math.min(e[s],n-o),a++);return r[a]=o,{count:a,starts:r,values:i,total:o}}function sn(e){let t=e.starts,n=0;return r=>{if(r>=t[n]&&r<t[n+1])return n;let i=0,a=e.count-1;for(;i<a;){let e=Math.ceil((i+a)/2);t[e]<=r?i=e:a=e-1}return n=i,i}}function cn(e,t){let n=e.stss;if(!n||!e.dv)return{all:!0,list:new Float64Array};let r=e.dv,i=n.start+8<=n.end?Math.min(r.getUint32(n.start+4),Math.floor((n.end-n.start-8)/4)):0;if(i===0)return{all:!1,list:Float64Array.of(0)};let a=+(r.getUint32(n.start+8)>0),o=new Float64Array(i),s=0,c=-1;for(let e=0;e<i;e++){let i=r.getUint32(n.start+8+e*4)-a;if(i<=c||i>=t)break;o[s++]=i,c=i}return{all:!1,list:o.subarray(0,s)}}function ln(e,t,n){if(n>=t)return-1;if(e.all)return n;let r=e.list,i=0,a=r.length;for(;i<a;){let e=Math.floor((i+a)/2);r[e]<n?i=e+1:a=e}return i<r.length?r[i]:-1}function un(e,t){if(t<0)return-1;if(e.all)return t;let n=e.list,r=0,i=n.length;for(;r<i;){let e=Math.floor((r+i)/2);n[e]<=t?r=e+1:i=e}return r>0?n[r-1]:-1}function dn(e,t,n){let r=n;r<=0||e.len===0&&(e.first=t,e.last=t,e.len=1,r--,r===0)||((e.len>=2&&e.last!==e.first||r>=2&&t!==e.first)&&(e.bad=!0),e.last=t,e.len+=r)}function fn(e,t,n,r,i){let a=r,o=Math.min(i,t.total-r),s=0;for(;o>0&&!e.bad;){let r=n(a),i=Math.min(t.starts[r+1]-a,o);dn(e,t.values[r],i),a+=i,o-=i,s++}return s}function pn(e,t){return e.bad||e.len===0||!(e.first>0)?null:I(t,e.first,L)}function mn(e,t,n,r,i){let a=Math.min(n,e.sampleCount??0);if(a<=0||e.sttsCounts.length===0||e.overruns.length>0)return null;let o=e.timescale,s=on(e.sttsCounts,e.sttsDeltas,a),c=sn(s),l={len:0,first:0,last:0,bad:!1};if(e.edits.length===0)return fn(l,s,c,0,a),pn(l,o);if(!e.edits.some(e=>e.mediaTime!==-1))return null;let u=!0;for(let e=1;e<s.count&&u;e++)u=s.values[e]===s.values[0];if(u)return s.values[0]>0?I(o,s.values[0],L):null;let d=Math.min(r,bn),f=0,p=!1,m=e=>(f+=e,f>d&&(p=!0),p),h=new Float64Array(s.count+1);for(let e=0;e<s.count;e++)h[e+1]=h[e]+(s.starts[e+1]-s.starts[e])*s.values[e];let g=e=>{let t=c(e);return h[t]+(e-s.starts[t])*s.values[t]},_=e=>s.values[c(e)],v=!!e.cttsCounts&&e.cttsCounts.length>0,y=v?on(e.cttsCounts,e.cttsOffsets,a):null,b=y?sn(y):null,x=e=>y&&e<y.total?y.values[b(e)]:0,S=cn(e,a),C=e=>ln(S,a,e),w=e=>un(S,e),T=e.dtsShift,E=(e,t)=>{let n=0,r=t;for(;n<r;){let t=Math.floor((n+r)/2);g(t)>=e?r=t:n=t+1}return n},D=(e,t)=>{let n=T>0?e-T:e,r=-1,i=a;for(g(a-1)-T<n&&(r=a-1);i-r>1;){let e=Math.floor((r+i)/2),t=g(e)-T;t>=n&&(i=e),t<=n&&(r=e)}let o=t?r:w(r);if(o>0){let e=E(g(o),o);if(e<o){if(t)o=e;else{let t=C(e);t>=0&&t<o&&(o=t)}}}if(v&&o>=0){let e=w(o);for(;e>=0&&!m(1)&&g(e)-T+x(e)>n;)e=w(e-1);o=e}return o},O=0,k=!1;for(let n of e.edits){let r=n.mediaTime;if(!k&&r===-1)continue;if(k=!0,m(64))break;let i=K(n.duration,e.timescale,t.timescale),o=D(r,!1);if(o<0&&!p&&(o=D(r,!0)),p)break;o<0&&(o=0,O=0),v&&(O=o);let u=-1;if(v){let e=!1;for(let t=C(o);t>=0&&!m(1);t=C(t+1)){let n=t+1<a?_(t):i;if(g(t)+x(t)+n>=i+r){if(e){u=t;break}e=!0}}if(p)break}else{let e=o,t=a;for(;e<t;){let n=Math.floor((e+t)/2);(n+1<a?g(n+1):g(a-1)+i)>=i+r?t=n:e=n+1}e<a&&(u=C(e))}let d=u<0?a-o:u-o+1,f=Math.min(d,a-O);if(f>0&&(m(fn(l,s,c,O,f)),O+=f),l.bad)return null;if(p)break}return p?(i?.push(`r_frame_rate not reproduced: edit list walk limit reached`),null):pn(l,o)}function hn(e,t,n){let r=[],i=[],a=n;for(let n=0;n<e.length&&a>0;n++){let o=Math.min(e[n],a);o<=0||(r.push(o),i.push(t[n]),a-=o)}return{counts:r,values:i}}function gn(e,t){let n=[];if(t>0){let r=hn(e.sttsCounts,e.sttsDeltas,t),i=e.cttsCounts&&e.cttsOffsets?hn(e.cttsCounts,e.cttsOffsets,t):null;n.push({durations:{counts:r.counts,deltas:r.values},cts:i?{counts:i.counts,offsets:i.values}:null})}for(let t of e.fragments){let e=t.complete;n.push({baseDts:t.baseDts,durations:t.durations?t.durations.subarray(0,e):{counts:[e],deltas:[t.defaultDuration]},cts:t.cts?t.cts.subarray(0,e):null})}return n}function _n(e,t,n){let r=t.firstMedia;if(!r)return e.edits.length&&n.push(`edit list has no media edit`),null;t.mediaEdits>1&&n.push(`edit list has ${t.mediaEdits} media edits, only the first is applied`),r.rate!==1&&n.push(`edit rate ${r.rate} is not applied`);let i=e.fragments.length>0||r.duration<=0?r.mediaTime:r.mediaTime+r.duration;return{start:r.mediaTime,end:i}}function vn(e,t,n){let r=e.dv,i=e.co64??e.stco,a=e.stsz??e.stz2;if(!r||!i||!a||!e.stsc||i.start+8>i.end||e.stsc.start+8>e.stsc.end||a.start+12>a.end)return null;let o=!!e.co64,s=Math.min(r.getUint32(i.start+4),Math.floor((i.end-i.start-8)/(o?8:4))),c=Math.min(r.getUint32(e.stsc.start+4),Math.floor((e.stsc.end-e.stsc.start-8)/12)),l=e.stsz?r.getUint32(a.start+4):0,u=e.stz2?r.getUint8(a.start+7):32,d=Math.min(r.getUint32(a.start+8),n),f=a.end-a.start-12,p=e=>{if(l)return l;let t=a.start+12;if(u===32)return(e+1)*4<=f?r.getUint32(t+e*4):0;if(u===16)return(e+1)*2<=f?r.getUint16(t+e*2):0;if(u===8)return e<f?r.getUint8(t+e):0;let n=e>>1<f?r.getUint8(t+(e>>1)):0;return e&1?n&15:n>>4},m=0,h=0,g=0,_=0;for(let n=0;n<s&&g<d;n++){for(;_+1<c&&r.getUint32(e.stsc.start+8+(_+1)*12)<=n+1;)_++;let a=c?r.getUint32(e.stsc.start+12+_*12):0,s=o?Number(r.getBigUint64(i.start+8+n*8)):r.getUint32(i.start+8+n*4);for(let e=0;e<a&&g<d;e++,g++){let e=p(g);s<t&&m++,s+e<=t&&h===g&&h++,s+=e}}return{present:m,complete:h}}function yn(e,t){let n=[16n,16n,30n],r=new Int32Array(9);for(let i=0;i<3;i++)for(let a=0;a<3;a++){let o=0n;for(let r=0;r<3;r++)o+=BigInt(e[i*3+r])*BigInt(t[r*3+a])>>n[r];r[i*3+a]=Number(BigInt.asIntN(32,o))}if(r[0]===65536&&r[4]===65536&&r[8]===1<<30&&!r[1]&&!r[2]&&!r[3]&&!r[5]&&!r[6]&&!r[7])return 0;let i=r[0]/65536,a=r[1]/65536,o=Math.hypot(i,r[3]/65536),s=Math.hypot(a,r[4]/65536);return o===0||s===0?0:Math.trunc(-(Math.atan2(a/s,i/o)*180/Math.PI))||0}var bn,xn=t((()=>{se(),Ct(),bn=2e6}));function Sn(e,t){return t.signal?.aborted===!0||e?.name===`AbortError`}function Cn(e){return e.brand===`qt `||!e.hasFtyp&&e.topLevel.length>0?`mov`:`mp4`}async function wn(e,t,n,r){let i=e.size,a=t.start+t.size>i;if(!a&&t.size>268435456)throw new H(`too-large`,`unsupported: moov larger than 256 MiB`);let o=a?Math.min(i-t.start,Pn):t.size,s=await e.view(t.start,o,0),c=r?new DataView(s.buffer.slice(s.byteOffset,s.byteOffset+o)):s,l=B(c,0,c.byteLength);if(!l)throw new H(`truncated`,`incomplete file: moov is truncated`);It(c,l,n,a,t.start),a&&n.warnings.push(`moov size exceeds the file; parsed what is there`)}async function Tn(e,t,n){let r=e.size,i=0,a=t.readAhead.head,o=!1,s=0,c=!1,l=zt(),u=async(t,n,r)=>Bt(l,t,n)??e.view(t,n,r);for(;i+8<=r;){if(e.checkAbort(),++s>Ln){n.warnings.push(`too many top-level boxes`);break}let d=c&&!o&&r-i<=16777216?r-i:a,f=await u(i,Math.min(zn,r-i),d),p;try{p=B(f,0,r-i,i)}catch(e){if(!o)throw e;n.warnings.push(`ignored trailing data at ${i}: ${e.message}`);break}if(!p)break;let m={...p,start:i,end:Math.min(i+p.size,r)},h=i+p.size,g=p.truncated&&o&&m.type!==`mdat`&&m.type!==`moof`;p.truncated&&(n.truncated=!0,n.warnings.push(g?`ignored trailing data at ${i}: not a box`:`'${m.type}' at ${i} is truncated`));let _={type:m.type,start:i,end:m.end,sidx:null};if(n.topLevel.push(_),g)break;if(m.type===`ftyp`){let t=await e.view(i,Math.min(m.size,1024)),r=m.headerSize;if(r+4<=t.byteLength){n.hasFtyp=!0,n.brand=String.fromCharCode(t.getUint8(r),t.getUint8(r+1),t.getUint8(r+2),t.getUint8(r+3));for(let e=r+8;e+4<=t.byteLength;e+=4)n.compatibleBrands.push(String.fromCharCode(t.getUint8(e),t.getUint8(e+1),t.getUint8(e+2),t.getUint8(e+3)))}}else if(m.type===`moov`)o?n.warnings.push(`ignored a second moov at ${i}`):(n.moov=[i,p.size],await wn(e,m,n,t.codecConfig),o=!0);else if(m.type===`moof`){if(!o)throw new H(`corrupt`,`corrupt file: movie fragment (moof) before moov`);if(m.size>67108864)throw new H(`too-large`,`corrupt file: moof larger than 64 MiB at ${i}`);let s=Math.min(m.size+zn,r-i),c=await u(i,s,0),d=B(c,0,Math.min(m.size,c.byteLength));d&&ht(c,d,i,n.moofCount,n,t.maxExpandedSamples),n.moofCount++;let f=0;try{let e=B(c,m.size,c.byteLength);e&&e.type===`mdat`&&(f=e.size)}catch{f=0}a=f<=Rn?t.readAhead.fragment:Math.min(65536,Math.max(1024,2*m.size+64)),f>Rn&&(!l.hints.length&&!l.mfraTried&&(r-i)/(m.size+f)>16&&(l.mfraTried=!0,l.hints=await Wt(e)),l.next<l.hints.length&&!Bt(l,i+m.size+f,zn)&&await Vt(e,l,i,a)),t.onProgress&&n.moofCount%64==0&&t.onProgress({phase:`fragments`,done:i,total:r})}else if(m.type===`sidx`&&!p.truncated){let e=await u(i,m.size,0),t=B(e,0,e.byteLength);t&&(_.sidx=gt(e,t,i)),_.sidx&&_.sidx.subsegments.length>1&&!l.hints.length&&(l.hints=_.sidx.subsegments.map(([e])=>e))}else if(m.type===`mfra`)break;c=m.type===`mdat`,i=h}if(!o)throw new H(`no-header`,`incomplete file: no moov`)}async function En(e,t){let n=e.size,r=new Set(t.tracks.map(e=>e.id)),i=!1,a=!1,o=!1,s=null,c=0;for(let l of t.topLevel){if(l.type===`moof`)c++;else if(l.type===`moov`)i=!0;else if(l.type===`mdat`&&l.end-l.start>8)a=!0;else if(l.type===`sidx`&&i&&l.sidx&&!l.sidx.hierarchical&&r.has(l.sidx.referenceId)){let t=l.sidx.coverageEnd===n;!t&&n>=4&&(s===null&&(s=(await e.view(n-4,4,0)).getUint32(0)),t=l.sidx.coverageEnd===n-s),t&&l.sidx.firstOffset===0&&(o=!0)}if(i&&a&&(o||l.end===n)){t.ffprobeMoofLimit=c;return}}}function Dn(e){let t=1/0,n=!1,r=!1;for(let i of e.topLevel)i.type===`mdat`&&(t=Math.min(t,i.start)),n||=i.type===`moof`,r||=!n&&i.type===`sidx`;let i=e.moov,a=i?i[0]:1/0;if(a===t)return null;let o=e.hasMvex?`fragmented`:t<a?`moov-at-end`:`faststart`;return{kind:o,moovOffset:i?a:null,moovSize:i?i[1]:null,sidx:r,emptyMoov:o===`fragmented`&&e.tracks.every(t=>!On(t,e)||!t.sampleCount)}}function On(e,t){return t.chapterTrackIds.has(e.id)?!1:e.handler===`vide`||e.handler!==`soun`&&ot(e.originalFormat??e.sampleEntry)}function kn(e,t,n,r,i){let a=b(r.reportedId),o=a.warnings;r.reportedId!==e.id&&o.push(`duplicate track_ID ${e.id}: reported as ${r.reportedId}`),o.push(...e.warnings);let s=e.handler===`auxv`;s&&o.push(`auxiliary video track (handler 'auxv')`);let c=en(e);c&&o.push(`missing mandatory sample tables: ffprobe ignores the samples and timing of this track`);let l=e.hasMdhd?e.timescale:t.timescale;e.hasMdhd||(o.push(`no mdhd: using the movie timescale`),e.timescale=l),a.fourccOrCodecId=e.sampleEntry,a.codecName=st(e.originalFormat??e.sampleEntry,e.esdsObjectType,e.hasHvcc),e.originalFormat&&o.push(`encrypted: ${e.sampleEntry} of ${e.originalFormat}`),e.stsdCount>1&&o.push(`${e.stsdCount} sample descriptions, first used`),a.width=e.width,a.height=e.height,a.rotation=yn(e.matrix,t.matrix),a.enabled=e.enabled,a.timescale=l,n.codecConfig&&(a.codecConfig={family:`isobmff-moov`,moov:e.dv,trak:t.tracks.indexOf(e)});let u=Xt(e),d=t.truncated,f=0;for(let t of e.fragments)f+=t.present;let p=u.moovSamples+u.fragmentSamples,m=u.moovSamples+f;a.frames=m,a.isStill=m<=1,u.moovSamples>0&&e.fragments.length>0&&o.push(`hybrid fragmented file: moov holds ${u.moovSamples} of ${p} samples`),m<p&&o.push(`truncated: ${p-m} of ${p} samples missing`);let h=$t(e,t);a.avgFps=h.avg,a.avgFpsFfprobe=r.ffprobeFails?null:h.ffprobe,a.avgFpsFfprobe!==null&&a.avgFpsFfprobe!==P(h.avg)&&o.push(`ffprobe reads part of the fragments: avg_frame_rate ${a.avgFpsFfprobe}`),h.ffprobe===null&&!r.ffprobeFails&&p>0&&o.push(`avg_frame_rate of ffprobe is not reproduced: its header values are incomplete or overrun a box`);let g=!i||r.ffprobeFails||c?null:mn(e,t,u.moovSamples,n.maxExpandedSamples,o);a.rFpsFfprobe=g?P(g):null;let _=tn(e,t.timescale,u);if(!c){let n=nn(e,t,u,_);a.durationSec=n.durationTs/l,a.startSec=n.startPts===null?null:n.startPts/l}let v=u.moovSamples;if(e.sampleCount!==null&&e.sampleCount<v&&(o.push(`stts describes ${v} samples but the sample size table holds ${e.sampleCount}`),v=e.sampleCount),c||!i)return a.presentedFrames=0,An(a),{result:a,enabled:e.enabled,auxiliary:s};if(d&&v>0){let n=vn(e,t.fileSize,u.moovSamples);n&&n.complete<v&&(o.push(`truncated: ${n.complete} of ${v} samples complete`),v=n.complete)}let y=_n(e,_,o);y&&!e.cttsCounts&&!e.fragments.length&&y.start<=0&&(y.end<=y.start||y.end>=u.moovDuration)&&(y=null);let x=i({segments:gn(e,v),timescale:l,editWindow:y,maxExpandedSamples:n.maxExpandedSamples});o.push(...x.warnings);for(let e of Bn)a[e]=x[e];return x.presentedAvgFps&&(a.avgFps=x.presentedAvgFps),a.duplicateTimestamps>0&&o.push(`${a.duplicateTimestamps} duplicate timestamps`),An(a),x.presentedAvgFps&&(a.provenance.avgFps=`exact`),{result:a,enabled:e.enabled,auxiliary:s,profile:x.profile}}function An(e){let t=e.provenance;for(let e of[`codec`,`dimensions`,`rotation`,`frames`,`avgFps`])t[e]=`header`;e.durationSec!==null&&(t.durationSec=`header`),e.startSec!==null&&(t.startSec=`header`),e.presentedFrames!==null&&(t.presentedFrames=`exact`),e.isVfr!==null&&(t.minFps=`exact`,t.maxFps=`exact`,t.isVfr=`exact`,t.duplicateTimestamps=`exact`,t.medianFrameInterval=`exact`),e.nominalFps&&(t.nominalFps=`exact`),e.dominantFps&&(t.dominantFps=`exact`)}function jn(e){let t=null,n=e=>(e.result.frames??0)>1?e.auxiliary?.5:e.enabled?2:1:0;for(let r of e)(!t||n(r)>n(t)||n(r)===n(t)&&(r.result.frames??0)>(t.result.frames??0))&&(t=r);return t?t.result.trackId:null}function Mn(e,t){let n=2**53-1,r=n,i=n,a=-n,o=-n,s=-n,c=-n;for(let n of e.tracks){if(!n.hasMdhd)continue;let l=t.has(n)||n.handler===`soun`;if(en(n)){let e=K(n.mdhdDuration,1e6,Vn);l?s=Math.max(s,e):c=Math.max(c,e);continue}let u=Xt(n),d=nn(n,e,u,tn(n,e.timescale,u)),f=K(d.durationTs,1e6,n.timescale);if(d.startPts!==null){let e=K(d.startPts,1e6,n.timescale);l?(r=Math.min(r,e),a=Math.max(a,e+f)):(i=Math.min(i,e),o=Math.max(o,e+f))}l?s=Math.max(s,f):c=Math.max(c,f)}return(r===n||r>i&&r-i<1e6)&&(r=i),(a===-n||a<o&&o-a<1e6)&&(a=o),(s===-n||s<c&&c-s<1e6)&&(s=c),r!==n&&a!==-n&&a>=r&&(s=Math.max(s,a-r)),s>0?s/1e6:null}function Nn(e){let t=new Map,n=new Set,r=e.reduce((e,t)=>Math.max(e,t.id),0)+1;for(let i of e)n.has(i.id)?t.set(i,r++):(n.add(i.id),t.set(i,i.id));return t}var Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn=t((()=>{x(),se(),it(),dt(),vt(),Rt(),Yt(),xn(),Pn=16777216,Fn=268435456,In=67108864,Ln=4e6,Rn=65536,zn=16,Bn=[`presentedFrames`,`minFps`,`maxFps`,`medianFrameInterval`,`isVfr`,`vfrRatio`,`distinctDeltas`,`duplicateTimestamps`,`nominalFps`,`dominantFps`,`timestampsQuantized`],Vn=9e4})),Un=n({IsoBmffError:()=>H,MOOF_HARD_CAP:()=>In,MOOV_HARD_CAP:()=>Fn,MOOV_SUSPECT_CAP:()=>Pn,analyzeIsoBmff:()=>Gn,analyzeIsoBmffDetailed:()=>Wn});async function Wn(e,t){let n=yt(e.size),r=t=>{if(Sn(t,e))throw t;let r=t instanceof Error?t.message:String(t),i=y(Cn(n),t?.errorCode?r:`corrupt file: ${r}`);return i.errorCode=g(t),i.layout=Dn(n),i.brand=n.brand,i.warnings=n.warnings,{analysis:i,movie:n}};try{await Tn(e,t,n),await En(e,n);let r=y(Cn(n));r.brand=n.brand,r.scan=`exact`,r.warnings=n.warnings;let i=n.ffprobeReject,a=i!==null&&i.moof<n.ffprobeMoofLimit;a&&n.warnings.push(`ffprobe 8.1.1 ${i.reason}`);let o=Nn(n.tracks);[...o].some(([e,t])=>e.id!==t)&&n.warnings.push(`duplicate track_ID values`);let s=n.tracks.filter(e=>On(e,n)),c=s.map(e=>kn(e,n,t,{reportedId:o.get(e)??e.id,ffprobeFails:a},Se));for(let e of c)e.result.rateProfile=await Fe(e.profile??null);return r.videoTracks=c.map(e=>e.result),r.audioTrackCount=n.tracks.filter(e=>e.handler===`soun`).length,r.primaryTrackId=jn(c),r.formatDurationSec=Mn(n,new Set(s)),r.layout=Dn(n),{analysis:r,movie:n}}catch(e){return r(e)}}async function Gn(e,t){return(await Wn(e,t)).analysis}var Kn=t((()=>{x(),et(),Hn(),v(),Ct(),it()}));function q(e){return e===0?0:Math.clz32(e)-23}function qn(e,t){if(t>=e.length)return null;let n=q(e[t]);if(n<1||n>4||t+n>e.length)return null;let r=0;for(let i=0;i<n;i++)r=r*256+e[t+i];return{id:r,length:n}}function Jn(e,t){if(t>=e.length)return null;let n=e[t],r=q(n);if(r<1||t+r>e.length)return null;let i=255>>r,a=(n&i)===i,o=n&i;for(let n=1;n<r;n++){let r=e[t+n];r!==255&&(a=!1),o=o*256+r}return a?{size:-1,length:r}:o>2**53-1?null:{size:o,length:r}}function Yn(e,t,n){let r=qn(e,t);if(!r)return null;let i=Jn(e,t+r.length);return i?{id:r.id,pos:n+t,size:i.size,dataStart:n+t+r.length+i.length}:null}function Xn(e,t){if(t>=e.length)return!0;let n=q(e[t]);if(n<1||n>4)return!1;let r=t+n;return r>=e.length||e[r]!==0&&r+q(e[r])>e.length}function Zn(e,t,n){let r=t<n?q(e[t]):0;if(r<1||t+r>n)return null;let i=e[t]&255>>r;for(let n=1;n<r;n++)i=i*256+e[t+n];return{value:i,length:r}}function Qn(e,t,n){let r=0;for(let i=0;i<n;i++)r=r*256+e[t+i];return r}function $n(e,t,n){let r=0n;for(let i=0;i<n;i++)r=r<<8n|BigInt(e[t+i]);return r}function er(e,t,n){if(n===0)return 0;let r=new DataView(e.buffer,e.byteOffset+t,n);return n===4?r.getFloat32(0):n===8?r.getFloat64(0):NaN}function tr(e,t,n){let r=t;for(;r<t+n&&e[r]!==0;)r++;return Nr.decode(e.subarray(t,r)).replace(/[^\x20-\x7e\xa0-\uffff]/g,`?`)}function*nr(e,t,n){let r=t,i=Math.min(n,e.length);for(;r<i;){let t=Yn(e,r,0);if(!t||t.size===-1||t.dataStart+t.size>i)return;yield{id:t.id,start:t.dataStart,size:t.size},r=t.dataStart+t.size}}function rr(e,t){return t.size>6?Number($n(e,t.start,t.size)):Qn(e,t.start,t.size)}var ir,J,ar,or,sr,Y,cr,lr,X,ur,dr,fr,pr,mr,hr,gr,_r,vr,Z,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,Or,kr,Ar,jr,Mr,Nr,Pr=t((()=>{ir=408125543,J=290298740,ar=19899,or=21419,sr=21420,Y=357149030,cr=2807729,lr=17545,X=374648427,ur=29637,dr=2352003,fr=2306383,pr=22186,mr=25506,hr=28032,gr=2327523,_r=524531317,vr=475249515,Z=307544935,yr=29555,br=25536,xr=25541,Sr=26568,Cr=17827,wr=17543,Tr=423732329,Er=24999,Dr=18016,Or=272869232,kr=17849,Ar=30113,jr=30114,Mr=new Set([J,Y,X,vr,Z,_r,Or,Tr]),Nr=new TextDecoder}));function Fr(e,t,n){if(e[t]!==31||e[t+1]!==67||e[t+2]!==182||e[t+3]!==117)return!1;let r=Jn(e,t+4);if(!r)return!1;let i=t+4+r.length,a=r.size===-1?e.length:Math.min(e.length,i+r.size);if(r.size!==-1&&i+r.size>n)return!1;for(let t=0;t<4&&i<a;t++){let t=qn(e,i);if(!t)return!1;let n=Jn(e,i+t.length);if(!n||n.size===-1)return!1;if(t.id===231)return n.size<=8;if(t.id!==191&&t.id!==236&&t.id!==167&&t.id!==171)return!1;i+=t.length+n.length+n.size}return!1}function Ir(e,t,n,r){let i=qn(e,t);if(i?.length!==4)return!1;if(i.id===524531317)return Fr(e,t,n);let a=Hr.get(i.id),o=Jn(e,t+4);if(!a||!o||o.size<2)return!1;let s=t+4+o.length+o.size,c=s<=r?Yn(e,t+4+o.length,0):null;return!!c&&c.size!==-1&&c.dataStart+c.size<=s&&(a.includes(c.id)||c.id===236||c.id===191)}async function Lr(e,t,n,r,i={}){let a=i.clustersOnly?Wr:Ur,o=i.step??Math.max(e.window,65536),s=Math.max(0,t),c=Math.min(n,e.size);for(;s<c;){let t=e.chunkAt(s);if(!t||t.base+t.buf.length<e.size&&t.base+t.buf.length-s<128){if(i.canLoad&&!i.canLoad())return-1;let n=Math.min(o,c-s+64);await e.load(s,Math.min(n,e.size-s),n),t={base:e.base,buf:e.buf}}let n=t.buf,l=t.base,u=Math.min(l+n.length>=e.size?n.length:n.length-64,c-l);if(u<=s-l)break;for(let e=s-l;e<u;e++)if(a[n[e]]&&r(n,e,l))return l+e;s=l+u}return-1}function Rr(e,t,n,r,i={}){return Lr(e,t,n,(e,t,n)=>Fr(e,t,r-n),{...i,clustersOnly:!0})}function zr(e,t,n,r,i={}){let a=e.size;return Lr(e,t,n,(e,t,n)=>Ir(e,t,r-n,a-n),i)}var Br,Vr,Hr,Ur,Wr,Gr=t((()=>{Pr(),Br=4,Vr=class{reader;size;window;buf=new Uint8Array;base=0;#e=[];constructor(e,t){this.reader=e,this.size=e.size,this.window=t;let n=e.peek(0,Math.min(e.size,e.headWindow));n&&n.byteLength>0&&this.#t({base:0,buf:new Uint8Array(n.buffer,n.byteOffset,n.byteLength)})}has(e,t){return e>=this.base&&Math.min(this.size,e+t)<=this.base+this.buf.length}cached(e,t){let n=Math.min(this.size,e+t);return this.#e.some(t=>e>=t.base&&n<=t.base+t.buf.length)||this.reader.peek(e,n-e)!==null}async load(e,t,n=this.window){if(this.has(e,t))return;let r=Math.min(this.size,e+t);for(let t of this.#e)if(e>=t.base&&r<=t.base+t.buf.length){this.#t(t);return}let i=Math.max(t,n),a=await this.reader.view(e,i,i);this.#t({base:e,buf:new Uint8Array(a.buffer,a.byteOffset,a.byteLength)})}chunkAt(e){return this.#e.find(t=>e>=t.base&&e<t.base+t.buf.length)??null}async header(e){return this.has(e,12)||await this.load(e,12),Yn(this.buf,e-this.base,this.base)}#t(e){this.buf=e.buf,this.base=e.base;let t=this.#e.indexOf(e);t>=0&&this.#e.splice(t,1),this.#e.unshift(e),this.#e.length>Br&&(this.#e.length=Br)}},Hr=new Map([[J,[ar]],[Y,[cr,lr,19840,22337,29604,17505,31657,29572,3979555,3965867,4110627,4096955,17476,26916]],[X,[174]],[vr,[187]],[Z,[yr]],[Or,[kr]],[Tr,[Er]]]),Ur=new Uint8Array(256);for(let e of Mr)Ur[e>>>24]=1;Wr=new Uint8Array(256),Wr[_r>>>24]=1}));function Kr(e,t=0){return e.reader.reads<5&&e.reader.bytesFetched+Math.max(t,e.window)<=1048576}function qr(e){let t=/^\s*(\d+):(\d{1,2}):(\d{1,2}(?:\.\d+)?)\s*$/.exec(e);return t?Number(t[1])*3600+Number(t[2])*60+Number(t[3]):null}function Jr(){return{number:0,uid:0n,type:0,codecId:``,defaultDuration:0,frameRate:0,trackTimestampScale:1,codecDelay:0,codecPrivate:null,encoded:!1,width:0,height:0}}function Yr(e,t){t.trackTimestampScale>=.01||(t.trackTimestampScale=1),!t.defaultDuration&&t.frameRate>0&&(t.defaultDuration=Math.trunc(1e9/t.frameRate)),Number.isSafeInteger(t.defaultDuration)||(t.defaultDuration=0),e.tracks.push(t)}function Xr(e,t,n,r,i,a=null,o=null){let s=o??Jr(),c=-1,l=-1,u=[],d=[],f=``,p=``,m=!1,h=(n,r,i,o)=>{let g=ui.get(n)??[];if(o>16)m=!0;else for(let m of nr(t,r,i)){if(!g.includes(m.id))continue;let r=m.start,i=m.size,_=()=>rr(t,m),v=()=>h(m.id,r,r+i,o+1);switch(m.id){case 174:s=Jr(),s.entry=t.slice(r,r+i),v(),Yr(e,s);break;case yr:u=[],d=[],v();for(let t of d)for(let n of u.length?u:[0n])e.tagDurations.has(n)||e.tagDurations.set(n,t);break;case Sr:{let e=[f,p];f=p=``,v();let t=n===29555&&(f===`DURATION`||f.startsWith(`DURATION-`))?qr(p):null;t!==null&&d.push(t),[f,p]=e;break}case ar:c=l=-1,v(),c>=0&&l>=0&&!e.seek.has(c)&&e.seek.set(c,e.segmentData+l);break;case 215:s.number=_();break;case ur:s.uid=$n(t,r,i);break;case 131:s.type=_();break;case oi:s.disabled=!_();break;case 134:s.codecId=tr(t,r,i);break;case dr:s.defaultDuration=_();break;case fr:s.trackTimestampScale=er(t,r,i);break;case pr:s.codecDelay=_();break;case hr:s.encoded=!0;break;case mr:s.codecPrivate=t.slice(r,r+Math.min(i,ai));break;case 176:s.width=_();break;case 186:s.height=_();break;case gr:s.frameRate=er(t,r,i);break;case cr:_()>0&&(e.timestampScale=_());break;case lr:{let n=er(t,r,i);i!==0&&i!==4&&i!==8?e.warnings.push(`Duration has an invalid size of ${i} bytes`):Number.isFinite(n)?e.duration=n:e.warnings.push(`invalid Duration value ${n}`);break}case or:c=i<=4?_():-1;break;case sr:l=_();break;case xr:u.push($n(t,r,i));break;case Cr:f=tr(t,r,i).toUpperCase();break;case wr:p=tr(t,r,i);break;case Dr:tr(t,r,i).startsWith(`image/`)&&e.attachedImages++;break;case 241:a?.push(e.segmentData+_());break;default:v()}}};h(i,n,r,2),m&&e.warnings.push(`elements nested deeper than 16 levels ignored`)}async function Zr(e,t){return e.cached(t,12)||Kr(e)?e.header(t):null}async function Qr(e,t,n){let r=Math.min(n.dataStart+n.size,e.size),i=n.dataStart;for(;i<r;){let n=await Zr(e,i);if(!n||n.size===-1)break;let a=Math.min(n.dataStart+n.size,r);if(n.id===174){let r=Jr();for(let i=n.dataStart;i<a;){let n=await Zr(e,i);if(!n||n.size===-1)break;let o=n.dataStart+n.size-n.pos;n.size<=ii&&n.pos+o<=a&&(e.cached(n.pos,o)||Kr(e,o))&&(await e.load(n.pos,o),Xr(t,e.buf,n.pos-e.base,n.pos-e.base+o,174,null,r)),i=n.pos+o}Yr(t,r)}i=n.dataStart+n.size}i<r&&t.warnings.push(`Tracks at ${n.pos} only partly read (header budget)`)}async function $r(e,t,n,r){if(r.at.add(n.pos),n.id===475249515&&(t.cuesPos??=n.pos),!li.has(n.id))return;let i=Math.max(0,Math.min(n.size,e.size-n.dataStart)),a=Math.min(i,ri),o=e.cached(n.dataStart,a);if(n.id===374648427&&a<i&&!o){r.ids.add(n.id),await Qr(e,t,n);return}if(!o&&(!Kr(e,a)||n.id===423732329)){n.id===374648427?(r.ids.add(n.id),await Qr(e,t,n)):n.id!==423732329&&t.warnings.push(`${ci.get(n.id)??di(n.id)} element at byte ${n.pos} not read (header budget)`);return}r.ids.add(n.id),await e.load(n.dataStart,a);let s=n.dataStart-e.base;Xr(t,e.buf,s,s+a,n.id)}function ei(e,t,n){e.segmentUnknownSize||e.segmentExtended||(e.segmentExtended=!0,e.segmentEnd=t.size,e.declaredEnd=Math.max(e.declaredEnd,t.size),e.warnings.push(`${n}: the Segment size is wrong, reading to the end of the file like ffprobe`))}async function ti(e,t,n){let r=n;for(let n=0;n<si&&r<e.size;n++){if(!e.cached(r,12)&&!Kr(e))return t.warnings.push(`Segment search stopped at ${r} (header budget)`),null;let n=await e.header(r),i=e.buf,a=r-e.base;if(i[a]===24&&i[a+1]===83&&i[a+2]===128&&i[a+3]===103)return n||(t.warnings.push(`corrupt Segment size at ${r}`),t.segmentExtended=!0,{id:ir,pos:r,size:-1,dataStart:r+4+(q(i[a+4])||8)});if(!n||n.size===-1)return null;r=n.dataStart+n.size}return null}async function ni(e){let t={docType:`matroska`,segmentData:0,segmentEnd:0,declaredEnd:0,segmentUnknownSize:!1,segmentExtended:!1,timestampScale:1e6,duration:0,tracks:[],tagDurations:new Map,firstCluster:null,walkEnd:0,cuesPos:null,seek:new Map,attachedImages:0,warnings:[]},n=await e.header(0);if(!n||n.id!==440786851||n.size===-1||n.dataStart+n.size>e.size)throw h(`corrupt`,`invalid EBML header`);await e.load(n.dataStart,Math.min(n.size,4096));let r=n.dataStart-e.base;for(let i of nr(e.buf,r,r+n.size))i.id===17026&&(t.docType=tr(e.buf,i.start,i.size));let i=()=>Kr(e),a=await ti(e,t,n.dataStart+n.size);if(!a){let r=await zr(e,n.dataStart+n.size,e.size,e.size,{canLoad:i});if(r<0)throw h(`no-header`,`no Segment element`);t.warnings.push(`no valid Segment header: reading level-1 elements from ${r}`),t.segmentExtended=!0,a={id:ir,pos:r,size:-1,dataStart:r}}t.segmentData=a.dataStart,t.segmentUnknownSize=a.size===-1&&!t.segmentExtended,t.declaredEnd=a.size===-1?2**53-1:a.dataStart+a.size,t.segmentEnd=Math.min(e.size,t.declaredEnd),t.declaredEnd>e.size&&a.size!==-1&&t.warnings.push(`truncated file: Segment ends ${t.declaredEnd-e.size} bytes after EOF`);let o={ids:new Set,at:new Set},s=t.segmentData,c=s,l=-1;for(;!(s>=t.segmentEnd&&(s>=e.size||(ei(t,e,`Segment ends at ${s} before any Cluster`),s>=t.segmentEnd)));){if(!e.cached(s,12)&&!i()){t.warnings.push(`header walk stopped at ${s} (header budget)`),l=s;break}let n=await e.header(s);if(n?.id===524531317){t.firstCluster=s;break}let r=`invalid data at ${s} before the first Cluster`;if(n&&n.size!==-1&&(Mr.has(n.id)||n.id===236||n.id===191)){let i=n.dataStart+n.size;if(i>t.segmentEnd&&i<=e.size&&ei(t,e,`${di(n.id)} at ${s} ends after the Segment`),await $r(e,t,n,o),c=s+1,i<=e.size){s=i;continue}r=`${di(n.id)} at ${s} ends after the end of the file`}let a=await zr(e,c,e.size,Math.max(t.declaredEnd,e.size),{canLoad:i});if(t.warnings.push(a<0?r:`${r}: resynchronised at ${a}`),a<0)break;a>=t.segmentEnd&&ei(t,e,`level-1 element at ${a} after the Segment end`),c=a+1,s=a}t.walkEnd=t.firstCluster??(l>=0?l:c);for(let n of[J,Y,X,Z]){let r=t.seek.get(n);if(r===void 0||o.at.has(r)||n!==290298740&&o.ids.has(n)||r>=t.segmentEnd)continue;let i=await Zr(e,r);i?.id===n?await $r(e,t,i,o):t.warnings.push(`SeekHead entry ${di(n)} not followed`)}if(t.cuesPos??=t.seek.get(475249515)??null,o.ids.has(357149030)||t.warnings.push(`no Info element: TimestampScale 1000000 assumed`),!t.tracks.length)throw o.ids.has(374648427)?h(`truncated`,`no complete TrackEntry in Tracks`):h(`no-header`,`no Tracks element found`);return t}var ri,ii,ai,oi,si,ci,li,ui,di,fi=t((()=>{Pr(),v(),Gr(),ri=1048576,ii=65536,ai=4096,oi=185,si=16,ci=new Map([[J,`SeekHead`],[Y,`Info`],[Z,`Tags`]]),li=new Set([J,Y,X,Z,Tr]),ui=new Map([[J,[ar]],[ar,[or,sr]],[Y,[cr,lr]],[X,[174]],[174,[215,ur,131,oi,134,mr,hr,dr,fr,pr,224]],[224,[176,186,gr]],[Z,[yr]],[yr,[br,Sr]],[br,[xr]],[Sr,[Cr,wr,Sr]],[Tr,[Er]],[Er,[Dr]],[vr,[187]],[187,[183]],[183,[241]]]),di=e=>e.toString(16).toUpperCase()}));function pi(e,t,n,r=1/0){let i=new Map;for(let t of n){let n=Math.trunc(e.timestampScale*t.trackTimestampScale)||e.timestampScale;i.set(t.number,{track:t,tickNs:n,codecDelayTicks:Math.round(t.codecDelay/n),pts:new Float64Array(256),n:0,blocks:0,frames:0,invisible:0,missingPts:0,noPtsFrames:0,nextPts:NaN,pending:[],overLimit:0,maxPts:-1/0,maxPtsDur:0})}return{header:e,tracks:i,known:new Set(e.tracks.map(e=>e.number)),fileSize:t,maxSamples:r,clusters:0,truncated:!1,missingClusterTs:0,maxAnyTicks:-1/0,lastGood:-1,resyncs:0,afterSegment:-1,switchReads:1/0,largeWindow:0,warnings:[]}}function mi(e,t,n){if(e.n===e.pts.length){let t=new Float64Array(Math.max(e.n+1,Math.min(e.pts.length*2,n)));t.set(e.pts),e.pts=t}e.pts[e.n++]=t}function hi(e,t,n){let r=Math.min(e.length,t+n),i=Zn(e,t,r);if(!i)return null;let a=t+i.length;if(a+3>r)return null;let o=e[a]<<24>>16|e[a+1],s=e[a+2],c=1;if(s&6){if(a+4>r)return null;c=e[a+3]+1}return{track:i.value,rel:o,flags:s,laces:c}}function gi(e,t,n,r){if(t>=n)return`invalid`;if(t>=r)return`more`;let i=q(e[t]);if(!i||t+i>n)return`invalid`;if(t+i>r)return`more`;let a=BigInt(e[t]&255>>i);for(let n=1;n<i;n++)a=a*256n+BigInt(e[t+n]);return{v:a,n:i}}function _i(e,t,n,r){let i=t+n,a=Math.min(i,e.length),o=hi(e,t,a-t);if(!o){let n=t<a?q(e[t]):0;return a<i&&(t>=a||n>0&&t+n+4>a)?`more`:`invalid`}let s=t+q(e[t]);if(r&&!r.has(o.track))return`invalid`;let c=o.flags>>1&3;if(!c)return o;let l=i-s-4;if(l<0)return`invalid`;let u=o.laces,d=s+4;if(c===2)return l%u?`invalid`:o;if(c===1){let t=0;for(let n=0;n<u-1;n++){let n;do{if(l<=t)return`invalid`;if(d>=a)return`more`;n=e[d++],t+=n,l--}while(n===255)}return l<t?`invalid`:o}let f=gi(e,d,i,a);if(typeof f==`string`)return f;if(f.v>Mi)return`invalid`;let p=f.v,m=f.v;d+=f.n;for(let t=1;t<u-1;t++){if(f=gi(e,d,i,a),typeof f==`string`)return f;let t=p+f.v-((1n<<BigInt(7*f.n-1))-1n);if(t<0n||t>Mi)return`invalid`;p=t,m+=t,d+=f.n}return BigInt(i-d)<m?`invalid`:o}function vi(e,t,n,r){t.n<e.maxSamples?mi(t,n,e.maxSamples):t.overLimit++,n>=t.maxPts&&(t.maxPts=n,t.maxPtsDur=r),t.nextPts=n+r}function yi(e,t,n,r){let i=n+t.rel;i>e.maxAnyTicks&&(e.maxAnyTicks=i);let a=e.tracks.get(t.track);if(!a)return null;let o=t.laces;a.blocks++,a.frames+=o,t.flags&8&&a.invisible++;let s=r>0?r:Math.floor(a.track.defaultDuration*o/e.header.timestampScale),c=e=>Math.floor(s*e/o);if(i<0){a.noPtsFrames+=o;for(let t=0;t<o;t++)Number.isNaN(a.nextPts)?a.pending.push(c(t+1)-c(t)):vi(e,a,a.nextPts,c(t+1)-c(t));return a}let l=a.track.trackTimestampScale,u=(l===1?n:Math.floor(n/l))+t.rel-a.codecDelayTicks,d=u;for(let e of a.pending)d-=e;for(let t of a.pending.splice(0))vi(e,a,d,t),d+=t;for(let t=0;t<o;t++){if(t>0&&s===0){a.missingPts+=o-t;break}vi(e,a,u+c(t),c(t+1)-c(t))}return a}async function bi(e,t,n){let r=Math.min(n.size,Ai);for(;;){e.has(n.dataStart,r)||await e.load(n.dataStart,r);let i=_i(e.buf,n.dataStart-e.base,n.size,t.known);if(i!==`more`)return i;if(r>=n.size)return`invalid`;r=Math.min(n.size,r*8)}}function xi(e,t){return e.has(t,12)?Yn(e.buf,t-e.base,e.base):void 0}async function Si(e,t){return(xi(e,t)??await e.header(t))||(Xn(e.buf,t-e.base)?`eof`:`invalid`)}function Ci(e,t){return e.has(t.dataStart,t.size)?Qn(e.buf,t.dataStart-e.base,t.size):void 0}async function wi(e,t){return await e.load(t.dataStart,t.size),Qn(e.buf,t.dataStart-e.base,t.size)}function Ti(e,t){return e.size===-1||e.dataStart+e.size>t||Ii.has(e.id)&&e.size>8||(e.id===163||e.id===161)&&e.size>ji?`invalid`:null}async function Ei(e,t,n,r=1/0){let i=xi(e,n)??await e.header(n);if(!i||i.id!==524531317)return null;let a=t.fileSize,o=i.size===-1?1/0:i.dataStart+i.size;t.clusters++;let s=-1,c=0,l=i.dataStart,u=e=>({next:l,videoBlocks:c,error:e});for(;l<o;){if(c>=r||t.stop)return{next:Math.min(o,l),videoBlocks:c,error:null};if(t.switchReads<=e.reader.reads&&(e.window=t.largeWindow,t.switchReads=1/0),l>=a)return o===1/0?{next:l,videoBlocks:c,error:null}:u(`eof`);let n=xi(e,l);if(n||=await Si(e,l),typeof n==`string`)return u(n);let i=Pi.has(n.id);if(!i&&o===1/0&&(Mr.has(n.id)||n.id===408125543))return{next:l,videoBlocks:c,error:null};let d=Ti(n,o);if(d)return u(d);i&&(t.lastGood=l);let f=n.dataStart+n.size;if(f>a)return u(`eof`);if(n.id===231)s=Ci(e,n)??await wi(e,n);else if(n.id===163||n.id===160){let r=n,i=0;if(n.id===160){r=null;for(let a=n.dataStart;a<f;){let n=xi(e,a)||await Si(e,a),o=typeof n==`string`?n:Ti(n,f);if(o||typeof n==`string`)return l=a,u(o??`invalid`);Fi.has(n.id)&&(t.lastGood=a),n.id===161?r=n:n.id===155&&(i=Ci(e,n)??await wi(e,n)),a=n.dataStart+n.size}}if(r){let n=e.has(r.dataStart,Math.min(r.size,Ai))?_i(e.buf,r.dataStart-e.base,r.size,t.known):`more`;if(n===`more`&&(n=await bi(e,t,r)),n===`invalid`)return u(`invalid`);s<0&&(t.missingClusterTs++,s=0);let a=yi(t,n,s,i);t.onBlock?.(n,s,i,r),a&&a.track.type===1&&c++}}l=f}return{next:o,videoBlocks:c,error:null}}function Di(e,t,n,r){n<0&&r===`eof`?e.truncated=!0:++e.resyncs>Ni||(n<0?e.warnings.push(`invalid data at ${t}, no further level-1 element`):n>=t?e.warnings.push(`skipped ${n-t} bytes of invalid data at ${t}`):e.warnings.push(`invalid data at ${t}: resynchronised at ${n}`))}async function Oi(e,t,n,r){let i=t.header,a=t.fileSize,o=i.segmentUnknownSize||i.segmentExtended?1/0:i.declaredEnd,s=n;for(t.lastGood=n-1;!t.stop;){e.reader.checkAbort(),r?.(s,Math.min(a,o));let n=null,i=s;if(s>=a){s<o&&o!==1/0&&(t.truncated=!0);break}if(s>=o){o=1/0;let n=await zr(e,Math.max(t.lastGood+1,s),a,1/0);if(n<0)break;t.afterSegment<0&&(t.afterSegment=s),s=n;continue}let c=await Si(e,s);if(typeof c==`string`)n=c;else{let r=Mr.has(c.id)||c.id===236||c.id===191;if(c.id===408125543&&o===1/0?(t.afterSegment<0&&(t.afterSegment=s),n=`invalid`):c.size===-1?c.id===524531317?o=1/0:n=`invalid`:c.dataStart+c.size>o&&(n=`invalid`),!n){if(r&&(t.lastGood=s),c.id===524531317){let r=await Ei(e,t,s);r.error?(n=r.error,i=r.next):s=r.next}else c.dataStart+c.size>a?n=`eof`:s=c.dataStart+c.size}}if(!n)continue;o=1/0;let l=await zr(e,t.lastGood+1,a,1/0);if((n!==`invalid`||i!==t.afterSegment)&&Di(t,i,l,n),l<0)break;s=l}t.resyncs>Ni&&t.warnings.push(`${t.resyncs-Ni} more resynchronisation(s) after invalid data`),t.afterSegment>=0&&t.warnings.push(`data after the Segment end at ${t.afterSegment} was scanned like ffprobe does (concatenated files?)`)}async function ki(e,t,n,r){await e.load(t,n-t,n-t);let i=e.buf,a=e.base,o=[];for(let e=n-a-4;e>=t-a;e--)i[e]===31&&Fr(i,e,r-a)&&o.push(a+e);return o}var Ai,ji,Mi,Ni,Pi,Fi,Ii,Li=t((()=>{Pr(),Gr(),Ai=16,ji=268435456,Mi=2147483647n,Ni=5,Pi=new Set([231,163,160,167,171,236,191]),Fi=new Set([161,155,251,jr,Ar,164,236,191]),Ii=new Set([231,155,251,jr])})),Ri=n({attachEstimate:()=>Yi,av1TimingInfo:()=>Ki,h264Sps:()=>Ui,setupUnsupported:()=>Ji});function zi(e){let t=Math.floor(e),n=e-t;return n>.5||n===.5&&t%2!=0?t+1:t}function Bi(e,t){for(;t;)[e,t]=[t,e%t];return e}function Vi(e,t){let n=e>>3,r=n<12?[480,960,1920,2880][n&3]:n<16?[480,960][n&1]:[120,240,480,960][n&3],i=e&3,a=i===0?1:i<3?2:t&63;return a>0&&r*a<=5760?r*a:0}function Hi(e){let t=[];for(let n=1,r=0;n<e.length;n++)r>=2&&e[n]===3?r=0:(t.push(e[n]),r=e[n]?0:r+1);let n=0,r=e=>{let r=0;for(let i=n+e;n<i;n++){if(n>>3>=t.length)throw RangeError();r=r*2+(t[n>>3]>>7-(n&7)&1)}return r};return{u:r,ue:()=>{let e=0;for(;!r(1);)if(++e>31)throw RangeError();return 2**e-1+r(e)}}}function Ui(e){let{u:t,ue:n}=Hi(e);try{let e=t(8);if(e!==66)return`H.264 profile ${e}`;t(16),n();let r={frameNumBits:n()+4,pocType:n(),pocLsbBits:0,fixedDelay:!1};if(r.pocType===0&&(r.pocLsbBits=n()+4),r.pocType===1){t(1),n(),n();for(let e=n();e>0;e--)n()}if(r.frameNumBits>16||r.pocLsbBits>16||r.pocType>2)return`bad H.264 SPS`;n(),t(1),n(),n();let i=t(1)||(t(1),0);if(t(1),t(1))for(let e=0;e<4;e++)n();if(t(1)){if(t(1)&&t(8)===255&&t(32),t(1)&&t(1),t(1)&&(t(4),t(1))&&t(24),t(1)&&(n(),n()),t(1))return`H.264 timing info`;if(t(1)||t(1)||t(1))return`H.264 HRD or pic_struct`;if(t(1)){t(1);for(let e=0;e<4;e++)n();if(n())return`H.264 reordering`;r.fixedDelay=!0}}return r.pocType===1?`H.264 pic_order_cnt_type 1`:i?r:`H.264 field coding`}catch{return`bad H.264 SPS`}}function Wi(e,t){let n=[];if(t)for(let r=0;r+t<=e.length;){let i=0;for(let n=r+t;r<n;r++)i=i*256+e[r];n.push(e.subarray(r,r+=i))}else for(let t=0,r=-1;t<=e.length;t++)t<e.length&&(e[t]||e[t+1]||e[t+2]!==1)||(r>=0&&n.push(e.subarray(r,t)),r=t+3,t+=2);return n}function Gi(e,t){let n=e?(e[4]&3)+1:0,r=e?[]:Wi(t[0],0);if(e){let t=5;for(let n of[31,255])for(let i=e[t++]&n,a=0;i-->0&&t+2<=e.length;t+=2+a)a=e[t]<<8|e[t+1],r.push(e.subarray(t+2,t+2+a))}let i=e=>e[0]&31,a=r.find(e=>i(e)===7),o=a?Ui(a):`no H.264 SPS`;if(typeof o==`string`)return o;let s=[];for(let e of t){let t=Wi(e,n).find(e=>i(e)===1||i(e)===5);if(!t)return`no H.264 slice header`;s.push(t)}if(i(s[0])!==5)return`H.264 does not start with an IDR`;let c=r.filter(e=>i(e)===8);if(!c.length)return`no H.264 PPS`;let l=2**o.frameNumBits,u=0,d=NaN,f=-1,p=0,m=null;try{for(let e of c){let{u:t,ue:n}=Hi(e);if(n(),n(),t(1),t(1)&&!o.pocType)return`H.264 bottom field POC`}for(let e of s){let{u:t,ue:n}=Hi(e);n(),n(),n();let r=t(o.frameNumBits);if(i(e)===5)n(),u=p=0,d=NaN,m=null;else if(f>=0&&r!==f&&r!==(f+1)%l)return`H.264 frame_num gap`;else r<f&&(p+=l);f=r;let a=2*(p+r)-(e[0]&96?0:1);if(!o.pocType){let n=t(o.pocLsbBits),r=2**o.pocLsbBits;d>=0||(d=n);let i=n<d&&d-n>=r/2?u+r:n>d&&n-d>r/2?u-r:u;a=i+n,e[0]&96&&([u,d]=[i,n])}if(m!==null&&(o.fixedDelay?a<m:a-m!==1&&a-m!==2))return`H.264 POC step ${a-m}`;m=a}}catch{return`bad H.264 PPS or slice header`}return null}function Ki(e){for(let t=0;t<e.length;){let n=e[t],r=t+1+(n>>2&1),i=e.length-r;if(n&2)for(let t=0,n=128;n&128;t+=7)i=(t?i:0)+((n=e[r++]??0)&127)*2**t;if((n>>3&15)==1)return r<e.length?(e[r]&12)==4:null;t=r+i}return null}function qi(e,t){let n=e.codecPrivate;if(e.codecId===ta){let e=Ki(n&&n.length>4?n.subarray(4):t[0]);return e===null?`no AV1 sequence header`:e?`AV1 timing info`:null}return e.codecId===ea?Gi(n,t):null}function Ji(e){let t=e.tracks.filter(e=>e.type===1);if(t.length!==1)return`${t.length} video tracks`;if(new Set(e.tracks.map(e=>e.number)).size<e.tracks.length)return`duplicate track numbers`;if(e.attachedImages)return`attached pictures`;if(![`V_VP8`,`V_VP9`,ta,ea].includes(t[0].codecId))return`codec ${t[0].codecId}`;for(let t of e.tracks){if(t.trackTimestampScale!==1||t.encoded)return`track ${t.number} scale or encoding`;let e=t.codecPrivate;if(t.type!==1&&(t.codecId!==`A_OPUS`||!e||String.fromCharCode(...e.subarray(0,8))!==`OpusHead`||e[18]!==0))return`track ${t.number} (${t.codecId||t.type})`}return null}function Yi(e,t,n,r,i=!1){let a=Ji(t);if(a)return a;let o=new Map;for(let e of t.tracks){let n=N(Math.trunc(t.timestampScale*e.trackTimestampScale),1e9,L);o.set(e.number,{tb:n,nb:0,cid:0,durs:0,seen:!1,first:null,firstIdx:0,last:null,lastIdx:0})}let s=t.tracks.find(e=>e.type===1),c=o.get(s.number),l=c.tb,u=l.num/l.den,d=s.codecId===ea,f=d||l.den>=101*l.num||l.den<5*l.num,p=f?u>5e-4?40:20:0,m=new Float64Array(4*Q),h=(e,t)=>{let n=m[2*e*Q+t]/_;return m[(2*e+1)*Q+t]/_-n*n},g=null,_=0,v=0,y=0,b=0,x=null,S=null,C=null,w=()=>r.resyncs||r.truncated||r.missingClusterTs,T=[],E=n.newScanState(t,e.size,t.tracks),D=(r,i,a,s)=>{let f=n.addBlock(E,r,i,a);if(b>=Xi||c.nb&&_>=p&&[...o.values()].every(e=>e.seen||e.nb>=Zi))return!1;let S=o.get(f.track.number),C=s.dataStart+Math.clz32(e.buf[s.dataStart-e.base])-20,w=s.dataStart+s.size-C,D=S===c,O=a||Math.floor(f.track.defaultDuration*r.laces/t.timestampScale);if(r.laces>1||f.noPtsFrames?x=`laced or untimed blocks`:!O&&!D?(O=Math.floor(Vi(e.buf[C-e.base],w>1?e.buf[C+1-e.base]:0)*S.tb.den/(48e3*S.tb.num)),(!O||w<1)&&(x=`a bad Opus packet`)):!O&&l.num*1e3>l.den&&(O=1),D&&!c.nb&&s.id===163&&!(r.flags&128)&&(x=`no keyframe first`),x)return!1;b+=w;let k=D&&d&&c.nb<Qi?null:f.pts[f.n-1];if(k!==null&&S.nb>1&&(S.last!==null&&(S.last>=k||S.first!==null&&S.lastIdx>S.firstIdx&&Math.floor((k-S.last)/1e3)>Math.floor((S.last-S.first)/(S.lastIdx-S.firstIdx)))&&(S.first=null),S.first===null&&(S.first=k,S.firstIdx=S.nb),S.last=k,S.lastIdx=S.nb),S.nb>1){let e=ra(S.cid,S.tb);if(!e&&S.nb>30&&S.first!==null&&S.last!==null&&(e=ra(S.last-S.first,S.tb)),e>=Xi)return!1;O>0&&(S.cid+=O,S.durs++)}if(D&&k!==null&&g!==null&&k>g){let e=k*u;for(let t=0;t<Q;t++){if(!(m[Q+t]<1e10))continue;let n=e*na(t)/12012;for(let e=0;e<2;e++){let r=n-zi(n+e*.5)+e*.5;m[2*e*Q+t]+=r,m[(2*e+1)*Q+t]+=r*r}}if(_++,v+=k-g,_%10==0)for(let e=0;e<Q;e++)m[Q+e]<1e10&&h(0,e)>.04&&h(1,e)>.04&&(m[Q+e]=m[3*Q+e]=2e10);_>3&&(y=Bi(y,k-g))}if(D&&k!==null&&(g=k),k!==null&&(S.seen=!0),D&&c.nb<(d?Qi:1)){let t=Math.min(w,$i);T.push(e.has(C,t)?e.buf.slice(C-e.base,C+t-e.base):[C,t])}return S.nb++,!0};return r.onBlock=(e,t,n,a)=>{if(C===null){try{if(D(e,t,n,a))return}catch(e){S=[e]}C=w(),i&&(r.stop=!0)}},async()=>{if(S)throw S[0];if(x)return x;if(!c.nb||(C??w()))return`damaged first Clusters`;let t=[];for(let n of T)t.push(n instanceof Uint8Array?n:(await e.load(n[0],n[1],n[1]),e.buf.slice(n[0]-e.base,n[0]+n[1]-e.base)));let n=qi(s,t);if(n)return n;let r=null,i=null;if(f&&_>15&&y>Math.max(1,Math.floor(l.den/(500*l.num)))&&(r=N(l.den,BigInt(l.num)*BigInt(y),L)),_>1&&!r&&f){let e=0,t=.01;for(let n=0;n<Q;n++){let r=na(n);if(!((c.cid?c.cid*u<11511.5/r:r<12012)||u*v/_<9609.6/r))for(let i=0;i<2;i++){let a=h(i,n);a<t&&t>1e-9&&(t=a,e=r)}}e&&e/12012<1.01*(l.den/l.num)&&(r=N(e,12012,L))}if(r&&v&&c.cid<=0&&_>2&&Math.abs(1/(r.num/r.den*u)-v/_)<=1&&(i=r),c.durs&&!i&&c.cid){i=N(BigInt(c.durs)*BigInt(l.den),BigInt(c.cid)*BigInt(l.num),6e4);let e=.01,t=0;for(let n=0;n<Q;n++){let r=Math.abs(i.num/i.den/(na(n)/12012)-1);r<e&&(e=r,t=na(n))}t&&(i=N(t,12012,L))}return r??={num:l.den,den:l.num},{avg:i?`${i.num}/${i.den}`:`0/0`,r:`${r.num}/${r.den}`,packets:c.nb}}}var Q,Xi,Zi,Qi,$i,ea,ta,na,ra,ia=t((()=>{se(),Q=399,Xi=5e6,Zi=50,Qi=7,$i=1024,ea=`V_MPEG4/ISO/AVC`,ta=`V_AV1`,na=e=>e<360?(e+1)*1001:e<390?(e-329)*12012:e<393?[80,120,240][e-390]*12012:[24,30,60,12,15,48][e-393]*12e3,ra=(e,t)=>Number((BigInt(e)*BigInt(t.num)*1000000n+BigInt(t.den>>1))/BigInt(t.den))})),aa=n({CPU_MS_PER_BLOCK:()=>Va,LARGE_FRAME_BYTES:()=>ka,MAX_CUES_BYTES:()=>ja,MAX_TAIL_BYTES:()=>Aa,PROBE_BLOCKS:()=>32,PROBE_CLUSTERS:()=>8,SMALL_SCAN_WINDOW:()=>$,analyzeMatroska:()=>Oa,codecNameOf:()=>oa,declaredRate:()=>sa,estimateScan:()=>ga,estimateWalkMs:()=>_a,mergeRunStats:()=>ca,planExactScan:()=>va});function oa(e){for(let t of Wa.split(` `)){let[n,r]=t.split(`:`);if(e.startsWith(n))return r}return``}function sa(e){if(!(e>0))return null;let t=I(1e9,e,3e4),n=P(t);return{avg:n,r:t.num<t.den*1e3&&t.num>t.den*5?n:null}}function ca(e,t){let n=new Map,r={minFps:null,maxFps:null,isVfr:null,vfrRatio:0,distinctDeltas:0,duplicateTimestamps:0,timestampsQuantized:!1,medianDelta:null,medianFrameInterval:null},i=0;for(let e of t){r.duplicateTimestamps+=e.duplicateTimestamps;for(let[t,r]of e.histogram)n.set(t,(n.get(t)??0)+r),i+=r}let a=[...n.keys()].sort((e,t)=>e-t);if(r.distinctDeltas=a.length,i===0)return r;let o=0,s=a.find(e=>(o+=n.get(e)??0)*2>=i)??a[0],c=ye(s,e,a),l=0;for(let e of a)Math.abs(e-s)>c&&(l+=n.get(e)??0);r.medianDelta=s;let u=z(e,s);return r.medianFrameInterval=u&&{num:u.den,den:u.num,value:u.den/u.num},r.minFps=z(e,a[a.length-1]),r.maxFps=z(e,a[0]),r.isVfr=i>=2&&l>0,r.vfrRatio=l/i,r.timestampsQuantized=!r.isVfr&&a.length>1,r}function la(e,t,n){e.minFps=t.minFps,e.maxFps=t.maxFps,e.isVfr=t.isVfr,e.vfrRatio=t.vfrRatio,e.distinctDeltas=t.distinctDeltas,e.duplicateTimestamps=t.duplicateTimestamps,e.timestampsQuantized=t.timestampsQuantized,e.medianFrameInterval=t.medianFrameInterval;for(let t of[`minFps`,`maxFps`,`isVfr`,`duplicateTimestamps`,`medianFrameInterval`])e.provenance[t]=n}function ua(e,t,n){let r=b(t.number);n.codecConfig&&(r.codecConfig={family:`matroska`,trackEntry:t.entry??null}),r.fourccOrCodecId=t.codecId,r.codecName=oa(t.codecId),r.width=t.width,r.height=t.height,r.enabled=!t.disabled,r.timescale=1e9/(Math.trunc(e.timestampScale*t.trackTimestampScale)||e.timestampScale),r.provenance.codec=r.provenance.dimensions=`header`;let i=sa(t.defaultDuration);i?(r.avgFpsFfprobe=i.avg,r.rFpsFfprobe=i.r,r.nominalFps={...I(1e9,t.defaultDuration,3e4),kind:`declared`},r.provenance.nominalFps=`header`,t.frameRate>0&&t.defaultDuration===Math.trunc(1e9/t.frameRate)&&r.warnings.push(`DefaultDuration derived from Video FrameRate ${t.frameRate}`)):r.warnings.push(Ua);let a=e.tagDurations.get(t.uid);return a!==void 0&&(r.durationSec=a,r.provenance.durationSec=`header`),r}function da(e){return e.duration*e.timestampScale/1e9}function fa(e,t,n){let r=n.durationSec??da(e);r>0&&t.defaultDuration>0&&n.warnings.push(`about ${Math.round(r*1e9/t.defaultDuration)} frames (estimated from duration x DefaultDuration, assumes CFR)`)}function pa(e,t,n){let r=da(e),i=t*e.timestampScale/1e9;r>0&&Number.isFinite(i)&&r-i>Math.max(.5,.02*r)&&n.push(`Info Duration ${r.toFixed(3)} s exceeds the last block at ${i.toFixed(3)} s (false Duration or truncated file)`)}function ma(e,t,n){e.provenance.durationSec===`header`&&e.durationSec!==null&&Math.abs(e.durationSec-t)>Math.max(2/e.timescale,1/(e.nominalFps?.value||1/0))&&e.warnings.push(`DURATION tag ${e.durationSec.toFixed(3)} s differs from the scanned ${t.toFixed(3)} s`),e.durationSec=t,e.provenance.durationSec=n}async function ha(e,t,n,r){let i=Math.min(r,Fa);await e.load(n,i,i);let a=e.chunkAt(n);if(!a)return null;let o=a.buf,s=a.base,c=s+o.length,l={bytes:0,blocks:0,video:0,large:0,smallBytes:0},u=n;for(;u<c;){let e=Yn(o,u-s,s);if(e?.id===524531317){u=e.dataStart;continue}if(!e||e.size===-1)break;let i=e.dataStart+e.size,a=e.id===163||e.id===160;if(a?e.size>za||i>n+r:i>c||!Ba.has(e.id))break;if(a){let n=e.id===160?Yn(o,e.dataStart-s,s):e,r=n&&(n.id===163||n.id===161)?hi(o,n.dataStart-s,n.size):null,a=r&&t.some(e=>e.number===r.track)?r.laces:0;l.blocks+=Math.max(1,a),l.video+=a,i-e.pos>=4096?l.large++:l.smallBytes+=i-e.pos}l.bytes=i-n,u=i}return l.blocks&&l.bytes>0?l:null}function ga(e,t,n){if(!t){if(!(n>0))return null;let t=e/n>=$;return{blocks:n,large:t?n:0,smallBytes:t?0:e}}let r=e/t.bytes,i=t.video*r;return{blocks:t.blocks*r*(t.video>0&&n>i?n/i:1),large:t.large*r,smallBytes:t.smallBytes*r}}function _a(e,t,n){let r=Math.min(e,La,t?.video?Math.ceil(Ia*t.bytes/t.video):La);return s(n.costModel,Math.ceil(r/n.readAhead.head),r)}function va(e,t,n){let r=(t?.blocks??0)*n.costModel.perBlockMs,i=(e,t,i)=>({window:e,reads:t,bytes:i,ms:s(n.costModel,t,i)+r}),a=n.readAhead.matroskaScan,o=i(a,Math.ceil(e/a),e);if(!t)return o;let c=Math.ceil(t.large+t.smallBytes/$),l=i($,c,Math.min(e,c*$));return l.ms<o.ms?l:o}async function ya(){try{return await Promise.resolve().then(()=>(ia(),Ri))}catch{return`the estimate code did not load`}}async function ba(e,t){try{return await t()}catch(t){return e.reader.checkAbort(),`the estimate failed: ${t instanceof Error?t.message:String(t)}`}}async function xa(e,t,n,r){let i=e.reader,a=r.onProgress,o=i.reads,s=t.header.segmentEnd-n;a?.({phase:`matroska-exact`,done:0,total:s}),await Oi(e,t,n,(e,t)=>{s=Math.max(s,t-n),a&&i.reads!==o&&(o=i.reads,a({phase:`matroska-exact`,done:Math.min(e-n,s),total:s}))}),a?.({phase:`matroska-exact`,done:s,total:s})}async function Sa(e,t){let n=t.firstCluster===null?null:await e.header(t.firstCluster);if(n?.id===524531317)return n.pos;let r=Math.max(t.segmentData,t.walkEnd),i=await Rr(e,r,Math.min(t.segmentEnd,r+Pa),t.declaredEnd,{step:Na});if(i>=0)return i;for(let n of(await Ca(e,t)).slice(0,Ra))if((await e.header(n))?.id===524531317)return n;return null}async function Ca(e,t){let n=t.cuesPos===null||t.cuesPos>=t.segmentEnd?null:await e.header(t.cuesPos);if(n?.id!==475249515||n.size===-1)return[];let r=Math.min(n.size,ja,e.size-n.dataStart);await e.load(n.dataStart,r,r);let i=[];return Xr(t,e.buf,n.dataStart-e.base,n.dataStart-e.base+r,vr,i),[...new Set(i)].filter(e=>e<t.segmentEnd).sort((e,t)=>e-t)}function wa(e,t){return e.length<=t?[...e]:[...new Set(Array.from({length:t},(n,r)=>e[Math.round(r*(e.length-1)/(t-1))]))]}async function Ta(e,t,n,r,i){let a=Math.max(i.readAhead.tail||0,4096),o=t.segmentEnd,s=-1/0;for(;;){let i=Math.max(r,t.segmentEnd-a);for(let r of i<o?await ki(e,i,o,t.declaredEnd):[]){let i=pi(t,e.size,n);if(await Ei(e,i,r),s=Math.max(s,i.maxAnyTicks),i.tracks.get(n[0].number)?.n)return{st:i,maxAnyTicks:s}}if(i<=r||a>=16777216)return null;o=i+4,a=Math.min(a*4,Aa)}}async function Ea(e,t,n,r,i,a,o){let s=await Ta(e,t,n,i,a),c=await Ca(e,t),l=wa(c[0]===i||!c.length?c:[i,...c.filter(e=>e>i)],8);if(!c.length){l=[i];let n=t.segmentEnd-i;for(let r=1;r<8;r++){let a=i+Math.floor(r*n/8),o=await Rr(e,a,Math.min(t.segmentEnd,a+Ma),t.declaredEnd,{step:Na});o>l[l.length-1]&&l.push(o)}}let u=new Map,d=null,f=0;for(let r of l){let a=pi(t,e.size,n);if(await Ei(e,a,r,32)){f++,r===i&&(d=a);for(let e of a.tracks.values()){if(e.n<2)continue;let t=u.get(e.track.number)??[];t.push(Se({timescale:1e9/e.tickNs,pts:e.pts.subarray(0,e.n),tickQuantized:!0})),u.set(e.track.number,t)}}}o.push(`probe: ${f} cluster(s) sampled via ${c.length?`Cues`:`sync search`}, up to 32 video blocks each`),s||o.push(`probe: no video block found in the tail`),pa(t,s?.maxAnyTicks??-1/0,o),n.forEach((e,n)=>{let i=r[n],a=i.timescale,o=ca(a,u.get(e.number)??[]);o.isVfr===null?f>0&&i.warnings.push(`probe: every sampled cluster holds fewer than 2 frames of this track, so no frame interval was measured; scan all frames for min, max and VFR`):la(i,o,`sampled`);let c=d?.tracks.get(e.number),l=c?.n?Math.min(...c.pts.subarray(0,c.n)):null;l!==null&&(i.startSec=l/a,i.provenance.startSec=`sampled`);let p=s?.st.tracks.get(e.number);p?.n&&ma(i,(p.maxPts+(p.maxPtsDur>0?p.maxPtsDur:o.medianDelta??0)-(l??0))/a,`sampled`),fa(t,e,i)})}function Da(e,t){let n=e.timescale;if(e.frames=e.presentedFrames=t.frames,e.provenance.frames=e.provenance.presentedFrames=`computed`,e.isStill=t.frames===1,t.invisible&&e.warnings.push(`${t.invisible} invisible block(s) counted as frames`),t.missingPts&&e.warnings.push(`${t.missingPts} laced frame(s) without a timestamp`),t.noPtsFrames&&e.warnings.push(`${t.noPtsFrames} frame(s) before time 0 have no timestamp; interpolated from the neighbouring frames like ffmpeg`),t.overLimit&&e.warnings.push(`per-frame statistics skipped: more than ${t.n} frames`),!t.n||t.overLimit)return t.n||e.warnings.push(`no blocks for this track`),null;let r=Se({timescale:n,pts:t.pts.subarray(0,t.n),lastDuration:t.maxPtsDur>0?t.maxPtsDur:null,tickQuantized:!0});return e.warnings.push(...r.warnings),ma(e,r.durationSum/n,`exact`),la(e,r,`exact`),e.avgFps=t.frames!==t.n&&Number.isSafeInteger(n)&&Number.isSafeInteger(r.durationSum)?oe(n,t.frames,r.durationSum):r.avgFps,e.startSec=r.firstPts===null?null:r.firstPts/n,e.dominantFps=r.dominantFps,e.provenance.avgFps=e.provenance.startSec=e.provenance.dominantFps=`exact`,!e.nominalFps&&r.nominalFps?(e.nominalFps=r.nominalFps,e.provenance.nominalFps=`exact`):e.nominalFps&&e.avgFps&&Math.abs(e.avgFps.value/e.nominalFps.value-1)>.005&&e.warnings.push(`declared rate ${e.avgFpsFfprobe} differs from the measured average ${e.avgFps.value.toFixed(3)}`),r.duplicateTimestamps&&e.warnings.push(`${r.duplicateTimestamps} duplicate block timestamp(s) excluded from the instantaneous rates`),r.profile}async function Oa(e,t){let n=new Vr(e,t.readAhead.head),r=await ni(n),i=y(r.docType===`webm`?`webm`:`matroska`),a=i.warnings;i.brand=r.docType,i.scan=`header`,a.push(...r.warnings),r.docType!==`webm`&&r.docType!==`matroska`&&a.push(`unexpected DocType '${r.docType}'`),r.segmentUnknownSize&&a.push(`Segment has an unknown size (live or unfinished recording)`),i.formatDurationSec=r.duration===0?null:Math.trunc(r.duration*r.timestampScale*1e3/1e6)/1e6,i.audioTrackCount=r.tracks.filter(e=>e.type===2).length,r.attachedImages&&a.push(`${r.attachedImages} attached image(s) ignored: ffprobe lists them as attached_pic video streams`);let o=r.tracks.filter(e=>e.type===1);if(!o.length)return a.push(`no video track`),i;i.primaryTrackId=o[0].number,i.videoTracks=o.map(e=>ua(r,e,t));let s=t.matroskaMode,c=null;if(s!==`header`&&(c=await Sa(n,r),c===null&&a.push(`no Cluster found: nothing to scan`)),c===null)return o.forEach((e,t)=>fa(r,e,i.videoTracks[t])),i;let l=r.segmentEnd-c,u=o[0],d=r.tagDurations.get(u.uid)??da(r),f=d>0&&u.defaultDuration>0?d*1e9/u.defaultDuration:0,p=await ha(n,o,c,l),m=va(l,ga(l,p,f),t),h=u.defaultDuration?null:await ya();if(s===`auto`){let e=typeof h==`object`&&h&&!h.setupUnsupported(r)?_a(l,p,t):0;s=m.ms<=t.exactBudgetMs+e?`exact`:`probe`;let n=e?` plus the ${e.toFixed(0)} ms that probe mode reads for the ffprobe estimate`:``;s===`probe`&&a.push(`exact block scan skipped: predicted ${m.ms.toFixed(0)} ms exceeds the ${t.exactBudgetMs} ms budget${n}`)}let g=i.videoTracks[0],_=e=>{typeof e!=`string`&&(g.avgFpsFfprobe=e.avg,g.rFpsFfprobe=e.r),g.warnings[g.warnings.indexOf(Ua)]=typeof e==`string`?`${Ha}not reproduced (${e})`:`${Ha}estimated like ffprobe from ${e.packets} video packets`};if(s===`exact`){n.window=m.window;let s=pi(r,n.size,o,t.maxExpandedSamples);m.window<t.readAhead.matroskaScan&&(s.switchReads=e.reads+2*m.reads+16,s.largeWindow=t.readAhead.matroskaScan);let l=typeof h==`object`&&h?h.attachEstimate(n,r,Ga,s):h;await xa(n,s,c,t),l!==null&&_(typeof l==`function`?await ba(n,l):l),i.scan=`exact`,a.push(...s.warnings),s.truncated&&a.push(`truncated file: the last Cluster or block ends beyond EOF`),s.missingClusterTs&&a.push(`${s.missingClusterTs} block(s) in Clusters without a Timestamp`),pa(r,s.maxAnyTicks,a);for(let[e,t]of o.entries()){let n=i.videoTracks[e];n.rateProfile=await Fe(Da(n,s.tracks.get(t.number)))}return i}if(h!==null){let e=pi(r,n.size,[]),t=typeof h==`string`?h:h.attachEstimate(n,r,Ga,e,!0);_(typeof t==`string`?t:await ba(n,()=>Oi(n,e,c).then(t)))}return n.window=m.window===4096?$:t.readAhead.head,await Ea(n,r,o,i.videoTracks,c,t,a),i.scan=`probe`,i}var ka,$,Aa,ja,Ma,Na,Pa,Fa,Ia,La,Ra,za,Ba,Va,Ha,Ua,Wa,Ga,Ka=t((()=>{u(),se(),x(),et(),Pr(),fi(),Li(),Gr(),ka=32768,$=4096,Aa=16777216,ja=524288,Ma=1048576,Na=262144,Pa=16777216,Fa=16384,Ia=48,La=5e6,Ra=4,za=268435456,Ba=new Set([231,236,191,167,171]),Va=l.perBlockMs,Ha=`no DefaultDuration: avg_frame_rate and r_frame_rate `,Ua=`${Ha}come from the first packets, which header mode does not read`,Wa=`V_AV1:av1 V_VP8:vp8 V_VP9:vp9 V_MPEG4/ISO/AVC:h264 V_MPEGH/ISO/HEVC:hevc V_MPEGI/ISO/VVC:vvc V_MPEG4/ISO/ASP:mpeg4 V_MPEG4/ISO/AP:mpeg4 V_MPEG4/ISO/SP:mpeg4 V_MPEG4/MS/V3:msmpeg4v3 V_MPEG1:mpeg1video V_MPEG2:mpeg2video V_PRORES:prores V_MJPEG:mjpeg V_FFV1:ffv1 V_THEORA:theora V_UNCOMPRESSED:rawvideo V_DIRAC:dirac`,Ga={newScanState:pi,addBlock:yi}}));let qa={isobmff:async()=>(await Promise.all([Promise.resolve().then(()=>(Kn(),Un)),Promise.resolve().then(()=>(et(),ge))]))[0].analyzeIsoBmff,matroska:async()=>(await Promise.all([Promise.resolve().then(()=>(Ka(),aa)),Promise.resolve().then(()=>(et(),ge))]))[0].analyzeMatroska},Ja={isobmff:async(e,t)=>(await qa.isobmff())(e,t),matroska:async(e,t)=>(await qa.matroska())(e,t)};function Ya(e,t,n={},r=Ja,i=r===Ja?qa:null){return re(e,t,n,i?e=>i[e]():e=>r[e])}let Xa=(e,t)=>Object.assign(Error(e),{code:t}),Za=e=>e===`isobmff`||e===`matroska`;function Qa(e){let t=self,n=new Map,r=new Map,i=e=>t.postMessage({v:1,...e}),a=t=>{let r=n.get(t);if(!r){let i=Object.hasOwn(e,t)?e[t]:void 0;if(!i)return Promise.reject(Xa(`unknown engine ${t}`,`unknown-engine`));r=(typeof i==`function`?Promise.all([i(),Promise.resolve().then(()=>(et(),ge))]).then(([e])=>e):Promise.resolve(i)).catch(e=>{throw n.delete(t),e}),n.set(t,r)}return r},o=(e,t,n=!1,r=!1)=>{let a=t?.code,o=a===`unknown-engine`||a===`protocol`;i({type:`error`,id:e,message:A(t),aborted:n||ne(t),...o?{code:a}:r&&{reason:`load`}})},s=async e=>{let t=new AbortController;r.set(e.id,t);let n=0,s=!0;try{if(!(e.file instanceof Blob))throw Xa(`malformed analyze request`,`protocol`);let r=await a(e.engine);if(s=!1,r.containers!==`any`){let t=await ee(e.file);if(!t||!r.containers.includes(t))return i({type:`skipped`,id:e.id,reason:`unsupported-container`,family:t})}let o=await r.run(e.file,e.name,{...e.options,signal:t.signal,onProgress:t=>{let r=performance.now();r-n<50||(n=r,i({type:`progress`,id:e.id,progress:t}))}});i({type:`result`,id:e.id,result:o})}catch(n){o(e.id,n,t.signal.aborted,s)}finally{r.delete(e.id)}},c=async e=>{try{if(![e.engines,e.containers].every(Array.isArray)||!e.containers.every(Za))throw Xa(`malformed warm request`,`protocol`);await Promise.all(e.engines.map(async t=>(await a(t)).warm?.(e.containers))),i({type:`warmed`,id:e.id})}catch(t){o(e.id,t,!1,!0)}};t.onmessage=({data:e})=>{if(e?.v!==1)return o(e?.id??0,Xa(`unsupported protocol version ${e?.v}`,`protocol`));if(e.type===`cancel`)r.get(e.id)?.abort();else if(e.type===`analyze`)s(e);else if(e.type===`warm`)c(e);else{let t=e;o(t.id,Xa(`unknown request type ${t.type}`,`protocol`))}}}Qa({own:{run:(e,t,n)=>Ya(e,t,n),containers:`any`,warm:async e=>{await Promise.all(e.map(e=>qa[e]()))}}})})();
@@ -0,0 +1,47 @@
1
+ import type { BlobLike } from '../core/reader.js';
2
+ export type { BlobLike, BlobSlice } from '../core/reader.js';
3
+ export interface RangeRequest {
4
+ readonly start: number;
5
+ readonly end: number;
6
+ readonly range: string;
7
+ readonly signal: AbortSignal | null;
8
+ }
9
+ export interface RangeReply {
10
+ readonly status?: number | null;
11
+ readonly contentRange?: string | null;
12
+ readonly contentLength?: number | null;
13
+ readonly bytes?: ArrayBuffer | ArrayBufferView | null;
14
+ readonly body?: (expectedLength: number) => Promise<ArrayBuffer | ArrayBufferView>;
15
+ readonly discard?: () => void;
16
+ }
17
+ export type RangeFetcher = (request: RangeRequest) => Promise<RangeReply>;
18
+ export interface RangeSource extends BlobLike {
19
+ read(start: number, end: number, signal?: AbortSignal | null): Promise<Uint8Array>;
20
+ }
21
+ export interface RangeSourceInit {
22
+ size: number;
23
+ signal?: AbortSignal | null;
24
+ }
25
+ export interface OpenRangeSourceInit {
26
+ size?: number;
27
+ headBytes?: number;
28
+ signal?: AbortSignal | null;
29
+ }
30
+ export interface HttpRangeInit {
31
+ headers?: Readonly<Record<string, string>>;
32
+ fetch?: typeof globalThis.fetch;
33
+ }
34
+ export type RangeSourceErrorCode = 'unverifiable-reply' | 'unexpected-status' | 'range-mismatch' | 'size-changed' | 'length-mismatch' | 'body-too-long' | 'body-too-short' | 'invalid-reply';
35
+ export interface RangeSourceErrorOptions {
36
+ status?: number | null;
37
+ cause?: unknown;
38
+ }
39
+ export declare class RangeSourceError extends Error {
40
+ readonly code: RangeSourceErrorCode;
41
+ readonly status: number | null;
42
+ constructor(code: RangeSourceErrorCode, message: string, options?: RangeSourceErrorOptions);
43
+ }
44
+ export declare function rangeSource(fetcher: RangeFetcher, init: RangeSourceInit): RangeSource;
45
+ export declare function openRangeSource(fetcher: RangeFetcher, init?: OpenRangeSourceInit): Promise<RangeSource>;
46
+ export declare function httpRange(url: string | URL, init?: HttpRangeInit): RangeFetcher;
47
+ export declare function readCapped(body: ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>, expectedLength: number, signal?: AbortSignal | null): Promise<Uint8Array>;