@loadmap/cli 0.10.0 → 0.11.0

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.
@@ -13,7 +13,7 @@ import{r as e,t}from"./rolldown-runtime-pP25SEvz.js";(function(){let e=document.
13
13
  `,t:` `,"\\":`\\`,'"':`"`,"'":`'`,"`":"`",$:`$`};function rn(e,t,n,r){let i=``;for(;t<n&&e[t]!==r&&e[t]!==`
14
14
  `;)e[t]===`\\`&&t+1<n?(i+=nn[e[t+1]]??e[t+1],t+=2):i+=e[t++];let a=e[t]===r;return{value:i,end:a?t+1:t,closed:a}}var an=16;function on(e,t,n,r,i=0){let a=[],o=[],s=``;for(;t<n&&e[t]!=="`";)if(e[t]===`\\`&&t+1<n)s+=nn[e[t+1]]??e[t+1],t+=2;else if(e[t]===`$`&&e[t+1]===`{`){a.push(s),s=``;let c=t+2,l=sn(e,c,n,r,i);o.push({from:c,to:l}),e[l]===`}`?t=l+1:(r.error({from:t,to:l},'this "${" has no closing "}"'),t=l)}else s+=e[t++];a.push(s);let c=e[t]==="`";return{quasis:a,parts:o,end:c?t+1:t,closed:c}}function sn(e,t,n,r,i){let a=0;for(;t<n;){let o=e[t];if(o===`}`&&a===0)return t;if(o===`{`)a++;else if(o===`}`)a--;else if(o===`"`||o===`'`){t=rn(e,t+1,n,o).end;continue}else if(o==="`"){if(i+1>=an)return r.error({from:t,to:t+1},`templates are nested more than ${an} deep`),n;t=on(e,t+1,n,r,i+1).end;continue}else if(o===`
15
15
  `)return t;t++}return t}var cn=2e5,ln={"||":1,"&&":2,"==":3,"!=":3,"===":3,"!==":3,"<":4,"<=":4,">":4,">=":4,"+":5,"-":5,"*":6,"/":6,"%":6},un=class{};function dn(e,t=new gt(e)){return e.length>2e5?(t.error({from:0,to:0},`the definition is ${e.length} characters long; at most ${cn}`),{doc:{body:[]},report:t}):{doc:{body:new pn(Qt(e,t),e,t).block(!1)},report:t}}function fn(e,t,n,r,i=0){let a=new pn(Qt(e,r,t,n),e,r);a.depth=i;try{let e=a.expr();return a.peek().kind!==`eof`&&a.fail(a.peek(),`unexpected ${mn(a.peek())} in the formula`),e}catch(e){if(e instanceof un)return{t:`error`,from:t,to:n};throw e}}var pn=class{toks;source;report;i=0;depth=0;blocks=0;constructor(e,t,n){this.toks=e,this.source=t,this.report=n}peek(e=0){return this.toks[Math.min(this.i+e,this.toks.length-1)]}next(){let e=this.peek();return e.kind!==`eof`&&this.i++,e}is(e,t=0){let n=this.peek(t);return n.kind===`punct`&&n.text===e}eat(e){return this.is(e)?(this.i++,!0):!1}expect(e,t){return this.is(e)||this.fail(this.peek(),`expected ${t}, found ${mn(this.peek())}`),this.next()}fail(e,t,n){throw this.report.error(e,t,n),new un}block(e){let t=[];for(;;){for(;this.peek().kind===`newline`||this.is(`;`);)this.next();let n=this.peek();if(n.kind===`eof`)break;if(this.is(`}`)){if(e)break;this.report.error(n,`this "}" closes no block`),this.next()}else try{t.push(this.statement());let e=this.peek();e.kind===`newline`||e.kind===`eof`||this.is(`;`)||this.is(`}`)||this.fail(e,`expected the end of the line, found ${mn(e)}`)}catch(e){if(!(e instanceof un))throw e;this.recover()}}return t}recover(){let e=0;for(;;){let t=this.peek();if(t.kind===`eof`||e===0&&(t.kind===`newline`||this.is(`;`)||this.is(`}`)))return;this.is(`{`)?e++:this.is(`}`)&&e--,this.next()}}statement(){let e=this.peek();return e.kind===`number`||this.is(`-`)&&this.peek(1).kind===`number`?this.row():(e.kind!==`ident`&&this.fail(e,`expected a statement, found ${mn(e)}`),this.is(`:`,1)?this.property():this.is(`->`,1)?this.edge():this.decl())}ident(e=`a name`){let t=this.peek();return t.kind!==`ident`&&this.fail(t,`expected ${e}, found ${mn(t)}`),this.next(),{name:t.text,from:t.from,to:t.to}}property(){let e=this.ident();this.expect(`:`,`":"`),this.endsStatement()&&this.fail(this.peek(),`"${e.name}" has no value`);let t=this.expr();if(this.is(`->`)){t.t!==`id`&&this.fail(t,`a route is a list of names joined by "->"`);let n=[{name:t.name,from:t.from,to:t.to}];for(;this.eat(`->`);)n.push(this.ident(`a stage`));return{kind:`prop`,key:e,value:t,chain:n,from:e.from,to:n.at(-1).to}}return{kind:`prop`,key:e,value:t,from:e.from,to:t.to}}edge(){let e=[this.ident()];for(;this.eat(`->`);)e.push(this.ident(`a name after "->"`));let t={kind:`edge`,chain:e,from:e[0].from,to:e.at(-1).to};if(this.is(`:`)&&this.is(`{`,1)){let e=this.next();t.colon={from:e.from,to:e.to}}else this.eat(`:`)&&(this.endsStatement()&&this.fail(this.peek(),`expected a value after ":"`),t.value=this.expr(),t.to=t.value.to);return this.is(`{`)&&this.body(t),t}decl(){let e=this.next(),t={kind:`decl`,keyword:{name:e.text,from:e.from,to:e.to},args:[],from:e.from,to:e.to};for(;;){let e=this.peek();if(e.kind===`ident`||e.kind===`string`||e.kind===`template`||e.kind===`number`)t.args.push(this.primary());else if(this.is(`-`)&&this.peek(1).kind===`number`)t.args.push(this.unary());else break;t.to=t.args.at(-1).to}return this.eat(`=`)&&(this.endsStatement()&&this.fail(this.peek(),`expected a formula after "="`),t.init=this.expr(),t.to=t.init.to),this.is(`{`)?this.body(t):this.endsStatement()||this.fail(this.peek(),`expected "{" or the end of the line, found ${mn(this.peek())}`),t}body(e){if(this.blocks>=64){let t=this.next();this.report.error(t,`blocks are nested more than 64 deep`);for(let e=1;e>0&&this.peek().kind!==`eof`;){let t=this.next();t.kind===`punct`&&t.text===`{`?e++:t.kind===`punct`&&t.text===`}`&&e--}e.to=this.peek().from}else{this.blocks++;try{this.bodyInside(e)}finally{this.blocks--}}}bodyInside(e){let t=this.next();e.body=this.block(!0);let n=this.peek();this.is(`}`)?(this.next(),e.bodySpan={from:t.from,to:n.to},e.to=n.to):(this.report.error(t,`this "{" of "${`keyword`in e?e.keyword.name:`edge`}" is never closed`),e.bodySpan={from:t.from,to:n.from+1},e.to=n.from)}row(){let e=[];for(;this.peek().kind===`number`||this.is(`-`)&&this.peek(1).kind===`number`;)e.push(this.unary()),this.eat(`,`);return{kind:`row`,values:e,from:e[0].from,to:e.at(-1).to}}endsStatement(){let e=this.peek();return e.kind===`newline`||e.kind===`eof`||this.is(`;`)||this.is(`}`)}expr(){++this.depth>64&&this.fail(this.peek(),`the formula is nested more than 64 deep`);try{let e=this.binary(1);if(this.is(`±`)||this.is(`+/-`))return this.pm(e);if(!this.eat(`?`))return e;let t=this.expr();this.expect(`:`,`":" of the "?"`);let n=this.expr();return{t:`cond`,test:e,then:t,else:n,from:e.from,to:n.to}}finally{this.depth--}}pm(e){this.next();let t=this.unary(),n=this.is(`%`)?this.next():null;return{t:`pm`,value:e,within:t,percent:!!n,from:e.from,to:n?.to??t.to}}binary(e){let t=this.unary();for(;;){let n=this.peek(),r=n.kind===`punct`?ln[n.text]:void 0;if(r==null||r<e)return t;this.next();let i=this.binary(r+1);t={t:`bin`,op:n.text===`===`?`==`:n.text===`!==`?`!=`:n.text,left:t,right:i,from:t.from,to:i.to}}}unary(){let e=this.peek();if(this.is(`-`)||this.is(`+`)||this.is(`!`)){this.next(),++this.depth>64&&this.fail(e,`the formula is nested more than 64 deep`);try{let t=this.unary();return{t:`unary`,op:e.text,arg:t,from:e.from,to:t.to}}finally{this.depth--}}return this.primary()}primary(){let e=this.peek();switch((e.kind===`punct`?e.text===`(`||e.text===`[`:e.kind!==`newline`&&e.kind!==`eof`)||this.fail(e,`expected a value, found ${mn(e)}`),this.next(),e.kind){case`number`:return{t:`num`,value:e.value,from:e.from,to:e.to};case`string`:return{t:`str`,value:e.value,from:e.from,to:e.to};case`template`:return{t:`tpl`,quasis:e.quasis,parts:e.parts.map(e=>this.part(e)),from:e.from,to:e.to};case`ident`:{if(e.text===`true`||e.text===`false`)return{t:`bool`,value:e.text===`true`,from:e.from,to:e.to};let t={name:e.text,from:e.from,to:e.to};if(this.is(`.`)){this.next();let n=this.ident(`a name after "."`);if(!this.is(`(`)){if(t.name===`at`&&this.is(`.`)){this.next();let r=this.ident(`a flow after "at.<stage>."`);return this.is(`.`)&&this.fail(this.peek(),`at takes two names: at.db.orders`),{t:`member`,object:t,prop:n,flow:r,from:e.from,to:r.to}}return this.is(`.`)&&this.fail(this.peek(),`only one "." is allowed: flows.orders, util.db`),{t:`member`,object:t,prop:n,from:e.from,to:n.to}}t.name!==`Math`&&this.fail(t,`"${t.name}.${n.name}(…)" is not a function`),t=n}if(this.is(`(`)){this.next();let n=[];for(;!this.is(`)`)&&(n.push(this.expr()),this.eat(`,`)););let r=this.expect(`)`,`")" or ","`);return{t:`call`,callee:t,args:n,from:e.from,to:r.to}}return{t:`id`,name:e.text,from:e.from,to:e.to}}case`punct`:if(e.text===`(`){let t=this.expr(),n=this.expect(`)`,`")"`);return{...t,from:e.from,to:n.to}}if(e.text===`[`){let t=[];for(;!this.is(`]`)&&(t.push(this.expr()),this.eat(`,`)););let n=this.expect(`]`,`"]" or ","`);return{t:`array`,items:t,from:e.from,to:n.to}}}this.fail(e,`expected a value, found ${mn(e)}`)}part(e){return e.to>e.from?fn(this.source,e.from,e.to,this.report,this.depth):(this.report.error({from:e.from-2,to:e.to+1},`an empty part in a template`),{t:`error`,from:e.from,to:e.to})}};function mn(e){switch(e.kind){case`eof`:return`the end of the file`;case`newline`:return`the end of the line`;case`string`:case`template`:return`a text`;case`number`:return`the number ${e.text}`;default:return`"${e.text}"`}}var hn=5,gn={members:64,pods:256,perPod:256,partitions:1024};function _n(e){return{...e.speed==null?{}:{speed:e.speed},...e.transition==null?{}:{transition:e.transition},...e.direction?{direction:e.direction}:{},...e.assumptions.length?{assumptions:e.assumptions}:{},...e.fullScreen?{fullScreen:e.fullScreen}:{},...e.fullScreenMode?{fullScreenMode:e.fullScreenMode}:{}}}function vn(e,t={}){let n=new gt(e),r=new bn(e,n,t.functions??{}),i={body:[]},a,o=[];try{i=dn(e,n).doc,a=r.run(i),a&&(o=be(a.model).map((e,t)=>{let i=r.expectSpans[t];return{at:i,...n.position(i.from),result:e}}))}catch(e){e instanceof Lt||w(e)||e instanceof Error&&e.message.startsWith(`loadmap: `)?r.runError(e,{from:0,to:0}):e instanceof yn||n.error({from:0,to:0},`internal error: ${e?.message??e}`)}let s=[...n.list].sort((e,t)=>e.from-t.from);return{ok:!n.failed&&!!a,diagnostics:s,definition:a,expectations:o,symbols:r.symbols,doc:i}}var yn=class{},bn=class{source;report;functions;symbols=[];expectSpans=[];names;fits=new Map;lets=new Map;constructor(e,t,n){this.source=e,this.report=t,this.functions=n}run(e){let t=this.shape(``,Nt[``],e.body,{from:0,to:0});this.header(e.body);let n=e=>t.children.filter(t=>t.keyword===e),r=n(`load`);r.length||this.report.error({from:0,to:0},`a definition needs a load line`,`load { max: 100 }`);for(let e of r.slice(1))this.report.error(e.at,`only one load line is allowed`);let i=n(`param`),a=n(`let`),o=n(`fit`),s=n(`flow`),c=t.children.filter(e=>Ft.includes(e.keyword)&&e.args.id).map(e=>this.box(e)),l=n(`component`),u=new Map,d=(e,t,n)=>{let r=t.args.id;r&&this.declare(e,r.name,r,t,n)};for(let e of[...i,...a,...o])d(e.keyword===`param`?`param`:e.keyword===`let`?`let`:`fit`,e,u),e.args.id&&Wt.has(e.args.id.name)&&this.report.error(e.args.id,`"${e.args.id.name}" is a reserved name; pick another`);let f=new Map;for(let e of s)d(`flow`,e,f);let p=new Map,m=new Map,h=new Map;for(let e of c){this.declare(`node`,e.id,e.block.args.id,e.block,p,e.block.keyword);for(let t of e.stages)this.declare(`stage`,t.id,t.block.args.id??t.block.at,t.block,m,e.id);if(e.component){let t=e.component;this.declare(`component`,t.id,t.own?e.block.args.id:t.block.args.id??t.block.at,t.block,h)}}for(let e of l)e.args.id?d(`component`,e,h):this.report.error(e.at,`a component outside a box needs an id: component cache "Cache"`);let g=new Map([[`load`,`number`]]);for(let e of i)e.args.id&&g.set(e.args.id.name,this.paramType(e));for(let e of o)this.fit(e);this.names={params:g,lets:this.lets,flows:new Set(f.keys()),stages:new Set(m.keys()),components:new Set(h.keys()),fits:this.fits,functions:this.functions};for(let e of a)e.args.id&&this.lets.set(e.args.id.name,`any`);for(let e=!0,t=0;e&&t<=a.length;t++){e=!1;for(let t of a){if(!t.args.id||!t.decl?.init)continue;let n=qt(t.decl.init,this.names,`ctx`,new gt(this.source)).type;n!==this.lets.get(t.args.id.name)&&(e=!0),this.lets.set(t.args.id.name,n)}}let _=new Map;for(let e of c)for(let t of e.stages)_.set(t.id,{block:t.block,box:e});let v=new Map(c.map(e=>[e.id,e])),y=r[0]&&this.load(r[0]),b={};for(let e of i)e.args.id&&(b[e.args.id.name]=this.param(e));let x={};for(let e of n(`preset`)){let t=this.text(e.args.label);t!=null&&(x[t]=this.preset(e,i))}let S={};for(let e of n(`scenario`)){let t=this.text(e.args.label);t!=null&&(Object.hasOwn(S,t)?this.report.error(e.args.label,`scenario "${t}" is declared twice`):S[t]=this.preset(e,i,`scenario`),this.symbols.push({kind:`scenario`,id:t,span:e.args.label,decl:e.decl??e.at}))}let C=[];for(let e of n(`expect`)){let t=this.expectation(e,S,h);t&&(C.push(t),this.expectSpans.push({from:e.at.from,to:e.args.label?.to??e.at.to}))}let w=[];for(let e of n(`step`)){let t=this.step(e,S,h,i,y);t&&w.push(t)}let T=n(`growth`);for(let e of T.slice(1))this.report.error(e.at,`only one growth line is allowed`);let E=T[0]&&this.growth(T[0]),D={};for(let e of a)e.args.id&&e.decl?.init&&(D[e.args.id.name]=Yt(e.decl.init,this.formula(e.decl.init,`ctx`).run));let O=(e,t)=>{if(_.has(e.name))return e.name;let n=v.get(e.name);if(n?.stages.length===1)return n.stages[0].id;n?this.report.error(e,n.stages.length?`"${e.name}" holds ${n.stages.length} stages; name one: ${n.stages.map(e=>e.id).join(`, `)}`:`the box "${e.name}" runs no stage`):this.report.error(e,`unknown ${t} "${e.name}"`,bt(e.name,[..._.keys(),...v.keys()]))},ee={},k={},A={},te=new Set;for(let e of s){let t=e.args.id;if(!t)continue;this.flowAt.set(t.name,t);let n=this.text(e.args.label),r={};n!=null&&(r.label=n);let i=this.constProp(e,`unit`);i!=null&&(r.unit=i),r.rate=this.dynProp(e,`rate`,`number`);let a=this.constProp(e,`priority`);a!=null&&(r.priority=a);let o=this.overload(e);o&&(r.overload=o);let s=this.retry(e);s&&(r.retry=s),ee[t.name]=r;let c=this.prop(e,`route`),l=[];for(let[e,t]of(c?.chain??(c?.value.t===`id`?[c.value]:[])).entries()){let n=O(t,`stage`);n&&(_.get(n).block.keyword===`fanout`&&e<(c?.chain?.length??1)-1&&this.report.error(t,`the fan-out "${n}" must be the last stage of the route`),l.push(n),te.add(n))}c&&c.value.t!==`id`&&this.report.error(c.value,`a route is a list of stages: a -> b -> c`),A[t.name]=l;let u=this.prop(e,`from`),d={from:``,color:`accent`};u&&(u.value.t===`id`&&v.has(u.value.name)?d.from=u.value.name:this.report.error(u.value,`unknown node "${this.slice(u.value)}"`,bt(this.slice(u.value),v.keys())));let f=this.prop(e,`color`);f&&(d.color=this.color(f.value)),n!=null&&(d.label=n),k[t.name]=d}let ne={};for(let e of c)e.component&&(ne[e.component.id]=this.component(e.component.block,e.block));for(let e of l)e.args.id&&(ne[e.args.id.name]=this.component(e));let re={};for(let e of c)for(let t of e.stages){let n=this.stage(t.block,e,h,O,f,te);n&&(re[t.id]=n)}for(let[e,t]of _)!te.has(e)&&t.block.keyword!==`fanout`&&this.report.warning(t.block.args.id??t.block.at,`no flow passes the stage "${e}"`);let ie=new Set(Object.values(re).map(e=>e.component));for(let[e,t]of Object.entries(ne))t.demand||ie.has(e)||this.plainBoxes.has(e)||this.report.error(h.get(e),`the component "${e}" needs "demand: …": no stage uses it`,Et.demand.doc);let ae={};for(let e of o){let t=e.args.id&&this.fits.get(e.args.id.name);t&&(ae[this.text(e.args.label)??e.args.id.name]=t)}let j={load:y,params:b,flows:ee,components:ne,stages:re,routes:A},oe=this.constProp(t,`title`);oe!=null&&(j.title=oe),Object.keys(x).length&&(j.presets=x),Object.keys(S).length&&(j.scenarios=S),E&&(j.growth=E),C.length&&(j.expect=C),w.length&&(j.story=w),Object.keys(D).length&&(j.derived=D),Object.keys(ae).length&&(j.calibration=ae);let se=n(`thresholds`)[0];if(se){let e={};for(let t of[`target`,`full`]){let n=this.constProp(se,t);n!=null&&(e[t]=n)}j.thresholds=e}let ce=this.constProp(t,`searchMax`);ce!=null&&(j.searchMax=ce);let le={};for(let e of c)le[e.id]=this.node(e);let ue=[];for(let e of t.edges)ue.push(...this.edges(e,v));s.length||this.report.error({from:0,to:0},`a definition needs at least one flow`);let de={assumptions:[]},fe=this.constProp(t,`speed`);fe!=null&&(de.speed=fe);let pe=this.constProp(t,`transition`);pe!=null&&(pe<0||pe>hn)?this.report.error(this.prop(t,`transition`).value,`transition is ${pe} seconds; 0 to ${hn}`):pe!=null&&(de.transition=pe);let me=this.prop(t,`layout`);me&&(de.direction=this.enumValue(me,Nt[``].props.layout)===`down`?`DOWN`:`RIGHT`);let he=this.prop(t,`fullScreen`);he&&(de.fullScreen=this.words(he,Nt[``].props.fullScreen));let M=this.prop(t,`fullScreenMode`);M&&(de.fullScreenMode=this.enumValue(M,Nt[``].props.fullScreenMode));for(let e of t.props.get(`assume`)??[]){let t=this.constant(e.value,`string`);typeof t==`string`&&de.assumptions.push(t)}if(!this.report.failed)return this.build(j,{nodes:le,edges:ue,flows:k},de,n(`preset`),n(`scenario`))}build(e,t,n,r,i){let a={from:0,to:0},o,s;try{o=de(e),s=ht(o,t)}catch(e){this.runError(e,a);return}let c=[{values:{},at:a}];for(let t of r){let n=this.text(t.args.label),r=n!=null&&e.presets?.[n];r&&c.push({values:r,at:t.at})}for(let e of i){let t=this.text(e.args.label),n=t!=null&&o.scenarios.find(e=>e.label===t)?.values;n&&c.push({values:n,at:e.at})}for(let[n,{values:r,at:i}]of c.entries())try{let n=o.evaluate(r);et(s,n);for(let t of Object.keys(e.derived??{}))n.ctx.derived[t];for(let e of Object.values(t.nodes)){if(e.kind===`cluster`){let t=typeof e.members==`function`?e.members(n.ctx):e.members;e.memberLabel?.(Math.max(0,t-1))}e.kind===`pool`&&e.podLabel?.(0)}for(let e of t.edges)e.when?.(n.ctx);for(let e of o.flowIds)Number.isFinite(n.flows[e])||this.report.warning(this.flowRate.get(e)??i,`the rate of "${e}" is ${n.flows[e]} here`)}catch(e){this.runError(e,i,n===0)}if(!this.report.failed)return{model:o,view:s,options:n}}runError(e,t,n=!0){if(e instanceof Lt)return this.report.error(e.span,e.message,e.hint);let r=w(e),{message:i,hint:a}=zt(e,r?`the flow "${r}"`:`the model`);this.report.error(n&&r&&this.flowAt.get(r)||t,i,a)}flowRate=new Map;flowAt=new Map;plainBoxes=new Set;shape(e,t,n,r,i){let a={keyword:e,spec:t,at:r,decl:i,args:{},props:new Map,children:[],edges:[],rows:[]};i&&this.args(a,i);let o=e?`in ${e}`:`at the top`;for(let e of n)if(e.kind===`prop`){let n=e.key.name;if(!t.open&&!St(t.props,n)){let r=t.children.includes(n)?`write it as a block: ${n} { … }`:bt(n,[...Object.keys(t.props),...t.children]);this.report.error(e.key,`unknown property "${n}" ${o}`,r);continue}let r=a.props.get(n)??[];r.length&&!(St(t.props,n)?.repeat??!1)&&this.report.error(e.key,`"${n}" is set twice ${o}`,`remove one of them`),r.push(e),a.props.set(n,r)}else if(e.kind===`decl`){let n=e.keyword.name,r=St(Nt,n);if(!t.children.includes(n)||!r||n===``){St(t.props,n)?this.report.error(e.keyword,`"${n}" is a property: write "${n}: …"`):r?this.report.error(e.keyword,`"${n}" cannot go ${o}`,wn(n)):this.report.error(e.keyword,`unknown statement "${n}" ${o}`,bt(n,[...t.children,...Object.keys(t.props)]));continue}a.children.push(this.shape(n,r,e.body??[],e.keyword,e))}else e.kind===`edge`?t.edges?a.edges.push(e):this.report.error(e.chain[0],`an "a -> b" line cannot go ${o}`):t.rows?a.rows.push(e):this.report.error(e,`a row of numbers can only go in "points"`);if(i)for(let[n,i]of Object.entries(t.props))i.required&&!a.props.has(n)&&this.report.error(r,`"${e}" needs "${n}: …"`,i.doc);return a}args(e,t){let{filled:n,bad:r,missing:i}=Ct(e.spec.args,t.args);for(let t of r)this.report.error(t,`unexpected ${this.slice(t)} after "${e.keyword}"`,Cn(e.keyword));for(let[t,r]of n)r.t===`tpl`&&!t.dynamic&&!r.parts.length?e.args[t.name]={t:`str`,value:r.quasis[0],from:r.from,to:r.to}:(r.t===`tpl`&&!t.dynamic&&this.report.error(r,`the ${t.name} of "${e.keyword}" must be a plain text`),r.t===`id`?e.args[t.name]={name:r.name,from:r.from,to:r.to}:e.args[t.name]=r);i&&this.report.error(e.at,`"${e.keyword}" needs its ${i.name}`,Cn(e.keyword)),e.spec.init&&!t.init&&this.report.error(e.at,`"${e.keyword}" needs "= formula"`,Cn(e.keyword)),!e.spec.init&&t.init&&this.report.error(t.init,`"${e.keyword}" takes no "="`)}header(e){let t=e[0],n=e=>e?.kind===`decl`&&e.keyword.name===`loadmap`;if(!n(t))throw this.report.error(t??{from:0,to:0},`a definition starts with "loadmap 1"`,`add "loadmap 1" as the first line`),new yn;for(let t of e.slice(1))n(t)&&this.report.error(t.keyword,`the "loadmap" line must be the first and only one`);let r=t.args[0];if(r?.t===`num`&&r.value!==1)throw this.report.error(r,r.value>1?`this definition is written in language version ${r.value}; this loadmap reads version 1`:`there is no language version ${r.value}; the first is 1`,r.value>1?`update @loadmap/dsl`:void 0),new yn}declare(e,t,n,r,i,a){xn.has(t)&&this.report.error(n,`"${t}" cannot be used as a name`),i.has(t)?this.report.error(n,`"${t}" is declared twice`,`rename one of them`):i.set(t,n),this.symbols.push({kind:e,id:t,span:n,decl:r.decl??r.at,detail:a})}box(e){let t=e.args.id.name,n=e.children.filter(e=>It.includes(e.keyword)),r=n.map(e=>({block:e,id:e.args.id?.name??t})),i=Object.keys(Et).some(t=>e.props.has(t)),a=e.children.filter(e=>e.keyword===`component`),o;i&&(o={block:e,id:t,own:!0});for(let e of a)o?this.report.error(e.at,`"${t}" already has a component`,`one component per box; put others at the top`):o={block:e,id:e.args.id?.name??t,own:!1};e.keyword===`node`&&r.length>1&&this.report.error(n[1].at,`a node runs at most one stage; a cluster can hold several queues`),e.keyword===`cluster`&&!r.length&&this.report.error(e.at,`a cluster needs a queue`,`queue topic { partitions { orders: 12 } }`),e.keyword===`pool`&&r.length!==1&&this.report.error(e.at,`a pool needs exactly one workers stage`,`workers { pods: 3; perPod: 8 }`);let s=new Set;for(let e of r)s.has(e.id)&&this.report.error(e.block.at,`"${t}" has two stages called "${e.id}"`,`give each an id`),s.add(e.id);return{block:e,id:t,stages:r,component:o}}plainBox(e){let[t,n]=Object.keys(Et).flatMap(t=>e.props.has(t)?[[t,this.prop(e,t)]]:[]).sort((e,t)=>e[1].key.from-t[1].key.from)[0],r=`give the box capacity and over lines, or drop it`,i=e.args.sub,a=(!i||i.t===`str`&&i.value===``)&&!e.props.has(`sub`);t===`describe`&&n.value.t===`str`&&a&&(r=e.args.label?`for a line under a plain box, put it on the first line: ${e.keyword} ${e.args.id.name} ${this.slice(e.args.label)} ${this.slice(n.value)}`:`for a line under a plain box, write sub: ${this.slice(n.value)}`),this.report.error(n.key,`"${t}" belongs to a component, and this box has no capacity`,r)}slice(e){return this.source.slice(e.from,e.to)}prop(e,t){return e.props.get(t)?.[0]}formula(e,t,n){let r=qt(e,this.names,t,this.report);if(n&&n!==`any`&&r.type!==n&&r.type!==`any`){if(n===`string`&&r.type===`number`){let e=r.run;return{...r,type:`string`,run:(t,n)=>String(e(t,n))}}n===`capacity`&&r.type===`number`?this.report.error(e,`a capacity says where it came from`,`write measured(${this.slice(e)}, "unit", "source") or estimated(…)`):this.report.error(e,`expected ${Kt(n)}, this is ${Kt(r.type)}`)}return r}constant(e,t){let n=this.formula(e,`const`,t);try{return n.run(void 0)}catch(t){let{message:n,hint:r}=zt(t);this.report.error(e,n,r);return}}constProp(e,t){let n=this.prop(e,t);if(!n)return;let r=e.spec.props[t];return r.value===`enum`?this.enumValue(n,r):this.constant(n.value,r.value)}dyn(e,t,n=`ctx`,r){let i=this.formula(e,n,t);if(i.constant){let n=this.constant(e,t);try{n!==void 0&&r?.(n)}catch(t){this.report.error(e,t.message)}return n}let a=i.run;return r?Yt(e,(e,t)=>{let n=a(e,t);return r(n),n}):Yt(e,a)}dynProp(e,t,n,r){let i=this.prop(e,t);if(i)return t===`rate`&&e.args.id&&this.flowRate.set(e.args.id.name,i.value),this.dyn(i.value,n,St(e.spec.props,t)?.scope??`ctx`,r)}text(e){if(!e)return;let t=this.constant(e,`string`);return typeof t==`string`?t:void 0}label(e){if(e)return this.dyn(e,`string`)}enumValue(e,t){let n=e.value.t===`str`?e.value.value:this.slice(e.value).replace(/\s+/g,``);if(t.values?.includes(n))return n;this.report.error(e.value,`"${n}" is not one of ${t.values.join(`, `)}`,bt(n,t.values??[]))}words(e,t){let n=t.values??[];if(e.value.t!==`array`){this.report.error(e.value,`a list: [${n.slice(0,2).join(`, `)}]`);return}let r=[];for(let t of e.value.items){let e=t.t===`str`?t.value:t.t===`id`?t.name:this.slice(t);n.includes(e)?r.push(e):this.report.error(t,`"${e}" is not one of ${n.join(`, `)}`,bt(e,n))}return r}color(e){if(e.t===`id`){if(Mt.includes(e.name))return e.name;this.report.error(e,`"${e.name}" is not a theme colour`,bt(e.name,Mt)??`or quote a CSS colour`)}else if(e.t===`str`){if(Sn.test(e.value.trim()))return e.value.trim();this.report.error(e,`"${e.value}" is not a colour`,`use #rrggbb, rgb(…), hsl(…) or a theme colour`)}else this.report.error(e,`a colour is a theme colour or a CSS colour in quotes`);return`accent`}count(e){let t=gn[e];return n=>{if(typeof n!=`number`||!Number.isInteger(n)||n<0)throw Error(`${e} must be a whole number of at least 0, not ${String(n)}`);if(n>t)throw Error(`${e} is ${n}; at most ${t}`)}}load(e){let t={},n=this.text(e.args.label);n!=null&&(t.label=n);for(let n of[`min`,`max`,`step`,`default`]){let r=this.constProp(e,n);r!=null&&(t[n]=r)}return typeof t.max!=`number`&&(t.max=1),E.load(t)}paramType(e){let t=this.prop(e,`options`);if(t?.value.t===`array`)return t.value.items[0]?.t===`str`?`string`:`number`;if(e.props.has(`min`)||e.props.has(`max`))return`number`;let n=this.prop(e,`default`)?.value;return n?.t===`bool`?`boolean`:n?.t===`str`?`string`:n?.t===`num`?`number`:`any`}param(e){let t={label:this.text(e.args.label)??e.args.id.name};for(let n of[`hint`,`tag`]){let r=this.constProp(e,n);r!=null&&(t[n]=r)}let n=this.prop(e,`enabled`);n&&(t.enabled=Yt(n.value,this.formula(n.value,`values`).run));let r=this.prop(e,`format`);if(r){let e=Yt(r.value,this.formula(r.value,`value`,`string`).run);t.format=t=>e(void 0,t)}let i=this.prop(e,`default`);if(!i)return;let a=this.constant(i.value,`any`),o=this.prop(e,`options`);if(o){for(let t of[`min`,`max`,`step`])e.props.has(t)&&this.report.error(this.prop(e,t).key,`"${t}" is for a slider; this param has options`);let n=this.options(o);if(!n)return;if(!n.includes(a)){this.report.error(i.value,`the default ${this.slice(i.value)} is not one of the options`,n.join(`, `));return}return E.select({...t,options:n,default:a})}if(e.props.has(`min`)||e.props.has(`max`)){for(let t of[`min`,`max`])e.props.has(t)||this.report.error(e.at,`a slider needs "${t}: …"`);let n={...t};for(let t of[`min`,`max`,`step`]){let r=this.constProp(e,t);r!=null&&(n[t]=r)}return typeof a!=`number`&&this.report.error(i.value,`the default of a slider is a number`),E.range({...n,default:a})}if(typeof a==`boolean`)return E.switch({...t,default:a});this.report.error(e.at,`"${e.args.id.name}" is neither a select, a slider nor a switch`,`give it options: [...], min and max, or a default of true or false`)}options(e){if(e.value.t!==`array`||!e.value.items.length){this.report.error(e.value,`options are a list: [2, 3, 4] or ["a", "b"]`);return}let t=e.value.items.map(e=>this.constant(e,`any`)),n=typeof t[0];if(!t.every(e=>(typeof e==`number`||typeof e==`string`)&&typeof e===n))this.report.error(e.value,`options are all numbers or all texts`);else return t}preset(e,t,n=`preset`){let r={},i=new Map(t.filter(e=>e.args.id).map(e=>[e.args.id.name,e]));for(let[t,a]of e.props){if(St(e.spec.props,t))continue;let o=a[0],s=this.constant(o.value,`any`);if(t===`load`&&n===`scenario`){this.report.error(o.key,`a scenario leaves the load to the slider`,`use a preset for a load`);continue}if(t!==`load`&&!i.has(t)){let e=[...n===`preset`?[`load`]:[],...i.keys()];this.report.error(o.key,`unknown parameter "${t}"`,bt(t,e));continue}let c=this.names.params.get(t);if(c&&c!==`any`&&typeof s!==c){this.report.error(o.value,`"${t}" takes ${Kt(c)}`);continue}let l=i.get(t)&&this.prop(i.get(t),`options`);if(l?.value.t===`array`){let e=l.value.items.map(e=>e.t===`num`||e.t===`str`?e.value:void 0);e.includes(s)||this.report.error(o.value,`${String(s)} is not an option of "${t}"`,e.join(`, `))}r[t]=s}return r}expectation(e,t,n){let r={},i=this.text(e.args.label);i!=null&&(r.label=i);let a=this.named(e,`scenario`,Object.keys(t),`scenario`),o=this.named(e,`component`,[...n.keys()],`component`);if(a!==null&&o!==null){a!=null&&(r.scenario=a),o!=null&&(r.component=o);for(let t of[`target`,`full`]){let n=this.constProp(e,t);n!=null&&(n>0&&Number.isFinite(n)?r[t]=n:this.report.error(this.prop(e,t).value,`${t} is a load multiple above 0`))}if(!e.props.has(`target`)&&!e.props.has(`full`))this.report.error(e.at,`an expect needs a target or a full multiple`,`expect { target: 8 }`);else return r.target!=null||r.full!=null?r:void 0}}named(e,t,n,r){let i=this.prop(e,t);if(!i)return;let a=i.value.t===`id`?i.value.name:i.value.t===`str`?i.value.value:void 0;if(a==null)this.report.error(i.value,`${t} is the name of a ${r}`);else if(!n.includes(a))this.report.error(i.value,`unknown ${r} "${a}"`,bt(a,n));else return a;return null}step(e,t,n,r,i){let a=this.text(e.args.label);for(let t of Object.keys(e.spec.props)){let n=e.props.get(t)?.[0];n&&r.some(e=>e.args.id?.name===t)&&this.report.error(n.key,`"${t}" in a step is the step's own ${t}, not the parameter "${t}"`,`rename the parameter to set it in a step`)}let o=this.named(e,`scenario`,Object.keys(t),`scenario`),s=this.named(e,`focus`,[...n.keys()],`component`),c=this.constProp(e,`title`);c!=null&&!c.trim()&&this.report.error(this.prop(e,`title`).value,`a title needs a few words`);let l=this.constProp(e,`seconds`);l!=null&&!(l>0&&Number.isFinite(l))&&this.report.error(this.prop(e,`seconds`).value,`seconds is a duration above 0`);let u=this.preset(e,r),d=this.prop(e,`load`);if(d&&i&&typeof u.load==`number`&&!(u.load>=i.min&&u.load<=i.max)&&this.report.error(d.value,`the load goes from ${i.min} to ${i.max}`),a!=null&&o!==null&&s!==null)return{text:a,...c?.trim()?{title:c}:{},...o==null?{}:{scenario:o},...s==null?{}:{focus:s},...l!=null&&l>0?{seconds:l}:{},...Object.keys(u).length?{set:u}:{}}}growth(e){let t=this.constProp(e,`rate`),n=this.constProp(e,`per`),r=this.constProp(e,`asOf`);if(t!=null&&!(t>0)&&this.report.error(this.prop(e,`rate`).value,`growth needs a rate above 0`),r!=null&&!b(r)&&this.report.error(this.prop(e,`asOf`).value,`"${r}" is not a date`,`a day like "2026-11-01"`),t!=null&&n!=null&&r!=null)return{rate:t,per:n,asOf:r}}fit(e){let t=e.args.id;if(!t)return;this.fits.set(t.name,null);let n=e.children.filter(e=>e.keyword===`points`);if(n.length!==1){this.report.error(e.at,n.length?`a fit has one points block`:`a fit needs its points`,Cn(`points`));return}let r=n[0],{x:i,y:a}=r.args;if(!i||!a)return;i.name===a.name&&this.report.error(a,`x and y need different names`);let o=[];for(let e of r.rows){if(e.values.length!==2){this.report.error(e,`a row is two numbers: ${i.name} and ${a.name}`);continue}let[t,n]=e.values.map(e=>this.constant(e,`number`));o.push({[i.name]:t,[a.name]:n})}let s=this.constProp(e,`source`),c=this.constProp(e,`through`);try{let e={x:i.name,y:a.name};s!=null&&(e.source=s),c&&(e.through=c),this.fits.set(t.name,we(o,e))}catch(e){this.report.error(r.at,e.message.replace(/^loadmap: /,``))}}overload(e){let t=e.children.filter(e=>e.keyword===`drop`||e.keyword===`merge`);if(!t.length)return;let n=new Set,r=[],i={drop:[`olderThan`,`reason`],merge:[`share`,`reason`]};for(let e of t){let t=e.keyword;n.has(t)&&this.report.error(e.at,`"${t}" is set twice in this flow`),n.add(t);let a=[];for(let n of i[t]){let t=this.dynProp(e,n,n===`reason`?`string`:`number`);t!==void 0&&a.push([n,t])}let o=this.prop(e,`when`);r.push({key:t,fields:a,when:o&&Yt(o.value,this.formula(o.value,`ctx`).run)})}let a=r.every(e=>!e.when&&e.fields.every(([,e])=>typeof e!=`function`)),o=e=>{let t={};for(let n of r){if(n.when&&!n.when(e))continue;let r={};for(let[t,i]of n.fields)r[t]=typeof i==`function`?i(e):i;t[n.key]=r}return t};return a?o(void 0):o}retry(e){let t=e.children.filter(e=>e.keyword===`retry`);if(!t.length)return;t.length>1&&this.report.error(t[1].at,`"retry" is set twice in this flow`);let n=t[0],r=this.dynProp(n,`times`,`number`),i=this.dynProp(n,`budget`,`number`),a=this.prop(n,`when`),o=a&&Yt(a.value,this.formula(a.value,`values`).run),s=e=>{if(o&&!o(e))return;let t={times:(typeof r==`function`?r(e):r)??0};return i!==void 0&&(t.budget=typeof i==`function`?i(e):i),t};return!o&&typeof r!=`function`&&typeof i!=`function`?s(void 0):s}component(e,t){let n={},r=this.constProp(e,`name`)??this.text(e.args.label)??this.text(t?.args.label);if(r==null){let n=t?.args.label??e.args.label;n&&this.report.error(n,`a computed label cannot name the component`,`add name: "…"`)}n.name=r??(e.args.id??t?.args.id)?.name;for(let t of[`short`,`plural`]){let r=this.constProp(e,t);r!=null&&(n[t]=r)}for(let[t,r]of[[`demand`,`number`],[`capacity`,`capacity`],[`when`,`any`],[`over`,`string`],[`describe`,`string`]]){let i=this.prop(e,t);if(!i)continue;let a=t===`capacity`?e=>{if(!Xt(e))throw Error(`a capacity comes from measured(…), estimated(…) or configured(…)`)}:void 0;n[t]=this.dyn(i.value,r,`ctx`,a)}let i=t?t.args.id??t.at:e.at,a=[`capacity`,`over`].filter(e=>!(e in n)),o=e.children.some(e=>e.keyword===`component`);if(e===t&&!o&&a.length===2&&!(`demand`in n))return this.plainBoxes.add(e.args.id.name),this.plainBox(e),n;for(let e of a)this.report.error(i,`the component needs "${e}: …"`,Et[e].doc);return n}stage(e,t,n,r,i,a){let o=this.text(e.args.label),s=o==null?{}:{label:o},c=t.component?.id,l=this.prop(e,`component`);if(l){let e=l.value;e.t===`id`&&n.has(e.name)?c=e.name:this.report.error(e,`unknown component "${this.slice(e)}"`,bt(this.slice(e),n.keys()))}let u=()=>{this.report.error(e.at,`a ${e.keyword} stage needs a component`,`give the box demand and capacity lines, or name one: component: db`)};switch(e.keyword){case`pass`:return c?O(c,s):u();case`limit`:return c?te(c,s):u();case`cache`:{let t=this.dynProp(e,`hit`,`number`);return A({...s,hit:t??0,...c?{component:c}:{}})}case`store`:return c?ne(c,s):u();case`sink`:return re(s);case`workers`:{if(!c)return u();let t=this.dynProp(e,`perPod`,`number`,this.count(`perPod`)),n=this.constProp(e,`fill`),r={...s,perPod:t??0,...n?{fill:n}:{}},i=e.children.find(e=>e.keyword===`autoscale`);if(i){this.prop(e,`pods`)&&this.report.error(this.prop(e,`pods`).key,`an autoscaled pool has no fixed pods`,`leave out pods`);let t=this.dynProp(i,`min`,`number`)??1,n=this.dynProp(i,`max`,`number`,this.count(`pods`))??1,a=this.dynProp(i,`target`,`number`)??1;return k(c,{...r,autoscale:{min:t,max:n,target:a}})}let a=this.dynProp(e,`pods`,`number`,this.count(`pods`));return this.prop(e,`pods`)||this.report.error(e.at,`a workers stage needs pods, or autoscale`,`pods: 3, or autoscale { min: 2; max: 10; target: 0.7 }`),k(c,{...r,pods:a??0})}case`queue`:{let t=e.children.find(e=>e.keyword===`partitions`);if(!t){this.report.error(e.at,`a queue needs its partitions`,`partitions { orders: 12 }`);return}let n=[];for(let[e,r]of t.props){let t=r[0];i.has(e)?n.push([e,this.dyn(t.value,`number`,`ctx`,this.count(`partitions`))]):this.report.error(t.key,`unknown flow "${e}"`,bt(e,i.keys()))}let r=n.every(([,e])=>typeof e==`number`),a=e=>Object.fromEntries(n.map(([t,n])=>[t,typeof n==`function`?n(e):n])),o=r?a(void 0):a;return ee({...s,partitions:o,...c?{component:c}:{}})}case`fanout`:{let t=[];for(let n of e.edges){if(n.chain.length!==2){this.report.error(n,`a branch is one "flow -> stage: copies" line`);continue}let[e,o]=n.chain;i.has(e.name)||this.report.error(e,`unknown flow "${e.name}"`,bt(e.name,i.keys()));let s=r(o,`stage`);s&&a.add(s),n.colon?this.report.error(n.colon,`a branch takes its copies after ":", not a block`,`${e.name} -> ${o.name}: 1`):(n.value||this.report.error(n,`how many copies per unit?`,`${e.name} -> ${o.name}: 1`),n.body&&this.report.error(n.bodySpan??n,`a branch has no block`),s&&n.value&&i.has(e.name)&&t.push([e.name,s,this.dyn(n.value,`number`)]))}let n=e=>{let n={};for(let[r,i,a]of t){let t=n[r]??[];t.push({stage:i,share:typeof a==`function`?a(e):a}),n[r]=t}return n},o=t.every(([,,e])=>typeof e==`number`);return ie({...s,to:o?n(void 0):n,...c?{component:c}:{}})}}}node(e){let t=e.block,n=this.label(t.args.label)??e.id,r=this.prop(t,`sub`);r&&t.args.sub&&this.report.error(r.key,`the sub-line is set twice: on the first line and here`);let i=this.label(t.args.sub??r?.value),a={label:n};i!=null&&(a.sub=i);let o=e=>{let n=this.prop(t,e);if(!n)return;let r=Yt(n.value,this.formula(n.value,`i`,`string`).run);return e=>r(void 0,e)},s=e.stages.map(e=>e.id);if(t.keyword===`cluster`){a.stage=s.length===1?s[0]:s;let e=this.prop(t,`members`);a.members=e?this.dyn(e.value,`number`,`ctx`,this.count(`members`)):1;let n=o(`memberLabel`);return n&&(a.memberLabel=n),{kind:`cluster`,...a}}if(t.keyword===`pool`){a.stage=s[0];let e=o(`podLabel`);return e&&(a.podLabel=e),{kind:`pool`,...a}}return s.length?a.stage=s[0]:e.component&&(a.component=e.component.id),{kind:`node`,shape:this.constProp(t,`shape`)??`box`,...a}}edges(e,t){e.colon&&this.report.error(e.colon,`drop the ":" before a { … } block`,`${e.chain.map(e=>e.name).join(` -> `)} { ${e.chain.length>2?``:`label: …; `}when: … }`);for(let n of e.chain)t.has(n.name)||this.report.error(n,`unknown node "${n.name}"`,bt(n.name,t.keys()));let n=new Map;for(let t of e.body??[])if(t.kind!==`prop`||!St(Pt,t.key.name)){let e=t.kind===`prop`?t.key:t.kind===`decl`?t.keyword:t;this.report.error(e,`an edge holds only label and when`,bt(this.slice(e),Object.keys(Pt)))}else n.has(t.key.name)&&this.report.error(t.key,`"${t.key.name}" is set twice on this edge`),n.set(t.key.name,t);let r=e.value??n.get(`label`)?.value;e.value&&n.has(`label`)&&this.report.error(n.get(`label`).key,`the label is set twice`),r&&e.chain.length>2&&this.report.error(r,`a label goes on a single edge: a -> b: "…"`);let i=this.label(r),a=n.get(`when`),o=[];for(let t=0;t+1<e.chain.length;t++){let n={from:e.chain[t].name,to:e.chain[t+1].name};i!=null&&(n.label=i),a&&(n.when=Yt(a.value,this.formula(a.value,`ctx`).run)),o.push(n)}return o}},xn=new Set([...Object.getOwnPropertyNames(Object.prototype),`prototype`]),Sn=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\([\d\s.,%/+-]+\))$/i;function Cn(e){let t=St(Nt,e)?.example;return t?`e.g. ${t.split(`
16
- `)[0]}`:void 0}function wn(e){let t=Object.entries(Nt).filter(([,t])=>t.children.includes(e)).map(([e])=>e===``?`the top level`:e);return t.length?`it goes in ${t.join(` or `)}`:void 0}var Tn=t((e=>{var t=Object.defineProperty;(e=>t(e,`__esModule`,{value:!0}))(e),((e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})})(e,{GIFEncoder:()=>k,applyPalette:()=>S,default:()=>ce,nearestColor:()=>ee,nearestColorIndex:()=>D,nearestColorIndexWithDistance:()=>O,prequantize:()=>x,quantize:()=>_,snapColorsToPalette:()=>T});var n={signature:`GIF`,version:`89a`,trailer:59,extensionIntroducer:33,applicationExtensionLabel:255,graphicControlExtensionLabel:249,imageSeparator:44,signatureSize:3,versionSize:3,globalColorTableFlagMask:128,colorResolutionMask:112,sortFlagMask:8,globalColorTableSizeMask:7,applicationIdentifierSize:8,applicationAuthCodeSize:3,disposalMethodMask:28,userInputFlagMask:2,transparentColorFlagMask:1,localColorTableFlagMask:128,interlaceFlagMask:64,idSortFlagMask:32,localColorTableSizeMask:7};function r(e=256){let t=0,n=new Uint8Array(e);return{get buffer(){return n.buffer},reset(){t=0},bytesView(){return n.subarray(0,t)},bytes(){return n.slice(0,t)},writeByte(e){r(t+1),n[t]=e,t++},writeBytes(e,i=0,a=e.length){r(t+a);for(let r=0;r<a;r++)n[t++]=e[r+i]},writeBytesView(e,i=0,a=e.byteLength){r(t+a),n.set(e.subarray(i,i+a),t),t+=a}};function r(e){var r=n.length;if(r>=e)return;e=Math.max(e,r*(r<1048576?2:1.125)>>>0),r!=0&&(e=Math.max(e,256));let i=n;n=new Uint8Array(e),t>0&&n.set(i.subarray(0,t),0)}}var i=12,a=5003,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function s(e,t,n,s,c=r(512),l=new Uint8Array(256),u=new Int32Array(a),d=new Int32Array(a)){let f=u.length,p=Math.max(2,s);l.fill(0),d.fill(0),u.fill(-1);let m=0,h=0,g=p+1,_=g,v=!1,y=_,b=(1<<y)-1,x=1<<g-1,S=x+1,C=x+2,w=0,T=n[0],E=0;for(let e=f;e<65536;e*=2)++E;E=8-E,c.writeByte(p),O(x);let D=n.length;for(let e=1;e<D;e++)next_block:{let t=n[e],r=(t<<i)+T,a=t<<E^T;if(u[a]===r){T=d[a];break next_block}let o=a===0?1:f-a;for(;u[a]>=0;)if(a-=o,a<0&&(a+=f),u[a]===r){T=d[a];break next_block}O(T),T=t,C<1<<i?(d[a]=C++,u[a]=r):(u.fill(-1),C=x+2,v=!0,O(x))}return O(T),O(S),c.writeByte(0),c.bytesView();function O(e){for(m&=o[h],h>0?m|=e<<h:m=e,h+=y;h>=8;)l[w++]=m&255,w>=254&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0),m>>=8,h-=8;if((C>b||v)&&(v?(y=_,b=(1<<y)-1,v=!1):(++y,b=y===i?1<<y:(1<<y)-1)),e==S){for(;h>0;)l[w++]=m&255,w>=254&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0),m>>=8,h-=8;w>0&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0)}}}var c=s;function l(e,t,n){return e<<8&63488|t<<2&992|n>>3}function u(e,t,n,r){return e>>4|t&240|(n&240)<<4|(r&240)<<8}function d(e,t,n){return e>>4<<8|t&240|n>>4}function f(e,t,n){return e<t?t:e>n?n:e}function p(e){return e*e}function m(e,t,n){var r=0,i=1e100;let a=e[t],o=a.cnt,s=a.ac,c=a.rc,l=a.gc,u=a.bc;for(var d=a.fw;d!=0;d=e[d].fw){let t=e[d],a=t.cnt,m=o*a/(o+a);if(!(m>=i)){var f=0;n&&(f+=m*p(t.ac-s),f>=i)||(f+=m*p(t.rc-c),f>=i||(f+=m*p(t.gc-l),f>=i||(f+=m*p(t.bc-u),f>=i||(i=f,r=d))))}}a.err=i,a.nn=r}function h(){return{ac:0,rc:0,gc:0,bc:0,cnt:0,nn:0,fw:0,bk:0,tm:0,mtm:0,err:0}}function g(e,t){let n=Array(t===`rgb444`?4096:65536),r=e.length;if(t===`rgba4444`)for(let t=0;t<r;++t){let r=e[t],i=r>>24&255,a=r>>16&255,o=r>>8&255,s=r&255,c=u(s,o,a,i),l=c in n?n[c]:n[c]=h();l.rc+=s,l.gc+=o,l.bc+=a,l.ac+=i,l.cnt++}else if(t===`rgb444`)for(let t=0;t<r;++t){let r=e[t],i=r>>16&255,a=r>>8&255,o=r&255,s=d(o,a,i),c=s in n?n[s]:n[s]=h();c.rc+=o,c.gc+=a,c.bc+=i,c.cnt++}else for(let t=0;t<r;++t){let r=e[t],i=r>>16&255,a=r>>8&255,o=r&255,s=l(o,a,i),c=s in n?n[s]:n[s]=h();c.rc+=o,c.gc+=a,c.bc+=i,c.cnt++}return n}function _(e,t,n={}){let{format:r=`rgb565`,clearAlpha:i=!0,clearAlphaColor:a=0,clearAlphaThreshold:o=0,oneBitAlpha:s=!1}=n;if(!e||!e.buffer||!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw Error(`quantize() expected RGBA Uint8Array data`);let c=new Uint32Array(e.buffer),l=n.useSqrt!==!1,u=r===`rgba4444`,d=g(c,r),h=d.length,_=h-1,y=new Uint32Array(h+1);for(var b=0,x=0;x<h;++x){let e=d[x];if(e!=null){var S=1/e.cnt;u&&(e.ac*=S),e.rc*=S,e.gc*=S,e.bc*=S,d[b++]=e}}p(t)/b<.022&&(l=!1);for(var x=0;x<b-1;++x)d[x].fw=x+1,d[x+1].bk=x,l&&(d[x].cnt=Math.sqrt(d[x].cnt));l&&(d[x].cnt=Math.sqrt(d[x].cnt));var C,w,T;for(x=0;x<b;++x){m(d,x,!1);var E=d[x].err;for(w=++y[0];w>1&&(T=w>>1,!(d[C=y[T]].err<=E));w=T)y[w]=C;y[w]=x}var D=b-t;for(x=0;x<D;){for(var O;;){var ee=y[1];if(O=d[ee],O.tm>=O.mtm&&d[O.nn].mtm<=O.tm)break;O.mtm==_?ee=y[1]=y[y[0]--]:(m(d,ee,!1),O.tm=x);var E=d[ee].err;for(w=1;(T=w+w)<=y[0]&&(T<y[0]&&d[y[T]].err>d[y[T+1]].err&&T++,!(E<=d[C=y[T]].err));w=T)y[w]=C;y[w]=ee}var k=d[O.nn],A=O.cnt,te=k.cnt,S=1/(A+te);u&&(O.ac=S*(A*O.ac+te*k.ac)),O.rc=S*(A*O.rc+te*k.rc),O.gc=S*(A*O.gc+te*k.gc),O.bc=S*(A*O.bc+te*k.bc),O.cnt+=k.cnt,O.mtm=++x,d[k.bk].fw=k.fw,d[k.fw].bk=k.bk,k.mtm=_}let ne=[];var re=0;for(x=0;;++re){let e=f(Math.round(d[x].rc),0,255),t=f(Math.round(d[x].gc),0,255),n=f(Math.round(d[x].bc),0,255),r=255;u&&(r=f(Math.round(d[x].ac),0,255),s&&(r=r<=(typeof s==`number`?s:127)?0:255),i&&r<=o&&(e=t=n=a,r=0));let c=u?[e,t,n,r]:[e,t,n];if(v(ne,c)||ne.push(c),(x=d[x].fw)==0)break}return ne}function v(e,t){for(let n=0;n<e.length;n++){let r=e[n],i=r[0]===t[0]&&r[1]===t[1]&&r[2]===t[2],a=r.length>=4&&t.length>=4?r[3]===t[3]:!0;if(i&&a)return!0}return!1}function y(e,t){for(var n=0,r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return n}function b(e,t){return t>1?Math.round(e/t)*t:e}function x(e,{roundRGB:t=5,roundAlpha:n=10,oneBitAlpha:r=null}={}){let i=new Uint32Array(e.buffer);for(let e=0;e<i.length;e++){let a=i[e],o=a>>24&255,s=a>>16&255,c=a>>8&255,l=a&255;o=b(o,n),r&&(o=o<=(typeof r==`number`?r:127)?0:255),l=b(l,t),c=b(c,t),s=b(s,t),i[e]=o<<24|s<<16|c<<8|l}}function S(e,t,n=`rgb565`){if(!e||!e.buffer||!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw Error(`quantize() expected RGBA Uint8Array data`);if(t.length>256)throw Error(`applyPalette() only works with 256 colors or less`);let r=new Uint32Array(e.buffer),i=r.length,a=n===`rgb444`?4096:65536,o=new Uint8Array(i),s=Array(a);if(n===`rgba4444`)for(let e=0;e<i;e++){let n=r[e],i=n>>24&255,a=n>>16&255,c=n>>8&255,l=n&255,d=u(l,c,a,i),f=d in s?s[d]:s[d]=C(l,c,a,i,t);o[e]=f}else{let e=n===`rgb444`?d:l;for(let n=0;n<i;n++){let i=r[n],a=i>>16&255,c=i>>8&255,l=i&255,u=e(l,c,a),d=u in s?s[u]:s[u]=w(l,c,a,t);o[n]=d}}return o}function C(e,t,n,r,i){let a=0,o=1e100;for(let s=0;s<i.length;s++){let c=i[s],l=c[3],u=E(l-r);if(u>o)continue;let d=c[0];if(u+=E(d-e),u>o)continue;let f=c[1];if(u+=E(f-t),u>o)continue;let p=c[2];u+=E(p-n),u>o||(o=u,a=s)}return a}function w(e,t,n,r){let i=0,a=1e100;for(let o=0;o<r.length;o++){let s=r[o],c=s[0],l=E(c-e);if(l>a)continue;let u=s[1];if(l+=E(u-t),l>a)continue;let d=s[2];l+=E(d-n),l>a||(a=l,i=o)}return i}function T(e,t,n=5){if(!e.length||!t.length)return;let r=e.map(e=>e.slice(0,3)),i=n*n,a=e[0].length;for(let n=0;n<t.length;n++){let o=t[n];o=o.length<a?[o[0],o[1],o[2],255]:o.length>a?o.slice(0,3):o.slice();let s=O(r,o.slice(0,3),y),c=s[0],l=s[1];l>0&&l<=i&&(e[c]=o)}}function E(e){return e*e}function D(e,t,n=y){let r=1/0,i=-1;for(let a=0;a<e.length;a++){let o=e[a],s=n(t,o);s<r&&(r=s,i=a)}return i}function O(e,t,n=y){let r=1/0,i=-1;for(let a=0;a<e.length;a++){let o=e[a],s=n(t,o);s<r&&(r=s,i=a)}return[i,r]}function ee(e,t,n=y){return e[D(e,t,n)]}function k(e={}){let{initialCapacity:t=4096,auto:i=!0}=e,a=r(t),o=5003,s=new Uint8Array(256),c=new Int32Array(o),l=new Int32Array(o),u=!1;return{reset(){a.reset(),u=!1},finish(){a.writeByte(n.trailer)},bytes(){return a.bytes()},bytesView(){return a.bytesView()},get buffer(){return a.buffer},get stream(){return a},writeHeader:d,writeFrame(e,t,n,r={}){let{transparent:o=!1,transparentIndex:f=0,delay:p=0,palette:m=null,repeat:h=0,colorDepth:g=8,dispose:_=-1}=r,v=!1;if(i?u||=(v=!0,d(),!0):v=!!r.first,t=Math.max(0,Math.floor(t)),n=Math.max(0,Math.floor(n)),v){if(!m)throw Error(`First frame must include a { palette } option`);te(a,t,n,m,g),re(a,m),h>=0&&ne(a,h)}let y=Math.round(p/10);A(a,_,y,o,f);let b=!!m&&!v;ie(a,t,n,b?m:null),b&&re(a,m),ae(a,e,t,n,g,s,c,l)}};function d(){oe(a,`GIF89a`)}}function A(e,t,n,r,i){e.writeByte(33),e.writeByte(249),e.writeByte(4),i<0&&(i=0,r=!1);var a,o;r?(a=1,o=2):(a=0,o=0),t>=0&&(o=t&7),o<<=2,e.writeByte(o|0|a),j(e,n),e.writeByte(i||0),e.writeByte(0)}function te(e,t,n,r,i=8){let a=se(r.length)-1,o=i-1<<4|128|a;j(e,t),j(e,n),e.writeBytes([o,0,0])}function ne(e,t){e.writeByte(33),e.writeByte(255),e.writeByte(11),oe(e,`NETSCAPE2.0`),e.writeByte(3),e.writeByte(1),j(e,t),e.writeByte(0)}function re(e,t){let n=1<<se(t.length);for(let r=0;r<n;r++){let n=[0,0,0];r<t.length&&(n=t[r]),e.writeByte(n[0]),e.writeByte(n[1]),e.writeByte(n[2])}}function ie(e,t,n,r){if(e.writeByte(44),j(e,0),j(e,0),j(e,t),j(e,n),r){let t=se(r.length)-1;e.writeByte(128|t)}else e.writeByte(0)}function ae(e,t,n,r,i=8,a,o,s){c(n,r,t,i,e,a,o,s)}function j(e,t){e.writeByte(t&255),e.writeByte(t>>8&255)}function oe(e,t){for(var n=0;n<t.length;n++)e.writeByte(t.charCodeAt(n))}function se(e){return Math.max(Math.ceil(Math.log2(e)),1)}var ce=k}));function F(e){if(!e)throw Error(`Assertion failed.`)}var En=Math.PI/180,Dn=180/Math.PI,On=e=>{let t=(e%360+360)%360;if(t===0||t===90||t===180||t===270)return t;throw Error(`Invalid rotation ${e}.`)},kn=[1,0,0,0,1,0,0,0,1],An=(e,t,n)=>{let[r,i,,a,o]=e,s=Math.abs(r)*t+Math.abs(a)*n,c=Math.abs(i)*t+Math.abs(o)*n;return In(In(Pn(-t/2,-n/2),e),Pn(s/2,c/2))},jn=e=>{let[t,n]=e;return On(cr(Math.atan2(n,Mn(e)?-t:t)*Dn,90))},Mn=e=>{let[t,n,,r,i]=e;return t*i-n*r<0},Nn=e=>{let t=e*En,n=Math.round(Math.cos(t)),r=Math.round(Math.sin(t));return[n,r,0,-r,n,0,0,0,1]},Pn=(e,t)=>[1,0,0,0,1,0,e,t,1],Fn=(e,t)=>[e,0,0,0,t,0,0,0,1],In=(e,t)=>{let n=Array(9);for(let r=0;r<3;r++)for(let i=0;i<3;i++)n[3*r+i]=e[3*r]*t[i]+e[3*r+1]*t[3+i]+e[3*r+2]*t[6+i];return n},Ln=(e,t,n,r)=>({rotation:On(e+(t?-n:n)),flip:t!==r}),Rn=e=>e&&e[e.length-1],zn=e=>e>=0&&e<2**32,Bn=e=>e>=-(2**31)&&e<2**31,I=e=>{let t=0;for(;e.readBits(1)===0&&t<32;)t++;if(t>=32)throw Error(`Invalid exponential-Golomb code.`);return 2**t-1+e.readBits(t)},Vn=e=>{let t=I(e);return t%2==0?-(t/2):(t+1)/2},Hn=(e,t,n,r)=>{for(let i=t;i<n;i++){let t=Math.floor(i/8),a=e[t],o=7-(i&7);a&=~(1<<o),a|=(r&1<<n-i-1)>>n-i-1<<o,e[t]=a}},Un=e=>e.constructor===Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),Wn=e=>e.constructor===DataView?e:ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e),Gn=globalThis.TextEncoder===void 0?class{constructor(){this.encoding=`utf-8`}encode(e=``){let t=new Uint8Array(3*e.length),n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);if(i<128)t[n++]=i;else if(i<2048)t[n++]=192|i>>6,t[n++]=128|i&63;else if(i<55296||i>57343)t[n++]=224|i>>12,t[n++]=128|i>>6&63,t[n++]=128|i&63;else{let a=r+1<e.length?e.charCodeAt(r+1):0;i<56320&&a>=56320&&a<=57343?(i=65536+(i-55296<<10)+(a-56320),r++,t[n++]=240|i>>18,t[n++]=128|i>>12&63,t[n++]=128|i>>6&63,t[n++]=128|i&63):(t[n++]=239,t[n++]=191,t[n++]=189)}}return t.slice(0,n)}}:globalThis.TextEncoder;globalThis.TextDecoder===void 0||globalThis.TextDecoder;var Kn=new Gn,qn={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Jn={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},Yn={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},Xn=e=>!e||e.primaries==null&&e.transfer==null&&e.matrix==null&&e.fullRange==null,Zn=e=>e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e),Qn=class{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let e,t=new Promise(t=>{let n=!1;e=()=>{n||=(t(),this.pending--,!0)}}),n=this.currentPromise;return this.currentPromise=t,this.pending++,await n,e}},$n=e=>[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``),er=e=>(e=e>>1&1431655765|(e&1431655765)<<1,e=e>>2&858993459|(e&858993459)<<2,e=e>>4&252645135|(e&252645135)<<4,e=e>>8&16711935|(e&16711935)<<8,e=e>>16&65535|(e&65535)<<16,e>>>0),tr=(e,t,n)=>{let r=0,i=e.length-1,a=-1;for(;r<=i;){let o=r+(i-r+1)/2|0;n(e[o])<=t?(a=o,r=o+1):i=o-1}return a},nr=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},rr=e=>{throw Error(`Unexpected value: ${e}`)},ir=(e,t,n)=>{let r=e.getUint8(t),i=e.getUint8(t+1),a=e.getUint8(t+2);return n?r|i<<8|a<<16:r<<16|i<<8|a},ar=(e,t,n,r)=>{n>>>=0,n&=16777215,r?(e.setUint8(t,n&255),e.setUint8(t+1,n>>>8&255),e.setUint8(t+2,n>>>16&255)):(e.setUint8(t,n>>>16&255),e.setUint8(t+1,n>>>8&255),e.setUint8(t+2,n&255))},or=(e,t,n)=>Math.max(t,Math.min(n,e)),sr=(e,t,n)=>e+(t-e)*n,cr=(e,t)=>Math.round(e/t)*t,lr=(e,t)=>Math.round(e*t)/t,ur=(e,t)=>Math.floor(e*t)/t,dr=e=>{let t=0;for(;e!==0;)e&=e-1,t++;return t},fr=/^[a-z]{3}$/,pr=e=>fr.test(e),mr=1e6*(1+2**-52),hr=(e,t)=>{let n=e<0?-1:1;e=Math.abs(e);let r=0,i=1,a=1,o=0,s=e;for(;;){let e=Math.floor(s),c=e*a+r,l=e*o+i;if(l>t)return{num:n*a,den:o};if(r=a,i=o,a=c,o=l,s=1/(s-e),!isFinite(s))break}return{num:n*a,den:o}},gr=class{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}},_r=null,vr=()=>_r===null?_r=!!(typeof navigator<`u`&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent))):_r,yr=null,br=()=>yr===null?yr=typeof navigator<`u`&&navigator.userAgent?.includes(`Firefox`):yr,xr=null,Sr=()=>xr===null?xr=!(typeof navigator>`u`||!navigator.vendor?.includes(`Google Inc`)&&!/Chrome/.test(navigator.userAgent)):xr,Cr=null,wr=()=>{if(Cr!==null)return Cr;if(typeof navigator>`u`)return null;let e=/\bChrome\/(\d+)/.exec(navigator.userAgent);return e?Cr=Number(e[1]):null},Tr=e=>globalThis.isSecureContext!==void 0&&!globalThis.isSecureContext?`${e} is not available in this environment; this may be because this page is running in an insecure context. Try serving your page over HTTPS or use localhost.`:`${e} is not available in this environment.`,Er=e=>e instanceof DOMException&&e.name===`QuotaExceededError`&&/reclaimed/i.test(e.message),Dr=(async()=>{})().constructor,Or=e=>e instanceof Dr||e instanceof Promise||typeof e?.then==`function`,kr=function*(e){for(let t in e){let n=e[t];n!==void 0&&(yield{key:t,value:n})}},Ar=e=>{switch(e.toLowerCase()){case`image/jpeg`:case`image/jpg`:return`.jpg`;case`image/png`:return`.png`;case`image/gif`:return`.gif`;case`image/webp`:return`.webp`;case`image/bmp`:return`.bmp`;case`image/svg+xml`:return`.svg`;case`image/tiff`:return`.tiff`;case`image/avif`:return`.avif`;case`image/x-icon`:case`image/vnd.microsoft.icon`:return`.ico`;default:return null}},jr=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},Mr=()=>{Symbol.dispose??=Symbol(`Symbol.dispose`)},Nr=e=>typeof e==`number`&&!Number.isNaN(e),Pr=(e,t)=>{let n=-1,r=1/0;for(let i=0;i<e.length;i++){let a=t(e[i]);(n===-1||a<r)&&(r=a,n=i)}return n},Fr=e=>{F(Number.isInteger(e.num)),F(Number.isInteger(e.den)),F(e.den!==0);let t=Math.abs(e.num),n=Math.abs(e.den);for(;n!==0;){let e=t%n;t=n,n=e}let r=t||1;return{num:e.num/r,den:e.den/r}},Ir=(e,t)=>{if(typeof e!=`object`||!e)throw TypeError(`${t} must be an object.`);if(!Number.isInteger(e.left)||e.left<0)throw TypeError(`${t}.left must be a non-negative integer.`);if(!Number.isInteger(e.top)||e.top<0)throw TypeError(`${t}.top must be a non-negative integer.`);if(!Number.isInteger(e.width)||e.width<0)throw TypeError(`${t}.width must be a non-negative integer.`);if(!Number.isInteger(e.height)||e.height<0)throw TypeError(`${t}.height must be a non-negative integer.`)},Lr=e=>new Promise(t=>setTimeout(t,e)),Rr=e=>Array.isArray(e)?e:[e],zr=class{constructor(){this._listeners=new Map}on(e,t,n){this._listeners.has(e)||this._listeners.set(e,new Set);let r={fn:t,once:n?.once??!1};return this._listeners.get(e).add(r),()=>{this._listeners.get(e)?.delete(r)}}_emit(...e){let[t,n]=e,r=this._listeners.get(t);if(r)for(let e of r){try{e.fn(n)}catch(e){console.error(e)}e.once&&r.delete(e)}}},Br=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype&&Object.values(e).every(e=>typeof e==`string`),Vr;(function(e){e[e.Silent=0]=`Silent`,e[e.Errors=1]=`Errors`,e[e.Warnings=2]=`Warnings`,e[e.Info=3]=`Info`})(Vr||={});var Hr=class e{constructor(){}static get level(){return e._level}static set level(t){if(t!==Vr.Silent&&t!==Vr.Errors&&t!==Vr.Warnings&&t!==Vr.Info)throw TypeError(`Invalid log level. Use one of the values of the LogLevel enum.`);e._level=t}static get _emitter(){return e._emitterInstance??=new zr}static on(t,n,r){return e._emitter.on(t,n,r)}static _error(...t){e._emitter._emit(`error`,t),e._level>=Vr.Errors&&console.error(...t)}static _warn(...t){e._emitter._emit(`warn`,t),e._level>=Vr.Warnings&&console.warn(...t)}static _info(...t){e._emitter._emit(`info`,t),e._level>=Vr.Info&&console.info(...t)}};Hr._level=Vr.Info,Hr._emitterInstance=null;var Ur=class{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(typeof t!=`string`)throw TypeError(`mimeType must be a string.`)}},Wr=class{constructor(e,t,n,r){if(this.data=e,this.mimeType=t,this.name=n,this.description=r,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==void 0&&typeof t!=`string`)throw TypeError(`mimeType, when provided, must be a string.`);if(n!==void 0&&typeof n!=`string`)throw TypeError(`name, when provided, must be a string.`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`description, when provided, must be a string.`)}},Gr=e=>{if(!e||typeof e!=`object`)throw TypeError(`tags must be an object.`);if(e.title!==void 0&&typeof e.title!=`string`)throw TypeError(`tags.title, when provided, must be a string.`);if(e.description!==void 0&&typeof e.description!=`string`)throw TypeError(`tags.description, when provided, must be a string.`);if(e.artist!==void 0&&typeof e.artist!=`string`)throw TypeError(`tags.artist, when provided, must be a string.`);if(e.album!==void 0&&typeof e.album!=`string`)throw TypeError(`tags.album, when provided, must be a string.`);if(e.albumArtist!==void 0&&typeof e.albumArtist!=`string`)throw TypeError(`tags.albumArtist, when provided, must be a string.`);if(e.trackNumber!==void 0&&(!Number.isInteger(e.trackNumber)||e.trackNumber<=0))throw TypeError(`tags.trackNumber, when provided, must be a positive integer.`);if(e.tracksTotal!==void 0&&(!Number.isInteger(e.tracksTotal)||e.tracksTotal<=0))throw TypeError(`tags.tracksTotal, when provided, must be a positive integer.`);if(e.discNumber!==void 0&&(!Number.isInteger(e.discNumber)||e.discNumber<=0))throw TypeError(`tags.discNumber, when provided, must be a positive integer.`);if(e.discsTotal!==void 0&&(!Number.isInteger(e.discsTotal)||e.discsTotal<=0))throw TypeError(`tags.discsTotal, when provided, must be a positive integer.`);if(e.genre!==void 0&&typeof e.genre!=`string`)throw TypeError(`tags.genre, when provided, must be a string.`);if(e.date!==void 0&&(!(e.date instanceof Date)||Number.isNaN(e.date.getTime())))throw TypeError(`tags.date, when provided, must be a valid Date.`);if(e.creationTime!==void 0&&e.creationTime!==null&&(!(e.creationTime instanceof Date)||Number.isNaN(e.creationTime.getTime())))throw TypeError(`tags.creationTime, when provided, must be a valid Date or null.`);if(e.beatsPerMinute!==void 0&&(!Number.isInteger(e.beatsPerMinute)||e.beatsPerMinute<=0))throw TypeError(`tags.beatsPerMinute, when provided, must be a positive integer.`);if(e.lyrics!==void 0&&typeof e.lyrics!=`string`)throw TypeError(`tags.lyrics, when provided, must be a string.`);if(e.images!==void 0){if(!Array.isArray(e.images))throw TypeError(`tags.images, when provided, must be an array.`);for(let t of e.images){if(!t||typeof t!=`object`)throw TypeError(`Each image in tags.images must be an object.`);if(!(t.data instanceof Uint8Array))throw TypeError(`Each image.data must be a Uint8Array.`);if(typeof t.mimeType!=`string`)throw TypeError(`Each image.mimeType must be a string.`);if(![`coverFront`,`coverBack`,`unknown`].includes(t.kind))throw TypeError(`Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.`)}}if(e.comment!==void 0&&typeof e.comment!=`string`)throw TypeError(`tags.comment, when provided, must be a string.`);if(e.raw!==void 0){if(!e.raw||typeof e.raw!=`object`)throw TypeError(`tags.raw, when provided, must be an object.`);for(let t of Object.values(e.raw))if(t!==null&&typeof t!=`string`&&!(Array.isArray(t)&&t.every(e=>typeof e==`string`))&&!(t instanceof Uint8Array)&&!(Array.isArray(t)&&t.every(e=>e instanceof Uint8Array))&&!(t instanceof Ur)&&!(t instanceof Wr)&&!Br(t))throw TypeError(`Each value in tags.raw must be a string, string array, Uint8Array, Uint8Array array, RichImageData, AttachedFile, Record<string, string>, or null.`)}},Kr=e=>{if(!e||typeof e!=`object`)throw TypeError(`disposition must be an object.`);if(e.default!==void 0&&typeof e.default!=`boolean`)throw TypeError(`disposition.default must be a boolean.`);if(e.primary!==void 0&&typeof e.primary!=`boolean`)throw TypeError(`disposition.primary must be a boolean.`);if(e.forced!==void 0&&typeof e.forced!=`boolean`)throw TypeError(`disposition.forced must be a boolean.`);if(e.original!==void 0&&typeof e.original!=`boolean`)throw TypeError(`disposition.original must be a boolean.`);if(e.commentary!==void 0&&typeof e.commentary!=`boolean`)throw TypeError(`disposition.commentary must be a boolean.`);if(e.hearingImpaired!==void 0&&typeof e.hearingImpaired!=`boolean`)throw TypeError(`disposition.hearingImpaired must be a boolean.`);if(e.visuallyImpaired!==void 0&&typeof e.visuallyImpaired!=`boolean`)throw TypeError(`disposition.visuallyImpaired must be a boolean.`)},qr=class e{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),t=this.bytes[e]??0,n=7-(this.pos&7),r=(t&1<<n)>>n;return this.pos++,r}readBits(e){if(e===1)return this.readBit();let t=0;for(let n=0;n<e;n++)t<<=1,t|=this.readBit();return t}writeBits(e,t){let n=this.pos+e;for(let e=this.pos;e<n;e++){let r=Math.floor(e/8),i=this.bytes[r],a=7-(e&7);i&=~(1<<a),i|=(t&1<<n-e-1)>>n-e-1<<a,this.bytes[r]=i}this.pos=n}copyBits(e,t){let n=0;for(;n<e-7;n+=8)this.writeBits(8,t.readBits(8));let r=e-n;r>0&&this.writeBits(r,t.readBits(r))}readAlignedByte(){if(this.pos%8!=0)throw Error(`Bitstream is not byte-aligned.`);let e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let t=new e(this.bytes);return t.pos=this.pos,t}},Jr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Yr=[-1,1,2,3,4,5,6,8],Xr=[1,2,3,4,6,7,17,19,20,21,22],Zr=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new qr(e),n=Qr(t),{frequencyIndex:r,sampleRate:i}=$r(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Yr[a]);let s=n,c=!1,l=i;(n===5||n===29)&&(c=n===29,l=$r(t).sampleRate,s=Qr(t),s===22&&t.skipBits(4));let u=1024;if(Xr.includes(s)&&(u=t.readBits(1)?960:1024),n!==5&&n!==29)for(;t.getBitsLeft()>15;){let e=t.pos;if(t.readBits(11)!==695)t.pos=e+1;else{Qr(t)===5&&t.readBits(1)&&(l=$r(t).sampleRate,t.getBitsLeft()>11&&t.readBits(11)===1352&&(c=!!t.readBits(1)));break}}return o!==null&&o>1&&(c=!1),{objectType:n,coreObjectType:s,frequencyIndex:r,channelConfiguration:a,coreSampleRate:i,outputSampleRate:l,outputNumberOfChannels:c&&o===1?2:o,frameLength:u}},Qr=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},$r=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Jr.length?Jr[t]:null}},ei=e=>{let t=e.objectType===5||e.objectType===29,n=e.objectType===29,r=t?e.outputSampleRate/2:e.outputSampleRate,i=n?1:e.outputNumberOfChannels,a=Yr.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),ri(r)===15&&(o+=24),t&&(o+=9,ri(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new qr(c);return ti(l,e.objectType),ni(l,r),l.writeBits(4,a),t&&(ni(l,e.outputSampleRate),ti(l,2)),l.writeBits(3,0),c},ti=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},ni=(e,t)=>{let n=ri(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},ri=e=>{let t=Jr.indexOf(e);return t===-1?15:t},ii=[48e3,44100,32e3],ai=[24e3,22050,16e3],oi=`Mediabunny v1.65.0`,si;(function(e){e[e.NON_IDR_SLICE=1]=`NON_IDR_SLICE`,e[e.SLICE_DPA=2]=`SLICE_DPA`,e[e.SLICE_DPB=3]=`SLICE_DPB`,e[e.SLICE_DPC=4]=`SLICE_DPC`,e[e.IDR=5]=`IDR`,e[e.SEI=6]=`SEI`,e[e.SPS=7]=`SPS`,e[e.PPS=8]=`PPS`,e[e.AUD=9]=`AUD`,e[e.SPS_EXT=13]=`SPS_EXT`})(si||={});var ci;(function(e){e[e.RASL_N=8]=`RASL_N`,e[e.RASL_R=9]=`RASL_R`,e[e.BLA_W_LP=16]=`BLA_W_LP`,e[e.RSV_IRAP_VCL23=23]=`RSV_IRAP_VCL23`,e[e.VPS_NUT=32]=`VPS_NUT`,e[e.SPS_NUT=33]=`SPS_NUT`,e[e.PPS_NUT=34]=`PPS_NUT`,e[e.AUD_NUT=35]=`AUD_NUT`,e[e.PREFIX_SEI_NUT=39]=`PREFIX_SEI_NUT`,e[e.SUFFIX_SEI_NUT=40]=`SUFFIX_SEI_NUT`})(ci||={});var li=function*(e){let t=0,n=-1;for(;t<e.length-2;){let r=e.indexOf(0,t);if(r===-1||r>=e.length-2)break;t=r;let i=0;t+3<e.length&&e[t+1]===0&&e[t+2]===0&&e[t+3]===1?i=4:e[t+1]===0&&e[t+2]===1&&(i=3),i===0?t++:(n!==-1&&t>n&&(yield{offset:n,length:t-n}),n=t+i,t=n)}n!==-1&&n<e.length&&(yield{offset:n,length:e.length-n})},ui=function*(e,t){let n=0,r=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;n+t<=e.length;){let e;t===1?e=r.getUint8(n):t===2?e=r.getUint16(n,!1):t===3?e=ir(r,n,!1):(F(t===4),e=r.getUint32(n,!1)),n+=t,yield{offset:n,length:e},n+=e}},di=(e,t)=>t.description?ui(e,(Un(t.description)[4]&3)+1):li(e),fi=e=>e&31,pi=e=>{let t=new Uint8Array(e.length),n=e.length,r=0;for(let i=0;i<n;i++)i+2<n&&e[i]===0&&e[i+1]===0&&e[i+2]===3?(t[r++]=0,t[r++]=0,i+=2):t[r++]=e[i];return t.subarray(0,r)};new Uint8Array([0,0,0,1]);var mi=(e,t)=>{let n=e.reduce((e,n)=>e+t+n.byteLength,0),r=new Uint8Array(n),i=0;for(let n of e){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(t){case 1:e.setUint8(i,n.byteLength);break;case 2:e.setUint16(i,n.byteLength,!1);break;case 3:ar(e,i,n.byteLength,!1);break;case 4:e.setUint32(i,n.byteLength,!1)}i+=t,r.set(n,i),i+=n.byteLength}return r},hi=e=>{try{let t=[],n=[],r=[];for(let i of li(e)){let a=e.subarray(i.offset,i.offset+i.length),o=fi(a[0]);o===si.SPS&&t.length<31?t.push(a):o===si.PPS&&n.length<255?n.push(a):o===si.SPS_EXT&&r.length<255&&r.push(a)}if(t.length===0||n.length===0)return null;let i=t[0],a=yi(i);if(!a)return null;let o=a.profileIdc===100||a.profileIdc===110||a.profileIdc===122||a.profileIdc===144;return{configurationVersion:1,avcProfileIndication:a.profileIdc,profileCompatibility:a.constraintFlags,avcLevelIndication:a.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:n,chromaFormat:o?a.chromaFormatIdc:null,bitDepthLumaMinus8:o?a.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?a.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?r:null}}catch(e){return Hr._error(`Error building AVC Decoder Configuration Record:`,e),null}},gi=e=>{let t=[];t.push(e.configurationVersion),t.push(e.avcProfileIndication),t.push(e.profileCompatibility),t.push(e.avcLevelIndication),t.push(252|e.lengthSizeMinusOne&3),t.push(224|e.sequenceParameterSets.length&31);for(let n of e.sequenceParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}t.push(e.pictureParameterSets.length);for(let n of e.pictureParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}if((e.avcProfileIndication===100||e.avcProfileIndication===110||e.avcProfileIndication===122||e.avcProfileIndication===144)&&e.chromaFormat!==null){F(e.bitDepthLumaMinus8!==null),F(e.bitDepthChromaMinus8!==null),F(e.sequenceParameterSetExt!==null),t.push(252|e.chromaFormat&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.sequenceParameterSetExt.length);for(let n of e.sequenceParameterSetExt){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}}return new Uint8Array(t)},_i=e=>{try{let t=Wn(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=t.getUint8(n++),o=t.getUint8(n++),s=t.getUint8(n++)&3,c=t.getUint8(n++)&31,l=[];for(let r=0;r<c;r++){let r=t.getUint16(n,!1);n+=2,l.push(e.subarray(n,n+r)),n+=r}let u=t.getUint8(n++),d=[];for(let r=0;r<u;r++){let r=t.getUint16(n,!1);n+=2,d.push(e.subarray(n,n+r)),n+=r}let f={configurationVersion:r,avcProfileIndication:i,profileCompatibility:a,avcLevelIndication:o,lengthSizeMinusOne:s,sequenceParameterSets:l,pictureParameterSets:d,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if((i===100||i===110||i===122||i===144)&&n+4<=e.length){let r=t.getUint8(n++)&3,i=t.getUint8(n++)&7,a=t.getUint8(n++)&7,o=t.getUint8(n++);f.chromaFormat=r,f.bitDepthLumaMinus8=i,f.bitDepthChromaMinus8=a;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}f.sequenceParameterSetExt=s}return f}catch(e){return Hr._error(`Error deserializing AVC Decoder Configuration Record:`,e),null}},vi={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},yi=e=>{try{let t=pi(e),n=new qr(t);if(n.skipBits(1),n.skipBits(2),n.readBits(5)!==7)return null;let r=n.readAlignedByte(),i=n.readAlignedByte(),a=n.readAlignedByte();I(n);let o=1,s=0,c=0,l=0;if((r===100||r===110||r===122||r===244||r===44||r===83||r===86||r===118||r===128)&&(o=I(n),o===3&&(l=n.readBits(1)),s=I(n),c=I(n),n.skipBits(1),n.readBits(1))){for(let e=0;e<(o===3?12:8);e++)if(n.readBits(1)){let t=e<6?16:64,r=8,i=8;for(let e=0;e<t;e++){if(i!==0){let e=Vn(n);i=(r+e+256)%256}r=i===0?r:i}}}I(n);let u=I(n);if(u===0)I(n);else if(u===1){n.skipBits(1),Vn(n),Vn(n);let e=I(n);for(let t=0;t<e;t++)Vn(n)}I(n),n.skipBits(1);let d=I(n),f=I(n),p=16*(d+1),m=16*(f+1),h=p,g=m,_=n.readBits(1);if(_||n.skipBits(1),n.skipBits(1),n.readBits(1)){let e=I(n),t=I(n),r=I(n),i=I(n),a,s;if((l===0?o:0)===0)a=1,s=2-_;else{let e=o===3?1:2,t=o===1?2:1;a=e,s=t*(2-_)}h-=a*(e+t),g-=s*(r+i)}if(h<=0||g<=0)return null;let v=2,y=2,b=2,x=0,S={num:1,den:1},C=null,w=null,T=null,E=null,D=n.pos;if(n.readBits(1)){if(n.readBits(1)){let e=n.readBits(8);if(e===255)S={num:n.readBits(16),den:n.readBits(16)};else{let t=vi[e];t&&(S=t)}}n.readBits(1)&&n.skipBits(1),n.readBits(1)&&(n.skipBits(3),x=n.readBits(1),n.readBits(1)&&(v=n.readBits(8),y=n.readBits(8),b=n.readBits(8))),n.readBits(1)&&(I(n),I(n)),n.readBits(1)&&(n.skipBits(32),n.skipBits(32),n.skipBits(1));let e=n.readBits(1);e&&bi(n);let t=n.readBits(1);t&&bi(n),(e||t)&&n.skipBits(1),n.skipBits(1),T=n.pos,E=n.readBits(1),E&&(n.skipBits(1),I(n),I(n),I(n),I(n),C=Math.min(I(n),16),w=Math.min(I(n),16))}if(C===null){F(w===null);let e=i&16;if((r===44||r===86||r===100||r===110||r===122||r===244)&&e)C=0,w=0;else{let e=d+1,t=f+1,n=(2-_)*t,r=Bo.find(e=>e.level>=a)??Rn(Bo),i=Math.min(Math.floor(r.maxDpbMbs/(e*n)),16);C=i,w=i}}return F(w!==null),{emulationUnpreventedBytes:t,profileIdc:r,constraintFlags:i,levelIdc:a,frameMbsOnlyFlag:_,chromaFormatIdc:o,bitDepthLumaMinus8:s,bitDepthChromaMinus8:c,codedWidth:p,codedHeight:m,displayWidth:h,displayHeight:g,pixelAspectRatio:S,colourPrimaries:v,matrixCoefficients:b,transferCharacteristics:y,fullRangeFlag:x,numReorderFrames:C,maxDecFrameBuffering:w,vuiParametersFlagBitOffset:D,bitstreamRestrictionFlagBitOffset:T,bitstreamRestrictionFlag:E}}catch(e){return Hr._error(`Error parsing AVC SPS:`,e),null}},bi=e=>{let t=I(e);e.skipBits(4),e.skipBits(4);for(let n=0;n<=t;n++)I(e),I(e),e.skipBits(1);e.skipBits(5),e.skipBits(5),e.skipBits(5),e.skipBits(5)},xi=(e,t)=>t.description?ui(e,(Un(t.description)[21]&3)+1):li(e),Si=e=>e>>1&63,Ci=e=>{try{let t=new qr(pi(e));t.skipBits(16),t.readBits(4);let n=t.readBits(3),r=t.readBits(1),{general_profile_space:i,general_tier_flag:a,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:c,general_level_idc:l}=Ti(t,n);I(t);let u=I(t),d=0;u===3&&(d=t.readBits(1));let f=I(t),p=I(t),m=f,h=p;if(t.readBits(1)){let e=I(t),n=I(t),r=I(t),i=I(t),a=1,o=1,s=d===0?u:0;s===1?(a=2,o=2):s===2&&(a=2,o=1),m-=(e+n)*a,h-=(r+i)*o}if(m<=0||h<=0)return null;let g=I(t),_=I(t);I(t);let v=t.readBits(1)?0:n,y=0;for(let e=v;e<=n;e++)I(t),y=I(t),I(t);if(I(t),I(t),I(t),I(t),I(t),I(t),t.readBits(1)&&t.readBits(1)&&Ei(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&(t.skipBits(4),t.skipBits(4),I(t),I(t),t.skipBits(1)),Di(t,I(t)),t.readBits(1)){let e=I(t);for(let n=0;n<e;n++)I(t),t.skipBits(1)}t.skipBits(1),t.skipBits(1);let b=2,x=2,S=2,C=0,w=0,T={num:1,den:1};if(t.readBits(1)){let e=ki(t,n);T=e.pixelAspectRatio,b=e.colourPrimaries,x=e.transferCharacteristics,S=e.matrixCoefficients,C=e.fullRangeFlag,w=e.minSpatialSegmentationIdc}return{displayWidth:m,displayHeight:h,pixelAspectRatio:T,colourPrimaries:b,transferCharacteristics:x,matrixCoefficients:S,fullRangeFlag:C,maxDecFrameBuffering:Math.min(y+1,16),spsMaxSubLayersMinus1:n,spsTemporalIdNestingFlag:r,generalProfileSpace:i,generalTierFlag:a,generalProfileIdc:o,generalProfileCompatibilityFlags:s,generalConstraintIndicatorFlags:c,generalLevelIdc:l,chromaFormatIdc:u,bitDepthLumaMinus8:g,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:w}}catch(e){return Hr._error(`Error parsing HEVC SPS:`,e),null}},wi=e=>{try{let t=[],n=[],r=[],i=[],a=65535;for(let o of li(e)){let s=e.subarray(o.offset,o.offset+o.length),c=Si(s[0]);c===ci.VPS_NUT&&t.length<a?t.push(s):c===ci.SPS_NUT&&n.length<a?n.push(s):c===ci.PPS_NUT&&r.length<a?r.push(s):(c===ci.PREFIX_SEI_NUT||c===ci.SUFFIX_SEI_NUT)&&i.length<a&&i.push(s)}if(n.length===0||r.length===0)return null;let o=Ci(n[0]);if(!o)return null;let s=0;if(r.length>0){let e=r[0],t=new qr(pi(e));t.skipBits(16),I(t),I(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),I(t),I(t),Vn(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&I(t),Vn(t),Vn(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);let n=t.readBits(1),i=t.readBits(1);s=!n&&!i?0:n&&!i?2:!n&&i?3:0}let c=[...t.length?[{arrayCompleteness:1,nalUnitType:ci.VPS_NUT,nalUnits:t}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:ci.SPS_NUT,nalUnits:n}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:ci.PPS_NUT,nalUnits:r}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:Si(i[0][0]),nalUnits:i}]:[]];return{configurationVersion:1,generalProfileSpace:o.generalProfileSpace,generalTierFlag:o.generalTierFlag,generalProfileIdc:o.generalProfileIdc,generalProfileCompatibilityFlags:o.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:o.generalConstraintIndicatorFlags,generalLevelIdc:o.generalLevelIdc,minSpatialSegmentationIdc:o.minSpatialSegmentationIdc,parallelismType:s,chromaFormatIdc:o.chromaFormatIdc,bitDepthLumaMinus8:o.bitDepthLumaMinus8,bitDepthChromaMinus8:o.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:o.spsMaxSubLayersMinus1+1,temporalIdNested:o.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:c}}catch(e){return Hr._error(`Error building HEVC Decoder Configuration Record:`,e),null}},Ti=(e,t)=>{let n=e.readBits(2),r=e.readBits(1),i=e.readBits(5),a=0;for(let t=0;t<32;t++)a=a<<1|e.readBits(1);let o=new Uint8Array(6);for(let t=0;t<6;t++)o[t]=e.readBits(8);let s=e.readBits(8),c=[],l=[];for(let n=0;n<t;n++)c.push(e.readBits(1)),l.push(e.readBits(1));if(t>0)for(let n=t;n<8;n++)e.skipBits(2);for(let n=0;n<t;n++)c[n]&&e.skipBits(88),l[n]&&e.skipBits(8);return{general_profile_space:n,general_tier_flag:r,general_profile_idc:i,general_profile_compatibility_flags:a,general_constraint_indicator_flags:o,general_level_idc:s}},Ei=e=>{for(let t=0;t<4;t++)for(let n=0;n<(t===3?2:6);n++)if(!e.readBits(1))I(e);else{let n=Math.min(64,1<<4+(t<<1));t>1&&Vn(e);for(let t=0;t<n;t++)Vn(e)}},Di=(e,t)=>{let n=[];for(let r=0;r<t;r++)n[r]=Oi(e,r,t,n)},Oi=(e,t,n,r)=>{let i=0,a=0,o=0;if(t!==0&&(a=e.readBits(1)),a){o=t===n?t-(I(e)+1):t-1,e.readBits(1),I(e);let a=r[o]??0;for(let t=0;t<=a;t++)e.readBits(1)||e.readBits(1);i=r[o]}else{let t=I(e),n=I(e);for(let n=0;n<t;n++)I(e),e.readBits(1);for(let t=0;t<n;t++)I(e),e.readBits(1);i=t+n}return i},ki=(e,t)=>{let n=2,r=2,i=2,a=0,o=0,s={num:1,den:1};if(e.readBits(1)){let t=e.readBits(8);if(t===255)s={num:e.readBits(16),den:e.readBits(16)};else{let e=vi[t];e&&(s=e)}}return e.readBits(1)&&e.readBits(1),e.readBits(1)&&(e.readBits(3),a=e.readBits(1),e.readBits(1)&&(n=e.readBits(8),r=e.readBits(8),i=e.readBits(8))),e.readBits(1)&&(I(e),I(e)),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(1)&&(I(e),I(e),I(e),I(e)),e.readBits(1)&&(e.readBits(32),e.readBits(32),e.readBits(1)&&I(e),e.readBits(1)&&Ai(e,!0,t)),e.readBits(1)&&(e.readBits(1),e.readBits(1),e.readBits(1),o=I(e),I(e),I(e),I(e),I(e)),{pixelAspectRatio:s,colourPrimaries:n,transferCharacteristics:r,matrixCoefficients:i,fullRangeFlag:a,minSpatialSegmentationIdc:o}},Ai=(e,t,n)=>{let r=!1,i=!1,a=!1;t&&(r=e.readBits(1)===1,i=e.readBits(1)===1,(r||i)&&(a=e.readBits(1)===1,a&&(e.readBits(8),e.readBits(5),e.readBits(1),e.readBits(5)),e.readBits(4),e.readBits(4),a&&e.readBits(4),e.readBits(5),e.readBits(5),e.readBits(5)));for(let t=0;t<=n;t++){let t=e.readBits(1)===1,n=!0;t||(n=e.readBits(1)===1);let o=!1;n?I(e):o=e.readBits(1)===1;let s=1;o||(s=I(e)+1),r&&ji(e,s,a),i&&ji(e,s,a)}},ji=(e,t,n)=>{for(let r=0;r<t;r++)I(e),I(e),n&&(I(e),I(e)),e.readBits(1)},Mi=e=>{let t=[];t.push(e.configurationVersion),t.push((e.generalProfileSpace&3)<<6|(e.generalTierFlag&1)<<5|e.generalProfileIdc&31),t.push(e.generalProfileCompatibilityFlags>>>24&255),t.push(e.generalProfileCompatibilityFlags>>>16&255),t.push(e.generalProfileCompatibilityFlags>>>8&255),t.push(e.generalProfileCompatibilityFlags&255),t.push(...e.generalConstraintIndicatorFlags),t.push(e.generalLevelIdc&255),t.push(240|e.minSpatialSegmentationIdc>>8&15),t.push(e.minSpatialSegmentationIdc&255),t.push(252|e.parallelismType&3),t.push(252|e.chromaFormatIdc&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.avgFrameRate>>8&255),t.push(e.avgFrameRate&255),t.push((e.constantFrameRate&3)<<6|(e.numTemporalLayers&7)<<3|(e.temporalIdNested&1)<<2|e.lengthSizeMinusOne&3),t.push(e.arrays.length&255);for(let n of e.arrays){t.push((n.arrayCompleteness&1)<<7|n.nalUnitType&63),t.push(n.nalUnits.length>>8&255),t.push(n.nalUnits.length&255);for(let e of n.nalUnits){t.push(e.length>>8&255),t.push(e.length&255);for(let n=0;n<e.length;n++)t.push(e[n])}}return new Uint8Array(t)},Ni;(function(e){e[e.audAllowed=0]=`audAllowed`,e[e.beforeFirstVcl=1]=`beforeFirstVcl`,e[e.afterFirstVcl=2]=`afterFirstVcl`,e[e.eoBitstreamAllowed=3]=`eoBitstreamAllowed`,e[e.noMoreDataAllowed=4]=`noMoreDataAllowed`})(Ni||={});var Pi={1:{colourPrimaries:5,transferCharacteristics:6,matrixCoefficients:5},2:{colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1},3:{colourPrimaries:6,transferCharacteristics:6,matrixCoefficients:6},4:{colourPrimaries:7,transferCharacteristics:7,matrixCoefficients:7},5:{colourPrimaries:9,transferCharacteristics:14,matrixCoefficients:9},7:{colourPrimaries:1,transferCharacteristics:13,matrixCoefficients:0}},Fi=e=>{let t=new qr(e);if(t.readBits(2)!==2)return null;let n=t.readBits(1),r=(t.readBits(1)<<1)+n;if(r===3&&t.skipBits(1),t.readBits(1)===1||t.readBits(1)!==0||(t.skipBits(2),t.readBits(24)!==4817730))return null;let i=8;r>=2&&(i=t.readBits(1)?12:10);let a=t.readBits(3),o=0,s=0;if(a!==7){if(s=t.readBits(1),r===1||r===3){let e=t.readBits(1),n=t.readBits(1);o=!e&&!n?3:e&&!n?2:1,t.skipBits(1)}else o=1}else o=3,s=1;let c=t.readBits(16),l=t.readBits(16),u=(c+1)*(l+1),d=Rn(z).level;for(let e of z)if(u<=e.maxPictureSize){d=e.level;break}let f=Pi[a],p=f?.colourPrimaries??2,m=f?.transferCharacteristics??2,h=f?.matrixCoefficients??2;return{profile:r,level:d,bitDepth:i,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:p,transferCharacteristics:m,matrixCoefficients:h}},Ii=function*(e){let t=new qr(e),n=()=>{let e=0;for(let n=0;n<8;n++){let r=t.readAlignedByte();if(e+=(r&127)*2**(n*7),!(r&128))break;if(n===7&&r&128)return null}return e>2**32-1?null:e};for(;t.getBitsLeft()>=8;){t.skipBits(1);let r=t.readBits(4),i=t.readBits(1),a=t.readBits(1);t.skipBits(1),i&&t.skipBits(8);let o;if(a){let e=n();if(e===null)return;o=e}else o=Math.floor(t.getBitsLeft()/8);F(t.pos%8==0),yield{type:r,data:e.subarray(t.pos/8,t.pos/8+o)},t.skipBits(o*8)}},Li=e=>{for(let{type:t,data:n}of Ii(e)){if(t!==1)continue;let e=new qr(n),r=e.readBits(3);e.readBits(1);let i=e.readBits(1),a=0,o=0,s=0;if(i)a=e.readBits(5);else{let t=e.readBits(1),n=0;if(t){if(e.skipBits(32),e.skipBits(32),e.readBits(1)){let t=0;for(;t<32&&!e.readBits(1);)t++;t<32&&e.skipBits(t)}n=e.readBits(1),n&&(s=e.readBits(5),e.skipBits(32),e.skipBits(5),e.skipBits(5))}let r=e.readBits(1),i=e.readBits(5);for(let t=0;t<=i;t++){e.skipBits(12);let i=e.readBits(5);if(t===0&&(a=i),i>7){let n=e.readBits(1);t===0&&(o=n)}if(n&&e.readBits(1)){let t=s+1;e.skipBits(t),e.skipBits(t),e.skipBits(1)}r&&e.readBits(1)&&e.skipBits(4)}}let c=e.readBits(4),l=e.readBits(4),u=c+1;e.skipBits(u);let d=l+1;e.skipBits(d);let f=0;if(f=i?0:e.readBits(1),f&&(e.skipBits(4),e.skipBits(3)),e.skipBits(1),e.skipBits(1),e.skipBits(1),!i){e.skipBits(1),e.skipBits(1),e.skipBits(1),e.skipBits(1);let t=e.readBits(1);t&&(e.skipBits(1),e.skipBits(1));let n=e.readBits(1),r=0;r=n?2:e.readBits(1),r>0&&(e.readBits(1)||e.skipBits(1)),t&&e.skipBits(3)}e.skipBits(1),e.skipBits(1),e.skipBits(1);let p=e.readBits(1),m=8;r===2&&p?m=e.readBits(1)?12:10:r<=2&&(m=p?10:8);let h=0;r!==1&&(h=e.readBits(1));let g=2,_=2,v=2;e.readBits(1)&&(g=e.readBits(8),_=e.readBits(8),v=e.readBits(8));let y=0,b=1,x=1,S=0;return h?y=e.readBits(1):g===1&&_===13&&v===0?(y=1,b=0,x=0):(y=e.readBits(1),r===0?(b=1,x=1):r===1?(b=0,x=0):m===12?(b=e.readBits(1),x=b?e.readBits(1):0):(b=1,x=0),b&&x&&(S=e.readBits(2))),{profile:r,level:a,tier:o,bitDepth:m,monochrome:h,chromaSubsamplingX:b,chromaSubsamplingY:x,chromaSamplePosition:S,videoFullRangeFlag:y,colourPrimaries:g,transferCharacteristics:_,matrixCoefficients:v}}return null},Ri=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,zi=e=>{if(e.byteLength<19)throw Error(`Invalid Opus identification header: too short.`);let t=Wn(e),n=t.getUint8(9),r=t.getUint16(10,!0),i=t.getUint32(12,!0),a=t.getInt16(16,!0),o=t.getUint8(18),s=null;return o&&(s=e.subarray(19,21+n)),{outputChannelCount:n,preSkip:r,inputSampleRate:i,outputGain:a,channelMappingFamily:o,channelMappingTable:s}},Bi=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Vi=e=>{let t=e[0]>>3,n=e[0]&3,r;return r=n===0?1:n===1||n===2?2:e[1]&63,{durationInSamples:Bi[t]*r}},Hi=(e,t,n)=>{switch(e){case`avc`:for(let e of di(n,t)){let t=n[e.offset],r=fi(t);if(r>=si.NON_IDR_SLICE&&r<=si.SLICE_DPC)return`delta`;if(r===si.IDR)return`key`;if(r===si.SEI&&!Sr()){let t=pi(n.subarray(e.offset,e.offset+e.length)),r=1;do{let e=0;for(;;){let n=t[r++];if(n===void 0||(e+=n,n<255))break}let n=0;for(;;){let e=t[r++];if(e===void 0||(n+=e,e<255))break}if(e===6){let e=new qr(t);e.pos=8*r;let n=-1;try{n=I(e)}catch{}let i=e.readBits(1);if(n===0&&i===1)return`key`}r+=n}while(r<t.length-1)}}return`delta`;case`hevc`:for(let e of xi(n,t)){let t=Si(n[e.offset]);if(t<ci.BLA_W_LP)return`delta`;if(t<=ci.RSV_IRAP_VCL23)return`key`}return`delta`;case`vp8`:return n[0]&1?`delta`:`key`;case`vp9`:{let e=new qr(n);if(e.readBits(2)!==2)return null;let t=e.readBits(1);return(e.readBits(1)<<1)+t===3&&e.skipBits(1),e.readBits(1)?null:e.readBits(1)===0?`key`:`delta`}case`av1`:{let e=!1;for(let{type:t,data:r}of Ii(n))if(t===1){let t=new qr(r);t.skipBits(4),e=!!t.readBits(1)}else if(t===3||t===6||t===7){if(e)return`key`;let t=new qr(r);return t.readBits(1)?null:t.readBits(2)===0?`key`:`delta`}return null}case`prores`:return`key`;default:rr(e),F(!1)}},Ui=(e,t)=>e===`truehd`?(t.byteLength>=8?Wn(t).getUint32(4):null)===4168249274?`key`:`delta`:`key`,Wi;(function(e){e[e.STREAMINFO=0]=`STREAMINFO`,e[e.VORBIS_COMMENT=4]=`VORBIS_COMMENT`,e[e.PICTURE=6]=`PICTURE`})(Wi||={});var Gi=e=>{if(e.length<7||e[0]!==11||e[1]!==119)return null;let t=new qr(e);t.skipBits(16),t.skipBits(16);let n=t.readBits(2);if(n===3)return null;let r=t.readBits(6),i=t.readBits(5);if(i>8)return null;let a=t.readBits(3),o=t.readBits(3);return o&1&&o!==1&&t.skipBits(2),o&4&&t.skipBits(2),o===2&&t.skipBits(2),{fscod:n,bsid:i,bsmod:a,acmod:o,lfeon:t.readBits(1),bitRateCode:Math.floor(r/2)}};new Uint8Array([5,4,65,67,45,51]),new Uint8Array([5,4,69,65,67,51]);var Ki=[1,2,3,6],qi=e=>{if(e.length<6||e[0]!==11||e[1]!==119)return null;let t=new qr(e);t.skipBits(16);let n=t.readBits(2);if(t.skipBits(3),n!==0&&n!==2)return null;let r=t.readBits(11),i=t.readBits(2),a=0,o;i===3?(a=t.readBits(2),o=3):o=t.readBits(2);let s=t.readBits(3),c=t.readBits(1),l=t.readBits(5);if(l<11||l>16)return null;let u=Ki[o],d;return d=i<3?ii[i]/1e3:ai[a]/1e3,{dataRate:Math.round((r+1)*d/(u*16)),substreams:[{fscod:i,fscod2:a,bsid:l,bsmod:0,acmod:s,lfeon:c,numDepSub:0,chanLoc:0}]}},Ji=8,Yi=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],Xi=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],Zi=[16,16,20,20,0,24,24,0],Qi=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],$i=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],ea=8,ta=[32e3,44100,48e3,0],na=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],ra=[512,1024,2048,4096],ia=e=>{let t=L(e),n=Wn(e),r=t?Math.ceil(t.frameSize/4)*4:0,i=null;for(;r+4<=e.length&&n.getUint32(r)===1683496997;){let t=aa(e.subarray(r));if(!t)break;i??=t,r+=t.frameSize}if(t)return{frameSize:i?r:t.frameSize,sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,sampleCount:t.sampleCount,channelLayout:t.channelLayout,pcmResolution:t.pcmResolution,bitRate:t.bitRate,core:t,hasExtensions:i!==null};if(!i?.asset)return null;let{asset:a}=i;return{frameSize:r,sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,sampleCount:a.sampleCount,channelLayout:a.channelLayout,pcmResolution:a.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},L=e=>{if(e.length<18||e[0]!==127||e[1]!==254||e[2]!==128||e[3]!==1)return null;let t=new qr(e);if(t.skipBits(32),t.skipBits(1),t.readBits(5)!==31)return null;let n=t.readBits(1),r=t.readBits(7)+1;if(r%Ji!==0)return null;let i=t.readBits(14)+1;if(i<96)return null;let a=t.readBits(6);if(a>=Qi.length)return null;let o=Yi[t.readBits(4)];if(o===0)return null;let s=Xi[t.readBits(5)];if(t.readBits(1)!==0)return null;t.skipBits(4),t.skipBits(5);let c=t.readBits(2);if(c===3)return null;t.skipBits(1),n&&t.skipBits(16),t.skipBits(7);let l=Zi[t.readBits(3)];if(l===0)return null;let u=c!==0;return{frameSize:i,sampleRate:o,numberOfChannels:Qi[a]+ +!!u,sampleCount:r*32,channelLayout:$i[a]|(u?ea:0),amode:a,lfePresent:u,bitRate:s,pcmResolution:l}},aa=e=>{if(e.length<10||e[0]!==100||e[1]!==88||e[2]!==32||e[3]!==37)return null;let t=new qr(e);t.skipBits(32),t.skipBits(8);let n=t.readBits(2),r=t.readBits(1),i=8+4*r,a=16+4*r;t.skipBits(i);let o=t.readBits(a)+1,s={frameSize:o,asset:null};if(!t.readBits(1))return s;let c=ta[t.readBits(2)],l=512*(t.readBits(3)+1);t.readBits(1)&&t.skipBits(36);let u=t.readBits(3)+1,d=t.readBits(3)+1,f=[];for(let e=0;e<u;e++)f.push(t.readBits(n+1));for(let e of f)t.skipBits(8*dr(e));if(t.readBits(1)){t.skipBits(2);let e=t.readBits(2)+1<<2,n=t.readBits(2)+1;t.skipBits(n*e)}for(let e=0;e<d;e++)t.skipBits(a);t.skipBits(9),t.skipBits(3),t.readBits(1)&&t.skipBits(4),t.readBits(1)&&t.skipBits(24),t.readBits(1)&&t.skipBits(8*(t.readBits(10)+1));let p=t.readBits(5)+1,m=na[t.readBits(4)],h=t.readBits(8)+1,g=0;if(t.readBits(1)&&(h>2&&t.skipBits(1),h>6&&t.skipBits(1),t.readBits(1))){let e=t.readBits(2)+1<<2;g=t.readBits(e)}return c===0||t.getBitsLeft()<0?s:{frameSize:o,asset:{sampleRate:m,numberOfChannels:h,sampleCount:Math.round(l*m/c),channelLayout:g,pcmResolution:p}}},oa=e=>{let t=new Uint8Array(20),n=Wn(t);n.setUint32(0,e.sampleRate),n.setUint32(4,e.bitRate),n.setUint32(8,e.bitRate),t[12]=e.pcmResolution;let r=e.core&&!e.hasExtensions?1:0,i=new qr(t);return i.seekToByte(13),i.writeBits(2,Math.max(ra.indexOf(e.sampleCount),0)),i.writeBits(5,r),i.writeBits(1,+!!e.core?.lfePresent),i.writeBits(6,e.core?.amode??0),i.writeBits(14,e.core?e.core.frameSize-1:0),i.writeBits(1,0),i.writeBits(3,0),i.writeBits(16,e.channelLayout),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(5,0),t},sa=/<(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})>/g,ca=/(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})/,la=e=>{let t=ca.exec(e);if(!t)throw Error(`Expected match.`);return 36e5*Number(t[1]||`0`)+6e4*Number(t[2])+1e3*Number(t[3])+Number(t[4])},ua=e=>{let t=Math.floor(e/36e5),n=Math.floor(e%36e5/6e4),r=Math.floor(e%6e4/1e3),i=e%1e3;return t.toString().padStart(2,`0`)+`:`+n.toString().padStart(2,`0`)+`:`+r.toString().padStart(2,`0`)+`.`+i.toString().padStart(3,`0`)},da=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},fa=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r});Mr();var pa=-1/0,ma=-1/0,ha=null;typeof FinalizationRegistry<`u`&&(ha=new FinalizationRegistry(e=>{let t=performance.now();e.type===`video`?(t-pa>=1e3&&(Hr._error(`A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them.`),pa=t),typeof VideoFrame<`u`&&e.data instanceof VideoFrame&&e.data.close()):(t-ma>=1e3&&(Hr._error(`An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them.`),ma=t),typeof AudioData<`u`&&e.data instanceof AudioData&&e.data.close())}));var ga=class{constructor(){this._referenceCount=0,this._lastAllocationBuffer=null}},_a=[`I420`,`I420P10`,`I420P12`,`I420A`,`I420AP10`,`I420AP12`,`I422`,`I422P10`,`I422P12`,`I422A`,`I422AP10`,`I422AP12`,`I444`,`I444P10`,`I444P12`,`I444A`,`I444AP10`,`I444AP12`,`NV12`,`RGBA`,`RGBX`,`BGRA`,`BGRX`],va=new Set(_a),ya=class e{get codedWidth(){return this.visibleRect.width}get codedHeight(){return this.visibleRect.height}get displayWidth(){return this.rotation%180==0?this.squarePixelWidth:this.squarePixelHeight}get displayHeight(){return this.rotation%180==0?this.squarePixelHeight:this.squarePixelWidth}get microsecondTimestamp(){return Math.trunc(mr*this.timestamp)}get microsecondDuration(){return Math.trunc(mr*this.duration)}get hasAlpha(){return this.format&&this.format.includes(`A`)}constructor(t,n){if(this._closed=!1,t instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&t instanceof SharedArrayBuffer||ArrayBuffer.isView(t)){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.format===void 0||!va.has(n.format))throw TypeError(`init.format must be one of: `+_a.join(`, `));if(!Number.isInteger(n.codedWidth)||n.codedWidth<=0)throw TypeError(`init.codedWidth must be a positive integer.`);if(!Number.isInteger(n.codedHeight)||n.codedHeight<=0)throw TypeError(`init.codedHeight must be a positive integer.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(n.layout!==void 0){if(!Array.isArray(n.layout))throw TypeError(`init.layout, when provided, must be an array.`);for(let e of n.layout){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`Each entry in init.layout must be an object.`);if(!Number.isInteger(e.offset)||e.offset<0)throw TypeError(`plane.offset must be a non-negative integer.`);if(!Number.isInteger(e.stride)||e.stride<0)throw TypeError(`plane.stride must be a non-negative integer.`)}}if(n.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),n.displayWidth!==void 0&&(!Number.isInteger(n.displayWidth)||n.displayWidth<=0))throw TypeError(`init.displayWidth, when provided, must be a positive integer.`);if(n.displayHeight!==void 0&&(!Number.isInteger(n.displayHeight)||n.displayHeight<=0))throw TypeError(`init.displayHeight, when provided, must be a positive integer.`);if(n.displayWidth!==void 0!=(n.displayHeight!==void 0))throw TypeError(`init.displayWidth and init.displayHeight must be either both provided or both omitted.`);this.format=n.format,this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0;let e=n.layout??Aa(n.format,n.codedWidth,n.codedHeight),r=n.colorSpace??null;r===null&&(r=this.format===`RGBA`||this.format===`RGBX`||this.format===`BGRA`||this.format===`BGRX`?{primaries:`bt709`,transfer:`iec61966-2-1`,matrix:`rgb`,fullRange:!0}:{primaries:`bt709`,transfer:`bt709`,matrix:`bt709`,fullRange:!1}),this.visibleRect={left:n.visibleRect?.left??0,top:n.visibleRect?.top??0,width:n.visibleRect?.width??n.codedWidth,height:n.visibleRect?.height??n.codedHeight},n.displayWidth===void 0?(this.squarePixelWidth=this.visibleRect.width,this.squarePixelHeight=this.visibleRect.height):(this.squarePixelWidth=this.rotation%180==0?n.displayWidth:n.displayHeight,this.squarePixelHeight=this.rotation%180==0?n.displayHeight:n.displayWidth),this._data=n._doNotCopy?Un(t):Un(t).slice(),this._layout=e,this.colorSpace=new Ta(r)}else if(typeof VideoFrame<`u`&&t instanceof VideoFrame){if(n?.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n?.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(n?.timestamp!==void 0&&!Number.isFinite(n?.timestamp))throw TypeError(`init.timestamp, when provided, must be a number.`);if(n?.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);n?.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),this._data=t,this._layout=null,this.format=t.format,this.visibleRect={left:t.visibleRect?.x??0,top:t.visibleRect?.y??0,width:t.visibleRect?.width??t.codedWidth,height:t.visibleRect?.height??t.codedHeight},this.rotation=n?.rotation??0,this.flip=n?.flip??!1,this.squarePixelWidth=t.displayWidth,this.squarePixelHeight=t.displayHeight,this.timestamp=n?.timestamp??t.timestamp/1e6,this.duration=n?.duration??(t.duration??0)/1e6;let{primaries:e,transfer:r,matrix:i,fullRange:a}=t.colorSpace;this.colorSpace=new Ta({primaries:e!==null&&e in qn?e:null,transfer:r!==null&&r in Jn?r:null,matrix:i!==null&&i in Yn?i:null,fullRange:a})}else if(typeof HTMLImageElement<`u`&&t instanceof HTMLImageElement||typeof SVGImageElement<`u`&&t instanceof SVGImageElement||typeof ImageBitmap<`u`&&t instanceof ImageBitmap||typeof HTMLVideoElement<`u`&&t instanceof HTMLVideoElement||typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&t instanceof OffscreenCanvas){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(n.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),typeof VideoFrame<`u`)return new e(new VideoFrame(t,{timestamp:Math.trunc(n.timestamp*mr),duration:Math.trunc((n.duration??0)*mr)||void 0,visibleRect:n.visibleRect&&{x:n.visibleRect.left,y:n.visibleRect.top,width:n.visibleRect.width,height:n.visibleRect.height}}),n);let r=0,i=0;if(`naturalWidth`in t?(r=t.naturalWidth,i=t.naturalHeight):`videoWidth`in t?(r=t.videoWidth,i=t.videoHeight):`width`in t&&(r=Number(t.width),i=Number(t.height)),!r||!i)throw TypeError(`Could not determine dimensions.`);let a=n.visibleRect??{left:0,top:0,width:r,height:i},o=new OffscreenCanvas(a.width,a.height),s=o.getContext(`2d`,{alpha:br(),willReadFrequently:!0});if(!s)throw Error(`OffscreenCanvas must have support for the '2d' context in order to create a VideoSample from this data.`);s.drawImage(t,-a.left,-a.top),this._data=o,this._layout=null,this.format=`RGBX`,this.visibleRect={left:0,top:0,width:a.width,height:a.height},this.squarePixelWidth=a.width,this.squarePixelHeight=a.height,this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0,this.colorSpace=new Ta({matrix:`rgb`,primaries:`bt709`,transfer:`iec61966-2-1`,fullRange:!0})}else if(t instanceof ga){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(this._data=t,t._referenceCount++,this.format=t.getFormat(),this.format!==null&&!_a.includes(this.format))throw TypeError(`getFormat() must return a VideoSamplePixelFormat or null.`);if(this.visibleRect={left:0,top:0,width:t.getCodedWidth(),height:t.getCodedHeight()},!Number.isInteger(this.visibleRect.width)||this.visibleRect.width<=0)throw TypeError(`getCodedWidth() must return a positive integer.`);if(!Number.isInteger(this.visibleRect.height)||this.visibleRect.height<=0)throw TypeError(`getCodedHeight() must return a positive integer.`);if(this.squarePixelWidth=t.getSquarePixelWidth(),!Number.isInteger(this.squarePixelWidth)||this.squarePixelWidth<=0)throw TypeError(`getSquarePixelWidth() must return a positive integer.`);if(this.squarePixelHeight=t.getSquarePixelHeight(),!Number.isInteger(this.squarePixelHeight)||this.squarePixelHeight<=0)throw TypeError(`getSquarePixelHeight() must return a positive integer.`);this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0,this.colorSpace=t.getColorSpace()}else throw TypeError(`Invalid data type: Must be a BufferSource, CanvasImageSource, or VideoSampleResource.`);this.encodeOptions=n?.encodeOptions??{},this.pixelAspectRatio=Fr({num:this.squarePixelWidth*this.codedHeight,den:this.squarePixelHeight*this.codedWidth}),ha?.register(this,{type:`video`,data:this._data},this)}clone(){if(this._closed)throw Error(`VideoSample is closed.`);return F(this._data!==null),this._data instanceof ga?new e(this._data,{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):Ea(this._data)?new e(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):this._data instanceof Uint8Array?(F(this._layout),new e(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions,_doNotCopy:!0})):new e(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions})}close(){this._closed||=(ha?.unregister(this),this._data instanceof ga?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):Ea(this._data)?this._data.close():this._data=null,!0)}allocationSize(e={}){if(ka(e),this._closed)throw Error(`VideoSample is closed.`);if((e.format??this.format)==null)throw Error(`Cannot get allocation size when format is null.`);return Ea(this._data)?this._data.allocationSize(e):Ma(this,e).allocationSize}async copyTo(t,n={}){if(!Zn(t))throw TypeError(`destination must be an ArrayBuffer or an ArrayBuffer view.`);if(ka(n),this._closed)throw Error(`VideoSample is closed.`);if((n.format??this.format)==null)throw Error(`Cannot copy video sample data when format is null.`);if(F(this._data!==null),Ea(this._data))return this._data.copyTo(t,n);if(n.format&&![`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(this.format)&&[`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(n.format)){if(this._data instanceof ga){let r={stack:[],error:void 0,hasError:!1};try{let i=da(r,await this._data.toRgbSample({timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip},n.colorSpace??`srgb`),!1);if(!(i instanceof e))throw TypeError(`toRgbSample() must return a VideoSample.`);if(![`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(i.format))throw Error(`Sample returned by toRgbSample was expected to have an RGB format, got '${i.format}' instead.`);return await i.copyTo(t,n)}catch(e){r.error=e,r.hasError=!0}finally{fa(r)}}else{if(typeof VideoFrame>`u`)throw Error(`For this sample, converting from a non-RGB to an RGB format requires VideoFrame to be defined.`);let e=this.toVideoFrame(),r=await e.copyTo(t,n);return e.close(),r}}let r=Ma(this,n);F(this.format);let i=Un(t);if(i.byteLength<r.allocationSize)throw TypeError(`Destination buffer too small. Required: ${r.allocationSize}, Available: ${i.byteLength}`);let a=ja(this.format),o;if(this._data instanceof ga){let e=this._data.getDataPlanes();if(Or(e)&&(e=await e),!Array.isArray(e)||e.some(e=>!(e.data instanceof Uint8Array)||!Number.isInteger(e.stride)||e.stride<0))throw TypeError(`getDataPlanes() must return an array of objects with a Uint8Array "data" property and a non-negative integer "stride" property.`);o=e}else if(this._data instanceof Uint8Array)F(this._layout),F(this._layout.length===a.length),o=this._layout.map((e,t)=>{let n=Math.ceil(this.codedHeight/a[t].heightDivisor);return{data:this._data.subarray(e.offset,e.offset+e.stride*n),stride:e.stride}});else{let e=this._data.getContext(`2d`);F(e),o=[{data:Un(e.getImageData(0,0,this.codedWidth,this.codedHeight).data),stride:4*this.codedWidth}]}let s=[],c=a.length;for(let e=0;e<c;e++){let t=r.computedLayouts[e],n=o[e].stride,a=o[e].data,c=t.sourceTop*n;c+=t.sourceLeftBytes;let l=t.destinationOffset,u=t.sourceWidthBytes,d={offset:l,stride:t.destinationStride};for(let e=0;e<t.sourceHeight;e++){if(c+u>a.byteLength)throw Error(`Source buffer OOB read.`);if(l+u>i.byteLength)throw Error(`Destination buffer OOB write.`);let e=a.subarray(c,c+u);i.set(e,l),c+=n,l+=t.destinationStride}s.push(d)}if(n.format!==void 0){let e=this.format.startsWith(`RGB`)!==n.format.startsWith(`RGB`),t=this.format.includes(`X`)&&n.format.includes(`A`);if(e||t)for(let n=0;n<r.allocationSize;n+=4){if(e){let e=i[n],t=i[n+2];i[n]=t,i[n+2]=e}t&&(i[n+3]=255)}}return s}toVideoFrame(){if(this._closed)throw Error(`VideoSample is closed.`);if(F(this._data!==null),this._data instanceof ga){if(this.format===null)throw Error(`Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if format is null.`);let e=this._data.getDataPlanes();if(Or(e))throw Error(`Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if getDataPlanes() returns a promise.`);let t=e.reduce((e,t)=>e+t.data.byteLength,0),n=new Uint8Array(t),r=0,i=[];for(let t of e)n.set(t.data,r),i.push(r),r+=t.data.byteLength;return new VideoFrame(n,{format:this.format,layout:e.map((e,t)=>({offset:i[t],stride:e.stride})),codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})}return Ea(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?(F(this._layout),new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,layout:this._layout,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(e,t,n,r,i,a,o,s,c){let l=0,u=0,d=this.displayWidth,f=this.displayHeight,p=0,m=0,h=this.displayWidth,g=this.displayHeight;if(a===void 0?(p=t,m=n,r!==void 0&&(h=r,g=i)):(l=t,u=n,d=r,f=i,p=a,m=o,s===void 0?(h=d,g=f):(h=s,g=c)),!(typeof CanvasRenderingContext2D<`u`&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<`u`&&e instanceof OffscreenCanvasRenderingContext2D))throw TypeError(`context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.`);if(!Number.isFinite(l))throw TypeError(`sx must be a number.`);if(!Number.isFinite(u))throw TypeError(`sy must be a number.`);if(!Number.isFinite(d)||d<0)throw TypeError(`sWidth must be a non-negative number.`);if(!Number.isFinite(f)||f<0)throw TypeError(`sHeight must be a non-negative number.`);if(!Number.isFinite(p))throw TypeError(`dx must be a number.`);if(!Number.isFinite(m))throw TypeError(`dy must be a number.`);if(!Number.isFinite(h)||h<0)throw TypeError(`dWidth must be a non-negative number.`);if(!Number.isFinite(g)||g<0)throw TypeError(`dHeight must be a non-negative number.`);if(this._closed)throw Error(`VideoSample is closed.`);({sx:l,sy:u,sWidth:d,sHeight:f}=this._unmapSourceRegion(l,u,d,f,this.rotation,this.flip));let _=this.toCanvasImageSource();e.save();let v=p+h/2,y=m+g/2;e.translate(v,y),this.flip&&e.scale(-1,1),e.rotate(this.rotation*Math.PI/180);let b=this.rotation%180==0?1:h/g;e.scale(1/b,b),e.drawImage(_,l,u,d,f,-h/2,-g/2,h,g),e.restore()}drawWithFit(e,t){if(!(typeof CanvasRenderingContext2D<`u`&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<`u`&&e instanceof OffscreenCanvasRenderingContext2D))throw TypeError(`context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.`);if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(![`fill`,`contain`,`cover`].includes(t.fit))throw TypeError(`options.fit must be 'fill', 'contain', or 'cover'.`);if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw TypeError(`options.rotation, when provided, must be 0, 90, 180, or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`options.flip, when provided, must be a boolean.`);t.crop!==void 0&&Oa(t.crop,`options.`);let n=e.canvas.width,r=e.canvas.height,i=t.rotation??this.rotation,a=t.flip??this.flip,[o,s]=i%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],c=t.crop;c&&=Da(c,o,s);let l,u,d,f,{sx:p,sy:m,sWidth:h,sHeight:g}=this._unmapSourceRegion(t.crop?.left??0,t.crop?.top??0,t.crop?.width??o,t.crop?.height??s,i,a);if(t.fit===`fill`)l=0,u=0,d=n,f=r;else{let[e,i]=t.crop?[t.crop.width,t.crop.height]:[o,s],a=t.fit===`contain`?Math.min(n/e,r/i):Math.max(n/e,r/i);d=e*a,f=i*a,l=(n-d)/2,u=(r-f)/2}e.save();let _=i%180==0?1:d/f;e.translate(n/2,r/2),a&&e.scale(-1,1),e.rotate(i*Math.PI/180),e.scale(1/_,_),e.translate(-n/2,-r/2),e.drawImage(this.toCanvasImageSource(),p,m,h,g,l,u,d,f),e.restore()}_unmapSourceRegion(e,t,n,r,i,a){return a&&(e=(i%180==0?this.squarePixelWidth:this.squarePixelHeight)-e-n),i===90?[e,t,n,r]=[t,this.squarePixelHeight-e-n,r,n]:i===180?[e,t]=[this.squarePixelWidth-e-n,this.squarePixelHeight-t-r]:i===270&&([e,t,n,r]=[this.squarePixelWidth-t-r,e,r,n]),{sx:e,sy:t,sWidth:n,sHeight:r}}_drawWithFitAndMipmapping(e,t,n){let r=e.width,i=e.height,[a,o]=n.rotation%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],s=n.crop?n.crop.width:a,c=n.crop?n.crop.height:o,l=0;2*r<s&&2*i<c&&(l=Math.floor(Math.log2(Math.min(s/r,c/i))));let u=r*2**l,d=i*2**l,{canvas:f,context:p,isNew:m}=l>0?wa(u,d):{canvas:e,context:t,isNew:n.targetIsFresh};p.imageSmoothingQuality=`high`,n.fillBlack?(p.fillStyle=`black`,p.fillRect(0,0,u,d)):m||p.clearRect(0,0,u,d),this.drawWithFit(p,{fit:n.fit,rotation:n.rotation,flip:n.flip,crop:n.crop}),p.globalCompositeOperation=`copy`;for(let e=l;e>1;e--){let t=r*2**e,n=i*2**e;p.drawImage(f,0,0,t,n,0,0,t/2,n/2)}p.globalCompositeOperation=`source-over`,l>0&&(t.imageSmoothingQuality=`high`,t.globalCompositeOperation=`copy`,t.drawImage(f,0,0,2*r,2*i,0,0,r,i),t.globalCompositeOperation=`source-over`)}toCanvasImageSource(){if(this._closed)throw Error(`VideoSample is closed.`);if(F(this._data!==null),this._data instanceof ga||this._data instanceof Uint8Array){let e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}return this._data}async transform(t){if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw TypeError(`options.width, when provided, must be a positive integer.`);if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw TypeError(`options.height, when provided, must be a positive integer.`);if(t.roundDimensionsTo!==void 0&&(!Number.isInteger(t.roundDimensionsTo)||t.roundDimensionsTo<=0))throw TypeError(`options.roundDimensionsTo, when provided, must be a positive integer.`);if(t.fit!==void 0&&![`fill`,`contain`,`cover`].includes(t.fit))throw TypeError(`options.fit, when provided, must be one of "fill", "contain", or "cover".`);if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw TypeError(`When both options.width and options.height are provided, options.fit must also be provided.`);if(t.rotate!==void 0&&![0,90,180,270].includes(t.rotate))throw TypeError(`options.rotate, when provided, must be 0, 90, 180 or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`options.flip, when provided, must be a boolean.`);if(t.crop!==void 0&&Oa(t.crop,`options.`),t.alpha!==void 0&&![`keep`,`discard`].includes(t.alpha))throw TypeError(`options.alpha, when provided, must be 'keep' or 'discard'.`);let{rotation:n,flip:r}=Ln(this.rotation,this.flip,t.rotate??0,t.flip??!1),[i,a]=n%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],o=t.crop;o&&=Da(o,i,a);let s=o?o.width:i,c=o?o.height:a,l=s/c,u,d;t.width!==void 0&&t.height===void 0?(u=t.width,d=u/l):t.width===void 0&&t.height!==void 0?(d=t.height,u=d*l):t.width!==void 0&&t.height!==void 0?(u=t.width,d=t.height):(u=s,d=c),u=cr(u,t.roundDimensionsTo??1),d=cr(d,t.roundDimensionsTo??1);let f={width:u,height:d,fit:t.fit??`fill`,rotation:n,flip:r,crop:o??{left:0,top:0,width:i,height:a},alpha:t.alpha??`keep`};for(let e of ba){let t=e(this,f);if(Or(t)&&(t=await t),t!==null)return t}let{canvas:p,context:m,isNew:h}=wa(f.width,f.height);return this._drawWithFitAndMipmapping(p,m,{fit:f.fit,rotation:f.rotation,flip:f.flip,crop:f.crop,targetIsFresh:h,fillBlack:f.alpha===`discard`}),new e(p,{timestamp:this.timestamp,duration:this.duration,rotation:0,flip:!1})}setRotation(e){if(![0,90,180,270].includes(e))throw TypeError(`newRotation must be 0, 90, 180, or 270.`);this.rotation=e}setFlip(e){if(typeof e!=`boolean`)throw TypeError(`newFlip must be a boolean.`);this.flip=e}setTimestamp(e){if(!Number.isFinite(e))throw TypeError(`newTimestamp must be a number.`);this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw TypeError(`newDuration must be a non-negative number.`);this.duration=e}setEncodeOptions(e){if(!e||typeof e!=`object`)throw TypeError(`newEncodeOptions must be an object.`);this.encodeOptions=e}[Symbol.dispose](){this.close()}},ba=[],xa=3,Sa=[],Ca=0,wa=(e,t)=>{for(let n of Sa)if(n.canvas.width===e&&n.canvas.height===t)return n.age=Ca++,{canvas:n.canvas,context:n.context,isNew:!1};let n;if(typeof OffscreenCanvas<`u`)n=new OffscreenCanvas(e,t);else{if(typeof window>`u`||typeof document>`u`)throw Error(`Cannot transform VideoSamples in this environment. Either run in an environment with OffscreenCanvas or HTMLCanvasElement, or supply a custom VideoSample transformer using registerVideoSampleTransformer().`);n=document.createElement(`canvas`),n.width=e,n.height=t}let r=n.getContext(`2d`,{alpha:!0,willReadFrequently:!1});if(!r)throw Error(`The '2d' canvas context is required to transform VideoSamples. Register a custom transformer using registerVideoSampleTransformer to work around this limitation.`);return Sa.length>=xa&&Sa.splice(Pr(Sa,e=>e.age),1),Sa.push({canvas:n,context:r,age:Ca++}),{canvas:n,context:r,isNew:!0}},Ta=class{constructor(e){if(e!==void 0){if(!e||typeof e!=`object`)throw TypeError(`init.colorSpace, when provided, must be an object.`);let t=Object.keys(qn);if(e.primaries!=null&&!t.includes(e.primaries))throw TypeError(`init.colorSpace.primaries, when provided, must be one of ${t.join(`, `)}.`);let n=Object.keys(Jn);if(e.transfer!=null&&!n.includes(e.transfer))throw TypeError(`init.colorSpace.transfer, when provided, must be one of ${n.join(`, `)}.`);let r=Object.keys(Yn);if(e.matrix!=null&&!r.includes(e.matrix))throw TypeError(`init.colorSpace.matrix, when provided, must be one of ${r.join(`, `)}.`);if(e.fullRange!=null&&typeof e.fullRange!=`boolean`)throw TypeError(`init.colorSpace.fullRange, when provided, must be a boolean.`)}this.primaries=e?.primaries??null,this.transfer=e?.transfer??null,this.matrix=e?.matrix??null,this.fullRange=e?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}},Ea=e=>typeof VideoFrame<`u`&&e instanceof VideoFrame,Da=(e,t,n)=>{let r=Math.min(e.left,t),i=Math.min(e.top,n),a=Math.min(e.width,t-r),o=Math.min(e.height,n-i);return F(a>=0),F(o>=0),{left:r,top:i,width:a,height:o}},Oa=(e,t)=>{if(!e||typeof e!=`object`)throw TypeError(t+`crop, when provided, must be an object.`);if(!Number.isInteger(e.left)||e.left<0)throw TypeError(t+`crop.left must be a non-negative integer.`);if(!Number.isInteger(e.top)||e.top<0)throw TypeError(t+`crop.top must be a non-negative integer.`);if(!Number.isInteger(e.width)||e.width<0)throw TypeError(t+`crop.width must be a non-negative integer.`);if(!Number.isInteger(e.height)||e.height<0)throw TypeError(t+`crop.height must be a non-negative integer.`)},ka=e=>{if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.colorSpace!==void 0&&![`display-p3`,`srgb`].includes(e.colorSpace))throw TypeError(`options.colorSpace, when provided, must be 'display-p3' or 'srgb'.`);if(e.format!==void 0&&typeof e.format!=`string`)throw TypeError(`options.format, when provided, must be a string.`);if(e.layout!==void 0){if(!Array.isArray(e.layout))throw TypeError(`options.layout, when provided, must be an array.`);for(let t of e.layout){if(!t||typeof t!=`object`)throw TypeError(`Each entry in options.layout must be an object.`);if(!Number.isInteger(t.offset)||t.offset<0)throw TypeError(`plane.offset must be a non-negative integer.`);if(!Number.isInteger(t.stride)||t.stride<0)throw TypeError(`plane.stride must be a non-negative integer.`)}}if(e.rect!==void 0){if(!e.rect||typeof e.rect!=`object`)throw TypeError(`options.rect, when provided, must be an object.`);if(e.rect.x!==void 0&&(!Number.isInteger(e.rect.x)||e.rect.x<0))throw TypeError(`options.rect.x, when provided, must be a non-negative integer.`);if(e.rect.y!==void 0&&(!Number.isInteger(e.rect.y)||e.rect.y<0))throw TypeError(`options.rect.y, when provided, must be a non-negative integer.`);if(e.rect.width!==void 0&&(!Number.isInteger(e.rect.width)||e.rect.width<0))throw TypeError(`options.rect.width, when provided, must be a non-negative integer.`);if(e.rect.height!==void 0&&(!Number.isInteger(e.rect.height)||e.rect.height<0))throw TypeError(`options.rect.height, when provided, must be a non-negative integer.`)}},Aa=(e,t,n)=>{let r=ja(e),i=[],a=0;for(let e of r){let r=Math.ceil(t/e.widthDivisor),o=Math.ceil(n/e.heightDivisor),s=r*e.sampleBytes,c=s*o;i.push({offset:a,stride:s}),a+=c}return i},ja=e=>{let t=(e,t,n,r,i)=>{let a=[{sampleBytes:e,widthDivisor:1,heightDivisor:1},{sampleBytes:t,widthDivisor:n,heightDivisor:r},{sampleBytes:t,widthDivisor:n,heightDivisor:r}];return i&&a.push({sampleBytes:e,widthDivisor:1,heightDivisor:1}),a};switch(e){case`I420`:return t(1,1,2,2,!1);case`I420P10`:case`I420P12`:return t(2,2,2,2,!1);case`I420A`:return t(1,1,2,2,!0);case`I420AP10`:case`I420AP12`:return t(2,2,2,2,!0);case`I422`:return t(1,1,2,1,!1);case`I422P10`:case`I422P12`:return t(2,2,2,1,!1);case`I422A`:return t(1,1,2,1,!0);case`I422AP10`:case`I422AP12`:return t(2,2,2,1,!0);case`I444`:return t(1,1,1,1,!1);case`I444P10`:case`I444P12`:return t(2,2,1,1,!1);case`I444A`:return t(1,1,1,1,!0);case`I444AP10`:case`I444AP12`:return t(2,2,1,1,!0);case`NV12`:return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case`RGBA`:case`RGBX`:case`BGRA`:case`BGRX`:return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:rr(e),F(!1)}},Ma=(e,t)=>{let n={left:0,top:0,width:e.codedWidth,height:e.codedHeight},r=t.rect,i=Na(n,r,e.codedWidth,e.codedHeight,e.format),a=t.layout,o;if(!t.format||t.format===e.format)o=e.format;else if([`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(t.format))o=t.format;else throw Error(`NotSupportedError: Invalid destination format.`);return Fa(i,o,a)},Na=(e,t,n,r,i)=>{let a={...e};if(t!==void 0){if(t.width===0||t.height===0)throw TypeError(`visibleRect dimensions cannot be zero.`);if((t.x||0)+(t.width||0)>n)throw TypeError(`visibleRect exceeds codedWidth.`);if((t.y||0)+(t.height||0)>r)throw TypeError(`visibleRect exceeds codedHeight.`);a.x=t.x||0,a.y=t.y||0,a.width=t.width||0,a.height=t.height||0}if(!Pa(i,a))throw TypeError(`visibleRect alignment is invalid for the format.`);return a},Pa=(e,t)=>{if(e===null)return!0;let n=ja(e);for(let e=0;e<n.length;e++){let r=n[e],i=r.widthDivisor,a=r.heightDivisor;if((t.x||0)%i!==0||(t.y||0)%a!==0)return!1}return!0},Fa=(e,t,n)=>{let r=ja(t),i=r.length;if(n!==void 0&&n.length!==i)throw TypeError(`Layout must have ${i} planes.`);let a=0,o=[],s=[];for(let t=0;t<i;t++){let i=r[t],c=i.sampleBytes,l=i.widthDivisor,u=i.heightDivisor,d={destinationOffset:0,destinationStride:0,sourceTop:0,sourceHeight:0,sourceLeftBytes:0,sourceWidthBytes:0};if(d.sourceTop=Math.ceil(Math.trunc(e.y||0)/u),d.sourceHeight=Math.ceil(Math.trunc(e.height||0)/u),d.sourceLeftBytes=Math.floor(Math.trunc(e.x||0)/l)*c,d.sourceWidthBytes=Math.floor(Math.trunc(e.width||0)/l)*c,n!==void 0){let e=n[t];if(e.stride<d.sourceWidthBytes)throw TypeError(`Stride for plane ${t} is too small.`);d.destinationOffset=e.offset,d.destinationStride=e.stride}else d.destinationOffset=a,d.destinationStride=d.sourceWidthBytes;let f=d.destinationStride*d.sourceHeight+d.destinationOffset;if(f>4294967295)throw TypeError(`Allocation size exceeds limit.`);s.push(f),a=Math.max(a,f);for(let e=0;e<t;e++){let n=o[e];if(!(s[t]<=n.destinationOffset||s[e]<=d.destinationOffset))throw TypeError(`Planes overlap.`)}o.push(d)}return{allocationSize:a,computedLayouts:o}},Ia=new Map,La=e=>{if(!e||typeof e!=`object`)throw TypeError(`Encoding config must be an object.`);if(!Fo.includes(e.codec))throw TypeError(`Invalid video codec '${e.codec}'. Must be one of: ${Fo.join(`, `)}.`);let t=e.bitrate;if(e.quality===void 0&&t===void 0)throw TypeError(`config.quality must be provided.`);if(e.quality!==void 0&&t!==void 0)throw TypeError(`config.quality and config.bitrate cannot both be provided.`);if(e.quality!==void 0&&!(e.quality instanceof Ba))throw TypeError(`config.quality, when provided, must be a Quality.`);if(t!==void 0&&!(t instanceof Ba)&&(!Number.isInteger(t)||t<=0))throw TypeError(`config.bitrate, when provided, must be a positive integer or a quality.`);if(e.keyFrameInterval!==void 0&&(!Number.isFinite(e.keyFrameInterval)||e.keyFrameInterval<0))throw TypeError(`config.keyFrameInterval, when provided, must be a non-negative number.`);if(e.sizeChangeBehavior!==void 0&&![`deny`,`passThrough`,`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior))throw TypeError(`config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.`);if(e.transform!==void 0){if(typeof e.transform!=`object`||!e.transform)throw TypeError(`config.transform, when provided, must be an object.`);if(e.transform.width!==void 0&&(!Number.isInteger(e.transform.width)||e.transform.width<=0))throw TypeError(`config.transform.width, when provided, must be a positive integer.`);if(e.transform.height!==void 0&&(!Number.isInteger(e.transform.height)||e.transform.height<=0))throw TypeError(`config.transform.height, when provided, must be a positive integer.`);if(e.transform.fit!==void 0&&![`fill`,`contain`,`cover`].includes(e.transform.fit))throw TypeError(`config.transform.fit, when provided, must be one of "fill", "contain", or "cover".`);if(e.transform.width!==void 0&&e.transform.height!==void 0&&e.transform.fit===void 0&&![`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior))throw TypeError(`When both config.transform.width and config.transform.height are provided, config.transform.fit must also be provided.`);if(e.transform.fit!==void 0&&[`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior)&&e.transform.fit!==e.sizeChangeBehavior)throw TypeError(`config.transform.fit, when provided, cannot differ from config.sizeChangeBehavior when config.sizeChangeBehavior is 'fill', 'contain' or 'cover', as sizeChangeBehavior already determines the fitting algorithm.`);if(e.transform.rotate!==void 0&&![0,90,180,270].includes(e.transform.rotate))throw TypeError(`config.transform.rotate, when provided, must be 0, 90, 180 or 270.`);if(e.transform.flip!==void 0&&typeof e.transform.flip!=`boolean`)throw TypeError(`config.transform.flip, when provided, must be a boolean.`);if(e.transform.crop!==void 0&&Oa(e.transform.crop,`config.transform.`),e.transform.process!==void 0&&typeof e.transform.process!=`function`)throw TypeError(`config.transform.process, when provided, must be a function.`);if(e.transform.frameRate!==void 0&&(!Number.isFinite(e.transform.frameRate)||e.transform.frameRate<=0))throw TypeError(`config.transform.frameRate, when provided, must be a finite positive number.`);if(e.transform.force!==void 0&&typeof e.transform.force!=`boolean`)throw TypeError(`config.transform.force, when provided, must be a boolean.`)}if(e.onEncodedPacket!==void 0&&typeof e.onEncodedPacket!=`function`)throw TypeError(`config.onEncodedPacket, when provided, must be a function.`);if(e.onEncoderConfig!==void 0&&typeof e.onEncoderConfig!=`function`)throw TypeError(`config.onEncoderConfig, when provided, must be a function.`);if(e.onEncodedSample!==void 0&&typeof e.onEncodedSample!=`function`)throw TypeError(`config.onEncodedSample, when provided, must be a function.`);Ra(e.codec,e)},Ra=(e,t)=>{if(!t||typeof t!=`object`)throw TypeError(`Encoding options must be an object.`);if(t.alpha!==void 0&&![`discard`,`keep`].includes(t.alpha))throw TypeError(`options.alpha, when provided, must be 'discard' or 'keep'.`);let n=t.bitrateMode;if(n!==void 0&&![`constant`,`variable`].includes(n))throw TypeError(`bitrateMode, when provided, must be 'constant' or 'variable'.`);if(t.latencyMode!==void 0&&![`quality`,`realtime`].includes(t.latencyMode))throw TypeError(`latencyMode, when provided, must be 'quality' or 'realtime'.`);if(t.fullCodecString!==void 0&&typeof t.fullCodecString!=`string`)throw TypeError(`fullCodecString, when provided, must be a string.`);if(t.fullCodecString!==void 0&&rs(t.fullCodecString)!==e)throw TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${e}).`);if(t.hardwareAcceleration!==void 0&&![`no-preference`,`prefer-hardware`,`prefer-software`].includes(t.hardwareAcceleration))throw TypeError(`hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.`);if(t.scalabilityMode!==void 0&&typeof t.scalabilityMode!=`string`)throw TypeError(`scalabilityMode, when provided, must be a string.`);if(t.contentHint!==void 0&&typeof t.contentHint!=`string`)throw TypeError(`contentHint, when provided, must be a string.`)},za=e=>{let t=e.bitrateMode,n=e.quality._toVideoRateControl(e.codec,e.width,e.height,t),r=(t,n,r)=>({codec:e.fullCodecString??Jo(e.codec,e.width,e.height,r,e.alpha===`keep`),width:e.width,height:e.height,displayWidth:e.squarePixelWidth,displayHeight:e.squarePixelHeight,bitrate:t,bitrateMode:n,alpha:e.alpha??`discard`,framerate:e.framerate,latencyMode:e.latencyMode,hardwareAcceleration:e.hardwareAcceleration,scalabilityMode:e.scalabilityMode,contentHint:e.contentHint,...is(e.codec)}),i=[];return n.quantizer!==null&&i.push({config:r(void 0,`quantizer`,n.bitrate),quantizer:n.quantizer}),n.bitrateMode!==`quantizer`&&i.push({config:r(n.bitrate,n.bitrateMode,n.bitrate),quantizer:null}),F(i.length>0),i},Ba=class{constructor(e){if((typeof e==`number`||typeof e==`string`)&&(e={quality:e}),!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.bitrateMode!==void 0&&![`constant`,`variable`].includes(e.bitrateMode))throw TypeError(`options.bitrateMode, when provided, must be 'constant' or 'variable'.`);if(`quality`in e){if(typeof e.quality==`string`?!(e.quality in Va):typeof e.quality!=`number`||Number.isNaN(e.quality))throw TypeError(`options.quality must be a number, or one of 'very-low', 'low', 'medium', 'high' or 'very-high'.`);if(e.preferBitrate!==void 0&&typeof e.preferBitrate!=`boolean`)throw TypeError(`options.preferBitrate, when provided, must be a boolean.`);if(`bitrate`in e||`quantizer`in e)throw TypeError(`options.quality cannot be combined with options.bitrate or options.quantizer.`);this._quality=typeof e.quality==`string`?Va[e.quality]:e.quality,this._preferBitrate=e.preferBitrate??!1,this._bitrate=void 0,this._quantizer=void 0}else{if(e.bitrate!==void 0&&(!Number.isInteger(e.bitrate)||e.bitrate<=0))throw TypeError(`options.bitrate, when provided, must be a positive integer.`);if(e.quantizer!==void 0&&(!Number.isInteger(e.quantizer)||e.quantizer<0))throw TypeError(`options.quantizer, when provided, must be a non-negative integer.`);if(e.bitrate===void 0&&e.quantizer===void 0)throw TypeError(`At least one of options.bitrate or options.quantizer must be set.`);if(`preferBitrate`in e)throw TypeError(`options.preferBitrate can only be combined with options.quality.`);this._quality=void 0,this._preferBitrate=!1,this._bitrate=e.bitrate,this._quantizer=e.quantizer}this._bitrateMode=e.bitrateMode}_toVideoRateControl(e,t,n,r){let i=Ha[e],a=null,o=this._bitrateMode??r??`variable`;if(this._quantizer!==void 0){if(!i){if(this._bitrate===void 0)throw Error(`Codec '${e}' does not support quantizer-based encoding. Provide a bitrate in the Quality to define a fallback.`)}else if(this._quantizer<i.min||this._quantizer>i.max){if(this._bitrate===void 0)throw Error(`Quantizer ${this._quantizer} is out of range for codec '${e}'; must be between ${i.min} and ${i.max}.`)}else a=this._quantizer,this._bitrate===void 0&&(o=`quantizer`)}else this._bitrate===void 0&&i&&!this._preferBitrate&&(F(this._quality!==void 0),a=or(Math.round(sr(i.worst,i.best,this._quality)),i.min,i.max));let s;if(this._bitrate!==void 0)s=this._bitrate;else{let r=this._quality;r===void 0&&(F(a!==null&&i),r=or((a-i.worst)/(i.best-i.worst),0,1)),s=Wa(e,t,n,Ua(r))}return{quantizer:a,bitrate:s,bitrateMode:o}}_toVideoBitrate(e,t,n){return this._bitrate===void 0?(F(this._quality!==void 0),Wa(e,t,n,Ua(this._quality))):this._bitrate}_toAudioBitrate(e){if(Io.includes(e)||e===`flac`||e===`truehd`)return;if(this._bitrate!==void 0)return this._bitrate;if(this._quality===void 0)throw Error(`This Quality defines neither a quality level nor a bitrate and therefore cannot be used for audio encoding.`);let t=Ua(this._quality),n={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3,ac3:384e3,eac3:192e3,dts:768e3}[e];if(!n)throw Error(`Unhandled codec: ${e}`);let r=n*t;return e===`aac`?r=[96e3,128e3,16e4,192e3].reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e):e===`opus`||e===`vorbis`?r=Math.max(6e3,r):e===`mp3`&&(r=[8e3,16e3,24e3,32e3,4e4,48e3,64e3,8e4,96e3,112e3,128e3,16e4,192e3,224e3,256e3,32e4].reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e)),Math.round(r/1e3)*1e3}},Va={"very-low":0,low:.25,medium:.5,high:.75,"very-high":1},Ha={avc:{min:0,max:51,worst:41,best:16},hevc:{min:0,max:51,worst:41,best:16},vp9:(wr()??1/0)<145?{min:0,max:63,worst:52,best:20}:{min:0,max:255,worst:208,best:80},av1:{min:0,max:255,worst:208,best:80}},Ua=e=>.3*Math.exp(2.5538*e),Wa=(e,t,n,r)=>{let i=t*n,a=3e6,o=a*(i/2073600)**.95*{avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2,prores:22e7/a}[e]*r;return Math.ceil(o/1e3)*1e3},Ga=(e,t)=>{if(e===`avc`)return{avc:{quantizer:t}};if(e===`hevc`)return{hevc:{quantizer:t}};if(e===`vp9`)return{vp9:{quantizer:t}};if(e===`av1`)return{av1:{quantizer:t}};F(!1)},Ka=new Ba(`high`),qa=async(e,t={})=>{let{width:n=1280,height:r=720,quality:i,bitrate:a,frameRate:o,...s}=t;if(!Fo.includes(e))return!1;if(!Number.isInteger(n)||n<=0)throw TypeError(`width must be a positive integer.`);if(!Number.isInteger(r)||r<=0)throw TypeError(`height must be a positive integer.`);if(i!==void 0&&!(i instanceof Ba))throw TypeError(`quality, when provided, must be a Quality.`);if(i!==void 0&&a!==void 0)throw TypeError(`quality and bitrate cannot both be provided.`);if(a!==void 0&&!(a instanceof Ba)&&(!Number.isInteger(a)||a<=0))throw TypeError(`bitrate must be a positive integer or a quality.`);if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw TypeError(`frameRate, when provided, must be a finite positive number.`);Ra(e,s);let c=Ja(i,a)??new Ba(`medium`),l;try{l=za({codec:e,width:n,height:r,quality:c,framerate:o,...s,alpha:`discard`})}catch{return!1}let u=JSON.stringify(l),d=Ia.get(u);if(d)return d;let f=(async()=>{for(let{config:t}of l)if(Ya.some(n=>n.supports(e,t)))return!0;if(typeof VideoEncoder>`u`||(n%2==1||r%2==1)&&(e===`avc`||e===`hevc`))return!1;for(let{config:t,quantizer:i}of l){try{if(!(await VideoEncoder.isConfigSupported(t)).supported)continue}catch{continue}if(!br()||await new Promise(async a=>{try{let o=new VideoEncoder({output:()=>{},error:()=>a(!1)});o.configure(t);let s=new Uint8Array(n*r*4),c=new VideoFrame(s,{format:`RGBA`,codedWidth:n,codedHeight:r,timestamp:0});o.encode(c,i===null?void 0:Ga(e,i)),c.close(),await o.flush(),a(!0)}catch{a(!1)}}))return!0}return!1})();return Ia.set(u,f),f},Ja=(e,t)=>{if(e!==void 0)return e;if(t!==void 0)return t instanceof Ba?t:new Ba({bitrate:t})},Ya=[],Xa=new Uint8Array,Za=class e{constructor(e,t,n,r,i=-1,a,o){if(this.data=e,this.type=t,this.timestamp=n,this.duration=r,this.sequenceNumber=i,e===Xa&&a===void 0)throw Error(`Internal error: byteLength must be explicitly provided when constructing metadata-only packets.`);if(a===void 0&&(a=e.byteLength),!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==`key`&&t!==`delta`)throw TypeError(`type must be either "key" or "delta".`);if(!Number.isFinite(n))throw TypeError(`timestamp must be a number.`);if(!Number.isFinite(r)||r<0)throw TypeError(`duration must be a non-negative number.`);if(!Number.isFinite(i))throw TypeError(`sequenceNumber must be a number.`);if(!Number.isInteger(a)||a<0)throw TypeError(`byteLength must be a non-negative integer.`);if(o!==void 0&&(typeof o!=`object`||!o))throw TypeError(`sideData, when provided, must be an object.`);if(o?.alpha!==void 0&&!(o.alpha instanceof Uint8Array))throw TypeError(`sideData.alpha, when provided, must be a Uint8Array.`);if(o?.alphaByteLength!==void 0&&(!Number.isInteger(o.alphaByteLength)||o.alphaByteLength<0))throw TypeError(`sideData.alphaByteLength, when provided, must be a non-negative integer.`);this.byteLength=a,this.sideData=o??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===Xa}get microsecondTimestamp(){return Math.trunc(mr*this.timestamp)}get microsecondDuration(){return Math.trunc(mr*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to a video chunk.`);if(typeof EncodedVideoChunk>`u`)throw Error(`EncodedVideoChunk is not available in this environment.`);return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw TypeError(`This packet does not contain alpha side data.`);if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to a video chunk.`);if(typeof EncodedVideoChunk>`u`)throw Error(`EncodedVideoChunk is not available in this environment.`);return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to an audio chunk.`);if(typeof EncodedAudioChunk>`u`)throw Error(`EncodedAudioChunk is not available in this environment.`);return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(t,n){if(!(t instanceof EncodedVideoChunk||t instanceof EncodedAudioChunk))throw TypeError(`chunk must be an EncodedVideoChunk or EncodedAudioChunk.`);let r=new Uint8Array(t.byteLength);return t.copyTo(r),new e(r,t.type,t.timestamp/1e6,(t.duration??0)/1e6,void 0,void 0,n)}clone(t){if(t!==void 0&&(typeof t!=`object`||!t))throw TypeError(`options, when provided, must be an object.`);if(t?.data!==void 0&&!(t.data instanceof Uint8Array))throw TypeError(`options.data, when provided, must be a Uint8Array.`);if(t?.type!==void 0&&t.type!==`key`&&t.type!==`delta`)throw TypeError(`options.type, when provided, must be either "key" or "delta".`);if(t?.timestamp!==void 0&&!Number.isFinite(t.timestamp))throw TypeError(`options.timestamp, when provided, must be a number.`);if(t?.duration!==void 0&&!Number.isFinite(t.duration))throw TypeError(`options.duration, when provided, must be a number.`);if(t?.sequenceNumber!==void 0&&!Number.isFinite(t.sequenceNumber))throw TypeError(`options.sequenceNumber, when provided, must be a number.`);if(t?.sideData!==void 0&&(typeof t.sideData!=`object`||t.sideData===null))throw TypeError(`options.sideData, when provided, must be an object.`);return new e(t?.data??this.data,t?.type??this.type,t?.timestamp??this.timestamp,t?.duration??this.duration,t?.sequenceNumber??this.sequenceNumber,this.byteLength,t?.sideData??this.sideData)}},Qa=2082844800,$a=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.isQuickTime?`quicktime`:`mp4`);if(e.codecStrings.length>0){let n=[...new Set(e.codecStrings)];t+=`; codecs="${n.join(`, `)}"`}return t},eo=class{constructor(e){this.value=e}},to=class{constructor(e){this.value=e}},no=class{constructor(e){this.value=e}},ro=class{constructor(e){this.value=e}},R;(function(e){e[e.EBML=440786851]=`EBML`,e[e.EBMLVersion=17030]=`EBMLVersion`,e[e.EBMLReadVersion=17143]=`EBMLReadVersion`,e[e.EBMLMaxIDLength=17138]=`EBMLMaxIDLength`,e[e.EBMLMaxSizeLength=17139]=`EBMLMaxSizeLength`,e[e.DocType=17026]=`DocType`,e[e.DocTypeVersion=17031]=`DocTypeVersion`,e[e.DocTypeReadVersion=17029]=`DocTypeReadVersion`,e[e.Void=236]=`Void`,e[e.Segment=408125543]=`Segment`,e[e.SeekHead=290298740]=`SeekHead`,e[e.Seek=19899]=`Seek`,e[e.SeekID=21419]=`SeekID`,e[e.SeekPosition=21420]=`SeekPosition`,e[e.Duration=17545]=`Duration`,e[e.Info=357149030]=`Info`,e[e.TimestampScale=2807729]=`TimestampScale`,e[e.DateUTC=17505]=`DateUTC`,e[e.MuxingApp=19840]=`MuxingApp`,e[e.WritingApp=22337]=`WritingApp`,e[e.Tracks=374648427]=`Tracks`,e[e.TrackEntry=174]=`TrackEntry`,e[e.TrackNumber=215]=`TrackNumber`,e[e.TrackUID=29637]=`TrackUID`,e[e.TrackType=131]=`TrackType`,e[e.FlagEnabled=185]=`FlagEnabled`,e[e.FlagDefault=136]=`FlagDefault`,e[e.FlagForced=21930]=`FlagForced`,e[e.FlagOriginal=21934]=`FlagOriginal`,e[e.FlagHearingImpaired=21931]=`FlagHearingImpaired`,e[e.FlagVisualImpaired=21932]=`FlagVisualImpaired`,e[e.FlagCommentary=21935]=`FlagCommentary`,e[e.FlagLacing=156]=`FlagLacing`,e[e.Name=21358]=`Name`,e[e.Language=2274716]=`Language`,e[e.LanguageBCP47=2274717]=`LanguageBCP47`,e[e.CodecID=134]=`CodecID`,e[e.CodecPrivate=25506]=`CodecPrivate`,e[e.CodecDelay=22186]=`CodecDelay`,e[e.SeekPreRoll=22203]=`SeekPreRoll`,e[e.DefaultDuration=2352003]=`DefaultDuration`,e[e.Video=224]=`Video`,e[e.PixelWidth=176]=`PixelWidth`,e[e.PixelHeight=186]=`PixelHeight`,e[e.DisplayWidth=21680]=`DisplayWidth`,e[e.DisplayHeight=21690]=`DisplayHeight`,e[e.DisplayUnit=21682]=`DisplayUnit`,e[e.AlphaMode=21440]=`AlphaMode`,e[e.Audio=225]=`Audio`,e[e.SamplingFrequency=181]=`SamplingFrequency`,e[e.Channels=159]=`Channels`,e[e.BitDepth=25188]=`BitDepth`,e[e.SimpleBlock=163]=`SimpleBlock`,e[e.BlockGroup=160]=`BlockGroup`,e[e.Block=161]=`Block`,e[e.BlockAdditions=30113]=`BlockAdditions`,e[e.BlockMore=166]=`BlockMore`,e[e.BlockAdditional=165]=`BlockAdditional`,e[e.BlockAddID=238]=`BlockAddID`,e[e.BlockDuration=155]=`BlockDuration`,e[e.ReferenceBlock=251]=`ReferenceBlock`,e[e.Cluster=524531317]=`Cluster`,e[e.Timestamp=231]=`Timestamp`,e[e.Cues=475249515]=`Cues`,e[e.CuePoint=187]=`CuePoint`,e[e.CueTime=179]=`CueTime`,e[e.CueTrackPositions=183]=`CueTrackPositions`,e[e.CueTrack=247]=`CueTrack`,e[e.CueClusterPosition=241]=`CueClusterPosition`,e[e.CueRelativePosition=240]=`CueRelativePosition`,e[e.Colour=21936]=`Colour`,e[e.MatrixCoefficients=21937]=`MatrixCoefficients`,e[e.TransferCharacteristics=21946]=`TransferCharacteristics`,e[e.Primaries=21947]=`Primaries`,e[e.Range=21945]=`Range`,e[e.Projection=30320]=`Projection`,e[e.ProjectionType=30321]=`ProjectionType`,e[e.ProjectionPoseYaw=30323]=`ProjectionPoseYaw`,e[e.ProjectionPosePitch=30324]=`ProjectionPosePitch`,e[e.ProjectionPoseRoll=30325]=`ProjectionPoseRoll`,e[e.Attachments=423732329]=`Attachments`,e[e.AttachedFile=24999]=`AttachedFile`,e[e.FileDescription=18046]=`FileDescription`,e[e.FileName=18030]=`FileName`,e[e.FileMediaType=18016]=`FileMediaType`,e[e.FileData=18012]=`FileData`,e[e.FileUID=18094]=`FileUID`,e[e.Chapters=272869232]=`Chapters`,e[e.Tags=307544935]=`Tags`,e[e.Tag=29555]=`Tag`,e[e.Targets=25536]=`Targets`,e[e.TargetTypeValue=26826]=`TargetTypeValue`,e[e.TargetType=25546]=`TargetType`,e[e.TagTrackUID=25541]=`TagTrackUID`,e[e.TagEditionUID=25545]=`TagEditionUID`,e[e.TagChapterUID=25540]=`TagChapterUID`,e[e.TagAttachmentUID=25542]=`TagAttachmentUID`,e[e.SimpleTag=26568]=`SimpleTag`,e[e.TagName=17827]=`TagName`,e[e.TagLanguage=17530]=`TagLanguage`,e[e.TagString=17543]=`TagString`,e[e.TagBinary=17541]=`TagBinary`,e[e.ContentEncodings=28032]=`ContentEncodings`,e[e.ContentEncoding=25152]=`ContentEncoding`,e[e.ContentEncodingOrder=20529]=`ContentEncodingOrder`,e[e.ContentEncodingScope=20530]=`ContentEncodingScope`,e[e.ContentCompression=20532]=`ContentCompression`,e[e.ContentCompAlgo=16980]=`ContentCompAlgo`,e[e.ContentCompSettings=16981]=`ContentCompSettings`,e[e.ContentEncryption=20533]=`ContentEncryption`})(R||={});var io=[R.EBML,R.Segment],ao=[R.SeekHead,R.Info,R.Cluster,R.Tracks,R.Cues,R.Attachments,R.Chapters,R.Tags];[...io,...ao];var oo=e=>e<256?1:e<65536?2:e<1<<24?3:e<2**32?4:e<2**40?5:6,so=e=>e<1n<<8n?1:e<1n<<16n?2:e<1n<<24n?3:e<1n<<32n?4:e<1n<<40n?5:e<1n<<48n?6:e<1n<<56n?7:8,co=e=>e>=-64&&e<64?1:e>=-8192&&e<8192?2:e>=-1048576&&e<1<<20?3:e>=-134217728&&e<1<<27?4:e>=-(2**34)&&e<2**34?5:6,lo=e=>{if(e<127)return 1;if(e<16383)return 2;if(e<(1<<21)-1)return 3;if(e<(1<<28)-1)return 4;if(e<2**35-1)return 5;if(e<2**42-1)return 6;throw Error(`EBML varint size not supported `+e)},uo=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap,this.dataOffsets=new WeakMap}writeByte(e){this.helperView.setUint8(0,e),this.writer.write(this.helper.subarray(0,1))}writeFloat32(e){this.helperView.setFloat32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeFloat64(e){this.helperView.setFloat64(0,e,!1),this.writer.write(this.helper)}writeUnsignedInt(e,t=oo(e)){let n=0;switch(t){case 6:this.helperView.setUint8(n++,e/2**40|0);case 5:this.helperView.setUint8(n++,e/2**32|0);case 4:this.helperView.setUint8(n++,e>>24);case 3:this.helperView.setUint8(n++,e>>16);case 2:this.helperView.setUint8(n++,e>>8);case 1:this.helperView.setUint8(n++,e);break;default:throw Error(`Bad unsigned int size `+t)}this.writer.write(this.helper.subarray(0,n))}writeUnsignedBigInt(e,t=so(e)){let n=0;for(let r=t-1;r>=0;r--)this.helperView.setUint8(n++,Number(e>>BigInt(r*8)&255n));this.writer.write(this.helper.subarray(0,n))}writeSignedInt(e,t=co(e)){e<0&&(e+=2**(t*8)),this.writeUnsignedInt(e,t)}writeVarInt(e,t=lo(e)){let n=0;switch(t){case 1:this.helperView.setUint8(n++,128|e);break;case 2:this.helperView.setUint8(n++,64|e>>8),this.helperView.setUint8(n++,e);break;case 3:this.helperView.setUint8(n++,32|e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 4:this.helperView.setUint8(n++,16|e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 5:this.helperView.setUint8(n++,8|e/2**32&7),this.helperView.setUint8(n++,e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 6:this.helperView.setUint8(n++,4|e/2**40&3),this.helperView.setUint8(n++,e/2**32|0),this.helperView.setUint8(n++,e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;default:throw Error(`Bad EBML varint size `+t)}this.writer.write(this.helper.subarray(0,n))}writeAsciiString(e){this.writer.write(new Uint8Array(e.split(``).map(e=>e.charCodeAt(0))))}writeEBML(e){if(e!==null){if(e instanceof Uint8Array)this.writer.write(e);else if(Array.isArray(e))for(let t of e)this.writeEBML(t);else if(this.offsets.set(e,this.writer.getPos()),this.writeUnsignedInt(e.id),Array.isArray(e.data)){let t=this.writer.getPos(),n=e.size===-1?1:e.size??4;e.size===-1?this.writeByte(255):this.writer.seek(this.writer.getPos()+n);let r=this.writer.getPos();if(this.dataOffsets.set(e,r),this.writeEBML(e.data),e.size!==-1){let e=this.writer.getPos()-r,i=this.writer.getPos();this.writer.seek(t),this.writeVarInt(e,n),this.writer.seek(i)}}else if(typeof e.data==`number`){let t=e.size??oo(e.data);this.writeVarInt(t),this.writeUnsignedInt(e.data,t)}else if(typeof e.data==`bigint`){let t=e.size??so(e.data);this.writeVarInt(t),this.writeUnsignedBigInt(e.data,t)}else if(typeof e.data==`string`)this.writeVarInt(e.data.length),this.writeAsciiString(e.data);else if(e.data instanceof Uint8Array)this.writeVarInt(e.data.byteLength,e.size),this.writer.write(e.data);else if(e.data instanceof eo)this.writeVarInt(4),this.writeFloat32(e.data.value);else if(e.data instanceof to)this.writeVarInt(8),this.writeFloat64(e.data.value);else if(e.data instanceof no){let t=e.size??co(e.data.value);this.writeVarInt(t),this.writeSignedInt(e.data.value,t)}else if(e.data instanceof ro){let t=Kn.encode(e.data.value);this.writeVarInt(t.length),this.writer.write(t)}else rr(e.data)}}},fo=Date.UTC(2001,0,1),po={avc:`V_MPEG4/ISO/AVC`,hevc:`V_MPEGH/ISO/HEVC`,vp8:`V_VP8`,vp9:`V_VP9`,av1:`V_AV1`,prores:`V_PRORES`,aac:`A_AAC`,mp3:`A_MPEG/L3`,opus:`A_OPUS`,vorbis:`A_VORBIS`,flac:`A_FLAC`,ac3:`A_AC3`,eac3:`A_EAC3`,dts:`A_DTS`,truehd:`A_TRUEHD`,"pcm-u8":`A_PCM/INT/LIT`,"pcm-s16":`A_PCM/INT/LIT`,"pcm-s16be":`A_PCM/INT/BIG`,"pcm-s24":`A_PCM/INT/LIT`,"pcm-s24be":`A_PCM/INT/BIG`,"pcm-s32":`A_PCM/INT/LIT`,"pcm-s32be":`A_PCM/INT/BIG`,"pcm-f32":`A_PCM/FLOAT/IEEE`,"pcm-f64":`A_PCM/FLOAT/IEEE`,webvtt:`S_TEXT/WEBVTT`},mo=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.isWebM?`webm`:`x-matroska`);if(e.codecStrings.length>0){let n=[...new Set(e.codecStrings.filter(Boolean))];t+=`; codecs="${n.join(`, `)}"`}return t},ho=e=>{let t=e.filePos;if(e.remainingLength<7)return null;let n=new qr(yo(e,7));if(n.readBits(12)!==4095||(n.skipBits(1),n.readBits(2)!==0))return null;let r=n.readBits(1),i=n.readBits(2)+1,a=n.readBits(4);if(a>=Jr.length)return null;n.skipBits(1);let o=n.readBits(3);if(o===0)throw Error(`ADTS frames with channel configuration 0 are not supported.`);n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);let s=n.readBits(13);n.skipBits(11);let c=n.readBits(2)+1;if(c!==1)throw Error(`ADTS frames with more than one AAC frame are not supported.`);let l=null;if(r===0){if(e.remainingLength<2)return null;l=bo(e)}return s<e.filePos-t?null:{objectType:i,samplingFrequencyIndex:a,channelConfiguration:o,frameLength:s,numberOfAacFrames:c,crcCheck:l,startPos:t}},go=t(((e,t)=>{t.exports={}})),_o=class e{constructor(e,t,n,r,i){this.bytes=e,this.view=t,this.offset=n,this.start=r,this.end=i,this.bufferPos=r-n}static tempFromBytes(t){return new e(t,Wn(t),0,0,t.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(t,n=this.end-t){if(t<this.start||t+n>this.end)throw RangeError(`Slicing outside of original slice.`);return new e(this.bytes,this.view,this.offset,t,t+n)}},vo=(e,t)=>{if(t<0||e.filePos<e.start||e.filePos+t>e.end)throw RangeError(`Tried reading [${e.filePos}, ${e.filePos+t}), but slice is [${e.start}, ${e.end}). This is likely an internal error, please report it alongside the file that caused it.`)},yo=(e,t)=>{vo(e,t);let n=e.bytes.subarray(e.bufferPos,e.bufferPos+t);return e.bufferPos+=t,n},bo=e=>{vo(e,2);let t=e.view.getUint16(e.bufferPos,!1);return e.bufferPos+=2,t},xo=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},So=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),Co=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw Error(`Cannot call close before output has been started.`);this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,e.output.state!==`finalizing`&&e.output.state!==`finalized`&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}},wo=class extends Co{constructor(e){if(super(),!Fo.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${Fo.join(`, `)}.`);this._codec=e}},To=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)},Eo=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.encoderConfig=null,this.encodersReclaimed=!1,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.chunkTimestampsAreShiftedByDuration=!1,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new gr,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,n){let r=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let i=this.encodingConfig,a=i.sizeChangeBehavior??`deny`,o=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(o=!0,a===`deny`))throw Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(i.transform?.width!==void 0||i.transform?.height!==void 0||i.transform?.rotate!==void 0||i.transform?.flip!==void 0||i.transform?.crop!==void 0||i.transform?.force===!0||o&&a!==`passThrough`){let n=i.transform?.width,r=i.transform?.height,s=i.transform?.fit??`fill`;o&&a!==`passThrough`&&(F(this.outputWidth),F(this.outputHeight),F(a!==`deny`),n=this.outputWidth,r=this.outputHeight,s=a);let c=await e.transform({width:n,height:r,roundDimensionsTo:2,crop:i.transform?.crop,rotate:i.transform?.rotate,flip:i.transform?.flip,fit:s,alpha:i.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=c.displayWidth,this.outputHeight=c.displayHeight),t&&e.close(),e=c,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let s=i.transform?.frameRate;if(s!==void 0){let i=e.timestamp+e.duration,a=ur(e.timestamp,s);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=i;return}await this.padFrameRate(a,n)}e===r&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/s),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=i}await this.processAndEncode(e,n)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig,r;if(n.transform?.process){let t=n.transform.process(e);if(Or(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let i=[];try{for(let n of t)n instanceof ya?i.push(n):typeof VideoFrame<`u`&&n instanceof VideoFrame?i.push(new ya(n)):i.push(new ya(n,{timestamp:e.timestamp,duration:e.duration}))}catch(n){for(let t of i)t!==e&&t.close();for(let n of t)(n instanceof ya&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw n}r=i}else r=[e];try{for(let e of r){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),F(this.encoderInitialized),this.closed)break;this.encodersReclaimed&&this.recreateWebCodecsEncoders();let n=this.encodingConfig.keyFrameInterval??2,r=Math.floor(e.timestamp/n),i={...this.defaultEncodeOptions,...e.encodeOptions,...t},a={...i,keyFrame:i.keyFrame===void 0?n===0||r!==this.lastMultipleOfKeyFrameInterval:i.keyFrame};if(this.lastMultipleOfKeyFrameInterval=r,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,a)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{F(this.encoder);let t=e.toVideoFrame(),n=tr(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),r=n===-1?null:this.preciseTimings[n];if(r&&r.microsecondTimestamp===t.timestamp?(r.timestamp!==e.timestamp&&(r.timestampIsValid=!1),r.duration!==e.duration&&(r.durationIsValid=!1)):(this.preciseTimings.splice(n+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,a)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,a)}finally{t.close()}}else{this.splitter||=new Ao;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,a)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of r)t!==e&&t.close()}}async padFrameRate(e,t){let n=this.encodingConfig.transform.frameRate;F(this.frameRateLastSample);let r=Math.round((e-this.frameRateLastTimestamp)*n);for(let e=1;e<r;e++){let r={stack:[],error:void 0,hasError:!1};try{let i=xo(r,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/n),i.setDuration(1/n),await this.processAndEncode(i,t)}catch(e){r.error=e,r.hasError=!0}finally{So(r)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=Ja(this.encodingConfig.quality,this.encodingConfig.bitrate);F(t!==void 0);let n=za({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),r=null,i;for(let e of n){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),i=Ya.find(e=>e.supports(this.encodingConfig.codec,t)),i){r=e;break}if(typeof VideoEncoder<`u`){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){r=e;break}}catch{}}}if(!r){if(typeof VideoEncoder>`u`)throw Error(Tr(`VideoEncoder`));let e=n[0].config,t=n.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let a=r.config;r.quantizer===null?this.source._nominalBitrate=a.bitrate??null:this.defaultEncodeOptions=Ga(this.encodingConfig.codec,r.quantizer),i?(this.customEncoder=new i,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof Za))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);To(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init()):(this.encoderConfig=a,this.encodingConfig.codec===`avc`&&br()&&(this.chunkTimestampsAreShiftedByDuration=await Oo()),this.createWebCodecsEncoders()),F(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}createWebCodecsEncoders(){let e=this.encoderConfig;F(e);let t=[],n=[],r=0,i=0,a=(e,t)=>{Er(e)?this.encodersReclaimed=!0:(e.stack=t,this.setError(e))},o=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(e,a)=>{if(!this.alphaEncoder){this.addPacket(e,null,a);return}let o=this.alphaFrameQueue.shift();F(o!==void 0),o?(this.alphaEncoder.encode(o,{...this.defaultEncodeOptions,keyFrame:e.type===`key`}),i++,o.close(),t.push({chunk:e,meta:a})):i===0?this.addPacket(e,null,a):(n.push(r+i),t.push({chunk:e,meta:a}))},error:e=>a(e,o)}),this.encoder.configure(e),this.encodingConfig.alpha===`keep`){let o=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(e,a)=>{i--;let o=t.shift();for(F(o!==void 0),this.addPacket(o.chunk,e,o.meta),r++;n.length>0&&n[0]===r;){n.shift();let e=t.shift();F(e!==void 0),this.addPacket(e.chunk,null,e.meta)}},error:e=>a(e,o)}),this.alphaEncoder.configure(e)}}addPacket(e,t,n){let r={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),r.alpha=e}let i=Za.fromEncodedChunk(e,r),a=this.encoderConfig;if(F(a),n?.decoderConfig&&(n.decoderConfig.codec=Zo({width:a.width,height:a.height,codec:this.encodingConfig.codec,codecDescription:n.decoderConfig.description?Un(n.decoderConfig.description):null,colorSpace:n.decoderConfig.colorSpace??null,avcType:a.codec.includes(`avc1.`)?1:a.codec.includes(`avc3.`)?3:null,avcCodecInfo:this.encodingConfig.codec===`avc`&&!n.decoderConfig.description?hi(i.data):null,hevcCodecInfo:this.encodingConfig.codec===`hevc`&&!n.decoderConfig.description?wi(i.data):null,vp9CodecInfo:this.encodingConfig.codec===`vp9`?Fi(i.data):null,av1CodecInfo:this.encodingConfig.codec===`av1`?Li(i.data):null,proresFormat:null}),this.encodingConfig.codec===`avc`&&n.decoderConfig.description&&br())){let e=_i(Un(n.decoderConfig.description)),t=e?.sequenceParameterSets[0];if(t&&t[0]===t[1]){F(e),t=t.subarray(1);let r=e.pictureParameterSets[0];r&&=r.subarray(1);let i=gi({...e,sequenceParameterSets:[t],pictureParameterSets:r?[r]:[]});n.decoderConfig.description=i}}let o=e.timestamp;this.chunkTimestampsAreShiftedByDuration&&(o-=e.duration??0,i=i.clone({timestamp:o/1e6}));let s=tr(this.preciseTimings,o,e=>e.microsecondTimestamp),c=s===-1?null:this.preciseTimings[s],l=null;this.emittedEncoderPackets===0&&i.type===`delta`&&n?.decoderConfig&&(l=Hi(this.encodingConfig.codec,n.decoderConfig,i.data)),(c&&c.microsecondTimestamp===o||l!==null)&&(i=i.clone({timestamp:c?.timestampIsValid?c.timestamp:void 0,duration:c?.durationIsValid?c.duration:void 0,type:l??void 0})),To(this.source._connectedTrack,i),this.encodingConfig.onEncodedPacket?.(i,n),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,i,n).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++}recreateWebCodecsEncoders(){F(this.encoder),this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.encodersReclaimed=!1,this.lastMultipleOfKeyFrameInterval=-1,this.createWebCodecsEncoders()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ur(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&!this.encodersReclaimed&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await Lr(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}},Do=null,Oo=()=>Do??=(async()=>{let e=null,t=new VideoEncoder({output:t=>{e??=t.timestamp},error:()=>{}});try{t.configure({codec:`avc1.64001f`,width:1280,height:720});let e=new VideoFrame(new Uint8Array(1382400),{format:`I420`,codedWidth:1280,codedHeight:720,timestamp:0,duration:500});t.encode(e,{keyFrame:!0}),e.close(),await t.flush()}catch{return!1}finally{t.state!==`closed`&&t.close()}return e===500})(),ko=null,Ao=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!ko){let e=new Blob([`(${jo.toString()})()`],{type:`application/javascript`});ko=URL.createObjectURL(e)}this.worker=new Worker(ko),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=nr();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}},jo=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if(e&&e.byteLength===a||(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,w=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),T={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[y.buffer]};return{colorFrame:w,alphaFrame:new VideoFrame(y,T)}}},Mo=class extends wo{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);La(t),super(t.codec),this._encoder=new Eo(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new ya(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},No=class extends Co{constructor(e){if(super(),!Ro.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${Ro.join(`, `)}.`);this._codec=e}},Po=class extends Co{constructor(e){if(super(),!zo.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${zo.join(`, `)}.`);this._codec=e}},Fo=[`avc`,`hevc`,`vp9`,`av1`,`vp8`,`prores`],Io=[`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,`pcm-u8`,`pcm-s8`,`ulaw`,`alaw`],Lo=[`aac`,`opus`,`mp3`,`vorbis`,`flac`,`ac3`,`eac3`,`dts`,`truehd`],Ro=[...Lo,...Io],zo=[`webvtt`],Bo=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],Vo=[{maxPictureSize:36864,maxBitrate:128e3,tier:`L`,level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:`L`,level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:`L`,level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:`L`,level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:`L`,level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:`L`,level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:`H`,level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:`L`,level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:`H`,level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:`L`,level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:`L`,level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:`L`,level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:`L`,level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:`L`,level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:`L`,level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:186}],z=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Ho=[{maxPictureSize:147456,maxBitrate:15e5,tier:`M`,level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:`M`,level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:`M`,level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:`M`,level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:`M`,level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:`H`,level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:`M`,level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:`H`,level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:`M`,level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:`M`,level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:`M`,level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:`M`,level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:19}],Uo=`.01.01.01.01.00`,Wo=`.0.110.01.01.01.0`,Go=[`ap4x`,`ap4h`,`apch`,`apcn`,`apcs`,`apco`],Ko=[`dtsc`,`dtsh`,`dtsl`,`dtse`],qo=[{fourCc:`apco`,bitrate:45e6,alpha:!1},{fourCc:`apcs`,bitrate:102e6,alpha:!1},{fourCc:`apcn`,bitrate:147e6,alpha:!1},{fourCc:`apch`,bitrate:22e7,alpha:!1},{fourCc:`ap4h`,bitrate:33e7,alpha:!0},{fourCc:`ap4x`,bitrate:5e8,alpha:!0}],Jo=(e,t,n,r,i)=>{if(e===`avc`){let e=vr(),i=e?66:100,a=Math.ceil(t/16)*Math.ceil(n/16),o=Bo.find(e=>a<=e.maxMacroblocks&&r<=e.maxBitrate)??Rn(Bo),s=o?o.level:0;return`avc1.${i.toString(16).padStart(2,`0`)}${e?`40`:`00`}${s.toString(16).padStart(2,`0`)}`}if(e===`hevc`){let e=t*n,i=Vo.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(Vo);return`hev1.1.6.${i.tier}${i.level}.B0`}if(e===`vp8`)return`vp8`;if(e===`vp9`){let e=t*n;return`vp09.00.${(z.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(z)).level.toString().padStart(2,`0`)}.08`}if(e===`av1`){let e=t*n,i=Ho.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(Ho);return`av01.0.${i.level.toString().padStart(2,`0`)}${i.tier}.08`}if(e===`prores`){let e=(t*n/2073600)**.95,a=qo.filter(e=>e.alpha===i),o=a[0].fourCc,s=1/0;for(let{fourCc:t,bitrate:n}of a){let i=Math.abs(n*e-r);i<s&&(s=i,o=t)}return o}throw rr(e),TypeError(`Unhandled codec '${String(e)}'.`)},Yo=e=>{let t=e.split(`.`);return[1,1,Number(t[1]),2,1,Number(t[2]),3,1,Number(t[3]),4,1,t[4]?Number(t[4]):1]},Xo=e=>{let t=e.split(`.`),n=Number(t[1]),r=t[2],i=Number(r.slice(0,-1)),a=(n<<5)+i,o=+(r.slice(-1)===`H`),s=Number(t[3]),c=s===8?0:1,l=+(s===12),u=t[4]?Number(t[4]):0,d=t[5]?Number(t[5][0]):1,f=t[5]?Number(t[5][1]):1,p=t[5]?Number(t[5][2]):0;return[129,a,(o<<7)+(c<<6)+(l<<5)+(u<<4)+(d<<3)+(f<<2)+p,0]},Zo=e=>{let{codec:t,codecDescription:n,colorSpace:r,avcCodecInfo:i,hevcCodecInfo:a,vp9CodecInfo:o,av1CodecInfo:s,proresFormat:c}=e;if(t===`avc`){if(F(e.avcType!==null),i){let t=new Uint8Array([i.avcProfileIndication,i.profileCompatibility,i.avcLevelIndication]);return`avc${e.avcType}.${$n(t)}`}if(!n||n.byteLength<4)throw TypeError(`AVC decoder description is not provided or is not at least 4 bytes long.`);return`avc${e.avcType}.${$n(n.subarray(1,4))}`}if(t===`hevc`){let e,t,r,i,o,s;if(a)e=a.generalProfileSpace,t=a.generalProfileIdc,r=er(a.generalProfileCompatibilityFlags),i=a.generalTierFlag,o=a.generalLevelIdc,s=[...a.generalConstraintIndicatorFlags];else{if(!n||n.byteLength<23)throw TypeError(`HEVC decoder description is not provided or is not at least 23 bytes long.`);let a=Wn(n),c=a.getUint8(1);e=c>>6&3,t=c&31,r=er(a.getUint32(2)),i=c>>5&1,o=a.getUint8(12),s=[];for(let e=0;e<6;e++)s.push(a.getUint8(6+e))}let c=`hev1.`;for(c+=[``,`A`,`B`,`C`][e]+t,c+=`.`,c+=r.toString(16).toUpperCase(),c+=`.`,c+=i===0?`L`:`H`,c+=o;s.length>0&&s[s.length-1]===0;)s.pop();return s.length>0&&(c+=`.`,c+=s.map(e=>e.toString(16).toUpperCase()).join(`.`)),c}if(t===`vp8`)return`vp8`;if(t===`vp9`){if(!o){let t=e.width*e.height,n=Rn(z).level;for(let e of z)if(t<=e.maxPictureSize){n=e.level;break}return`vp09.00.${n.toString().padStart(2,`0`)}.08`}let t=o.profile.toString().padStart(2,`0`),n=o.level.toString().padStart(2,`0`),r=o.bitDepth.toString().padStart(2,`0`),i=o.chromaSubsampling.toString().padStart(2,`0`),a=o.colourPrimaries.toString().padStart(2,`0`),s=o.transferCharacteristics.toString().padStart(2,`0`),c=o.matrixCoefficients.toString().padStart(2,`0`),l=o.videoFullRangeFlag.toString().padStart(2,`0`),u=`vp09.${t}.${n}.${r}.${i}`;return u+=`.${a}.${s}.${c}.${l}`,u.endsWith(Uo)&&(u=u.slice(0,-15)),u}if(t===`av1`){if(!s){let t=e.width*e.height,n=Rn(z).level;for(let e of z)if(t<=e.maxPictureSize){n=e.level;break}return`av01.0.${n.toString().padStart(2,`0`)}M.08`}let t=s.profile,n=s.level.toString().padStart(2,`0`),i=s.tier?`H`:`M`,a=s.bitDepth.toString().padStart(2,`0`),o=s.monochrome?`1`:`0`,c=100*s.chromaSubsamplingX+10*s.chromaSubsamplingY+1*(s.chromaSubsamplingX&&s.chromaSubsamplingY?s.chromaSamplePosition:0),l,u,d,f;Ri(s)?(l=s.colourPrimaries,u=s.transferCharacteristics,d=s.matrixCoefficients,f=s.videoFullRangeFlag):(l=r?.primaries?qn[r.primaries]:1,u=r?.transfer?Jn[r.transfer]:1,d=r?.matrix?Yn[r.matrix]:1,f=+!!r?.fullRange);let p=`av01.${t}.${n}${i}.${a}`;return p+=`.${o}.${c.toString().padStart(3,`0`)}`,p+=`.${l.toString().padStart(2,`0`)}`,p+=`.${u.toString().padStart(2,`0`)}`,p+=`.${d.toString().padStart(2,`0`)}`,p+=`.${f}`,p.endsWith(Wo)&&(p=p.slice(0,-17)),p}if(t===`prores`)return c??`apch`;throw t!==null&&rr(t),TypeError(`Unhandled codec '${t}'.`)},Qo=(e,t)=>{switch(e){case`aac`:{if(!t.description)return 1024/t.sampleRate;let e=Zr(Un(t.description));if(e.coreSampleRate===null)throw Error(`Invalid AAC sampling frequency index.`);return e.frameLength/e.coreSampleRate}case`opus`:return es;case`mp3`:{let{sampleRate:e,numberOfChannels:n}=t,r=e>=32e3,i=r?1152:576,a=r?32e3:8e3,o=r?511:255,s=r?n===1?17:32:n===1?9:17,c=Math.floor(i/8*a/e)-4-s;return(1+Math.ceil(o/c))*i/e}case`vorbis`:{F(t.description);let e=Un(t.description),n=1,r=2;for(;r>0;)e[n++]<255&&r--;return(1<<(e[n+28]>>4))/2/t.sampleRate}case`ac3`:case`eac3`:return 256/t.sampleRate;case`dts`:return 512/t.sampleRate;case`flac`:case`truehd`:case`pcm-s16`:case`pcm-s16be`:case`pcm-s24`:case`pcm-s24be`:case`pcm-s32`:case`pcm-s32be`:case`pcm-f32`:case`pcm-f32be`:case`pcm-f64`:case`pcm-f64be`:case`pcm-u8`:case`pcm-s8`:case`ulaw`:case`alaw`:return 0;default:rr(e),F(!1)}},$o=48e3,es=.4,ts=/^pcm-([usf])(\d+)(be)?$/,ns=e=>{if(F(Io.includes(e)),e===`ulaw`)return{dataType:`ulaw`,sampleSize:1,littleEndian:!0,silentValue:255};if(e===`alaw`)return{dataType:`alaw`,sampleSize:1,littleEndian:!0,silentValue:213};let t=ts.exec(e);F(t);let n;n=t[1]===`u`?`unsigned`:t[1]===`s`?`signed`:`float`;let r=Number(t[2])/8,i=t[3]!==`be`;return{dataType:n,sampleSize:r,littleEndian:i,silentValue:e===`pcm-u8`?128:0}},rs=e=>e.startsWith(`avc1`)||e.startsWith(`avc3`)?`avc`:e.startsWith(`hev1`)||e.startsWith(`hvc1`)?`hevc`:e===`vp8`?`vp8`:e.startsWith(`vp09`)?`vp9`:e.startsWith(`av01`)?`av1`:Go.includes(e)?`prores`:e===`mp3`||e===`mp4a.69`||e===`mp4a.6B`||e===`mp4a.6b`||e===`mp4a.40.34`?`mp3`:e.startsWith(`mp4a.40.`)||e===`mp4a.67`?`aac`:e===`opus`||e===`Opus`?`opus`:e===`vorbis`?`vorbis`:e===`flac`?`flac`:e===`ac-3`||e===`ac3`?`ac3`:e===`ec-3`||e===`eac3`?`eac3`:Ko.includes(e)?`dts`:e===`mlpa`?`truehd`:e===`ulaw`?`ulaw`:e===`alaw`?`alaw`:ts.test(e)?e:e===`webvtt`?`webvtt`:null,is=e=>e===`avc`?{avc:{format:`avc`}}:e===`hevc`?{hevc:{format:`hevc`}}:{},as=[`avc1`,`avc3`,`hev1`,`hvc1`,`vp8`,`vp09`,`av01`,...Go],os=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,ss=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,cs=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,ls=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,us=(e,t)=>{if(!e)throw TypeError(`Video chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Video chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Video chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Video chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Video chunk metadata decoder configuration must specify a codec string.`);if(!as.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.codedWidth)||e.decoderConfig.codedWidth<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).`);if(!Number.isInteger(e.decoderConfig.codedHeight)||e.decoderConfig.codedHeight<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).`);if(e.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectWidth)||e.decoderConfig.displayAspectWidth<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectHeight)||e.decoderConfig.displayAspectHeight<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectWidth!==void 0!=(e.decoderConfig.displayAspectHeight!==void 0))throw TypeError(`Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.`);if(e.decoderConfig.description!==void 0&&!Zn(e.decoderConfig.description))throw TypeError(`Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.colorSpace!==void 0){let{colorSpace:t}=e.decoderConfig;if(typeof t!=`object`)throw TypeError(`Video chunk metadata decoder configuration colorSpace, when provided, must be an object.`);let n=Object.keys(qn);if(t.primaries!=null&&!n.includes(t.primaries))throw TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(`, `)}.`);let r=Object.keys(Jn);if(t.transfer!=null&&!r.includes(t.transfer))throw TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${r.join(`, `)}.`);let i=Object.keys(Yn);if(t.matrix!=null&&!i.includes(t.matrix))throw TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${i.join(`, `)}.`);if(t.fullRange!=null&&typeof t.fullRange!=`boolean`)throw TypeError(`Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.`)}if(e.decoderConfig.codec.startsWith(`avc1`)||e.decoderConfig.codec.startsWith(`avc3`)){if(!os.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.`)}else if(e.decoderConfig.codec.startsWith(`hev1`)||e.decoderConfig.codec.startsWith(`hvc1`)){if(!ss.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.`)}else if(e.decoderConfig.codec.startsWith(`vp8`)){if(e.decoderConfig.codec!==`vp8`)throw TypeError(`Video chunk metadata decoder configuration codec string for VP8 must be "vp8".`)}else if(e.decoderConfig.codec.startsWith(`vp09`)){if(!cs.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.`)}else if(e.decoderConfig.codec.startsWith(`av01`)){if(!ls.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.`)}else if(Go.some(t=>e.decoderConfig.codec.startsWith(t))&&!Go.some(t=>e.decoderConfig.codec===t))throw TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${Go.join(`, `)}.`);if(t!==null&&rs(e.decoderConfig.codec)!==t)throw TypeError(`Video chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ds=[`mp4a`,`mp3`,`opus`,`vorbis`,`flac`,`ulaw`,`alaw`,`pcm`,`ac-3`,`ec-3`,`dts`,`mlpa`],fs=(e,t)=>{if(!e)throw TypeError(`Audio chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Audio chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Audio chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Audio chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Audio chunk metadata decoder configuration must specify a codec string.`);if(!ds.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.sampleRate)||e.decoderConfig.sampleRate<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).`);if(!Number.isInteger(e.decoderConfig.numberOfChannels)||e.decoderConfig.numberOfChannels<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).`);if(e.decoderConfig.description!==void 0&&!Zn(e.decoderConfig.description))throw TypeError(`Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.codec.startsWith(`mp4a`)&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`){if(![`mp4a.40.2`,`mp4a.40.02`,`mp4a.40.5`,`mp4a.40.05`,`mp4a.40.29`,`mp4a.67`].includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`mp3`)||e.decoderConfig.codec.startsWith(`mp4a`)){if(e.decoderConfig.codec!==`mp3`&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`)throw TypeError(`Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".`)}else if(e.decoderConfig.codec.startsWith(`opus`)){if(e.decoderConfig.codec!==`opus`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Opus must be "opus".`);if(e.decoderConfig.description&&e.decoderConfig.description.byteLength<18)throw TypeError(`Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.`)}else if(e.decoderConfig.codec.startsWith(`vorbis`)){if(e.decoderConfig.codec!==`vorbis`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".`);if(!e.decoderConfig.description)throw TypeError(`Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`flac`)){if(e.decoderConfig.codec!==`flac`)throw TypeError(`Audio chunk metadata decoder configuration codec string for FLAC must be "flac".`);if(!e.decoderConfig.description||e.decoderConfig.description.byteLength<42)throw TypeError(`Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`ac-3`)||e.decoderConfig.codec.startsWith(`ac3`)){if(e.decoderConfig.codec!==`ac-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".`)}else if(e.decoderConfig.codec.startsWith(`ec-3`)||e.decoderConfig.codec.startsWith(`eac3`)){if(e.decoderConfig.codec!==`ec-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".`)}else if(e.decoderConfig.codec.startsWith(`dts`)){if(!Ko.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${Ko.join(`, `)}.`)}else if(e.decoderConfig.codec.startsWith(`mlpa`)){if(e.decoderConfig.codec!==`mlpa`)throw TypeError(`Audio chunk metadata decoder configuration codec string for TrueHD must be "mlpa".`)}else if((e.decoderConfig.codec.startsWith(`pcm`)||e.decoderConfig.codec.startsWith(`ulaw`)||e.decoderConfig.codec.startsWith(`alaw`))&&!Io.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${Io.join(`, `)}).`);if(t!==null&&rs(e.decoderConfig.codec)!==t)throw TypeError(`Audio chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ps=e=>{if(!e)throw TypeError(`Subtitle metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Subtitle metadata must be an object.`);if(!e.config)throw TypeError(`Subtitle metadata must include a config object.`);if(typeof e.config!=`object`)throw TypeError(`Subtitle metadata config must be an object.`);if(typeof e.config.description!=`string`)throw TypeError(`Subtitle metadata config description must be a string.`)},ms=class{constructor(e){this.mutex=new Qn,this.trackTimestampInfo=new WeakMap,this.output=e}onTrackClose(e){}validateTimestamp(e,t,n){let r=this.trackTimestampInfo.get(e);if(r){if(n&&(r.maxTimestampBeforeLastKeyPacket=r.maxTimestamp),r.maxTimestampBeforeLastKeyPacket!==null&&t<r.maxTimestampBeforeLastKeyPacket)throw Error(`Timestamps cannot be smaller than the largest timestamp of the previous GOP (a GOP begins with a key packet and ends right before the next key packet). Got ${t}s, but largest timestamp is ${r.maxTimestampBeforeLastKeyPacket}s.`);r.maxTimestamp=Math.max(r.maxTimestamp,t)}else{if(!n)throw Error(`First packet must be a key packet.`);r={maxTimestamp:t,maxTimestampBeforeLastKeyPacket:null},this.trackTimestampInfo.set(e,r)}}},hs=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let t=0;t<e.length;t++)this.helperView.setUint8(t%8,e.charCodeAt(t)),t%8==7&&this.writer.write(this.helper);e.length%8!=0&&this.writer.write(this.helper.subarray(0,e.length%8))}writeBox(e){if(this.offsets.set(e,this.writer.getPos()),e.contents&&!e.children)this.writeBoxHeader(e,e.size??e.contents.byteLength+8),this.writer.write(e.contents);else{let t=this.writer.getPos();if(this.writeBoxHeader(e,0),e.contents&&this.writer.write(e.contents),e.children)for(let t of e.children)t&&this.writeBox(t);let n=this.writer.getPos(),r=e.size??n-t;this.writer.seek(t),this.writeBoxHeader(e,r),this.writer.seek(n)}}writeBoxHeader(e,t){this.writeU32(e.largeSize?1:t),this.writeAscii(e.type),e.largeSize&&this.writeU64(t)}measureBoxHeader(e){return 8+(e.largeSize?8:0)}patchBox(e){let t=this.offsets.get(e);F(t!==void 0);let n=this.writer.getPos();this.writer.seek(t),this.writeBox(e),this.writer.seek(n)}measureBox(e){if(e.contents&&!e.children)return this.measureBoxHeader(e)+e.contents.byteLength;{let t=this.measureBoxHeader(e);if(e.contents&&(t+=e.contents.byteLength),e.children)for(let n of e.children)n&&(t+=this.measureBox(n));return t}}},B=new Uint8Array(8),gs=new DataView(B.buffer),_s=e=>[(e%256+256)%256],V=e=>(gs.setUint16(0,e,!1),[B[0],B[1]]),vs=e=>(gs.setInt16(0,e,!1),[B[0],B[1]]),ys=e=>(gs.setUint32(0,e,!1),[B[1],B[2],B[3]]),H=e=>(gs.setUint32(0,e,!1),[B[0],B[1],B[2],B[3]]),bs=e=>(gs.setInt32(0,e,!1),[B[0],B[1],B[2],B[3]]),xs=e=>(gs.setUint32(0,Math.floor(e/2**32),!1),gs.setUint32(4,e,!1),[B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7]]),Ss=e=>(gs.setInt32(0,Math.floor(e/2**32),!1),gs.setUint32(4,e,!1),[B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7]]),Cs=e=>(gs.setInt16(0,256*e,!1),[B[0],B[1]]),ws=e=>(gs.setInt32(0,2**16*e,!1),[B[0],B[1],B[2],B[3]]),Ts=e=>(gs.setInt32(0,2**30*e,!1),[B[0],B[1],B[2],B[3]]),Es=(e,t)=>{let n=[],r=e;do{let e=r&127;r>>=7,n.length>0&&(e|=128),n.push(e),t!==void 0&&t--}while(r>0||t);return n.reverse()},U=(e,t=!1)=>{let n=Array(e.length).fill(null).map((t,n)=>e.charCodeAt(n));return t&&n.push(0),n},Ds=e=>[ws(e[0]),ws(e[1]),Ts(e[2]),ws(e[3]),ws(e[4]),Ts(e[5]),ws(e[6]),ws(e[7]),Ts(e[8])],W=(e,t,n)=>({type:e,contents:t&&new Uint8Array(t.flat(10)),children:n}),G=(e,t,n,r,i)=>W(e,[_s(t),ys(n),r??[]],i),Os=e=>e.isQuickTime?W(`ftyp`,[U(`qt `),H(512),U(`qt `)]):e.fragmented?e.cmaf?W(`ftyp`,[U(`iso5`),H(512),U(`iso5`),U(`iso6`),U(`mp41`),U(`cmfc`),U(`dash`)]):W(`ftyp`,[U(`iso5`),H(512),U(`iso5`),U(`iso6`),U(`mp41`)]):W(`ftyp`,[U(`isom`),H(512),U(`isom`),e.holdsAvc?U(`avc1`):[],U(`mp41`)]),ks=()=>W(`styp`,[U(`iso5`),H(0),U(`iso5`),U(`iso6`),U(`mp41`),U(`cmfc`),U(`dash`)]),As=(e,t)=>{let n=Math.max(0,e.minWrittenTimestamp),r=Math.max(0,e.maxWrittenEndTimestamp-n);return Number.isFinite(r)||(r=0),G(`sidx`,1,0,[H(1),H(ul),xs(K(n,ul)),xs(0),V(0),V(1),H(t&2147483647),H(K(r,ul)),H(0)])},js=e=>({type:`mdat`,largeSize:e}),Ms=e=>({type:`free`,size:e}),Ns=e=>W(`moov`,void 0,[Ps(e.creationTime,e.trackDatas),...e.trackDatas.map(t=>Fs(t,e.creationTime)),e.isFragmented?Ec(e.trackDatas):null,Vc(e)]),Ps=(e,t)=>{let n=Math.max(0,...t.map(e=>Math.max(0,K(pl(e),ul)+K(e.startTimestampOffset??0,ul)))),r=Math.max(0,...t.map(e=>e.track.id))+1,i=!zn(e)||!zn(n),a=i?xs:H;return G(`mvhd`,+i,0,[a(e),a(e),H(ul),a(n),ws(1),Cs(1),Array(10).fill(0),Ds(kn),Array(24).fill(0),H(r)])},Fs=(e,t)=>{let n=fl(e),r=e.startTimestampOffset!==null&&e.startTimestampOffset!==0;return W(`trak`,void 0,[Is(e,t),r?Ls(e):null,Rs(e,t),n.name===void 0?null:W(`udta`,void 0,[W(`name`,[...Kn.encode(n.name)])])])},Is=(e,t)=>{let n=Math.max(0,K(pl(e),ul)+K(e.startTimestampOffset??0,ul)),r=!zn(t)||!zn(n),i=r?xs:H,a;if(e.type===`video`&&e.track.metadata.transformationMatrix)a=e.track.metadata.transformationMatrix;else if(e.type===`video`){let{rotation:t,flip:n}=e.track.metadata;a=An(In(Nn(t??0),Fn(n?-1:1,1)),e.info.width,e.info.height)}else a=kn;let o=2;e.track.metadata.disposition?.default!==!1&&(o|=1);let s=e.type===`video`?0:e.type===`audio`?1:e.type===`subtitle`?2:rr(e);return G(`tkhd`,+r,o,[i(t),i(t),H(e.track.id),H(0),i(n),Array(8).fill(0),V(0),V(s),Cs(+(e.type===`audio`)),V(0),Ds(a),ws(e.type===`video`?e.info.width:0),ws(e.type===`video`?e.info.height:0)])},Ls=e=>{let t=e.startTimestampOffset;if(F(t!==null),t>0){let n=K(t,ul),r=K(pl(e),ul),i=!zn(n)||!zn(r),a=i?xs:H,o=i?Ss:bs;return W(`edts`,void 0,[G(`elst`,+!!i,0,[H(2),a(n),o(-1),ws(1),a(r),o(0),ws(1)])])}{let n=K(-t,e.timescale),r=Math.max(0,K(pl(e),ul)+K(t,ul)),i=!Bn(n)||!zn(r),a=i?xs:H,o=i?Ss:bs;return W(`edts`,void 0,[G(`elst`,+!!i,0,[H(1),a(r),o(n),ws(1)])])}},Rs=(e,t)=>W(`mdia`,void 0,[zs(e,t),Hs(!0,Bs[e.type],Vs[e.type]),Us(e)]),zs=(e,t)=>{let n=K(pl(e),e.timescale),r=!zn(t)||!zn(n),i=r?xs:H;return G(`mdhd`,+r,0,[i(t),i(t),H(e.timescale),i(n),V(nl(e.track.metadata.languageCode??`und`)),V(0)])},Bs={video:`vide`,audio:`soun`,subtitle:`text`},Vs={video:`MediabunnyVideoHandler`,audio:`MediabunnySoundHandler`,subtitle:`MediabunnyTextHandler`},Hs=(e,t,n,r=`\0\0\0\0`)=>G(`hdlr`,0,0,[e?U(`mhlr`):H(0),U(t),U(r),H(0),H(0),U(n,!0)]),Us=e=>W(`minf`,void 0,[Ws[e.type](),Gs(),Js(e)]),Ws={video:()=>G(`vmhd`,0,1,[V(0),V(0),V(0),V(0)]),audio:()=>G(`smhd`,0,0,[V(0),V(0)]),subtitle:()=>G(`nmhd`,0,0)},Gs=()=>W(`dinf`,void 0,[Ks()]),Ks=()=>G(`dref`,0,0,[H(1)],[qs()]),qs=()=>G(`url `,0,1),Js=e=>{let t=e.compositionTimeOffsetTable.length>1||e.compositionTimeOffsetTable.some(e=>e.sampleCompositionTimeOffset!==0);return W(`stbl`,void 0,[Ys(e),vc(e),t?Cc(e):null,t?wc(e):null,bc(e),xc(e),Sc(e),yc(e),...Tc(e.samples,!1)])},Ys=e=>{let t;if(e.type===`video`)t=Xs(Xc(e.track.source._codec,e.info.decoderConfig.codec),e);else if(e.type===`audio`){let n=Qc(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime);F(n),t=ic(n,e)}else e.type===`subtitle`&&(t=gc(el[e.track.source._codec],e));return F(t),G(`stsd`,0,0,[H(1)],[t])},Xs=(e,t)=>W(e,[[,,,,,,].fill(0),V(1),V(0),V(0),Array(12).fill(0),V(t.info.width),V(t.info.height),H(4718592),H(4718592),H(0),V(1),_s(oi.length),U(oi),Array(31-oi.length).fill(0),V(t.info.hasAlphaChannel?32:24),vs(65535)],[Zc[t.track.source._codec]?.(t)??null,Qs(t),Xn(t.info.decoderConfig.colorSpace)?null:$s(t),Zs(t)]),Zs=e=>e.avgBitrate===0&&e.maxBitrate===0?null:W(`btrt`,[H(0),H(e.maxBitrate),H(e.avgBitrate)]),Qs=e=>e.info.pixelAspectRatio.num===e.info.pixelAspectRatio.den?null:W(`pasp`,[H(e.info.pixelAspectRatio.num),H(e.info.pixelAspectRatio.den)]),$s=e=>{let t=e.info.decoderConfig.colorSpace;return W(`colr`,[U(e.muxer.isQuickTime?`nclc`:`nclx`),V(t?.primaries==null?2:qn[t.primaries]),V(t?.transfer==null?2:Jn[t.transfer]),V(t?.matrix==null?2:Yn[t.matrix]),e.muxer.isQuickTime?[]:_s(!!t?.fullRange<<7)])},ec=e=>e.info.decoderConfig&&W(`avcC`,[...Un(e.info.decoderConfig.description)]),tc=e=>e.info.decoderConfig&&W(`hvcC`,[...Un(e.info.decoderConfig.description)]),nc=e=>{if(!e.info.decoderConfig)return null;let t=e.info.decoderConfig,n=t.codec.split(`.`),r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?Number(n[4]):1,s=n[8]?Number(n[8]):Number(t.colorSpace?.fullRange??0),c=(a<<4)+(o<<1)+s,l=n[5]?Number(n[5]):t.colorSpace?.primaries?qn[t.colorSpace.primaries]:1,u=n[6]?Number(n[6]):t.colorSpace?.transfer?Jn[t.colorSpace.transfer]:1,d=n[7]?Number(n[7]):t.colorSpace?.matrix?Yn[t.colorSpace.matrix]:1;return G(`vpcC`,1,0,[_s(r),_s(i),_s(c),_s(l),_s(u),_s(d),V(0)])},rc=e=>W(`av1C`,Xo(e.info.decoderConfig.codec)),ic=(e,t)=>{let n=0,r,i=16,a=Io.includes(t.track.source._codec);if(a){let e=t.track.source._codec,{sampleSize:r}=ns(e);i=8*r,i>16&&(n=1)}if(t.muxer.isQuickTime&&t.track.source._codec!==`truehd`&&(n=1),n===0)r=[[,,,,,,].fill(0),V(1),V(n),V(0),H(0),V(t.info.numberOfChannels),V(i),V(0),V(0),t.track.source._codec===`truehd`?H(t.info.sampleRate):[V(t.info.sampleRate<2**16?t.info.sampleRate:0),V(0)]];else{let e=a?0:-2;r=[[,,,,,,].fill(0),V(1),V(n),V(0),H(0),V(t.info.numberOfChannels),V(Math.min(i,16)),vs(e),V(0),V(t.info.sampleRate<2**16?t.info.sampleRate:0),V(0),a?[H(1),H(i/8),H(t.info.numberOfChannels*i/8)]:[H(0),H(0),H(0)],H(2)]}return W(e,r,[$c(t.track.source._codec,t.muxer.isQuickTime)?.(t)??null,Zs(t)])},ac=e=>{let t;switch(e.track.source._codec){case`aac`:t=64;break;case`mp3`:t=107;break;case`vorbis`:t=221;break;default:throw Error(`Unhandled audio codec: ${e.track.source._codec}`)}let n=[..._s(t),..._s(21),...ys(0),...H(e.maxBitrate),...H(e.avgBitrate)];if(e.info.decoderConfig.description){let t=Un(e.info.decoderConfig.description);n=[...n,..._s(5),...Es(t.byteLength),...t]}return n=[...V(1),..._s(0),..._s(4),...Es(n.length),...n,..._s(6),..._s(1),..._s(2)],n=[..._s(3),...Es(n.length),...n],G(`esds`,0,0,n)},oc=e=>W(`wave`,void 0,[sc(e),cc(e),W(`\0\0\0\0`)]),sc=e=>W(`frma`,[U(Qc(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime))]),cc=e=>{let{littleEndian:t}=ns(e.track.source._codec);return W(`enda`,[V(+t)])},lc=e=>{let t=e.info.numberOfChannels,n=312,r=e.info.sampleRate,i=0,a=0,o=new Uint8Array,s=e.info.decoderConfig?.description;if(s){F(s.byteLength>=18);let e=zi(Un(s));t=e.outputChannelCount,n=e.preSkip,r=e.inputSampleRate,i=e.outputGain,a=e.channelMappingFamily,e.channelMappingTable&&(o=e.channelMappingTable)}return W(`dOps`,[_s(0),_s(t),V(n),H(r),vs(i),_s(a),...o])},uc=e=>{let t=e.info.decoderConfig?.description;return F(t),G(`dfLa`,0,0,[...Un(t).subarray(4)])},dc=e=>{let{littleEndian:t,sampleSize:n}=ns(e.track.source._codec);return G(`pcmC`,0,0,[_s(+t),_s(8*n)])},fc=e=>{F(e.info.primingPacket);let t=Gi(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).`);let n=new Uint8Array(3),r=new qr(n);return r.writeBits(2,t.fscod),r.writeBits(5,t.bsid),r.writeBits(3,t.bsmod),r.writeBits(3,t.acmod),r.writeBits(1,t.lfeon),r.writeBits(5,t.bitRateCode),r.writeBits(5,0),W(`dac3`,[...n])},pc=e=>{F(e.info.primingPacket);let t=qi(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).`);let n=16;for(let e of t.substreams)n+=23,e.numDepSub>0?n+=9:n+=1;let r=Math.ceil(n/8),i=new Uint8Array(r),a=new qr(i);a.writeBits(13,t.dataRate),a.writeBits(3,t.substreams.length-1);for(let e of t.substreams)a.writeBits(2,e.fscod),a.writeBits(5,e.bsid),a.writeBits(1,0),a.writeBits(1,0),a.writeBits(3,e.bsmod),a.writeBits(3,e.acmod),a.writeBits(1,e.lfeon),a.writeBits(3,0),a.writeBits(4,e.numDepSub),e.numDepSub>0?a.writeBits(9,e.chanLoc):a.writeBits(1,0);return W(`dec3`,[...i])},mc=e=>{F(e.info.primingPacket);let t=ia(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.`);return W(`ddts`,[...oa(t)])},hc=e=>{F(e.info.primingPacket);let t=e.info.primingPacket.data;if(Ui(`truehd`,t)!==`key`)throw Error(`Couldn't extract TrueHD stream info from the audio packet. Ensure the first packet is an access unit carrying a major sync.`);let n=Wn(t),r=n.getUint32(8),i=n.getUint16(18)&32767;return W(`dmlp`,[H(r),V(i<<1),H(0)])},gc=(e,t)=>W(e,[[,,,,,,].fill(0),V(1)],[tl[t.track.source._codec](t),Zs(t)]),_c=e=>W(`vttC`,[...Kn.encode(e.info.config.description)]),vc=e=>G(`stts`,0,0,[H(e.timeToSampleTable.length),e.timeToSampleTable.map(e=>[H(e.sampleCount),H(e.sampleDelta)])]),yc=e=>{if(e.samples.every(e=>e.type===`key`))return null;let t=[...e.samples.entries()].filter(([,e])=>e.type===`key`);return G(`stss`,0,0,[H(t.length),t.map(([e])=>H(e+1))])},bc=e=>G(`stsc`,0,0,[H(e.compactlyCodedChunkTable.length),e.compactlyCodedChunkTable.map(e=>[H(e.firstChunk),H(e.samplesPerChunk),H(1)])]),xc=e=>{if(e.type===`audio`&&e.info.requiresPcmTransformation){let{sampleSize:t}=ns(e.track.source._codec);return G(`stsz`,0,0,[H(t*e.info.numberOfChannels),H(e.samples.reduce((t,n)=>t+K(n.duration,e.timescale),0))])}return G(`stsz`,0,0,[H(0),H(e.samples.length),e.samples.map(e=>H(e.size))])},Sc=e=>e.finalizedChunks.length>0&&Rn(e.finalizedChunks).offset>=2**32?G(`co64`,0,0,[H(e.finalizedChunks.length),e.finalizedChunks.map(e=>xs(e.offset))]):G(`stco`,0,0,[H(e.finalizedChunks.length),e.finalizedChunks.map(e=>H(e.offset))]),Cc=e=>G(`ctts`,1,0,[H(e.compositionTimeOffsetTable.length),e.compositionTimeOffsetTable.map(e=>[H(e.sampleCount),bs(e.sampleCompositionTimeOffset)])]),wc=e=>{if(F(e.compositionTimeOffsetTable.length>0),e.samples.length===0)return null;let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let r=0;r<e.compositionTimeOffsetTable.length;r++){let i=e.compositionTimeOffsetTable[r];t=Math.min(t,i.sampleCompositionTimeOffset),n=Math.max(n,i.sampleCompositionTimeOffset)}for(let t=0;t<e.samples.length;t++){let n=e.samples[t];r=Math.min(r,K(n.timestamp,e.timescale)),i=Math.max(i,K(n.timestamp+n.duration,e.timescale))}let a=Math.max(-t,0);return i>=2**31?null:G(`cslg`,0,0,[bs(a),bs(t),bs(n),bs(r),bs(i)])},Tc=(e,t)=>{let n=[];for(let t of e)if(n.length===0)n.push({sampleCount:1,prerollSamples:t.prerollSamples});else{let e=n[n.length-1];e.prerollSamples===t.prerollSamples?e.sampleCount++:n.push({sampleCount:1,prerollSamples:t.prerollSamples})}let r=n.filter(e=>e.prerollSamples!==0);if(r.length===0)return[];let i=t?65537:1;return[G(`sgpd`,1,0,[U(`roll`),H(2),H(r.length),...r.map(e=>vs(e.prerollSamples))]),G(`sbgp`,0,0,[U(`roll`),H(n.length),...n.map(e=>[H(e.sampleCount),H(e.prerollSamples===0?0:i++)])])]},Ec=e=>W(`mvex`,void 0,e.map(Dc)),Dc=e=>G(`trex`,0,0,[H(e.track.id),H(1),H(0),H(0),H(0)]),Oc=(e,t)=>W(`moof`,void 0,[kc(e),...t.map(jc)]),kc=e=>G(`mfhd`,0,0,[H(e)]),Ac=e=>{let t=0,n=0,r=e.type===`delta`;return n|=+r,t|=r?1:2,t<<24|n<<16},jc=e=>W(`traf`,void 0,[Mc(e),Nc(e),Pc(e),...Tc(e.currentChunk.samples,!0)]),Mc=e=>{F(e.currentChunk);let t=0;t|=8,t|=16,t|=32,t|=131072;let n=e.currentChunk.samples[1]??e.currentChunk.samples[0],r={duration:n.timescaleUnitsToNextSample,size:n.size,flags:Ac(n)};return G(`tfhd`,0,t,[H(e.track.id),H(r.duration),H(r.size),H(r.flags)])},Nc=e=>(F(e.currentChunk),G(`tfdt`,1,0,[xs(K(e.currentChunk.startTimestamp,e.timescale))])),Pc=e=>{F(e.currentChunk);let t=e.currentChunk.samples.map(e=>e.timescaleUnitsToNextSample),n=e.currentChunk.samples.map(e=>e.size),r=e.currentChunk.samples.map(Ac),i=e.currentChunk.samples.map(t=>K(t.timestamp-t.decodeTimestamp,e.timescale)),a=new Set(t),o=new Set(n),s=new Set(r),c=new Set(i),l=s.size===2&&r[0]!==r[1],u=a.size>1,d=o.size>1,f=!l&&s.size>1,p=c.size>1||[...c].some(e=>e!==0),m=0;return m|=1,m|=4*l,m|=256*u,m|=512*d,m|=1024*f,m|=2048*p,G(`trun`,1,m,[H(e.currentChunk.samples.length),H(e.currentChunk.offset-e.currentChunk.moofOffset||0),l?H(r[0]):[],e.currentChunk.samples.map((e,a)=>[u?H(t[a]):[],d?H(n[a]):[],f?H(r[a]):[],p?bs(i[a]):[]])])},Fc=e=>W(`mfra`,void 0,[...e.map(Ic),Lc()]),Ic=e=>{let t=[];for(let n of e.finalizedChunks){let r=n.samples.findIndex(e=>e.type===`key`);if(r===-1)continue;let i=n.samples[r];t.push([xs(K(i.timestamp,e.timescale)),xs(n.moofOffset),H(n.trafIndex+1),H(1),H(r+1)])}return G(`tfra`,1,0,[H(e.track.id),H(63),H(t.length),t])},Lc=()=>G(`mfro`,0,0,[H(0)]),Rc=()=>W(`vtte`),zc=(e,t,n,r,i)=>W(`vttc`,void 0,[i===null?null:W(`vsid`,[bs(i)]),n===null?null:W(`iden`,[...Kn.encode(n)]),t===null?null:W(`ctim`,[...Kn.encode(ua(t))]),r===null?null:W(`sttg`,[...Kn.encode(r)]),W(`payl`,[...Kn.encode(e)])]),Bc=e=>W(`vtta`,[...Kn.encode(e)]),Vc=e=>{let t=[],n=e.format._options.metadataFormat??`auto`,r=e.output._metadataTags;if(n===`mdir`||n===`auto`&&!e.isQuickTime){let e=qc(r);e&&t.push(e)}else if(n===`mdta`){let e=Jc(r);e&&t.push(e)}else(n===`udta`||n===`auto`&&e.isQuickTime)&&Hc(t,e.output._metadataTags);return t.length===0?null:W(`udta`,void 0,t)},Hc=(e,t)=>{for(let{key:n,value:r}of kr(t))switch(n){case`title`:e.push(Uc(`©nam`,r));break;case`description`:e.push(Uc(`©des`,r));break;case`artist`:e.push(Uc(`©ART`,r));break;case`album`:e.push(Uc(`©alb`,r));break;case`albumArtist`:e.push(Uc(`albr`,r));break;case`genre`:e.push(Uc(`©gen`,r));break;case`date`:e.push(Uc(`©day`,r.toISOString().slice(0,10)));break;case`comment`:e.push(Uc(`©cmt`,r));break;case`lyrics`:e.push(Uc(`©lyr`,r));break;case`raw`:break;case`creationTime`:break;case`discNumber`:case`discsTotal`:case`trackNumber`:case`tracksTotal`:case`beatsPerMinute`:case`images`:break;default:rr(n)}if(t.raw)for(let n in t.raw){let r=t.raw[n];r==null||n.length!==4||e.some(e=>e.type===n)||(typeof r==`string`?e.push(Uc(n,r)):r instanceof Uint8Array&&e.push(W(n,Array.from(r))))}},Uc=(e,t)=>{let n=Kn.encode(t);return W(e,[V(n.length),V(nl(`und`)),Array.from(n)])},Wc={"image/jpeg":13,"image/png":14,"image/bmp":27},Gc=new Set([`HMMT`,`loci`,`chpl`]),Kc=(e,t)=>{let n=[];for(let{key:r,value:i}of kr(e))switch(r){case`title`:n.push({key:t?`title`:`©nam`,value:Yc(i)});break;case`description`:n.push({key:t?`description`:`©des`,value:Yc(i)});break;case`artist`:n.push({key:t?`artist`:`©ART`,value:Yc(i)});break;case`album`:n.push({key:t?`album`:`©alb`,value:Yc(i)});break;case`albumArtist`:n.push({key:t?`album_artist`:`aART`,value:Yc(i)});break;case`comment`:n.push({key:t?`comment`:`©cmt`,value:Yc(i)});break;case`genre`:n.push({key:t?`genre`:`©gen`,value:Yc(i)});break;case`beatsPerMinute`:t||n.push({key:`tmpo`,value:W(`data`,[H(21),H(0),V(i)])});break;case`lyrics`:n.push({key:t?`lyrics`:`©lyr`,value:Yc(i)});break;case`date`:n.push({key:t?`date`:`©day`,value:Yc(i.toISOString().slice(0,10))});break;case`images`:for(let e of i)e.kind===`coverFront`&&n.push({key:`covr`,value:W(`data`,[H(Wc[e.mimeType]??0),H(0),Array.from(e.data)])});break;case`trackNumber`:if(t){let t=e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`;n.push({key:`track`,value:Yc(t)})}else n.push({key:`trkn`,value:W(`data`,[H(0),H(0),V(0),V(i),V(e.tracksTotal??0),V(0)])});break;case`discNumber`:t||n.push({key:`disc`,value:W(`data`,[H(0),H(0),V(0),V(i),V(e.discsTotal??0),V(0)])});break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;case`creationTime`:break;default:rr(r)}if(e.raw)for(let r in e.raw){let i=e.raw[r];i==null||!t&&(r.length!==4||Gc.has(r))||n.some(e=>e.key===r)||(typeof i==`string`?n.push({key:r,value:Yc(i)}):i instanceof Uint8Array?n.push({key:r,value:W(`data`,[H(0),H(0),Array.from(i)])}):i instanceof Ur&&n.push({key:r,value:W(`data`,[H(Wc[i.mimeType]??0),H(0),Array.from(i.data)])}))}return n},qc=e=>{let t=Kc(e,!1);return t.length===0?null:G(`meta`,0,0,void 0,[Hs(!1,`mdir`,``,`appl`),W(`ilst`,void 0,t.map(e=>W(e.key,void 0,[e.value])))])},Jc=e=>{let t=Kc(e,!0);return t.length===0?null:W(`meta`,void 0,[Hs(!1,`mdta`,``),G(`keys`,0,0,[H(t.length)],t.map(e=>W(`mdta`,[...Kn.encode(e.key)]))),W(`ilst`,void 0,t.map((e,t)=>W(String.fromCharCode(...H(t+1)),void 0,[e.value])))])},Yc=e=>W(`data`,[H(1),H(0),...Kn.encode(e)]),Xc=(e,t)=>{switch(e){case`avc`:return t.startsWith(`avc3`)?`avc3`:`avc1`;case`hevc`:return`hvc1`;case`vp8`:return`vp08`;case`vp9`:return`vp09`;case`av1`:return`av01`;case`prores`:return t}},Zc={avc:ec,hevc:tc,vp8:nc,vp9:nc,av1:rc,prores:null},Qc=(e,t,n)=>{switch(e){case`aac`:return`mp4a`;case`mp3`:return`mp4a`;case`opus`:return`Opus`;case`vorbis`:return`mp4a`;case`flac`:return`fLaC`;case`ulaw`:return`ulaw`;case`alaw`:return`alaw`;case`pcm-u8`:return`raw `;case`pcm-s8`:return`sowt`;case`ac3`:return`ac-3`;case`eac3`:return`ec-3`;case`dts`:return t;case`truehd`:return`mlpa`}if(n)switch(e){case`pcm-s16`:return`sowt`;case`pcm-s16be`:return`twos`;case`pcm-s24`:return`in24`;case`pcm-s24be`:return`in24`;case`pcm-s32`:return`in32`;case`pcm-s32be`:return`in32`;case`pcm-f32`:return`fl32`;case`pcm-f32be`:return`fl32`;case`pcm-f64`:return`fl64`;case`pcm-f64be`:return`fl64`}else switch(e){case`pcm-s16`:return`ipcm`;case`pcm-s16be`:return`ipcm`;case`pcm-s24`:return`ipcm`;case`pcm-s24be`:return`ipcm`;case`pcm-s32`:return`ipcm`;case`pcm-s32be`:return`ipcm`;case`pcm-f32`:return`fpcm`;case`pcm-f32be`:return`fpcm`;case`pcm-f64`:return`fpcm`;case`pcm-f64be`:return`fpcm`}},$c=(e,t)=>{switch(e){case`aac`:return ac;case`mp3`:return ac;case`opus`:return lc;case`vorbis`:return ac;case`flac`:return uc;case`ac3`:return fc;case`eac3`:return pc;case`dts`:return mc;case`truehd`:return hc}if(t)switch(e){case`pcm-s24`:return oc;case`pcm-s24be`:return oc;case`pcm-s32`:return oc;case`pcm-s32be`:return oc;case`pcm-f32`:return oc;case`pcm-f32be`:return oc;case`pcm-f64`:return oc;case`pcm-f64be`:return oc}else switch(e){case`pcm-s16`:return dc;case`pcm-s16be`:return dc;case`pcm-s24`:return dc;case`pcm-s24be`:return dc;case`pcm-s32`:return dc;case`pcm-s32be`:return dc;case`pcm-f32`:return dc;case`pcm-f32be`:return dc;case`pcm-f64`:return dc;case`pcm-f64be`:return dc}return null},el={webvtt:`wvtt`},tl={webvtt:_c},nl=e=>{F(e.length===3);let t=0;for(let n=0;n<3;n++)t<<=5,t+=e.charCodeAt(n)-96;return t},rl=class{constructor(e,t){if(this.finalized=!1,this.started=!1,this.pos=0,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1,e._writerAcquired)throw Error(`Can't have multiple Writers for the same Target.`);this.target=e,e._setMonotonicity(t),e._writerAcquired=!0}start(){F(!this.started),this.target._start(),this.started=!0}write(e){F(this.started&&!this.finalized),this.maybeTrackWrites(e),this.target._write(e,this.pos),this.pos+=e.byteLength}seek(e){this.pos=e}getPos(){return this.pos}async flush(){return F(this.started&&!this.finalized),this.target._flush()}async finalize(){F(this.started&&!this.finalized),await this.target._finalize(),this.finalized=!0}maybeTrackWrites(e){if(!this.trackedWrites)return;let t=this.getPos();if(t<this.trackedStart){if(t+e.byteLength<=this.trackedStart)return;e=e.subarray(this.trackedStart-t),t=0}let n=t+e.byteLength-this.trackedStart,r=this.trackedWrites.byteLength;for(;r<n;)r*=2;if(r!==this.trackedWrites.byteLength){let e=new Uint8Array(r);e.set(this.trackedWrites,0),this.trackedWrites=e}this.trackedWrites.set(e,t-this.trackedStart),this.trackedEnd=Math.max(this.trackedEnd,t+e.byteLength)}startTrackingWrites(){this.trackedWrites=new Uint8Array(1024),this.trackedStart=this.getPos(),this.trackedEnd=this.trackedStart}stopTrackingWrites(){if(!this.trackedWrites)throw Error(`Internal error: Can't get tracked writes since nothing was tracked.`);let e={data:this.trackedWrites.subarray(0,this.trackedEnd-this.trackedStart),start:this.trackedStart,end:this.trackedEnd};return this.trackedWrites=null,e}};go();var il=class extends zr{constructor(){super(...arguments),this._writerAcquired=!1,this._monotonicity=null,this.onwrite=null}_setMonotonicity(e){this._monotonicity!==!1&&(this._monotonicity=e)}_dispatchWrite(e,t){this.onwrite?.(e,t),this._emit(`write`,{start:e,end:t})}slice(e){if(!Number.isInteger(e)||e<0)throw TypeError(`offset must be a non-negative integer.`);return new cl(this,e)}},al=2**16,ol=2**32,sl=class extends il{constructor(e={}){if(super(),this.buffer=null,this._maxPos=0,!e||typeof e!=`object`)throw TypeError(`BufferTarget options, when provided, must be an object.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);if(this._options=e,this._supportsResize=`resize`in new ArrayBuffer(0),this._supportsResize)try{this._buffer=new ArrayBuffer(al,{maxByteLength:ol})}catch{this._buffer=new ArrayBuffer(al),this._supportsResize=!1}else this._buffer=new ArrayBuffer(al);this._bytes=new Uint8Array(this._buffer)}_ensureSize(e){F(this._buffer),F(this._bytes);let t=this._buffer.byteLength;for(;t<e;)t*=2;if(t!==this._buffer.byteLength){if(t>ol)throw Error(`ArrayBuffer exceeded maximum size of ${ol} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(t);else{let e=new ArrayBuffer(t),n=new Uint8Array(e);n.set(this._bytes,0),this._buffer=e,this._bytes=n}}}_start(){}_write(e,t){F(this._bytes),this._ensureSize(t+e.byteLength),this._bytes.set(e,t),this._maxPos=Math.max(this._maxPos,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){F(this._buffer),this.buffer=`transferToFixedLength`in this._buffer?this._buffer.transferToFixedLength(this._maxPos):this._buffer.slice(0,this._maxPos),this._buffer=null,this._bytes=null,this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit(`finalized`)}async _close(){}_getSlice(e,t){return F(this._bytes),this._bytes.slice(e,t)}},cl=class extends il{constructor(e,t){super(),this._baseTarget=e,this._offset=t}_start(){}_write(e,t){this._baseTarget._write(e,this._offset+t),this._dispatchWrite(t,t+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit(`finalized`)}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}},ll=class{constructor(e,t){if(this.rootPath=e,this.getTarget=t,typeof e!=`string`)throw TypeError(`rootPath must be a string.`);if(typeof t!=`function`)throw TypeError(`getTarget must be a function.`)}},ul=57600,dl=.5,fl=e=>{let t={},n=e.track;return n.metadata.name!==void 0&&(t.name=n.metadata.name),t},K=(e,t,n=!0)=>{let r=e*t;return n?Math.round(r):r},pl=e=>{if(e.samples.length===0)return 0;let t=1/0,n=-1/0;for(let r=0;r<e.samples.length;r++){let i=e.samples[r];i.timestamp<t&&(t=i.timestamp),i.timestamp+i.duration>n&&(n=i.timestamp+i.duration)}return t===1/0?0:n-t},ml=class extends ms{constructor(e,t){super(e),this.writer=null,this.boxWriter=null,this.initWriter=null,this.initBoxWriter=null,this.auxTarget=new sl,this.auxWriter=new rl(this.auxTarget,!1),this.auxBoxWriter=new hs(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=nr(),this.finalizedChunks=[],this.wroteFragmentedHeader=!1,this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.minWrittenTimestamp=1/0,this.maxWrittenEndTimestamp=-1/0,this.segmentHeaderSize=null,this.format=t,this.formatOptions={...t._options},this.isQuickTime=t instanceof Tl,this.isCmaf=t instanceof wl,this.minimumFragmentDuration=this.formatOptions.minimumFragmentDuration??(t instanceof wl?1/0:1),this.auxWriter.start()}async start(){let e=await this.mutex.acquire(),t=this.output._metadataTags.creationTime===void 0?new Date:this.output._metadataTags.creationTime;if(this.creationTime=t?Math.floor(t.getTime()/1e3)+Qa:0,t&&this.creationTime<=0)throw Error(`creationTime must be after 1904-01-01T00:00:00Z for MP4/QuickTime files.`);if(this.isCmaf?(this.fastStart=`fragmented`,this.isFragmented=!0):(this.writer=await this.output._getRootWriter(e=>this.formatOptions.fastStart===void 0?e instanceof sl:this.formatOptions.fastStart===`fragmented`),this.boxWriter=new hs(this.writer),this.fastStart=this.formatOptions.fastStart??(this.writer.target instanceof sl&&`in-memory`),this.isFragmented=this.fastStart===`fragmented`),this.isCmaf){if(!this.output._hasInitTarget())throw Error(`CMAF outputs require the initTarget field in OutputOptions to be set; the init segment will be written to it.`);let e=new rl(await this.output._getInitTarget(),!0);e.start(),this.initWriter=e,this.initBoxWriter=new hs(e)}let n=this.output.tracks.some(e=>e.isVideoTrack()&&e.source._codec===`avc`);{let e=this.initBoxWriter??this.boxWriter;if(F(e),this.formatOptions.onFtyp&&e.writer.startTrackingWrites(),e.writeBox(Os({isQuickTime:this.isQuickTime,holdsAvc:n,fragmented:this.isFragmented,cmaf:this.isCmaf})),this.formatOptions.onFtyp){let{data:t,start:n}=e.writer.stopTrackingWrites();this.formatOptions.onFtyp(t,n)}this.ftypSize=e.writer.getPos(),this.isCmaf&&await this.initWriter.flush()}if(this.fastStart!==`in-memory`){if(this.fastStart===`reserve`)for(let e of this.output.tracks){if(e.metadata.maximumPacketCount===void 0)throw Error(`All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.`);if(e.metadata.maximumPacketCount>2**32-1)throw Error(`Track #${e.id} has a maximumPacketCount of ${e.metadata.maximumPacketCount}, which exceeds the maximum of ${2**32-1} packets per track that a non-fragmented file can hold.`)}else this.isFragmented||(F(this.writer),F(this.boxWriter),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=js(!0),this.boxWriter.writeBox(this.mdat))}await this.writer?.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return $a({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;us(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig};F(i.codedWidth!==void 0),F(i.codedHeight!==void 0);let a=!1;if(e.source._codec===`avc`&&!i.description){if(!t)throw Error(`No AVC description provided; you must therefore provide a priming packet.`);let e=hi(t.data);if(!e)throw Error(`Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.`);i.description=gi(e),a=!0}else if(e.source._codec===`hevc`&&!i.description){if(!t)throw Error(`No HEVC description provided; you must therefore provide a priming packet.`);let e=wi(t.data);if(!e)throw Error(`Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.`);i.description=Mi(e),a=!0}let o=hr(1/(e.metadata.frameRate??57600),1e6).den,s=i.displayAspectWidth,c=i.displayAspectHeight,l=s===void 0||c===void 0?{num:1,den:1}:Fr({num:s*i.codedHeight,den:c*i.codedWidth}),u=i.codec===`ap4h`||i.codec===`ap4x`,d={muxer:this,track:e,type:`video`,info:{width:i.codedWidth,height:i.codedHeight,pixelAspectRatio:l,decoderConfig:i,requiresAnnexBTransformation:a,hasAlphaChannel:u},timescale:o,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(d),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),d}getAudioTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;fs(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig},a=!1;if(e.source._codec===`aac`&&!i.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=ho(_o.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Jr[e.samplingFrequencyIndex],r=Yr[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);i.description=ei({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),a=!0}if(!t){if(e.source._codec===`ac3`||e.source._codec===`eac3`)throw Error(`AC-3/E-AC-3 require a priming packet.`);if(e.source._codec===`dts`)throw Error(`DTS requires a priming packet.`);if(e.source._codec===`truehd`)throw Error(`TrueHD requires a priming packet.`)}let o={muxer:this,track:e,type:`audio`,info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:i,requiresPcmTransformation:!this.isFragmented&&Io.includes(e.source._codec),expectedNextPcmPacketTimestamp:null,requiresAdtsStripping:a,primingPacket:t,preroll:{packetCount:0,accumulatedAudioSamples:0,audioSampleDurationHistory:[]}},timescale:i.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(o),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),o}getSubtitleTrackData(e,t){let n=this.trackDatas.find(t=>t.track===e);if(n)return n;ps(t),F(t),F(t.config);let r={muxer:this,track:e,type:`subtitle`,info:{config:t.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0,lastCueEndTimestamp:null,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(r),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),r}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n),i=t.data;if(r.info.requiresAnnexBTransformation){let e=[...li(i)].map(e=>i.subarray(e.offset,e.offset+e.length));if(e.length===0)throw Error(`Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.`);i=mi(e,4)}this.validateTimestamp(r.track,t.timestamp,t.type===`key`);let a=this.createSampleForTrack(r,i,t.timestamp,t.duration,t.type,0);await this.registerSample(r,a)}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=ho(_o.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}this.validateTimestamp(r.track,t.timestamp,t.type===`key`);let a=t.timestamp,o=t.duration;if(r.info.requiresPcmTransformation){let e=ns(r.info.decoderConfig.codec).sampleSize*r.info.numberOfChannels;if(o=i.byteLength/e/r.info.sampleRate,r.info.expectedNextPcmPacketTimestamp!==null){let e=a-r.info.expectedNextPcmPacketTimestamp;if(e<.01)a=r.info.expectedNextPcmPacketTimestamp;else{let t=await this.padWithSilence(r,r.info.expectedNextPcmPacketTimestamp,e);a=r.info.expectedNextPcmPacketTimestamp+t}}r.info.expectedNextPcmPacketTimestamp=a+o}let{preroll:s}=r.info,c=0;if(e.source._codec===`aac`||e.source._codec===`vorbis`)c=-Math.min(1,s.packetCount);else if(e.source._codec===`mp3`)c=-Math.min(2,s.packetCount);else if(e.source._codec===`opus`){let e=Math.round(es*$o);c=-s.audioSampleDurationHistory.length;let t=Vi(i);for(s.accumulatedAudioSamples+=t.durationInSamples,s.audioSampleDurationHistory.push(t.durationInSamples);s.accumulatedAudioSamples-s.audioSampleDurationHistory[0]>=e;)s.accumulatedAudioSamples-=s.audioSampleDurationHistory.shift(),F(s.audioSampleDurationHistory.length>0)}s.packetCount++;let l=this.createSampleForTrack(r,i,a,o,t.type,c);await this.registerSample(r,l)}finally{r()}}async padWithSilence(e,t,n){let r=K(n,e.timescale);if(n=r/e.timescale,r>0){let{sampleSize:i,silentValue:a}=ns(e.info.decoderConfig.codec),o=r*e.info.numberOfChannels,s=new Uint8Array(i*o).fill(a),c=this.createSampleForTrack(e,new Uint8Array(s.buffer),t,n,`key`,0);await this.registerSample(e,c)}return n}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0),e.source._codec===`webvtt`&&(r.cueQueue.push(t),await this.processWebVTTCues(r,t.timestamp))}finally{r()}}async processWebVTTCues(e,t){for(;e.cueQueue.length>0;){e.lastCueEndTimestamp??=Math.min(0,e.cueQueue[0].timestamp);let n=new Set([]);for(let r of e.cueQueue)F(r.timestamp<=t),F(e.lastCueEndTimestamp<=r.timestamp+r.duration),n.add(Math.max(r.timestamp,e.lastCueEndTimestamp)),n.add(r.timestamp+r.duration);let r=[...n].sort((e,t)=>e-t),i=r[0],a=r[1]??i;if(t<a)break;if(e.lastCueEndTimestamp<i){this.auxWriter.seek(0);let t=Rc();this.auxBoxWriter.writeBox(t);let n=this.auxTarget._getSlice(0,this.auxWriter.getPos()),r=this.createSampleForTrack(e,n,e.lastCueEndTimestamp,i-e.lastCueEndTimestamp,`key`,0);await this.registerSample(e,r),e.lastCueEndTimestamp=i}this.auxWriter.seek(0);for(let t=0;t<e.cueQueue.length;t++){let n=e.cueQueue[t];if(n.timestamp>=a)break;sa.lastIndex=0;let r=sa.test(n.text),o=n.timestamp+n.duration,s=e.cueToSourceId.get(n);if(s===void 0&&a<o&&(s=e.nextSourceId++,e.cueToSourceId.set(n,s)),n.notes){let e=Bc(n.notes);this.auxBoxWriter.writeBox(e)}let c=zc(n.text,r?i:null,n.identifier??null,n.settings??null,s??null);this.auxBoxWriter.writeBox(c),o===a&&e.cueQueue.splice(t--,1)}let o=this.auxTarget._getSlice(0,this.auxWriter.getPos()),s=this.createSampleForTrack(e,o,i,a-i,`key`,0);await this.registerSample(e,s),e.lastCueEndTimestamp=a}}createSampleForTrack(e,t,n,r,i,a){return{timestamp:n,decodeTimestamp:n,duration:r,data:t,size:t.byteLength,type:i,timescaleUnitsToNextSample:K(r,e.timescale),prerollSamples:a}}processTimestamps(e,t){if(e.timestampProcessingQueue.length===0)return;if(e.type===`audio`&&e.info.requiresPcmTransformation){F(!this.isFragmented),e.startTimestampOffset??=e.timestampProcessingQueue[0].timestamp;let t=0;for(let n=0;n<e.timestampProcessingQueue.length;n++){let r=e.timestampProcessingQueue[n],i=K(r.duration,e.timescale);t+=i}if(e.timeToSampleTable.length===0)e.timeToSampleTable.push({sampleCount:t,sampleDelta:1});else{let n=Rn(e.timeToSampleTable);n.sampleCount+=t}e.timestampProcessingQueue.length=0;return}let n=e.timestampProcessingQueue.map(e=>e.timestamp).sort((e,t)=>e-t);this.isFragmented?e.startTimestampOffset??=Math.min(n[0],0):e.startTimestampOffset??=n[0];for(let t=0;t<e.timestampProcessingQueue.length;t++){let r=e.timestampProcessingQueue[t];r.decodeTimestamp=n[t];let i=K(r.timestamp-r.decodeTimestamp,e.timescale),a=K(r.duration,e.timescale);if(e.lastTimescaleUnits!==null){F(e.lastSample);let t=K(r.decodeTimestamp,e.timescale,!1),n=Math.round(t-e.lastTimescaleUnits);if(F(n>=0),e.lastTimescaleUnits+=n,e.lastSample.timescaleUnitsToNextSample=n,!this.isFragmented){let t=Rn(e.timeToSampleTable);if(F(t),t.sampleCount===1){t.sampleDelta=n;let r=e.timeToSampleTable[e.timeToSampleTable.length-2];r&&r.sampleDelta===n&&(r.sampleCount++,e.timeToSampleTable.pop(),t=r)}else t.sampleDelta!==n&&(t.sampleCount--,e.timeToSampleTable.push(t={sampleCount:1,sampleDelta:n}));t.sampleDelta===a?t.sampleCount++:e.timeToSampleTable.push({sampleCount:1,sampleDelta:a});let r=Rn(e.compositionTimeOffsetTable);F(r),r.sampleCompositionTimeOffset===i?r.sampleCount++:e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:i})}}else e.lastTimescaleUnits=K(r.decodeTimestamp,e.timescale,!1),this.isFragmented||(e.timeToSampleTable.push({sampleCount:1,sampleDelta:a}),e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:i}));e.lastSample=r}if(e.timestampProcessingQueue.length=0,F(e.lastSample),F(e.lastTimescaleUnits!==null),t!==void 0&&e.lastSample.timescaleUnitsToNextSample===0){F(t.type===`key`);let n=K(t.timestamp,e.timescale,!1),r=Math.round(n-e.lastTimescaleUnits);e.lastSample.timescaleUnitsToNextSample=r}}async registerSample(e,t){t.type===`key`&&this.processTimestamps(e,t),e.timestampProcessingQueue.push(t),e.sampleQueue.push(t),await this.interleaveSamples()}async addSampleToTrack(e,t){if(!this.isFragmented&&(e.samples.push(t),this.fastStart===`reserve`)){let t=e.track.metadata.maximumPacketCount;if(F(t!==void 0),e.samples.length>t)throw Error(`Track #${e.track.id} has already reached the maximum packet count (${t}). Either add less packets or increase the maximum packet count.`)}let n=!1;if(!e.currentChunk)n=!0;else{e.currentChunk.startTimestamp=Math.min(e.currentChunk.startTimestamp,t.timestamp);let r=t.timestamp-e.currentChunk.startTimestamp;if(this.isFragmented){let i=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.sampleQueue[0];return r?r.type===`key`:n.closed});r>=this.minimumFragmentDuration&&i&&t.timestamp>this.maxWrittenTimestamp&&(n=!0,await this.finalizeFragment())}else n=r>=dl}if(n){if(!this.isFragmented){let e=this.trackDatas.filter(e=>e.currentChunk&&t.timestamp-e.currentChunk.startTimestamp>=dl).sort((e,t)=>e.currentChunk.startTimestamp-t.currentChunk.startTimestamp);for(let t of e)await this.finalizeCurrentChunk(t)}e.currentChunk={startTimestamp:t.timestamp,samples:[],offset:null,moofOffset:null,trafIndex:null}}F(e.currentChunk),e.currentChunk.samples.push(t),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,t.timestamp),this.maxWrittenEndTimestamp=Math.max(this.maxWrittenEndTimestamp,t.timestamp+t.duration),this.minWrittenTimestamp=Math.min(this.minWrittenTimestamp,t.timestamp))}async finalizeCurrentChunk(e){F(!this.isFragmented),F(this.writer);let t=e.currentChunk;F(t),e.currentChunk=null,e.finalizedChunks.push(t),this.finalizedChunks.push(t);let n=t.samples.length;if(e.type===`audio`&&e.info.requiresPcmTransformation&&(n=t.samples.reduce((t,n)=>t+K(n.duration,e.timescale),0)),(e.compactlyCodedChunkTable.length===0||Rn(e.compactlyCodedChunkTable).samplesPerChunk!==n)&&e.compactlyCodedChunkTable.push({firstChunk:e.finalizedChunks.length,samplesPerChunk:n}),this.fastStart===`in-memory`)t.offset=0;else{t.offset=this.writer.getPos();for(let e of t.samples)F(e.data),this.writer.write(e.data),e.data=null;await this.writer.flush()}}async interleaveSamples(e=!1){if(e||this.allTracksAreKnown()){this.fastStart===`reserve`&&!this.mdat&&await this.createFastStartReserveMdat();outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.sampleQueue.length===0&&!r.closed)break outer;r.sampleQueue.length>0&&r.sampleQueue[0].timestamp<n&&(t=r,n=r.sampleQueue[0].timestamp)}if(!t)break;let r=t.sampleQueue.shift();await this.addSampleToTrack(t,r)}}}async finalizeFragment(e=!this.isCmaf){if(F(this.isFragmented),!this.wroteFragmentedHeader){this.wroteFragmentedHeader=!0;let e=this.initBoxWriter??this.boxWriter;F(e),this.formatOptions.onMoov&&e.writer.startTrackingWrites(),this.ensureOneEnabledTrack();let t=Ns(this);if(e.writeBox(t),this.formatOptions.onMoov){let{data:t,start:n}=e.writer.stopTrackingWrites();this.formatOptions.onMoov(t,n)}if(this.isCmaf){F(this.initWriter),await this.initWriter.flush(),await this.initWriter.finalize(),this.writer=await this.output._getRootWriter(!0),this.boxWriter=new hs(this.writer);let e=this.boxWriter.measureBox(ks()),t=this.boxWriter.measureBox(As(this,0));this.segmentHeaderSize=e+t,this.writer.seek(this.segmentHeaderSize)}}F(this.writer),F(this.boxWriter);let t=this.trackDatas.filter(e=>e.currentChunk);if(t.length===0){e&&await this.writer.flush();return}let n=this.nextFragmentNumber++,r=Oc(n,t),i=this.writer.getPos(),a=i+this.boxWriter.measureBox(r),o=a+8,s=1/0;for(let e=0;e<t.length;e++){let n=t[e];F(n.currentChunk),F(n.startTimestampOffset!==null),n.currentChunk.offset=o,n.currentChunk.moofOffset=i,n.currentChunk.trafIndex=e,n.currentChunk.startTimestamp-=n.startTimestampOffset;for(let e of n.currentChunk.samples)o+=e.size,e.timestamp-=n.startTimestampOffset,e.decodeTimestamp-=n.startTimestampOffset;s=Math.min(s,n.currentChunk.startTimestamp)}let c=o-a,l=c>=2**32;if(l)for(let e of t)e.currentChunk.offset+=8;this.formatOptions.onMoof&&this.writer.startTrackingWrites();let u=Oc(n,t);if(this.boxWriter.writeBox(u),this.formatOptions.onMoof){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoof(e,t,s)}F(this.writer.getPos()===a),this.formatOptions.onMdat&&this.writer.startTrackingWrites();let d=js(l);d.size=c,this.boxWriter.writeBox(d),this.writer.seek(a+(l?16:8));for(let e of t)for(let t of e.currentChunk.samples)this.writer.write(t.data),t.data=null;if(this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}for(let e of t)e.finalizedChunks.push(e.currentChunk),this.finalizedChunks.push(e.currentChunk),e.currentChunk=null;e&&await this.writer.flush()}async createFastStartReserveMdat(){F(this.writer),F(this.boxWriter),this.ensureOneEnabledTrack();let e=Ns(this),t=this.boxWriter.measureBox(e)+this.computeSampleTableSizeUpperBound()+4096;F(this.ftypSize!==null),this.writer.seek(this.ftypSize+t),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=js(!0),this.boxWriter.writeBox(this.mdat)}computeSampleTableSizeUpperBound(){F(this.fastStart===`reserve`);let e=0;for(let t of this.trackDatas){let n=t.track.metadata.maximumPacketCount;F(n!==void 0),e+=8*Math.ceil(2/3*n),e+=4*n,e+=8*Math.ceil(2/3*n),e+=12*Math.ceil(2/3*n),e+=4*n,e+=8*n,t.type===`audio`&&(e+=2*n,e+=8*n)}return e}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0,n.type===`subtitle`&&e.source._codec===`webvtt`&&await this.processWebVTTCues(n,1/0),this.processTimestamps(n)),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveSamples(),t()}ensureOneEnabledTrack(){for(let e of[`video`,`audio`,`subtitle`]){let t=this.trackDatas.filter(t=>t.type===e);if(t.length!==0&&!t.some(e=>e.track.metadata.disposition?.default!==!1)){let e=t[0];e.track.metadata.disposition={...e.track.metadata.disposition,default:!0}}}}async forceFragmentFinalization(){F(this.isFragmented);let e=await this.mutex.acquire();try{for(let e of this.trackDatas)e.type===`subtitle`&&e.track.source._codec===`webvtt`&&await this.processWebVTTCues(e,1/0),this.processTimestamps(e);await this.interleaveSamples(!0),await this.finalizeFragment()}finally{e()}}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve(),this.ensureOneEnabledTrack();for(let e of this.trackDatas)e.closed=!0,e.type===`subtitle`&&e.track.source._codec===`webvtt`&&await this.processWebVTTCues(e,1/0),this.processTimestamps(e);if(await this.interleaveSamples(!0),this.isFragmented)await this.finalizeFragment(!1);else{let e=this.trackDatas.filter(e=>e.currentChunk).sort((e,t)=>e.currentChunk.startTimestamp-t.currentChunk.startTimestamp);for(let t of e)await this.finalizeCurrentChunk(t);for(let e of this.trackDatas){let t=pl(e);if(t>0){let n=0;for(let t of e.samples)n+=t.size;e.avgBitrate=Math.round(8*n/t)}else e.avgBitrate=0;let n=0,r=0,i=0;for(let t=0;t<e.samples.length;t++){let a=e.samples[t];for(r+=a.size;a.decodeTimestamp-e.samples[n].decodeTimestamp>=1;)r-=e.samples[n].size,n++;i=Math.max(i,r)}if(e.maxBitrate=8*i,e.startTimestampOffset!==null)for(let t=0;t<e.samples.length;t++){let n=e.samples[t];n.timestamp-=e.startTimestampOffset,n.decodeTimestamp-=e.startTimestampOffset}}}if(F(this.writer),F(this.boxWriter),this.fastStart===`in-memory`){this.mdat=js(!1);let e;for(let t=0;t<2;t++){let t=Ns(this),n=this.boxWriter.measureBox(t);e=this.boxWriter.measureBox(this.mdat);let r=this.writer.getPos()+n+e;for(let t of this.finalizedChunks){t.offset=r;for(let{data:n}of t.samples)F(n),r+=n.byteLength,e+=n.byteLength}if(r<2**32)break;e>=2**32&&(this.mdat.largeSize=!0)}this.formatOptions.onMoov&&this.writer.startTrackingWrites();let t=Ns(this);if(this.boxWriter.writeBox(t),this.formatOptions.onMoov){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(e,t)}this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=e,this.boxWriter.writeBox(this.mdat);for(let e of this.finalizedChunks)for(let t of e.samples)F(t.data),this.writer.write(t.data),t.data=null;if(this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}}else if(this.isFragmented){if(this.isCmaf){let e=this.segmentHeaderSize===null?0:this.writer.getPos()-this.segmentHeaderSize;this.writer.seek(0),this.boxWriter.writeBox(ks()),this.boxWriter.writeBox(As(this,e))}else{let e=this.writer.getPos(),t=Fc(this.trackDatas);this.boxWriter.writeBox(t);let n=this.writer.getPos()-e;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(n)}}else{F(this.mdat);let e=this.boxWriter.offsets.get(this.mdat);F(e!==void 0);let t=this.writer.getPos()-e;if(this.mdat.size=t,this.mdat.largeSize=t>=2**32,this.boxWriter.patchBox(this.mdat),this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}let n=Ns(this);if(this.fastStart===`reserve`){F(this.ftypSize!==null);let e=this.boxWriter.offsets.get(this.mdat)-this.ftypSize,t=this.boxWriter.measureBox(n);if(t+8>e)throw Error(`The moov box (${t} bytes) plus a free box (8 bytes) exceed the space reserved for them (${e} bytes) with fastStart: 'reserve'. This is a bug; please report it.`);this.writer.seek(this.ftypSize),this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(n),this.boxWriter.writeBox(Ms(e-t))}else this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(n);if(this.formatOptions.onMoov){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(e,t)}}e()}},hl=-(2**15),gl=2**15-1,_l=6,vl=5,yl={video:1,audio:2,subtitle:17},bl=class extends ms{constructor(e,t){super(e),this.trackDatas=[],this.allTracksKnown=nr(),this.segment=null,this.segmentInfo=null,this.seekHead=null,this.tracksElement=null,this.tagsElement=null,this.attachmentsElement=null,this.segmentDuration=null,this.cues=null,this.currentClusterBlocks=[],this.currentClusterStartMsTimestamp=null,this.currentClusterMaxMsTimestamp=null,this.startTimestamp=1/0,this.endTimestamp=-1/0,this.warnedAboutTooNegativeTimestamp=!1,this.format=t}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!!this.format._options.appendOnly),this.ebmlWriter=new uo(this.writer),this.writeEBMLHeader(),this.createSegmentInfo(),this.createCues(),await this.writer.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}writeEBMLHeader(){this.format._options.onEbmlHeader&&this.writer.startTrackingWrites();let e={id:R.EBML,data:[{id:R.EBMLVersion,data:1},{id:R.EBMLReadVersion,data:1},{id:R.EBMLMaxIDLength,data:4},{id:R.EBMLMaxSizeLength,data:8},{id:R.DocType,data:this.format instanceof Dl?`webm`:`matroska`},{id:R.DocTypeVersion,data:4},{id:R.DocTypeReadVersion,data:2}]};if(this.ebmlWriter.writeEBML(e),this.format._options.onEbmlHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onEbmlHeader(e,t)}}maybeCreateSeekHead(e){if(this.format._options.appendOnly)return;let t=new Uint8Array([28,83,187,107]),n=new Uint8Array([21,73,169,102]),r=new Uint8Array([22,84,174,107]),i=new Uint8Array([25,65,164,105]),a=new Uint8Array([18,84,195,103]),o={id:R.SeekHead,data:[{id:R.Seek,data:[{id:R.SeekID,data:n},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.segmentInfo)-this.segmentDataOffset:0}]},{id:R.Seek,data:[{id:R.SeekID,data:r},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tracksElement)-this.segmentDataOffset:0}]},this.attachmentsElement?{id:R.Seek,data:[{id:R.SeekID,data:i},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.attachmentsElement)-this.segmentDataOffset:0}]}:null,this.tagsElement?{id:R.Seek,data:[{id:R.SeekID,data:a},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tagsElement)-this.segmentDataOffset:0}]}:null,{id:R.Seek,data:[{id:R.SeekID,data:t},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.cues)-this.segmentDataOffset:0}]}]};this.seekHead=o}createSegmentInfo(){let e={id:R.Duration,data:new to(0)};this.segmentDuration=e;let t=this.output._metadataTags.creationTime===void 0?new Date:this.output._metadataTags.creationTime,n=null;if(t){let e=1000000n*BigInt(t.getTime()-fo);if(BigInt.asIntN(64,e)!==e)throw Error(`creationTime is out of the range representable by Matroska files.`);n={id:R.DateUTC,size:8,data:BigInt.asUintN(64,e)}}let r={id:R.Info,data:[{id:R.TimestampScale,data:1e6},this.format._options.appendOnly?null:e,n,{id:R.MuxingApp,data:oi},{id:R.WritingApp,data:oi}]};this.segmentInfo=r}createTracks(){let e={id:R.Tracks,data:[]};this.tracksElement=e;for(let t of this.trackDatas){let n=po[t.track.source._codec];F(n),t.type===`audio`&&t.track.source._codec===`dts`&&(t.info.decoderConfig.codec===`dtse`?n=`A_DTS/EXPRESS`:t.info.decoderConfig.codec===`dtsl`&&(n=`A_DTS/LOSSLESS`));let r=0;if(t.type===`audio`){let e=Qo(t.track.source._codec,t.info.decoderConfig);r=Math.round(1e9*e)}e.data.push({id:R.TrackEntry,data:[{id:R.TrackNumber,data:t.track.id},{id:R.TrackUID,data:t.track.id},{id:R.TrackType,data:yl[t.type]},t.track.metadata.disposition?.default===!1?{id:R.FlagDefault,data:0}:null,t.track.metadata.disposition?.forced?{id:R.FlagForced,data:1}:null,t.track.metadata.disposition?.hearingImpaired?{id:R.FlagHearingImpaired,data:1}:null,t.track.metadata.disposition?.visuallyImpaired?{id:R.FlagVisualImpaired,data:1}:null,t.track.metadata.disposition?.original?{id:R.FlagOriginal,data:1}:null,t.track.metadata.disposition?.commentary?{id:R.FlagCommentary,data:1}:null,{id:R.FlagLacing,data:0},{id:R.Language,data:t.track.metadata.languageCode??`und`},{id:R.CodecID,data:n},t.codecPrivate?{id:R.CodecPrivate,data:Un(t.codecPrivate)}:null,t.type===`audio`&&t.info.codecDelay?{id:R.CodecDelay,data:Math.round(1e9*t.info.codecDelay)}:null,r>0?{id:R.SeekPreRoll,data:r}:null,t.track.metadata.name===void 0?null:{id:R.Name,data:new ro(t.track.metadata.name)},t.type===`video`?this.videoSpecificTrackInfo(t):null,t.type===`audio`?this.audioSpecificTrackInfo(t):null,t.type===`subtitle`?this.subtitleSpecificTrackInfo(t):null]})}}videoSpecificTrackInfo(e){let{frameRate:t,transformationMatrix:n}=e.track.metadata,r=[t?{id:R.DefaultDuration,data:1e9/t}:null],i,a,o;if(n){i=jn(n);let e=In(Nn(-i),n);a=Math.sign(e[0]),o=Math.sign(e[4]),o===-1&&(o=1,a=-a,i=On(i+180))}else i=e.track.metadata.rotation??0,a=e.track.metadata.flip?-1:1,o=1;let s=i?On(a===-1?i:-i):0,c=Math.round(Math.acos(a)*Dn),l=Math.round(Math.acos(o)*Dn),u=!!e.info.aspectRatio&&e.info.aspectRatio.num*e.info.height!==e.info.aspectRatio.den*e.info.width,d=e.info.decoderConfig.colorSpace,f={id:R.Video,data:[{id:R.PixelWidth,data:e.info.width},{id:R.PixelHeight,data:e.info.height},u?{id:R.DisplayWidth,data:e.info.aspectRatio.num}:null,u?{id:R.DisplayHeight,data:e.info.aspectRatio.den}:null,u?{id:R.DisplayUnit,data:3}:null,e.info.alphaMode?{id:R.AlphaMode,data:1}:null,Xn(d)?null:{id:R.Colour,data:[{id:R.MatrixCoefficients,data:d?.matrix==null?2:Yn[d.matrix]},{id:R.TransferCharacteristics,data:d?.transfer==null?2:Jn[d.transfer]},{id:R.Primaries,data:d?.primaries==null?2:qn[d.primaries]},{id:R.Range,data:d?.fullRange==null?0:d.fullRange?2:1}]},s||c||l?{id:R.Projection,data:[{id:R.ProjectionType,data:0},c?{id:R.ProjectionPoseYaw,data:new eo(c)}:null,l?{id:R.ProjectionPosePitch,data:new eo(l)}:null,s?{id:R.ProjectionPoseRoll,data:new eo((s+180)%360-180)}:null]}:null]};return r.push(f),r}audioSpecificTrackInfo(e){let t=Io.includes(e.track.source._codec)?ns(e.track.source._codec):null;return[{id:R.Audio,data:[{id:R.SamplingFrequency,data:new eo(e.info.sampleRate)},{id:R.Channels,data:e.info.numberOfChannels},t?{id:R.BitDepth,data:8*t.sampleSize}:null]}]}subtitleSpecificTrackInfo(e){return[]}maybeCreateTags(){let e=[],t=(t,n)=>{e.push({id:R.SimpleTag,data:[{id:R.TagName,data:new ro(t)},typeof n==`string`?{id:R.TagString,data:new ro(n)}:{id:R.TagBinary,data:n}]})},n=this.output._metadataTags,r=new Set;for(let{key:e,value:i}of kr(n))switch(e){case`title`:t(`TITLE`,i),r.add(`TITLE`);break;case`description`:t(`DESCRIPTION`,i),r.add(`DESCRIPTION`);break;case`artist`:t(`ARTIST`,i),r.add(`ARTIST`);break;case`album`:t(`ALBUM`,i),r.add(`ALBUM`);break;case`albumArtist`:t(`ALBUM_ARTIST`,i),r.add(`ALBUM_ARTIST`);break;case`genre`:t(`GENRE`,i),r.add(`GENRE`);break;case`beatsPerMinute`:t(`BPM`,i.toString()),r.add(`BPM`);break;case`comment`:t(`COMMENT`,i),r.add(`COMMENT`);break;case`lyrics`:t(`LYRICS`,i),r.add(`LYRICS`);break;case`date`:t(`DATE`,i.toISOString().slice(0,10)),r.add(`DATE`);break;case`trackNumber`:t(`PART_NUMBER`,n.tracksTotal===void 0?i.toString():`${i}/${n.tracksTotal}`),r.add(`PART_NUMBER`);break;case`discNumber`:t(`DISC`,n.discsTotal===void 0?i.toString():`${i}/${n.discsTotal}`),r.add(`DISC`);break;case`tracksTotal`:case`discsTotal`:break;case`images`:case`raw`:case`creationTime`:break;default:rr(e)}if(n.raw)for(let e in n.raw){let i=n.raw[e];i==null||r.has(e)||(typeof i==`string`||i instanceof Uint8Array)&&t(e,i)}e.length!==0&&(this.tagsElement={id:R.Tags,data:[{id:R.Tag,data:[{id:R.Targets,data:[{id:R.TargetTypeValue,data:50},{id:R.TargetType,data:`MOVIE`}]},...e]}]})}maybeCreateAttachments(){let e=this.output._metadataTags,t=[],n=new Set,r=e.images??[];for(let e of r){let r=e.name;r===void 0&&(r=(e.kind===`coverFront`?`cover`:e.kind===`coverBack`?`back`:`image`)+(Ar(e.mimeType)??``));let i;for(;;){i=0n;for(let e=0;e<8;e++)i<<=8n,i|=BigInt(Math.floor(Math.random()*256));if(i!==0n&&!n.has(i))break}n.add(i),t.push({id:R.AttachedFile,data:[e.description===void 0?null:{id:R.FileDescription,data:new ro(e.description)},{id:R.FileName,data:new ro(r)},{id:R.FileMediaType,data:e.mimeType},{id:R.FileData,data:e.data},{id:R.FileUID,data:i}]})}for(let[n,i]of Object.entries(e.raw??{}))i instanceof Wr&&/^\d+$/.test(n)&&(r.find(e=>e.mimeType===i.mimeType&&jr(e.data,i.data))||t.push({id:R.AttachedFile,data:[i.description===void 0?null:{id:R.FileDescription,data:new ro(i.description)},{id:R.FileName,data:new ro(i.name??``)},{id:R.FileMediaType,data:i.mimeType??``},{id:R.FileData,data:i.data},{id:R.FileUID,data:BigInt(n)}]}));t.length!==0&&(this.attachmentsElement={id:R.Attachments,data:t})}createSegment(){this.createTracks(),this.maybeCreateTags(),this.maybeCreateAttachments(),this.maybeCreateSeekHead(!1);let e={id:R.Segment,size:this.format._options.appendOnly?-1:_l,data:[this.seekHead,this.segmentInfo,this.tracksElement,this.attachmentsElement,this.tagsElement]};if(this.segment=e,this.format._options.onSegmentHeader&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(e),this.format._options.onSegmentHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onSegmentHeader(e,t)}}createCues(){this.cues={id:R.Cues,data:[]}}get segmentDataOffset(){return F(this.segment),this.ebmlWriter.dataOffsets.get(this.segment)}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return mo({isWebM:this.format instanceof Dl,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;us(n,e.source._codec),F(n),F(n.decoderConfig),F(n.decoderConfig.codedWidth!==void 0),F(n.decoderConfig.codedHeight!==void 0);let i=n.decoderConfig.displayAspectWidth,a=n.decoderConfig.displayAspectHeight,o=i===void 0||a===void 0?null:Fr({num:i,den:a}),s={track:e,type:`video`,info:{width:n.decoderConfig.codedWidth,height:n.decoderConfig.codedHeight,aspectRatio:o,decoderConfig:n.decoderConfig,alphaMode:e.metadata.canBeTransparent||(t?!!t.sideData.alpha:null)},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:n.decoderConfig.description??null,closed:!1};return e.source._codec===`vp9`?s.codecPrivate=new Uint8Array(Yo(s.info.decoderConfig.codec)):e.source._codec===`av1`?s.codecPrivate=new Uint8Array(Xo(s.info.decoderConfig.codec)):e.source._codec===`prores`&&(s.codecPrivate=Kn.encode(n.decoderConfig.codec)),this.trackDatas.push(s),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}getAudioTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;fs(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig},a=!1;if(e.source._codec===`aac`&&!i.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=ho(_o.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Jr[e.samplingFrequencyIndex],r=Yr[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);i.description=ei({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),a=!0}let o={track:e,type:`audio`,info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:i,requiresAdtsStripping:a,codecDelay:null},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:i.description??null,closed:!1};return this.trackDatas.push(o),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),o}getSubtitleTrackData(e,t){let n=this.trackDatas.find(t=>t.track===e);if(n)return n;ps(t),F(t),F(t.config);let r={track:e,type:`subtitle`,info:{config:t.config},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:Kn.encode(t.config.description),closed:!1};return this.trackDatas.push(r),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),r}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n);r.info.alphaMode??=!!t.sideData.alpha;let i=t.data;if(e.source._codec===`prores`){if(i.byteLength<8)throw Error(`ProRes packet too small, expected at least 8 bytes.`);i=i.subarray(8)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=t.timestamp,s=t.duration;e.metadata.frameRate!==void 0&&(o=lr(o,e.metadata.frameRate),s=lr(s,e.metadata.frameRate));let c=r.info.alphaMode?t.sideData.alpha??null:null,l=this.createInternalChunk(i,o,s,t.type,c);e.source._codec===`vp9`&&this.fixVP9ColorSpace(r,l),r.chunkQueue.push(l),await this.interleaveChunks()}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=ho(_o.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a),r.info.codecDelay??=Math.max(-t.timestamp,0);let o=this.createInternalChunk(i,t.timestamp+r.info.codecDelay,t.duration,t.type);r.chunkQueue.push(o),await this.interleaveChunks()}finally{r()}}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0);let i=t.text,a=Math.round(t.timestamp*1e3);sa.lastIndex=0,i=i.replace(sa,e=>`<${ua(la(e.slice(1,-1))-a)}>`);let o=Kn.encode(i),s=`${t.settings??``}\n${t.identifier??``}\n${t.notes??``}`,c=this.createInternalChunk(o,t.timestamp,t.duration,`key`,s.trim()?Kn.encode(s):null);r.chunkQueue.push(c),await this.interleaveChunks()}finally{r()}}async interleaveChunks(e=!1){if(e||this.allTracksAreKnown()){outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.chunkQueue.length===0&&!r.closed)break outer;r.chunkQueue.length>0&&r.chunkQueue[0].timestamp<n&&(t=r,n=r.chunkQueue[0].timestamp)}if(!t)break;let r=t.chunkQueue.shift();this.addBlock(t,r)}e||await this.writer.flush()}}fixVP9ColorSpace(e,t){if(t.type!==`key`||!e.info.decoderConfig.colorSpace||!e.info.decoderConfig.colorSpace.matrix)return;let n=new qr(t.data);n.skipBits(2);let r=n.readBits(1),i=(n.readBits(1)<<1)+r;if(i===3&&n.skipBits(1),n.readBits(1)||n.readBits(1)!==0||(n.skipBits(2),n.readBits(24)!==4817730))return;i>=2&&n.skipBits(1);let a={rgb:7,bt709:2,bt470bg:1,smpte170m:3}[e.info.decoderConfig.colorSpace.matrix];Hn(t.data,n.pos,n.pos+3,a)}createInternalChunk(e,t,n,r,i=null){return{data:e,type:r,timestamp:t,duration:n,additions:i}}addBlock(e,t){this.segment||this.createSegment();let n=Math.round(1e3*t.timestamp),r=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.chunkQueue[0];return r?r.type===`key`:n.closed}),i=!1;if(this.currentClusterStartMsTimestamp===null)i=!0;else{F(this.currentClusterMaxMsTimestamp!==null);let e=n-this.currentClusterStartMsTimestamp;i=r&&n>this.currentClusterMaxMsTimestamp&&e>=1e3*(this.format._options.minimumClusterDuration??1)||e>gl}if(i&&this.startNewCluster(n),n-this.currentClusterStartMsTimestamp<hl){if(!this.warnedAboutTooNegativeTimestamp){let e=this.format instanceof Dl?`WebM`:`Matroska`;Hr._warn(`Packets had to be discarded because their timestamp is too negative to represent in ${e}.`),this.warnedAboutTooNegativeTimestamp=!0}}else this.currentClusterBlocks.push({trackData:e,chunk:t,msTimestamp:n,previousMsTimestamp:e.lastWrittenMsTimestamp}),this.startTimestamp=Math.min(this.startTimestamp,n),this.endTimestamp=Math.max(this.endTimestamp,n+Math.round(1e3*t.duration)),e.lastWrittenMsTimestamp=n,this.currentClusterMaxMsTimestamp=Math.max(this.currentClusterMaxMsTimestamp,n)}startNewCluster(e){this.currentClusterStartMsTimestamp!==null&&this.writeCurrentCluster();let t=Math.max(0,e);this.currentClusterStartMsTimestamp=t,this.currentClusterMaxMsTimestamp=t}writeCurrentCluster(){F(this.currentClusterStartMsTimestamp!==null);let e=this.currentClusterStartMsTimestamp,t=new Map,n=new Map;for(let e of this.currentClusterBlocks)e.chunk.type===`key`&&!t.has(e.trackData)&&t.set(e.trackData,e),n.set(e.trackData,e);let r=new Map;for(let t of this.currentClusterBlocks)r.set(t,this.createBlockElement(t,e,n.get(t.trackData)===t));let i={id:R.Cluster,size:this.format._options.appendOnly?-1:vl,data:[{id:R.Timestamp,data:e},...r.values()]};if(this.format._options.onCluster&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(i),this.currentClusterBlocks=[],this.format._options.onCluster){let{data:t,start:n}=this.writer.stopTrackingWrites();this.format._options.onCluster(t,n,e/1e3)}let a=this.ebmlWriter.offsets.get(i)-this.segmentDataOffset,o=this.ebmlWriter.dataOffsets.get(i),s=new Map;for(let e of t.values())s.has(e.msTimestamp)||s.set(e.msTimestamp,[]),s.get(e.msTimestamp).push(e);let c=[...s.entries()].sort((e,t)=>e[0]-t[0]);for(let[e,t]of c)F(this.cues),this.cues.data.push({id:R.CuePoint,data:[{id:R.CueTime,data:Math.max(0,e)},...t.map(e=>{let t=this.ebmlWriter.offsets.get(r.get(e));return{id:R.CueTrackPositions,data:[{id:R.CueTrack,data:e.trackData.track.id},{id:R.CueClusterPosition,data:a},{id:R.CueRelativePosition,data:t-o}]}})]})}createBlockElement(e,t,n){let{trackData:r,chunk:i,msTimestamp:a}=e,o=new Uint8Array(4),s=new DataView(o.buffer);s.setUint8(0,128|r.track.id),s.setInt16(1,a-t,!1);let c=Math.round(1e3*i.duration);return i.additions||r.type===`subtitle`||n&&c>0?{id:R.BlockGroup,data:[{id:R.Block,data:[o,i.data]},i.type===`delta`?{id:R.ReferenceBlock,data:new no(e.previousMsTimestamp-a)}:null,i.additions?{id:R.BlockAdditions,data:[{id:R.BlockMore,data:[{id:R.BlockAddID,data:1},{id:R.BlockAdditional,data:i.additions}]}]}:null,c>0?{id:R.BlockDuration,data:c}:null]}:(s.setUint8(3,Number(i.type===`key`)<<7),{id:R.SimpleBlock,data:[o,i.data]})}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveChunks(),t()}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve();for(let e of this.trackDatas)e.closed=!0;if(this.segment||this.createSegment(),await this.interleaveChunks(!0),this.currentClusterStartMsTimestamp!==null&&this.writeCurrentCluster(),F(this.cues),this.ebmlWriter.writeEBML(this.cues),!this.format._options.appendOnly){let e=this.writer.getPos()-this.segmentDataOffset;this.writer.seek(this.ebmlWriter.offsets.get(this.segment)+4),this.ebmlWriter.writeVarInt(e,_l);let t=this.startTimestamp===1/0?0:this.endTimestamp;this.segmentDuration.data=new to(t),this.writer.seek(this.ebmlWriter.offsets.get(this.segmentDuration)),this.ebmlWriter.writeEBML(this.segmentDuration),F(this.seekHead),this.writer.seek(this.ebmlWriter.offsets.get(this.seekHead)),this.maybeCreateSeekHead(!0),this.ebmlWriter.writeEBML(this.seekHead)}e()}},xl=class{get supportsVideoRotationMetadata(){return this.supportsVideoTransformationMetadata}get requiresMaximumPacketCount(){return!1}getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(e=>Fo.includes(e))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(e=>Ro.includes(e))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(e=>zo.includes(e))}_codecUnsupportedHint(e){return``}_isFragmentedIsobmff(){return!1}},Sl=class extends xl{constructor(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.fastStart!==void 0&&![!1,`in-memory`,`reserve`,`fragmented`].includes(e.fastStart))throw TypeError(`options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.`);if(e.minimumFragmentDuration!==void 0&&(!Nr(e.minimumFragmentDuration)||e.minimumFragmentDuration<0))throw TypeError(`options.minimumFragmentDuration, when provided, must be a non-negative number.`);if(e.onFtyp!==void 0&&typeof e.onFtyp!=`function`)throw TypeError(`options.onFtyp, when provided, must be a function.`);if(e.onMoov!==void 0&&typeof e.onMoov!=`function`)throw TypeError(`options.onMoov, when provided, must be a function.`);if(e.onMdat!==void 0&&typeof e.onMdat!=`function`)throw TypeError(`options.onMdat, when provided, must be a function.`);if(e.onMoof!==void 0&&typeof e.onMoof!=`function`)throw TypeError(`options.onMoof, when provided, must be a function.`);if(e.metadataFormat!==void 0&&![`mdir`,`mdta`,`udta`,`auto`].includes(e.metadataFormat))throw TypeError(`options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.`);super(),this._options=e}getSupportedTrackCounts(){let e=2**32-1;return{video:{min:0,max:e},audio:{min:0,max:e},subtitle:{min:0,max:e},total:{min:0,max:e}}}get supportsVideoTransformationMetadata(){return!0}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return`full`}get requiresMaximumPacketCount(){return this._options.fastStart===`reserve`}_createMuxer(e){return new ml(e,this)}_isFragmentedIsobmff(){return this._options.fastStart===`fragmented`}},Cl=class extends Sl{constructor(e){super(e)}get _name(){return`MP4`}get fileExtension(){return`.mp4`}get mimeType(){return`video/mp4`}getSupportedCodecs(){return[...Fo,...Lo,`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,...zo]}_codecUnsupportedHint(e){return new Tl().getSupportedCodecs().includes(e)?` Switching to MOV will grant support for this codec.`:``}},wl=class extends Sl{constructor(e){super(e)}get _name(){return`CMAF`}get fileExtension(){return`.m4s`}get mimeType(){return`video/mp4`}getSupportedCodecs(){return[...Fo,...Lo,`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,...zo]}},Tl=class extends Sl{constructor(e){super(e)}get _name(){return`MOV`}get fileExtension(){return`.mov`}get mimeType(){return`video/quicktime`}getSupportedCodecs(){return[...Fo,...Ro]}_codecUnsupportedHint(e){return new Cl().getSupportedCodecs().includes(e)?` Switching to MP4 will grant support for this codec.`:``}},El=class extends xl{constructor(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.appendOnly!==void 0&&typeof e.appendOnly!=`boolean`)throw TypeError(`options.appendOnly, when provided, must be a boolean.`);if(e.minimumClusterDuration!==void 0&&(!Nr(e.minimumClusterDuration)||e.minimumClusterDuration<0))throw TypeError(`options.minimumClusterDuration, when provided, must be a non-negative number.`);if(e.onEbmlHeader!==void 0&&typeof e.onEbmlHeader!=`function`)throw TypeError(`options.onEbmlHeader, when provided, must be a function.`);if(e.onSegmentHeader!==void 0&&typeof e.onSegmentHeader!=`function`)throw TypeError(`options.onHeader, when provided, must be a function.`);if(e.onCluster!==void 0&&typeof e.onCluster!=`function`)throw TypeError(`options.onCluster, when provided, must be a function.`);super(),this._options=e}_createMuxer(e){return new bl(e,this)}get _name(){return`Matroska`}getSupportedTrackCounts(){return{video:{min:0,max:127},audio:{min:0,max:127},subtitle:{min:0,max:127},total:{min:0,max:127}}}get fileExtension(){return`.mkv`}get mimeType(){return`video/x-matroska`}getSupportedCodecs(){return[...Fo,...Lo,...Io.filter(e=>![`pcm-s8`,`pcm-f32be`,`pcm-f64be`,`ulaw`,`alaw`].includes(e)),...zo]}get supportsVideoTransformationMetadata(){return!1}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return`prefer-non-negative`}},Dl=class extends El{constructor(e){super(e)}getSupportedCodecs(){return[...Fo.filter(e=>[`vp8`,`vp9`,`av1`].includes(e)),...Ro.filter(e=>[`opus`,`vorbis`].includes(e)),...zo]}get _name(){return`WebM`}get fileExtension(){return`.webm`}get mimeType(){return`video/webm`}_codecUnsupportedHint(e){return new El().getSupportedCodecs().includes(e)?` Switching to MKV will grant support for this codec.`:``}},Ol=[`video`,`audio`,`subtitle`],kl=class e{constructor(e,t,n,r,i){this.id=e,this.output=t,this.type=n,this.source=r,this.metadata=i}isVideoTrack(){return this.type===`video`}isAudioTrack(){return this.type===`audio`}isSubtitleTrack(){return this.type===`subtitle`}canBePairedWith(t){if(!(t instanceof e))throw TypeError(`other must be an OutputTrack.`);if(this===t)return!1;let n=Rr(this.metadata.group),r=Rr(t.metadata.group);for(let e of n)if(this.type!==t.type&&r.some(t=>e===t)||r.some(t=>e._pairedGroups.has(t)))return!0;return!1}},Al=class extends kl{constructor(e,t,n,r){super(e,t,`video`,n,r)}},jl=class extends kl{constructor(e,t,n,r){super(e,t,`audio`,n,r)}},Ml=class extends kl{constructor(e,t,n,r){super(e,t,`subtitle`,n,r)}},Nl=class e{constructor(){this._pairedGroups=new Set}pairWith(t){if(!(t instanceof e))throw TypeError(`other must be an OutputTrackGroup.`);if(this===t)throw TypeError(`Cannot pair a group with itself.`);this._pairedGroups.add(t),t._pairedGroups.add(this)}},Pl=e=>{if(!e||typeof e!=`object`)throw TypeError(`metadata must be an object.`);if(e.languageCode!==void 0&&!pr(e.languageCode))throw TypeError(`metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.`);if(e.name!==void 0&&typeof e.name!=`string`)throw TypeError(`metadata.name, when provided, must be a string.`);if(e.disposition!==void 0&&Kr(e.disposition),e.maximumPacketCount!==void 0&&(!Number.isInteger(e.maximumPacketCount)||e.maximumPacketCount<0))throw TypeError(`metadata.maximumPacketCount, when provided, must be a non-negative integer.`);if(e.bitrate!==void 0&&(!Number.isFinite(e.bitrate)||e.bitrate<0))throw TypeError(`metadata.bitrate, when provided, must be a non-negative number.`);if(e.averageBitrate!==void 0&&(!Number.isFinite(e.averageBitrate)||e.averageBitrate<0))throw TypeError(`metadata.averageBitrate, when provided, must be a non-negative number.`);if(e.group!==void 0&&!(e.group instanceof Nl)&&(!Array.isArray(e.group)||e.group.some(e=>!(e instanceof Nl))))throw TypeError(`metadata.group, when provided, must be an OutputTrackGroup instance or an array of OutputTrackGroup instances.`)},Fl=class extends zr{get target(){let e=`Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.`;if(this._rootTargetPromise)throw TypeError(e);let t=this._getRootTarget();if(Or(t))throw TypeError(e);return t}constructor(e){if(super(),this.state=`pending`,this.defaultTrackGroup=new Nl,this.tracks=[],this._onFinalize=null,this._unfinalizedTargets=new Set,this._rootWriterPromise=null,this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new Qn,this._metadataTags={},this._rootTarget=null,this._rootTargetPromise=null,this._firstMediaStreamTimestamp=null,!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(!(e.format instanceof xl))throw TypeError(`options.format must be an OutputFormat.`);if(!(e.target instanceof il||e.target instanceof ll))throw TypeError(`options.target must be a Target or a PathedTarget.`);if(e.target instanceof il&&this._rememberTarget(e.target),e.initTarget!==void 0&&!(e.initTarget instanceof il)&&typeof e.initTarget!=`function`)throw Error(`options.initTarget, when provided, must be a Target or a function that returns or resolves to a Target.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);this.format=e.format,this._target=e.target,this._onFinalize=e.onFinalize??null,this._initTarget=e.initTarget??null,this._initTarget instanceof il&&this._rememberTarget(this._initTarget),this._muxer=e.format._createMuxer(this)}_getTargetValidated(e){F(this._target instanceof ll);let t=this._target.getTarget(e),n=e=>{if(!(e instanceof il))throw TypeError(`getTarget must return a Target.`);return e};return Or(t)?t.then(n):n(t)}async _getTarget(e){F(this._target instanceof ll);let t=await this._getTargetValidated(e);return this._emit(`target`,{target:t,request:e,isRoot:e.isRoot}),this.state===`canceled`?await t._close():this._rememberTarget(t),t}_rememberTarget(e){this._unfinalizedTargets.add(e),e.on(`finalized`,()=>this._unfinalizedTargets.delete(e),{once:!0})}async _getInitTarget(){if(F(this._initTarget!==null),this._initTarget instanceof il)return this._initTarget;let e=await this._initTarget();return this.state===`canceled`?await e._close():this._rememberTarget(e),e}_hasInitTarget(){return this._initTarget!==null}_getRootTarget(){if(this._rootTarget)return this._rootTarget;if(this._rootTargetPromise)return this._rootTargetPromise;if(this._target instanceof il)return this._emit(`target`,{target:this._target,request:null,isRoot:!0}),this._rootTarget=this._target,this._target;let e={path:this._target.rootPath,isRoot:!0,mimeType:this.format.mimeType},t=this._getTargetValidated(e),n=t=>(this.state===`canceled`?t._close():this._rememberTarget(t),this._emit(`target`,{target:t,request:e,isRoot:!0}),this._rootTarget=t,t);return Or(t)?this._rootTargetPromise=t.then(n):n(t)}_getRootWriter(e){return this._rootWriterPromise??=(async()=>{let t=await this._getRootTarget(),n=new rl(t,typeof e==`boolean`?e:e(t));return n.start(),n})()}addVideoTrack(e,t={}){if(!(e instanceof wo))throw TypeError(`source must be a VideoSource.`);if(Pl(t),t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw TypeError(`Invalid video rotation: ${t.rotation}. Has to be 0, 90, 180 or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`metadata.flip, when provided, must be a boolean.`);if(t.transformationMatrix!==void 0&&(!Array.isArray(t.transformationMatrix)||t.transformationMatrix.length!==9||!t.transformationMatrix.every(e=>Number.isFinite(e))))throw TypeError(`metadata.transformationMatrix, when provided, must be an array of 9 finite numbers.`);if(t.frameRate!==void 0&&(!Number.isFinite(t.frameRate)||t.frameRate<=0))throw TypeError(`Invalid video frame rate: ${t.frameRate}. Must be a positive number.`);if(t.hasOnlyKeyPackets!==void 0&&typeof t.hasOnlyKeyPackets!=`boolean`)throw TypeError(`metadata.hasOnlyKeyPackets, when provided, must be a boolean.`);if(t.canBeTransparent!==void 0&&typeof t.canBeTransparent!=`boolean`)throw TypeError(`metadata.canBeTransparent, when provided, must be a boolean.`);if(t.decoderConfig!==void 0&&us({decoderConfig:t.decoderConfig},e._codec),t.primingPacket!==void 0){if(!(t.primingPacket instanceof Za))throw TypeError(`metadata.primingPacket, when provided, must be an EncodedPacket.`);if(t.decoderConfig===void 0)throw TypeError(`metadata.primingPacket can only be provided alongside metadata.decoderConfig.`)}let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new Al(this.tracks.length+1,this,e,n))}addAudioTrack(e,t={}){if(!(e instanceof No))throw TypeError(`source must be an AudioSource.`);if(Pl(t),t.decoderConfig!==void 0&&fs({decoderConfig:t.decoderConfig},e._codec),t.primingPacket!==void 0){if(!(t.primingPacket instanceof Za))throw TypeError(`metadata.primingPacket, when provided, must be an EncodedPacket.`);if(t.decoderConfig===void 0)throw TypeError(`metadata.primingPacket can only be provided alongside metadata.decoderConfig.`)}let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new jl(this.tracks.length+1,this,e,n))}addSubtitleTrack(e,t={}){if(!(e instanceof Po))throw TypeError(`source must be a SubtitleSource.`);Pl(t);let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new Ml(this.tracks.length+1,this,e,n))}setMetadataTags(e){if(Gr(e),this.state!==`pending`)throw Error(`Cannot set metadata tags after output has been started or canceled.`);this._metadataTags=e}_addTrack(e){if(this.state!==`pending`)throw Error(`Cannot add track after output has been started or canceled.`);if(e.source._connectedTrack)throw Error(`Source is already used for a track.`);let t=this.format.getSupportedTrackCounts(),n=this.tracks.reduce((t,n)=>t+ +(n.type===e.type),0),r=t[e.type].max;if(n===r)throw Error(r===0?`${this.format._name} does not support ${e.type} tracks.`:`${this.format._name} does not support more than ${r} ${e.type} track${r===1?``:`s`}.`);let i=t.total.max;if(this.tracks.length===i)throw Error(`${this.format._name} does not support more than ${i} tracks${i===1?``:`s`} in total.`);if(e.isVideoTrack()){let t=this.format.getSupportedVideoCodecs();if(t.length===0)throw Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isAudioTrack()){let t=this.format.getSupportedAudioCodecs();if(t.length===0)throw Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isSubtitleTrack()){let t=this.format.getSupportedSubtitleCodecs();if(t.length===0)throw Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}return this.tracks.push(e),e.source._connectedTrack=e,e}hasEnoughTracks(){let e=this.format.getSupportedTrackCounts();for(let t of Ol)if(this.tracks.reduce((e,n)=>e+ +(n.type===t),0)<e[t].min)return!1;let t=e.total.min;return!(this.tracks.length<t)}async start(){let e=this.format.getSupportedTrackCounts();for(let t of Ol){let n=this.tracks.reduce((e,n)=>e+ +(n.type===t),0),r=e[t].min;if(n<r)throw Error(r===e[t].max?`${this.format._name} requires exactly ${r} ${t} track${r===1?``:`s`}.`:`${this.format._name} requires at least ${r} ${t} track${r===1?``:`s`}.`)}let t=e.total.min;if(this.tracks.length<t)throw Error(t===e.total.max?`${this.format._name} requires exactly ${t} track${t===1?``:`s`}.`:`${this.format._name} requires at least ${t} track${t===1?``:`s`}.`);if(this.state===`canceled`)throw Error(`Output has been canceled.`);return this._startPromise?(Hr._warn(`Output has already been started.`),this._startPromise):this._startPromise=(async()=>{this.state=`started`;let e=this._mutex.acquire();try{await this._muxer.start();let e=this.tracks.map(e=>e.source._start());await Promise.all(e)}finally{(await e)()}})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this.state===`canceled`)return this._cancelPromise??void 0;if(this.state===`finalizing`||this.state===`finalized`)this.state===`finalized`&&Hr._warn(`Output has already been finalized.`);else return this._cancelPromise=(async()=>{this.state=`canceled`;let e=await this._mutex.acquire();try{let e=this.tracks.map(e=>e.source._flushOrWaitForOngoingClose(!0));await Promise.all(e),await Promise.all([...this._unfinalizedTargets].map(e=>e._close())),this._unfinalizedTargets.clear()}finally{e()}})()}async finalize(){if(this.state===`pending`)throw Error(`Cannot finalize before starting.`);if(this.state===`canceled`)throw Error(`Cannot finalize after canceling.`);return this._finalizePromise?(Hr._warn(`Output has already been finalized.`),this._finalizePromise):this._finalizePromise=(async()=>{this.state=`finalizing`;let e=await this._mutex.acquire();try{let e=this.tracks.map(e=>e.source._flushOrWaitForOngoingClose(!1));if(await Promise.all(e),await this._muxer.finalize(),this._rootWriterPromise){let e=await this._rootWriterPromise;e.finalized||(await e.flush(),await e.finalize())}this._onFinalize&&await this._onFinalize(),this.state=`finalized`}catch(e){throw this.state=`canceled`,e}finally{await Promise.all([...this._unfinalizedTargets].map(e=>e._close().catch(()=>{}))),this._unfinalizedTargets.clear(),e()}})()}},Il=Tn(),Ll=e=>e===!0?{}:e||null;function Rl(e){let t=Math.max(1,e/900);return{u:t,top:Math.round(44*t),bottom:Math.round(84*t)}}function zl(e){let t=getComputedStyle(e),n=(e,n)=>t.getPropertyValue(`--lm-${e}`).trim()||n;return{font:t.fontFamily||`sans-serif`,mono:n(`mono`,`monospace`),bg:n(`bg`,`#eef2f5`),surface:n(`surface`,`#ffffff`),fg:n(`fg`,`#17212b`),accent:n(`accent`,`#0b6b8f`),muted:n(`muted`,`#5d6d7c`),line:n(`line`,`#c6d0da`),ok:n(`ok`,`#2a7f5a`),warn:n(`warn`,`#b86e00`),drop:n(`drop`,`#b7392e`),series:[1,2,3,4].map(e=>n(`s${e}`,`#5d6d7c`))}}var Bl=(e,t)=>t===`over`?e.drop:t===`warn`?e.warn:e.ok;function Vl(e,t){let{model:n,ev:r}=e.engine,i=n.scenarioOf(r.values);return{title:t.title??n.title??``,where:[t.step,i?.label,`${s(r.values.load)}× today`].filter(Boolean).join(` · `),verdict:t.text??r.verdict.text,tier:r.verdict.tier}}function Hl(e,t,n,r=1/0){let i=[],a=``;for(let r of t.split(/\s+/).filter(Boolean)){let t=a?`${a} ${r}`:r;!a||e(t)<=n?a=t:(i.push(a),a=r)}if(a&&i.push(a),i.length<=r)return i;let o=i.slice(0,r),s=o[r-1];for(;s&&e(`${s}…`)>n;)s=s.slice(0,-1);return o[r-1]=`${s.trimEnd()}…`,o}function Ul(e,t,n,r,i){let a=zl(t.board().svg),{u:o,top:s,bottom:c}=Rl(r),l=Vl(t,n),u=14*o;e.save(),e.setTransform(1,0,0,1,0,0),e.fillStyle=a.line,e.fillRect(0,s-o,r,o),e.fillRect(0,i-c,r,o),e.textBaseline=`middle`,e.font=`500 ${13*o}px ${a.font}`,e.fillStyle=a.muted,e.textAlign=`right`,e.fillText(l.where,r-u,s/2);let d=e.measureText(l.where).width;e.font=`600 ${16*o}px ${a.font}`,e.fillStyle=a.fg,e.textAlign=`left`,e.fillText(l.title,u,s/2,Math.max(0,r-3*u-d)),e.fillStyle=Bl(a,l.tier),e.fillRect(u,i-c+12*o,4*o,c-24*o),e.font=`400 ${14*o}px ${a.font}`,e.fillStyle=a.fg,e.textBaseline=`top`,Hl(t=>e.measureText(t).width,l.verdict,r-2*u-14*o,3).forEach((t,n)=>{e.fillText(t,u+14*o,i-c+(14+n*20)*o)}),e.restore()}function Wl(e,t,n,r,i){let a=t.board(),o=zl(a.svg),s=Math.max(.75,r/a.scene.width),c=r/s<=520,l=12*s;e.save(),e.textBaseline=`top`,e.textAlign=`left`;let u=`600 ${(c?11.5:13.5)*s}px ${o.font}`,d=`500 ${11.5*s}px ${o.mono}`;e.font=u;let f=c?r-16*s:Math.min(476*s,r-2*l)-28*s,p=Hl(t=>e.measureText(t).width,n.title,f,c?1:2);e.font=d;let m=c||!n.detail?[]:Hl(t=>e.measureText(t).width,n.detail,f,1),h=18*s,g=(c?6:15)*s+p.length*h+m.length*16*s;e.font=u;let _=Math.max(...p.map(t=>e.measureText(t).width),...m.map(t=>(e.font=d,e.measureText(t).width))),v=c?r:_+28*s,y=c?0:l,b=c?0:n.top?l:i-l-g;e.globalAlpha=.94,e.fillStyle=o.surface,e.fillRect(y,b,v,g),e.globalAlpha=1,c||(e.fillStyle=o.accent,e.fillRect(y,b,4*s,g));let x=y+(c?8:16)*s,S=b+(c?3:7)*s;e.font=u,e.fillStyle=o.fg;for(let t of p)e.fillText(t,x,S),S+=h;e.font=d,e.fillStyle=o.muted;for(let t of m)e.fillText(t,x,S);e.restore()}var Gl=[`fill`,`stroke`,`color`];function Kl(e,t,n){let r=e.cloneNode(!0),i=[e,...e.querySelectorAll(`*`)],a=[r,...r.querySelectorAll(`*`)];i.forEach((e,t)=>{let n=getComputedStyle(e),r=a[t];for(let e of Gl){let t=r.getAttribute(e);t&&(t.includes(`var(`)||t===`currentColor`)&&r.setAttribute(e,n.getPropertyValue(e))}r.style?.color&&(r.style.color=n.color);for(let e of[`tabindex`,`aria-describedby`,`class`])r.removeAttribute(e)});let o=getComputedStyle(e);return r.setAttribute(`font-family`,o.fontFamily),r.setAttribute(`color`,o.color),r.setAttribute(`width`,String(t)),r.setAttribute(`height`,String(n)),r.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),r}var ql=`http://www.w3.org/2000/svg`;function Jl(e,t,n){let r=document.createElementNS(ql,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,String(n));return n!=null&&(r.textContent=n),r}async function Yl(e,t={}){await e.ready();let n=e.board(),{width:r,height:i}=n.scene,a=Kl(n.svg,r,i),o=Jl(`g`,{});for(let t of e.engine.dots())o.appendChild(Jl(`circle`,t.ring?{cx:t.x.toFixed(2),cy:t.y.toFixed(2),r:t.r-t.ring/2,fill:`none`,stroke:t.color,"stroke-width":t.ring,...t.alpha<1?{"stroke-opacity":t.alpha.toFixed(3)}:{}}:{cx:t.x.toFixed(2),cy:t.y.toFixed(2),r:t.r,fill:t.color,...t.alpha<1?{"fill-opacity":t.alpha.toFixed(3)}:{}}));a.appendChild(o);let s=Ll(t.caption);if(!s)return new XMLSerializer().serializeToString(a);let c=zl(n.svg),{top:l,bottom:u}=Rl(r),d=i+l+u,f=Vl(e,s),p=Jl(`svg`,{xmlns:ql,width:r,height:d,viewBox:`0 0 ${r} ${d}`,"font-family":c.font});p.appendChild(Jl(`rect`,{width:r,height:d,fill:c.surface})),p.appendChild(Jl(`text`,{x:14,y:l/2+5,"font-size":16,"font-weight":600,fill:c.fg},f.title)),p.appendChild(Jl(`text`,{x:r-14,y:l/2+5,"font-size":13,"text-anchor":`end`,fill:c.muted},f.where)),p.appendChild(Jl(`rect`,{x:0,y:l-1,width:r,height:1,fill:c.line})),a.setAttribute(`y`,String(l)),p.appendChild(a),p.appendChild(Jl(`rect`,{x:0,y:l+i,width:r,height:1,fill:c.line})),p.appendChild(Jl(`rect`,{x:14,y:l+i+12,width:4,height:u-24,fill:Bl(c,f.tier)}));let m=document.createElement(`canvas`).getContext(`2d`);return m.font=`400 14px ${c.font}`,Hl(e=>m.measureText(e).width,f.verdict,r-42,3).forEach((e,t)=>{p.appendChild(Jl(`text`,{x:28,y:l+i+28+t*20,"font-size":14,fill:c.fg},e))}),new XMLSerializer().serializeToString(p)}function Xl(e){let t=Math.max(720,Math.min(1400,e.width+48)),n=t-48;return{W:t,pad:24,inner:n,boardH:e.height*n/e.width}}async function Zl(e,t,n=2){let r=e.board(),{model:i,ev:a}=e.engine,o=zl(r.svg),{W:c,pad:d,inner:p,boardH:m}=Xl(r.scene),h=e=>{let t=i.dateAt(e);return t?` (${_(t,!0)})`:``},g=(e,t)=>e?`${u(e,i.searchMax,!0)}${h(e.low)}`:`${l(t,i.searchMax)}${h(t)}`,v=Vl(e,{}),y=i.growth,x=[v.where,y&&`load grows ${s(y.rate*100)} % a ${y.per} from ${_(b(y.asOf))}`].filter(Boolean).join(` · `),S=i.scenarios.length>1?xe(i,a.values.load):null,C=a.assumptions.flatMap(e=>e.kind===`capacity`&&e.capacity.provenance===`estimated`?[e.name]:[]),w=document.createElement(`canvas`).getContext(`2d`),T=(e,t,n=!1)=>`${e} ${t}px ${n?o.mono:o.font}`,E=(e,t,n)=>(w.font=t,Hl(e=>w.measureText(e).width,e,n)),D=E(v.verdict,T(400,15),p-20),O=a.measure?E(a.measure.text,T(400,13),p-20):[],ee=S?E(S.text,T(400,14),p):[],k=[],A=(e,t,n,r,i,a,o=`left`)=>{e.font=i,e.fillStyle=a,e.textAlign=o,e.fillText(t,n,r)},te=e=>k.push([30,(t,n)=>A(t,e.toUpperCase(),d,n+20,T(600,11),o.muted)]);k.push([34,(e,t)=>A(e,v.title,d,t+26,T(600,22),o.fg)]),k.push([26,(e,t)=>A(e,x,d,t+16,T(400,13),o.muted)]),k.push([m+16,(e,n)=>{e.fillStyle=o.line,e.fillRect(d-1,n+7,p+2,m+2),e.drawImage(t,d,n+8,p,m)}]),k.push([D.length*22+20,(e,t)=>{e.fillStyle=Bl(o,v.tier),e.fillRect(d,t+6,4,D.length*22+8),D.forEach((n,r)=>{A(e,n,d+16,t+24+r*22,T(400,15),o.fg)})}]),O.length&&k.push([O.length*18+6,(e,t)=>{O.forEach((n,r)=>{A(e,n,d+16,t+14+r*18,T(400,13),o.muted)})}]),te(`Where it runs out, in order`);let ne=Math.max(1.5,i.thresholds.full*1.5);k.push([16,(e,t)=>{let n=i.thresholds;A(e,`0`,d,t+10,T(400,11,!0),o.muted),A(e,`${f(n.target)} target`,d+p*n.target/ne,t+10,T(400,11,!0),o.muted,`center`),A(e,f(n.full),d+p*n.full/ne,t+10,T(400,11,!0),o.muted,`center`),A(e,f(ne),c-d,t+10,T(400,11,!0),o.muted,`right`)}]);for(let e of a.ranked)k.push([46,(t,n)=>{let r=e===a.firstLimit?` · limit`:``;A(t,`${e.name}${r}`,d,n+16,T(600,14),o.fg);let s=e.util==null?`switched off`:`${f(e.util)} now · ${f(i.thresholds.target)} at ${g(e.targetRange,e.target)} · ${f(i.thresholds.full)} at ${g(e.fullRange,e.full)}`;A(t,s,c-d,n+16,T(400,12,!0),o.muted,`right`),t.fillStyle=o.bg,t.fillRect(d,n+24,p,10),t.fillStyle=e.state===`over`?o.drop:e.state===`warn`?o.warn:o.ok,t.fillRect(d,n+24,p*Math.min(ne,e.util??0)/ne,10),t.fillStyle=o.fg;for(let e of[i.thresholds.target,i.thresholds.full])t.fillRect(d+p*e/ne,n+22,1,14)}]);S&&(te(`Scenarios compared`),k.push([ee.length*20+6,(e,t)=>{ee.forEach((n,r)=>{A(e,n,d,t+15+r*20,T(400,14),o.fg)})}]),S.rows.forEach((e,t)=>{k.push([26,(n,r)=>{n.fillStyle=o.series[t]??o.muted,n.beginPath(),n.arc(d+5,r+13,5,0,Math.PI*2),n.fill(),A(n,e.label,d+18,r+18,T(600,14),o.fg);let a=`limited by ${e.firstLimit?.name??`—`} · ${f(i.thresholds.target)} at ${g(e.targetRange,e.target)} · runs out at ${g(e.fullRange,e.full)}`;A(n,a,c-d,r+18,T(400,12,!0),o.muted,`right`)}])})),C.length&&k.push([30,(e,t)=>A(e,`Estimated capacities: ${C.join(`, `)}.`,d,t+22,T(400,12),o.muted)]);let re=Math.ceil(k.reduce((e,[t])=>e+t,0)+2*d),ie=document.createElement(`canvas`);ie.width=Math.round(c*n),ie.height=Math.round(re*n);let ae=ie.getContext(`2d`);ae.scale(n,n),ae.fillStyle=o.surface,ae.fillRect(0,0,c,re),ae.textBaseline=`alphabetic`;let j=d;for(let[e,t]of k)t(ae,j),j+=e;return ie}function Ql(e,t){if(t.step==null)return e.setValues($l(e,t));if(!e.engine.model.story[t.step])throw Error(`loadmap: the story has no step ${t.step+1}`);e.setStoryStep(t.step)}function $l(e,t){if(t.scenario==null)return{...t.set};let n=e.engine.model,r=n.scenarios.find(e=>e.label===t.scenario);if(!r){let e=n.scenarios.map(e=>`"${e.label}"`).join(`, `);throw Error(`loadmap: no scenario "${t.scenario}"; ${e?`the model has ${e}`:`the model has none`}`)}return{...r.values,...t.set}}async function q(e,t={},n){await e.ready();let r=e.board(),i=Ll(t.caption),a=t.size?.width??du(r.scene.width*(t.scale??2)),o=i?Rl(a):{top:0,bottom:0},s=t.size?.height??du(r.scene.height*(t.scale??2)+o.top+o.bottom),c=s-o.top-o.bottom,l=Math.min(a/r.scene.width,c/r.scene.height),u=r.scene.width*l,d=r.scene.height*l,f=n??document.createElement(`canvas`);(f.width!==a||f.height!==s)&&(f.width=a,f.height=s);let p=f.getContext(`2d`);p.setTransform(1,0,0,1,0,0),p.fillStyle=getComputedStyle(r.svg).getPropertyValue(`--lm-surface`).trim()||`#fff`,p.fillRect(0,0,a,s);let m=await pu(r.svg,Math.round(u),Math.round(d));return p.translate((a-u)/2,o.top+(c-d)/2),p.drawImage(m,0,0,u,d),e.engine.paintParticles(p,l),e.engine.cue&&Wl(p,e,e.engine.cue,u,d),p.setTransform(1,0,0,1,0,0),i&&Ul(p,e,i,a,s),f}async function eu(e,t={}){return au(await q(e,t))}async function tu(e,t){let n=t.format??`webm`,r=t.fps??(n===`gif`?15:30),i=t.story?e.engine.model.story:null;if(i&&!i.length)throw Error(`loadmap: the model has no story`);if(!(r>0)||!(i||t.seconds!=null&&t.seconds>0))throw Error(`loadmap: seconds and fps must be positive`);if(n===`gif`&&r>50)throw Error(`loadmap: a GIF plays at most 50 frames a second`);let a=i?[]:[...t.script??[]].sort((e,t)=>e.at-t.at),o=Ll(t.caption),s=()=>{let n=e.engine.cue?.step??e.storyStep(),r=i&&n!=null?i[n]:void 0;return o&&r?{...o,text:r.text,step:`${n+1} of ${i.length}`}:t.caption};await e.ready();let c=e.values(),l=e.storyStep();e.pause(),e.engine.stopStory({cut:!0});try{i&&(e.setStoryStep(null),e.setValues(e.engine.model.defaults()));for(let t of a.filter(e=>e.at<=0))Ql(e,t);await su(e,t.seed??1,t.warmup??2,r);let o=i?e.playStory():t.seconds,c=document.createElement(`canvas`);n===`gif`&&c.getContext(`2d`,{willReadFrequently:!0}),await q(e,{scale:t.scale??1,caption:s()},c);let l=n===`gif`?lu(c,r):await cu(c,n,r),u=Math.round(o*r),d=a.findIndex(e=>e.at>0);for(let n=0;n<u;n++){let i=n/r;for(;d>=0&&d<a.length&&a[d].at<=i;)Ql(e,a[d]),d++;await e.ready(),e.step(1/r),await q(e,{size:{width:c.width,height:c.height},caption:s()},c),await t.onFrame?.(n,c),await l.add(i)}return await l.finish()}finally{(i||e.storyStep()!==l)&&e.setStoryStep(l),e.setValues(c),e.resume()}}async function nu(e,t={}){return iu(e,t,()=>eu(e,t))}async function ru(e,t={}){return iu(e,t,async()=>{let n=t.scale??2,{inner:r,boardH:i}=Xl(e.board().scene);return au(await Zl(e,await q(e,{size:{width:du(r*n),height:du(i*n)}}),n))})}async function iu(e,t,n){await e.ready();let r=e.values();e.pause(),e.engine.stopStory({cut:!0});try{return(t.set||t.scenario!=null)&&e.setValues($l(e,t)),await su(e,t.seed??1,t.warmup??4,30),await n()}finally{e.setValues(r),e.resume()}}function au(e){return new Promise((t,n)=>e.toBlob(e=>e?t(e):n(Error(`loadmap: PNG failed`)),`image/png`))}function ou(e,t=`default`){let n={record:async t=>uu(await tu(e,t)),still:async t=>uu(await nu(e,t)),poster:async t=>uu(await ru(e,t)),svg:t=>iu(e,t,()=>Yl(e,t))};return globalThis.__loadmap??={},globalThis.__loadmap[t]=n,()=>{globalThis.__loadmap?.[t]===n&&delete globalThis.__loadmap[t]}}async function su(e,t,n,r){await e.ready(),e.reset(t);for(let t=0,i=Math.round(n*r);t<i;t++)e.step(1/r)}async function cu(e,t,n){let r=await fu(t,e.width,e.height),i=new Fl({format:t===`mp4`?new Cl({fastStart:`in-memory`}):new Dl,target:new sl}),a=new Mo(e,{codec:r,bitrate:Ka,keyFrameInterval:2});return i.addVideoTrack(a,{frameRate:n}),await i.start(),{add:e=>a.add(e,1/n),finish:async()=>{a.close(),await i.finalize();let e=i.target.buffer;return new Blob([e],{type:t===`mp4`?`video/mp4`:`video/webm`})}}}function lu(e,t){let n=(0,Il.GIFEncoder)(),r=e.getContext(`2d`),i=e=>Math.round(100*e/t),a=0;return{add:async()=>{let{data:t,width:o,height:s}=r.getImageData(0,0,e.width,e.height),c=(0,Il.quantize)(t,256),l=10*(i(a+1)-i(a));a++,n.writeFrame((0,Il.applyPalette)(t,c),o,s,{palette:c,delay:l,repeat:0})},finish:async()=>(n.finish(),new Blob([n.bytes()],{type:`image/gif`}))}}async function uu(e){let t=new Uint8Array(await e.arrayBuffer()),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(n)}var du=e=>Math.max(2,Math.round(e/2)*2);async function fu(e,t,n){let r=e===`mp4`?[`avc`,`vp9`,`av1`]:[`vp9`,`vp8`,`av1`];for(let e of r)if(await qa(e,{width:t,height:n}))return e;throw Error(`loadmap: this browser cannot encode ${e} video`)}async function pu(e,t,n){let r=Kl(e,t,n),i=URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(r)],{type:`image/svg+xml`}));try{let e=new Image;return e.src=i,await e.decode(),e}finally{URL.revokeObjectURL(i)}}var mu=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function ee(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function te(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function ne(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function re(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,re(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+te(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),re(o,r,i,``,function(e){return e})):o!=null&&(ee(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+te(a,u),c+=re(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+te(a,u++),c+=re(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return re(ne(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ie(e,t,n){if(e==null)return e;var r=[],i=0;return re(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function ae(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var j=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function oe(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,j)}catch(e){j(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function se(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else oe(se.bind(null,e))}var ce={map:ie,forEach:function(e,t,n){ie(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ie(e,function(){t++}),t},toArray:function(e){return ie(e,function(e){return e})||[]},only:function(e){if(!ee(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=ce,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=se,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=ee,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:ae}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=oe,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.1`})),hu=t(((e,t)=>{t.exports=mu()})),gu=2,_u=[``,`limit`,`2nd`,`3rd`],vu=e=>e.targetRange?.low??e.target;function yu(e,t){let n=new Map,r=e.firstLimit;if(!r)return n;let i=e=>l(vu(e),t.searchMax);return n.set(r.id,{rank:1,text:`LIMIT · ${i(r)}`,word:`limit`}),e.ranked.filter(e=>e!==r&&e.util!=null).slice(0,gu).forEach((e,r)=>{let a=vu(e);if(a==null||!Number.isFinite(a)||a>t.load.max)return;let o=r+2;n.set(e.id,{rank:o,text:`${_u[o]} · ${i(e)}`,word:_u[o]})}),n}var bu=e=>e.charAt(0).toUpperCase()+e.slice(1),xu=(e,t)=>!!e.firstLimit&&!!t.firstLimit&&e.firstLimit.id!==t.firstLimit.id;function Su(e,t,n){let r=e.firstLimit,i=t.firstLimit;if(!r||!i||!xu(e,t))return null;let a=l(vu(i),n.searchMax),o=vu(r),s=t.components[r.id]?vu(t.components[r.id]):null;return o!=null&&(s==null||s>o)?`${r.name} fixed: ${i.short} ${i.plural?`are`:`is`} next, at ${a}`:`${bu(i.short)} ${i.plural?`overtake`:`overtakes`} ${r.short}: the limit is ${a} now`}var Cu={establish:1.2,in:1,close:.5,hand:1.8,out:1,back:.4},wu=e=>Math.max(1.6,e+.7),Tu=(e,t,n=!1)=>Cu.in+Cu.close+wu(t)+(n?Cu.hand:0)+Cu.out+e.seconds;function Eu(e,t,n){let r=t,i=Cu.establish;for(let t of e.story){let a=e.evaluate(t.values);i+=Tu(t,n,xu(r,a)),r=a}return i}var Du=e=>({x:0,y:0,w:e.width,h:e.height});function Ou(e,t){return t.stages.map(t=>e.stages[t]?.component).find(Boolean)??t.component??void 0}function ku(e,t,n,r,i){let a=new Set(e.nodes.map(e=>e.id)),o=new Set;for(let e of a)r.a.nodes[e]!==r.b.nodes[e]&&o.add(e);let s=new Set(r.a.edges.map(e=>e.id)),c=new Set(r.b.edges.map(e=>e.id));for(let e of[...r.a.edges,...r.b.edges])if(s.has(e.id)!==c.has(e.id))for(let t of[e.from,e.to])a.has(t)&&o.add(t);let l=t=>e.nodes.filter(e=>t&&Ou(n,e)===t).map(e=>e.id),u=t=>e.nodes.filter(e=>t.has(e.id)).map(e=>e.id);if(i)return u(new Set([...l(i),...o]));if(o.size)return u(o);let d=e.nodes.filter(e=>{let r=Ou(n,e);return r&&t.components[r]?.state!==n.components[r]?.state});return d.length?d.map(e=>e.id):l(n.firstLimit?.id)}var Au=2.5,ju=.8;function Mu(e,t,n={}){let r=Du(e),i=e.nodes.filter(e=>t.includes(e.id));if(!i.length||!(e.width>0&&e.height>0))return r;let a=Math.min(...i.map(e=>e.x)),o=Math.min(...i.map(e=>e.y)),s=Math.max(...i.map(e=>e.x+e.w)),c=Math.max(...i.map(e=>e.y+e.h)),l=e.width/e.height,u=Math.max(s-a+60,(c-o+60)*l,e.width/Au);if(u>ju*e.width&&!n.hold)return r;u=Math.min(u,e.width);let d=u/l,f=(e,t)=>Math.max(0,Math.min(t,e));return{x:f((a+s-u)/2,e.width-u),y:f((o+c-d)/2,e.height-d),w:u,h:d}}var Nu=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;function Pu(e,t,n){let r=Nu(Math.max(0,Math.min(1,n))),i=e.w*(t.w/e.w)**r,a=e.h*(t.h/e.h)**r,o=e.x+e.w/2+(t.x+t.w/2-e.x-e.w/2)*r,s=e.y+e.h/2+(t.y+t.h/2-e.y-e.h/2)*r;return{x:o-i/2,y:s-a/2,w:i,h:a}}var Fu=e=>e.split(`,`)[0].trim(),Iu=2;function Lu(e,t,n,r){if(n.title)return`${r+1} · ${n.title}`;let i=(t,n)=>{if(t===`load`)return`${s(n)}×`;let r=e.params.find(e=>e.id===t)?.def;return typeof n==`boolean`?n?`on`:`off`:r&&r.kind!==`load`&&`format`in r&&r.format?r.format(n):typeof n==`number`?s(n):String(n)},a=Object.keys(n.values).filter(e=>t[e]!==n.values[e]),o=a.slice(0,Iu).map(r=>{let a=r===`load`?e.load.label:e.params.find(e=>e.id===r)?.def.label??r,o=n.values[r],s=t[r];return typeof o==`boolean`?`${Fu(a)} ${i(r,o)}`:`${Fu(a)} ${i(r,s)} → ${i(r,o)}`});a.length>Iu&&o.push(`${a.length-Iu} more`);let c=o.join(`, `)||`Nothing changes`;return`${r+1} · ${n.scenario&&a.length?`${n.scenario}: ${c}`:c}`}function Ru(e,t,n){return n.slice(0,2).map(n=>{let r=e.components[n],i=t?.components[n];if(!r)return``;let a=e=>e==null?`off`:f(e);return i?`${r.name} ${a(r.util)} → ${a(i.util)}`:`${r.name} ${a(r.util)}`}).filter(Boolean).join(` · `)}var zu=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Bu=t(((e,t)=>{t.exports=zu()})),J=hu(),Y=Bu(),Vu=[`var(--lm-s1)`,`var(--lm-s2)`,`var(--lm-s3)`,`var(--lm-s4)`];function Hu(e,t){return t==null?`var(--lm-fg)`:Vu[e.scenarios.findIndex(e=>e.label===t)]??`var(--lm-muted)`}var Uu=e=>e.label??`These values`;function Wu(e,t){let n=e.dateAt(t);return n?_(n,!0):t!=null&&t<=1&&e.growth?`now`:``}function Gu(e,t){if(!t)return``;let[n,r]=[Wu(e,t.low),Wu(e,t.high)];return!r||n===r?n:`${n}–${r}`}function Ku(e){return(0,J.useMemo)(()=>xe(e.model,e.values.load),[e.model,e.values.load])}function qu({lm:e}){let{model:t}=e;return t.scenarios.length?(0,Y.jsxs)(`fieldset`,{className:`lm-scenarios`,children:[(0,Y.jsx)(`legend`,{children:`Scenario`}),t.scenarios.map(n=>(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":e.scenario?.label===n.label,onClick:()=>e.setScenario(n.label),children:[(0,Y.jsx)(`i`,{style:{background:Hu(t,n.label)}}),n.label]},n.label)),!e.scenario&&(0,Y.jsx)(`span`,{className:`lm-own`,children:`your own values`})]}):null}function X(e){return e==null||!Number.isFinite(e)||e===0?``:Math.abs(e-1)<.005?`same`:`${e>1?`+`:`−`}${f(Math.abs(e-1))}`}function Ju({lm:e,title:t=`Scenarios compared`}){let{model:n}=e,r=Ku(e);if(r.rows.length<2)return null;let i=`${f(n.thresholds.target)} target`,a=e=>(0,Y.jsxs)(Y.Fragment,{children:[e?u(e,n.searchMax,!0):l(null),Gu(n,e)&&(0,Y.jsx)(`small`,{children:Gu(n,e)})]});return(0,Y.jsxs)(`div`,{className:`lm-card lm-compare`,children:[(0,Y.jsx)(`h3`,{children:t}),(0,Y.jsx)(`p`,{className:`lm-compare-text`,children:r.text}),(0,Y.jsx)(`div`,{className:`lm-table-wrap`,children:(0,Y.jsxs)(`table`,{className:`lm-table`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{scope:`col`,children:`Scenario`}),(0,Y.jsx)(`th`,{scope:`col`,children:`Limited by`}),(0,Y.jsx)(`th`,{scope:`col`,children:i}),(0,Y.jsx)(`th`,{scope:`col`,children:`Runs out`})]})}),(0,Y.jsx)(`tbody`,{children:r.rows.map(t=>(0,Y.jsxs)(`tr`,{"data-scenario":t.label,"aria-current":e.scenario?.label===t.label||void 0,children:[(0,Y.jsxs)(`th`,{scope:`row`,children:[(0,Y.jsx)(`i`,{style:{background:Hu(n,t.label)}}),t.label]}),(0,Y.jsx)(`td`,{className:`lm-text`,children:t.firstLimit?.name??`—`}),(0,Y.jsx)(`td`,{"data-multiple":t.target??``,"data-high":t.targetRange?.high??``,children:a(t.targetRange)}),(0,Y.jsx)(`td`,{"data-multiple":t.full??``,"data-high":t.fullRange?.high??``,children:a(t.fullRange)})]},t.label))})]})}),(0,Y.jsxs)(`h3`,{children:[i,`, by component`]}),(0,Y.jsx)(`div`,{className:`lm-table-wrap`,children:(0,Y.jsxs)(`table`,{className:`lm-table`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{scope:`col`,children:`Component`}),r.rows.map(e=>(0,Y.jsx)(`th`,{scope:`col`,children:e.label},e.label))]})}),(0,Y.jsx)(`tbody`,{children:n.componentIds.map((e,t)=>(0,Y.jsxs)(`tr`,{"data-component":e,children:[(0,Y.jsx)(`th`,{scope:`row`,children:r.rows[0].components[t].name}),r.rows.map((e,r)=>{let i=e.components[t];return(0,Y.jsxs)(`td`,{"data-multiple":i.target??``,children:[i.targetRange==null?`off`:u(i.targetRange,n.searchMax,!0),r>0&&X(i.change)&&(0,Y.jsx)(`small`,{children:X(i.change)})]},e.label)})]},e))})]})})]})}function Z(e){let t=(0,J.useRef)(null),[n,r]=(0,J.useState)({width:e,height:0});return(0,J.useEffect)(()=>{let e=t.current;if(!e)return;let n=new ResizeObserver(([t])=>{let n=Math.round(t?.contentRect.width??e.clientWidth),i=Math.round(t?.contentRect.height??e.clientHeight);n>0&&r(e=>e.width===n&&e.height===i?e:{width:n,height:i})});return n.observe(e),()=>n.disconnect()},[]),[t,n]}function Q(e){let{model:t,values:n}=e,r=JSON.stringify({...n,load:null});return(0,J.useMemo)(()=>Ce(t,{...n,load:t.load.default}),[t,r])}function Yu(e){let[t,n]=(0,J.useState)(()=>(e,t)=>e.length*6.7);return(0,J.useLayoutEffect)(()=>{let t=e.current&&document.createElement(`canvas`).getContext(`2d`);if(!t)return;let r=getComputedStyle(e.current).getPropertyValue(`--lm-mono`).trim()||`monospace`;n(()=>(e,n=400)=>(t.font=`${n} 11px ${r}`,t.measureText(e).width))},[e]),t}function Xu(e,t,n){let r=[];for(let i=Math.floor(Math.log10(e));i<=Math.ceil(Math.log10(t));i++)for(let a of n?[1,2,5]:[1]){let n=a*10**i;n>=e*.999&&n<=t*1.001&&r.push(Number(n.toPrecision(6)))}return r}function Zu({lm:e,title:t=`Headroom`}){let{model:n,values:r}=e,i=Q(e),[a,{width:o}]=Z(640),[c,d]=(0,J.useState)(null),p=(0,J.useId)().replace(/:/g,``),m=Yu(a),h=(0,J.useRef)(null);(0,J.useLayoutEffect)(()=>{let e=h.current;e&&c!=null&&(e.style.left=`${Math.max(0,Math.min(C(E[c])+10,v-e.offsetWidth))}px`)});let g=!!n.growth,_={l:44,r:14,t:14,b:g?40:26},v=o,y=Math.round(Math.min(300,Math.max(200,v*.45))),b=v-_.l-_.r,x=y-_.t-_.b,S=Math.max(1.5,n.thresholds.full*1.5),C=e=>_.l+b*Math.log(e/i.from)/Math.log(i.to/i.from),w=e=>_.t+x*(1-Math.min(e,S*1.2)/S),T=e=>{let t=``,n=!1;for(let[r,i]of e)i==null?n=!1:(t+=`${n?`L`:`M`}${C(r).toFixed(1)} ${w(i).toFixed(1)}`,n=!0);return t},E=i.lines[0]?.envelope.map(([e])=>e)??[],D=i.lines.find(e=>e.selected),O=v>=480,ee=Xu(i.from,i.to,O),k=e=>O||Number.isInteger(Math.log10(e)),A=e=>{let t=0;for(let n=1;n<E.length;n++)Math.abs(C(E[n])-e)<Math.abs(C(E[t])-e)&&(t=n);return t},te=e=>{let t=e.currentTarget.ownerSVGElement.getBoundingClientRect();d(A(e.clientX-t.left))},ne=e=>{let t=c??A(C(Math.min(i.to,Math.max(i.from,r.load))));e.key===`ArrowRight`||e.key===`ArrowLeft`?(e.preventDefault(),d(Math.max(0,Math.min(E.length-1,t+(e.key===`ArrowRight`?1:-1))))):e.key===`Escape`&&d(null)},re=e=>{let t=e.upper.flatMap(([t,n],r)=>{let i=e.lower[r][1];return n==null||i==null?[]:[[t,n,i]]});if(t.length<2)return``;let n=t.map(([e,t])=>`${C(e).toFixed(1)} ${w(t).toFixed(1)}`),r=t.map(([e,,t])=>`${C(e).toFixed(1)} ${w(t).toFixed(1)}`).reverse();return`M${n.join(`L`)}L${r.join(`L`)}Z`},ie=(e,t)=>e&&ae(e)?u(e,n.searchMax):l(t,n.searchMax),ae=e=>l(e.low,n.searchMax)!==l(e.high,n.searchMax),j=i.lines.map(e=>`${Uu(e)} reaches the ${f(n.thresholds.target)} target at ${ie(e.targetRange,e.target)} and ${f(n.thresholds.full)} at ${ie(e.fullRange,e.full)}`).join(`; `),oe=C(Math.min(i.to,Math.max(i.from,r.load))),se=c==null?null:E[c],ce={x:0,textAnchor:`start`},le={x:v,textAnchor:`end`},ue=(e,t,n,r=4)=>{let i={x:e+r,textAnchor:`start`},a={x:e-r,textAnchor:`end`},o=e+r+t<=v,s=e-r-t>=0;return(n===`right`||!s)&&o?i:s?a:e<v/2?ce:le},de=(e,t)=>e-t/2<0?ce:e+t/2>v?le:{x:e,textAnchor:`middle`},fe=`shown: ${s(r.load)}×`,pe=(e,t,n)=>(0,Y.jsx)(`text`,{...ue(t,m(e,600),`left`,6),y:n,className:`lm-mark`,children:e});return(0,Y.jsxs)(`div`,{className:`lm-card lm-headroom`,children:[(0,Y.jsx)(`h3`,{children:t}),i.lines.length>1&&(0,Y.jsxs)(`div`,{className:`lm-legend`,children:[i.lines.map(e=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(n,e.label)}}),Uu(e)]},Uu(e))),D&&(0,Y.jsxs)(`span`,{children:[`thin lines: each component of `,Uu(D)]})]}),(0,Y.jsxs)(`div`,{className:`lm-chart`,ref:a,role:`slider`,"aria-label":`Utilization over the load multiple. ${j}.`,"aria-valuemin":i.from,"aria-valuemax":i.to,"aria-valuenow":se??r.load,"aria-valuetext":se==null?`${s(r.load)}×`:`${s(se)}×: ${i.lines.map(e=>`${Uu(e)} ${e.envelope[c][1]==null?`off`:f(e.envelope[c][1])}`).join(`, `)}`,tabIndex:0,onKeyDown:ne,onBlur:()=>d(null),children:[(0,Y.jsxs)(`svg`,{width:v,height:y,viewBox:`0 0 ${v} ${y}`,"aria-hidden":`true`,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`clipPath`,{id:p,children:(0,Y.jsx)(`rect`,{x:_.l,y:_.t,width:b,height:x+2})})}),[0,n.thresholds.target,n.thresholds.full].map(e=>(0,Y.jsxs)(`g`,{children:[(0,Y.jsx)(`line`,{x1:_.l,x2:v-_.r,y1:w(e),y2:w(e),stroke:`var(--lm-line)`}),(0,Y.jsx)(`text`,{x:_.l-6,y:w(e)+4,textAnchor:`end`,className:`lm-axis`,children:f(e)})]},e)),(0,Y.jsx)(`text`,{x:v-_.r,y:w(n.thresholds.target)-5,textAnchor:`end`,className:`lm-axis`,children:`target`}),ee.map(e=>{let t=`${s(e)}×`,r=g&&e>1?Wu(n,e):``;return(0,Y.jsxs)(`g`,{className:`lm-axis`,children:[(0,Y.jsx)(`line`,{x1:C(e),x2:C(e),y1:_.t+x,y2:_.t+x+4,stroke:`var(--lm-line)`}),k(e)&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`text`,{...de(C(e),m(t)),y:_.t+x+16,children:t}),r&&(0,Y.jsx)(`text`,{...de(C(e),m(r)),y:_.t+x+30,children:r})]})]},e)}),(0,Y.jsxs)(`g`,{clipPath:`url(#${p})`,children:[[...i.lines].sort((e,t)=>Number(e.selected)-Number(t.selected)).map(e=>e.band?(0,Y.jsx)(`path`,{"data-band":Uu(e),d:re(e.band),fill:Hu(n,e.label),fillOpacity:e.selected?.2:.08},Uu(e)):null),D?.components.map(e=>(0,Y.jsx)(`path`,{d:T(e.points),fill:`none`,stroke:`var(--lm-muted)`,strokeOpacity:`.55`,strokeWidth:`1`},e.id)),[...i.lines].sort((e,t)=>Number(e.selected)-Number(t.selected)).map(e=>(0,Y.jsx)(`path`,{"data-line":Uu(e),d:T(e.envelope),fill:`none`,stroke:Hu(n,e.label),strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`},Uu(e)))]}),(0,Y.jsx)(`line`,{x1:oe,x2:oe,y1:_.t,y2:_.t+x,stroke:`var(--lm-fg)`,strokeOpacity:`.45`}),(0,Y.jsx)(`text`,{...ue(oe,m(fe),`right`),y:_.t+10,className:`lm-axis`,children:fe}),i.lines.flatMap(e=>[[`target`,e.targetRange,n.thresholds.target],[`full`,e.fullRange,n.thresholds.full]].map(([t,r,a])=>{if(!e.band||!r||!Number.isFinite(r.low)||r.low>i.to)return null;let[o,s]=[C(Math.max(i.from,r.low)),C(Math.min(i.to,r.high))],c=w(a);return(0,Y.jsxs)(`g`,{"data-range":t,"data-scenario":Uu(e),"data-low":r.low,"data-high":r.high,stroke:Hu(n,e.label),strokeWidth:e.selected?3:2,strokeOpacity:e.selected?1:.6,children:[(0,Y.jsx)(`line`,{x1:o,x2:s,y1:c,y2:c}),(0,Y.jsx)(`line`,{x1:o,x2:o,y1:c-5,y2:c+5}),Number.isFinite(r.high)&&r.high<=i.to&&(0,Y.jsx)(`line`,{x1:s,x2:s,y1:c-5,y2:c+5})]},`${Uu(e)}/${t}/range`)})),i.lines.flatMap(e=>[[`target`,e.target,e.targetRange,n.thresholds.target],[`full`,e.full,e.fullRange,n.thresholds.full]].map(([t,r,a,o])=>r!=null&&Number.isFinite(r)&&r>=i.from&&r<=i.to?(0,Y.jsxs)(`g`,{children:[(0,Y.jsx)(`circle`,{"data-crossing":t,"data-scenario":Uu(e),"data-multiple":r,cx:C(r),cy:w(o),r:`4`,fill:Hu(n,e.label),stroke:`var(--lm-surface)`,strokeWidth:`2`}),e.selected&&pe(a&&ae(a)?u(a,n.searchMax,!0):l(r,n.searchMax),C(a&&ae(a)?Math.max(i.from,a.low):r),w(o)-8)]},`${Uu(e)}/${t}`):null)),se!=null&&(0,Y.jsx)(`line`,{x1:C(se),x2:C(se),y1:_.t,y2:_.t+x,stroke:`var(--lm-fg)`,strokeOpacity:`.8`}),(0,Y.jsx)(`rect`,{x:_.l,y:_.t,width:b,height:x,fill:`transparent`,onPointerMove:te,onPointerDown:te,onPointerLeave:()=>d(null)})]}),c!=null&&se!=null&&(0,Y.jsxs)(`div`,{className:`lm-tip`,role:`status`,ref:h,style:{left:C(se)+10,top:_.t},children:[(0,Y.jsxs)(`b`,{children:[s(se),`×`,Wu(n,se)&&` · ${Wu(n,se)}`]}),i.lines.map(e=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(n,e.label)}}),(0,Y.jsx)(`strong`,{children:e.envelope[c][1]==null?`off`:f(e.envelope[c][1])}),` `,Uu(e)]},Uu(e))),D?.components.map(e=>(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[(0,Y.jsx)(`strong`,{children:e.points[c][1]==null?`off`:f(e.points[c][1])}),` `,e.name]},e.id))]})]})]})}var Qu={off:`var(--lm-line)`,ok:`var(--lm-ok)`,warn:`var(--lm-warn)`,over:`var(--lm-drop)`},$u=e=>[`accent`,`alt`,`ok`,`warn`,`drop`,`muted`].includes(e)?`var(--lm-${e})`:e;function ed({lm:e,legend:t=!0,onNodeClick:n,selected:r=null}){let{scene:i,engine:a,reducedMotion:o}=e,s=(0,J.useRef)(n);s.current=n;let[c]=(0,J.useState)(()=>e=>s.current?.(e)),l=(0,J.useRef)(null),u=(0,J.useRef)(null),d=(0,J.useRef)(null),f=(0,J.useRef)(null),p=(0,J.useRef)(null),m=(0,J.useRef)(null),h=(0,J.useRef)(null),g=e.fullScreen,[_,v]=(0,J.useState)(null),y=(0,J.useId)();(0,J.useLayoutEffect)(()=>{i&&a.setScene(i,{cut:o})},[a,i,o]);let b=(0,J.useSyncExternalStore)(a.subscribe,()=>a.frameId),x=a.frame,S=(0,J.useSyncExternalStore)(a.subscribe,()=>a.handover);(0,J.useEffect)(()=>{a.bind(l.current,u.current)},[a,x,o]),(0,J.useLayoutEffect)(()=>{a.applyCamera(),a.drawHalos()}),(0,J.useEffect)(()=>{e.root&&a.readColors(e.root)},[a,i,e.root]),(0,J.useEffect)(()=>{a.drawnValues=JSON.stringify(e.values),a.drawnFocus=e.focus,a.drawnFrame=b}),(0,J.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(()=>a.resize());return t.observe(e),()=>t.disconnect()},[a]);let C=()=>{let e=d.current,t=p.current,n=a.camera,r=h.current;if(!n&&!a.cue)return;if(!e||!t||!a.frame||e.scrollHeight<=e.clientHeight){r?.style.removeProperty(`top`),r?.style.removeProperty(`bottom`);return}let i=t.clientHeight/a.frame.height;n&&(e.scrollTop=t.offsetTop+(n.y+n.h/2)*i-e.clientHeight/2),r&&(r.style.top=`${Math.max(0,e.scrollTop-t.offsetTop+(f.current?.offsetHeight??0))}px`,r.style.bottom=`auto`)};(0,J.useEffect)(()=>{let e=0,t=0,n=r=>{let i=t?Math.min(.05,(r-t)/1e3):0;t=r,!a.paused&&a.scene&&(a.step(i,{particles:!o}),a.draw({particles:!o}),C()),e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[a,o]);let w=(0,J.useRef)(!1);(0,J.useEffect)(()=>{w.current&&!g&&m.current?.focus(),w.current=g},[g]),(0,J.useEffect)(()=>{let t=d.current,n=f.current,r=e.root;if(!g||!i||!t||!n||!r)return;let a=e=>Number.parseFloat(e)||0,o=()=>{let e=getComputedStyle(r),o=a(e.paddingTop)+a(e.paddingBottom),s=t=>{let n=getComputedStyle(t);n.display!==`none`&&n.position!==`absolute`&&n.position!==`fixed`&&(o+=a(e.rowGap)+(a(n.flexGrow)>0?a(n.minHeight):t.offsetHeight))};for(let e of r.children)e!==t&&s(e);getComputedStyle(r,`::after`).content!==`none`&&(o+=a(e.rowGap));let c=r.clientHeight-o-n.offsetHeight-a(getComputedStyle(t).rowGap),l=Math.min(t.clientWidth,c*i.width/i.height);t.style.setProperty(`--lm-fit`,`${Math.max(0,Math.floor(l))}px`)},s=new ResizeObserver(o),c=()=>{s.disconnect(),s.observe(n),s.observe(r);for(let e of r.children)s.observe(e)};c();let l=new MutationObserver(()=>{c(),o()});return l.observe(r,{childList:!0,attributeFilter:[`data-mode`]}),()=>{s.disconnect(),l.disconnect(),t.style.removeProperty(`--lm-fit`)}},[g,i,e.root]);let{setFullScreenMode:T,fullScreenMode:E}=e,D=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let t=e.root;if(!g||!t)return;let n=e=>{if(e.key!==`f`&&e.key!==`F`||e.ctrlKey||e.metaKey||e.altKey||td(e.composedPath()[0]??null)||t.querySelector(`:scope > [data-drawer]`)||(e.preventDefault(),e.repeat))return;let n=E===`focus`?`panels`:`focus`;document.activeElement?.closest(`.lm-dock, .lm-line`)&&D.current?.querySelector(`[data-mode="${n}"]`)?.focus(),T(n)};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[g,E,T,e.root]),(0,Y.jsxs)(`div`,{className:`lm-wrap`,ref:d,children:[(0,Y.jsxs)(`div`,{className:`lm-bar`,ref:f,children:[t?(0,Y.jsx)(nd,{lm:e}):(0,Y.jsx)(`span`,{}),(0,Y.jsxs)(`span`,{className:`lm-tools`,children:[g&&(0,Y.jsx)(`fieldset`,{className:`lm-modes`,"aria-label":`Full screen shows (F)`,ref:D,children:[`panels`,`focus`].map(e=>(0,Y.jsx)(`button`,{type:`button`,"data-mode":e,"aria-pressed":E===e,"aria-keyshortcuts":`F`,onClick:()=>T(e),children:e===`panels`?`Panels`:`Focus`},e))}),(0,Y.jsx)(`button`,{type:`button`,className:`lm-btn`,onClick:e.toggleFullScreen,"aria-pressed":g,ref:m,children:g?`✕ Close`:`⤢ Full screen`})]})]}),(0,Y.jsxs)(`div`,{className:`lm-board`,ref:p,style:x?{aspectRatio:`${x.width} / ${x.height}`}:{minHeight:240},children:[x&&(0,Y.jsx)(id,{lm:e,scene:x,hand:S,svgRef:l,rates:o,setTip:v,onClick:n?c:void 0,selected:r}),(0,Y.jsx)(`canvas`,{ref:u,hidden:o}),e.cue&&(0,Y.jsxs)(`div`,{className:`lm-title`,"data-top":e.cue.top||void 0,"aria-hidden":`true`,ref:h,children:[(0,Y.jsx)(`b`,{children:e.cue.title}),e.cue.detail&&(0,Y.jsx)(`span`,{children:e.cue.detail})]})]}),x&&_&&!e.storyPlaying&&(0,Y.jsx)(pd,{lm:e,scene:x,id:_.id,board:p.current,detailId:y})]})}function td(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement&&![`range`,`checkbox`,`radio`,`button`,`submit`,`reset`,`image`,`file`,`color`].includes(e.type):!1}function nd({lm:e}){let t=e.view.def.flows,n=Object.values(e.ev.overload).some(e=>e.merge)||Object.values(e.ev.stages).some(e=>e.kind===`fanout`);return(0,Y.jsxs)(`div`,{className:`lm-legend`,children:[Object.entries(t).map(([e,t])=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:$u(t.color)}}),t.label??e]},e)),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-ok)`}}),`done`]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-drop)`}}),`dropped or rejected`]}),n&&(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-muted)`}}),`superseded or unread`]}),(0,Y.jsx)(`span`,{children:e.reducedMotion?`line width: rate`:`one dot ≈ ${e.engine.sim.dotScale.toLocaleString(`en-US`)} a second · ${e.engine.sim.speed}× speed`})]})}var rd=(e,t)=>Ou(e.ev,t),id=(0,J.memo)(function({lm:e,scene:t,hand:n,svgRef:r,rates:i,setTip:a,onClick:o,selected:s}){let c=(0,J.useId)().replace(/:/g,``),{labels:u,ev:d}=e,p=t=>{let n=rd(e,t);return n?d.components[n]?.state??null:null},m=t=>{let n=rd(e,t),r=n?d.components[n]:void 0,i=u.nodes[t.id]?.title;if(!r)return o?{tabIndex:0,role:`button`,className:`lm-node`,"aria-label":i??t.id,"aria-pressed":s===t.id,onClick:()=>o(t.id),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),o(t.id))}}:{};let c=()=>{a(e=>e?.pinned&&e.id===t.id?null:{id:t.id,pinned:!0}),o?.(t.id)};return{tabIndex:0,role:`button`,className:`lm-node`,"aria-label":`${i&&i!==r.name?`${i}, `:``}${r.name}: ${r.util==null?`switched off`:f(r.util)}`,...o?{"aria-pressed":s===t.id}:{},onPointerEnter:e=>e.pointerType===`mouse`&&a(e=>e?.pinned?e:{id:t.id,pinned:!1}),onPointerLeave:e=>e.pointerType===`mouse`&&a(e=>e?.pinned?e:null),onFocus:()=>a(e=>e?.pinned?e:{id:t.id,pinned:!1}),onBlur:()=>a(e=>e?.pinned?e:null),onClick:c,onKeyDown:e=>{e.key===`Escape`&&a(null),(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),c())}}},h=t.nodes.map(e=>u.nodes[e.id]?.title).join(`, `),g=yu(d,e.model),_=e.scene&&new Set(e.scene.nodes.map(e=>e.id)),v=n=>t.nodes.filter(t=>rd(e,t)===n&&(!_||_.has(t.id))),y=d.firstLimit,b=n&&n.from!==y?.id&&d.components[n.from]?d.components[n.from]:null,x=b?v(b.id):[],S=b&&g.get(b.id),C=b&&(S?S.text:`now ${l(vu(b),e.model.searchMax)}`);return(0,Y.jsxs)(`svg`,{ref:r,viewBox:`0 0 ${t.width} ${t.height}`,role:`group`,"aria-label":`Diagram: ${h}`,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`marker`,{id:c,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,Y.jsx)(`path`,{d:`M0 0 L10 5 L0 10 z`,fill:`var(--lm-muted)`})})}),i&&(0,Y.jsx)(sd,{lm:e,scene:t}),t.edges.map(e=>(0,Y.jsx)(od,{e,text:u.edges[e.id],marker:c},e.id)),t.nodes.map(t=>(0,Y.jsx)(ld,{n:t,state:p(t),title:u.nodes[t.id]?.title,sub:u.nodes[t.id]?.sub,lm:e,focused:!!e.focus&&rd(e,t)===e.focus,selected:s===t.id,handlers:m(t)},t.id)),b&&x.map(e=>(0,Y.jsx)(dd,{n:e,kind:`was`,component:b.id},`was-${e.id}`)),y&&v(y.id).map((e,t)=>(0,Y.jsx)(dd,{n:e,kind:`limit`,component:y.id,tag:t?void 0:g.get(y.id)?.text},e.id)),[...g].map(([e,t])=>{let n=t.rank>1&&e!==b?.id?v(e)[0]:void 0;return n&&(0,Y.jsx)(fd,{n,text:t.text},e)}),C&&x[0]&&(0,Y.jsx)(fd,{n:x[0],text:C,was:!S})]})}),ad=e=>e.map(([e,t],n)=>`${n?`L`:`M`}${e} ${t}`).join(` `);function od({e,text:t,marker:n}){let r=e.draw!=null&&e.draw<1;return(0,Y.jsxs)(`g`,{opacity:e.fade,children:[(0,Y.jsx)(`path`,{d:ad(e.points),fill:`none`,stroke:`var(--lm-muted)`,strokeOpacity:`.7`,markerEnd:r?void 0:`url(#${n})`,...r?{pathLength:1,strokeDasharray:1,strokeDashoffset:1-e.draw}:{}}),e.label&&t&&(0,Y.jsx)(`text`,{x:e.label.x+e.label.w/2,y:e.label.y+e.label.h/2+4,textAnchor:`middle`,fontSize:`11`,fill:`var(--lm-muted)`,children:t})]})}function sd({lm:e,scene:t}){let{ev:n}=e,r=e.view.def.flows,i=Math.max(1e-9,...Object.values(n.flows)),a=[];for(let e of Object.keys(r)){let o=[t.flowFrom[e],...(n.routes[e]??[]).map(e=>t.stageNode[e])].filter((e,t,n)=>e&&e!==n[t-1]),s=n.flows[e]??0,c=o.slice(1).map((e,t)=>[o[t],e,s]),l=(n.routes[e]??[]).at(-1),u=l?n.stages[l]:void 0;if(u?.kind===`fanout`)for(let n of u.to[e]??[])c.push([t.stageNode[l],t.stageNode[n.stage],s*n.share]);for(let[n,o,s]of c){let c=t.edges.find(e=>e.from===n&&e.to===o);c&&a.push((0,Y.jsx)(`path`,{d:ad(c.points),fill:`none`,stroke:$u(r[e].color),strokeOpacity:`.45`,strokeWidth:1.5+6*Math.min(s,i)/i},`${e}:${c.id}`))}}return(0,Y.jsx)(`g`,{children:a})}function cd({s:e,children:t,anchor:n=`middle`,fill:r=`currentColor`,opacity:i}){return(0,Y.jsx)(`text`,{x:e.x,y:e.y,fontSize:e.size,fontWeight:e.weight,textAnchor:n,fill:r,opacity:i,children:t})}function ld({n:e,state:t,title:n,sub:r,lm:i,focused:a,selected:o,handlers:s}){let c=t?Qu[t]:`var(--lm-line)`,l=i.view.def.flows,u=e.kind===`pool`?i.ev.stages[e.stages[0]??``]:void 0,d=u?.kind===`workers`?u.running:e.members.length,f=t=>t>=d&&t<(u?.kind===`workers`?u.pods:e.members.length),p=e.fade==null?void 0:`translate(${e.x+e.w/2} ${e.y+e.h/2}) scale(${.92+.08*e.fade}) translate(${-e.x-e.w/2} ${-e.y-e.h/2})`;return(0,Y.jsxs)(`g`,{style:{color:`var(--lm-fg)`},opacity:e.fade,transform:p,"data-node":e.id,"data-focus":a||void 0,"data-selected":o||void 0,...s,children:[e.shape===`cylinder`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`path`,{d:`M${e.x} ${e.y+6} A${e.w/2} 6 0 0 1 ${e.x+e.w} ${e.y+6} V${e.y+e.h-6} A${e.w/2} 6 0 0 1 ${e.x} ${e.y+e.h-6} Z`,fill:`var(--lm-surface)`,stroke:c,strokeWidth:`1.5`}),(0,Y.jsx)(`path`,{d:`M${e.x} ${e.y+6} A${e.w/2} 6 0 0 0 ${e.x+e.w} ${e.y+6}`,fill:`none`,stroke:c,strokeWidth:`1.5`})]}):(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`6`,fill:`var(--lm-surface)`,stroke:c,strokeWidth:`1.5`}),(0,Y.jsx)(cd,{s:e.title,children:n}),e.sub&&r&&(0,Y.jsx)(cd,{s:e.sub,fill:`var(--lm-muted)`,children:r}),e.members.map((e,t)=>(0,Y.jsxs)(`g`,{"data-idle":f(t)||void 0,opacity:f(t)?.45*(e.fade??1):e.fade,children:[(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`4`,fill:`none`,stroke:`var(--lm-line)`,strokeDasharray:f(t)?`3 3`:void 0}),(0,Y.jsx)(cd,{s:e.spot,anchor:`start`,fill:`var(--lm-muted)`,children:e.label})]},e.label)),e.groups.map((e,t)=>(0,Y.jsx)(cd,{s:e.spot,anchor:`start`,fill:$u(l[e.flow]?.color??`muted`),opacity:e.fade,children:e.text},`${e.flow}#${t}`)),e.cells.map(e=>(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`1.5`,opacity:e.fade,fill:`var(--lm-lane)`,stroke:$u(l[e.flow]?.color??`muted`),strokeOpacity:`.6`},`${e.stage}/${e.flow}/${e.index}`)),e.slots.map(t=>(0,Y.jsxs)(`g`,{opacity:t.fade,children:[(0,Y.jsx)(`rect`,{x:t.x,y:t.y,width:t.w,height:t.h,rx:`2`,fill:`var(--lm-surface)`,stroke:`currentColor`,strokeOpacity:`.45`}),(0,Y.jsx)(`rect`,{"data-slot":t.index,"data-stage":e.stages[0],"data-y":t.y,"data-s":t.w,x:t.x+1,y:t.y+t.h-1,width:t.w-2,height:0,rx:`1`,fill:`var(--lm-accent)`})]},t.index)),o&&(0,Y.jsx)(`rect`,{className:`lm-selected`,x:e.x-3,y:e.y-3,width:e.w+6,height:e.h+6,rx:`8`,fill:`none`,stroke:`var(--lm-accent)`,strokeWidth:`2.5`}),a&&(0,Y.jsx)(`rect`,{className:`lm-focus`,x:e.x-5,y:e.y-5,width:e.w+10,height:e.h+10,rx:`9`,fill:`none`,stroke:`var(--lm-accent)`,strokeWidth:`2`,strokeDasharray:`5 4`})]})}var ud=(e,t)=>Math.ceil(12+e.length*t);function dd({n:e,kind:t,component:n,tag:r}){let i={x:e.x-7,y:e.y-7,width:e.w+14,height:e.h+14,rx:10},a=r?ud(r,5.6):0,o=e.x+e.w+7-a-8;return(0,Y.jsxs)(`g`,{className:`lm-halo`,"data-halo":t,"data-component":n,"data-fade":e.fade??1,pointerEvents:`none`,children:[(0,Y.jsxs)(`g`,{"data-ring":``,"data-cx":e.x+e.w/2,"data-cy":e.y+e.h/2,children:[(0,Y.jsx)(`rect`,{...i,"data-glow":``,fill:`none`,stroke:`var(--lm-drop)`,strokeWidth:`10`,strokeOpacity:`.22`}),(0,Y.jsx)(`rect`,{...i,fill:`none`,stroke:`var(--lm-drop)`,strokeWidth:`2.5`})]}),r&&(0,Y.jsxs)(`g`,{"data-tag":r,children:[(0,Y.jsx)(`rect`,{x:o,y:i.y-7.5,width:a,height:`15`,rx:`3`,fill:`var(--lm-drop)`}),(0,Y.jsx)(`text`,{x:o+a/2,y:i.y+3.5,textAnchor:`middle`,fontSize:`9.5`,fontWeight:`600`,letterSpacing:`.06em`,fill:`var(--lm-surface)`,children:r})]})]})}function fd({n:e,text:t,was:n}){let r=ud(t,4.9),i=e.x+e.w-r-6;return(0,Y.jsx)(`g`,{className:`lm-badge`,"data-badge":t,"data-was":n||void 0,opacity:e.fade,pointerEvents:`none`,children:(0,Y.jsxs)(`g`,{"data-show":``,children:[(0,Y.jsx)(`rect`,{x:i,y:e.y-7,width:r,height:`14`,rx:`7`,fill:`var(--lm-surface)`,stroke:`var(--lm-muted)`}),(0,Y.jsx)(`text`,{x:i+r/2,y:e.y+3,textAnchor:`middle`,fontSize:`8.5`,fontWeight:`600`,fill:`var(--lm-muted)`,children:t})]})})}function pd({lm:e,scene:t,id:n,board:r,detailId:i}){let{model:a,ev:o}=e,d=t.nodes.find(e=>e.id===n),p=d&&rd(e,d),m=Ku(e),h=a.scenarios.length>1?m.rows:[];(0,J.useEffect)(()=>{let e=r?.querySelector(`[data-node="${CSS.escape(n)}"]`);return e?.setAttribute(`aria-describedby`,i),()=>e?.removeAttribute(`aria-describedby`)},[r,n,i]);let g=p?o.components[p]:void 0,_=(0,J.useRef)(null),v=d&&`${d.x} ${d.y} ${d.w} ${d.h}`;if((0,J.useLayoutEffect)(()=>{let e=_.current,n=e?.offsetParent;if(!e||!d||!r||!(n instanceof HTMLElement))return;let i=()=>{let i=r.clientWidth/t.width,a=n.getBoundingClientRect(),o=e=>e-a.top-n.clientTop+n.scrollTop,s=0,c=innerHeight;for(let e=n;e;e=e.parentElement){if(getComputedStyle(e).overflowY===`visible`)continue;let t=e.getBoundingClientRect();s=Math.max(s,t.top),c=Math.min(c,t.bottom)}let[l,u]=[o(s)+4,o(c)-4],f=e.offsetHeight,p=r.offsetTop+d.y*i,m=r.offsetTop+(d.y+d.h)*i,h=m+6,g=p-6-f,_=(d.y+d.h/2<t.height/2?[h,g]:[g,h]).find(e=>e>=l&&e+f<=u),v=u-m>=p-l?h:g;e.style.top=`${Math.max(l,Math.min(_??v,u-f))}px`,e.style.left=`${Math.max(0,Math.min(r.offsetLeft+d.x*i,n.clientWidth-e.offsetWidth))}px`};i();let a=new ResizeObserver(i);return a.observe(e),a.observe(r),document.addEventListener(`scroll`,i,{capture:!0,passive:!0}),addEventListener(`resize`,i),()=>{a.disconnect(),document.removeEventListener(`scroll`,i,{capture:!0}),removeEventListener(`resize`,i)}},[v,r,t]),!d||!g||!r)return null;let y=(e,t)=>e?N(e,a.searchMax,a.dateAt):l(t,a.searchMax),b=e=>Math.abs(e)>=1e3?c(e):s(e),x=g.capacity,S=yu(o,a).get(g.id);return(0,Y.jsxs)(`div`,{id:i,className:`lm-tip lm-detail`,role:`tooltip`,ref:_,children:[(0,Y.jsxs)(`b`,{children:[g.name,S&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":S.rank===1?`first`:`rank`,children:S.word})]}),g.util==null||!x?(0,Y.jsx)(`span`,{children:`switched off`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:f(g.util)}),` · `,b(g.demand??0),` of `,s(x.value),` `,x.unit,x.within?` ±${f(x.within)}`:``]}),(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[`capacity`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":x.provenance,children:x.provenance}),x.source?`, ${x.source}`:``]}),(0,Y.jsxs)(`span`,{children:[f(a.thresholds.target),` at `,y(g.targetRange,g.target)]}),(0,Y.jsxs)(`span`,{children:[f(a.thresholds.full),` at `,y(g.fullRange,g.full)]}),md(e,d).map(e=>(0,Y.jsx)(`span`,{children:e},e)),g.over&&(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[`Past `,f(a.thresholds.full),`: `,g.over,`.`]})]}),h.length>0&&(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[f(a.thresholds.target),` by scenario:`,` `,h.map((e,t)=>{let n=e.components.find(e=>e.id===p);return(0,Y.jsxs)(`span`,{className:`lm-nowrap`,children:[t>0&&` · `,(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(a,e.label)}}),e.label,` `,n?.targetRange==null?`off`:u(n.targetRange,a.searchMax,!0)]},e.label)})]})]})}function md(e,t){let n=[];for(let r of t.stages){let t=e.ev.stages[r];t?.kind===`workers`&&t.autoscale&&n.push(`${t.running} of ${t.pods} pods running, each held near ${f(t.autoscale.target)}`),t?.kind===`cache`&&n.push(`${f(t.hit)} answered here`),(t?.kind===`pass`||t?.kind===`limit`||t?.kind===`cache`)&&t.shed>0&&n.push(`${f(t.shed)} of what reaches it turned away`)}return n}var hd=null;function gd(){return hd??=_d(()=>new Worker(new URL(new URL(`elk.worker-4x4hA5S2.js`,import.meta.url).href,``+import.meta.url),{type:`module`,name:`loadmap-elk`})),hd}function _d(e){let t=null,n=typeof Worker>`u`,r=!1,i=0,a=new Map,o=e=>{r||typeof Worker>`u`||(r=!0,console.info(`loadmap: the layout runs on the main thread, slower to start: the ELK worker did not start (${e}). A page can hand one in, <Loadmap elk={workerElk(() => new Worker(…))}>; a Content-Security-Policy must allow it (worker-src).`))},s=e=>{o(e),n=!0,t?.terminate(),t=null;for(let[e,t]of a)a.delete(e),Ve().then(e=>e.layout(t.graph)).then(t.resolve,t.reject)},c=()=>{if(t||n)return t;try{t=e()}catch(e){return s(e instanceof Error?e.message:String(e)),null}return t.onmessage=({data:e})=>{let t=a.get(e.id);t&&(a.delete(e.id),e.error==null?t.resolve(e.graph):t.reject(Error(e.error)))},t.onerror=e=>{e.preventDefault(),s(e.message||`it failed to load or to run`)},t};return{layout(e){let t=c();return t?new Promise((n,r)=>{let o=i++;a.set(o,{graph:e,resolve:n,reject:r}),t.postMessage({id:o,graph:e})}):(o(`no Worker here`),Ve().then(t=>t.layout(e)))}}}function vd({lm:e}){let{measure:t}=e.ev;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`p`,{className:`lm-verdict`,"data-tier":e.ev.verdict.tier,"aria-live":`polite`,children:e.ev.verdict.text}),t&&(0,Y.jsx)(`p`,{className:`lm-measure`,"data-component":t.component,children:t.text})]})}var yd=e=>e?.within?`±${f(e.within)}`:``;function bd({lm:e,title:t=`Where it runs out, in order`}){let{ev:n,model:r}=e,i=Math.max(1.5,r.thresholds.full*1.5),a=e=>`${e/i*100}%`,o=(e,t)=>e?u(e,r.searchMax,!0):l(t,r.searchMax);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:t}),(0,Y.jsxs)(`div`,{className:`lm-scale`,"aria-hidden":`true`,children:[(0,Y.jsx)(`span`,{}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{style:{left:0,transform:`none`},children:`0`}),(0,Y.jsxs)(`span`,{style:{left:a(r.thresholds.target)},children:[f(r.thresholds.target),` target`]}),(0,Y.jsx)(`span`,{style:{left:a(r.thresholds.full)},children:f(r.thresholds.full)}),(0,Y.jsx)(`span`,{style:{left:`100%`,transform:`translateX(-100%)`},children:f(i)})]}),(0,Y.jsx)(`span`,{})]}),(0,Y.jsx)(`div`,{className:`lm-limits`,children:n.ranked.map(e=>(0,Y.jsxs)(`div`,{className:`lm-lim`,"data-component":e.id,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`b`,{children:[e.name,e===n.firstLimit&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`first`,children:`limit`}),e.capacity?.provenance===`estimated`?(0,Y.jsxs)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:[`estimate`,e.capacity.within?` ${yd(e.capacity)}`:``]}):!!e.capacity?.within&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`range`,children:yd(e.capacity)})]}),(0,Y.jsx)(`span`,{className:`lm-sub`,children:e.describe??(e.capacity?`${s(e.capacity.value)} ${e.capacity.unit}`:`switched off`)})]}),(0,Y.jsxs)(`div`,{className:`lm-track`,role:`img`,"aria-label":`${e.name} at ${e.util==null?`off`:f(e.util)}`,children:[(0,Y.jsx)(`div`,{className:`lm-fill`,"data-state":e.state,style:{width:`${Math.min(100,(e.util??0)/i*100)}%`}}),(0,Y.jsx)(`div`,{className:`lm-tick`,style:{left:a(r.thresholds.target)}}),(0,Y.jsx)(`div`,{className:`lm-tick`,style:{left:a(r.thresholds.full)}})]}),(0,Y.jsxs)(`div`,{className:`lm-val`,children:[e.util==null?`—`:`${f(e.util)} · ${Ed(e.demand??0)} ${e.capacity?.unit??``}`,(0,Y.jsx)(`small`,{children:e.util==null?`switched off`:`${f(r.thresholds.target)} at ${o(e.targetRange,e.target)} · full at ${o(e.fullRange,e.full)}`})]})]},e.id))})]})}function xd({lm:e}){let[,t]=(0,J.useState)(0);(0,J.useEffect)(()=>{let e=setInterval(()=>t(e=>e+1),250);return()=>clearInterval(e)},[]);let{ev:n,engine:r,model:i}=e,a=r.sim,o=e=>i.def.flows[e]?.label??e,l=[];for(let e of Object.values(n.stages)){if(e.kind===`queue`)for(let t of i.flowIds.filter(t=>n.routes[t]?.includes(e.id))){let r=a.queue(e.id,t),i=n.overload[t]??{};l.push({key:`${e.id}/${t}/lag`,value:p(r.lag),label:`${o(t)} lag in ${e.label}`,state:r.lag>60?`over`:r.lag>5?`warn`:`ok`}),i.merge&&l.push({key:`${e.id}/${t}/merge`,value:c(r.merged),label:`${o(t)} superseded /s (${i.merge.reason??`newest kept`})`,state:r.merged>.5?`warn`:`ok`}),i.drop&&l.push({key:`${e.id}/${t}/drop`,value:c(r.dropped),label:`${o(t)} dropped /s (${i.drop.reason??`too old`})`,state:r.dropped>.5?`over`:`ok`})}if(e.kind===`workers`){let t=a.busy(e.id);l.push({key:`${e.id}/busy`,value:f(t),label:`${e.label} busy`,state:t>.95?`over`:t>.5?`warn`:`ok`}),e.autoscale&&l.push({key:`${e.id}/pods`,value:`${e.running} of ${e.pods}`,label:`${e.label} pods running`,state:e.running<e.pods?`ok`:(n.components[e.component]?.util??0)>i.thresholds.full?`over`:`warn`})}e.kind===`cache`&&l.push({key:`${e.id}/hits`,value:c(a.arriving(e.id)*(1-a.shed(e.id))*e.hit),label:`answered at ${e.label} /s (${f(e.hit)} hits)`,state:`ok`}),(e.kind===`pass`||e.kind===`limit`||e.kind===`cache`)&&a.shed(e.id)>0&&l.push({key:`${e.id}/shed`,value:f(a.shed(e.id)),label:`rejected at ${e.label}`,state:`over`})}for(let e of i.flowIds){let t=n.retry[e];if(!t||!(t.rate>0))continue;let r=t.attempts/t.rate;l.push({key:`${e}/attempts`,value:`${s(r)}×`,label:`${o(e)} attempts per ${i.def.flows[e]?.unit??`unit`}`,state:r>1.05?`warn`:`ok`}),l.push({key:`${e}/failed`,value:f(t.failed),label:`${o(e)} failing after ${t.times} ${t.times===1?`retry`:`retries`}`,state:t.failed>.005?`over`:`ok`})}return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Live`}),(0,Y.jsx)(`div`,{className:`lm-meters`,children:l.map(e=>(0,Y.jsxs)(`div`,{className:`lm-meter`,"data-state":e.state,children:[(0,Y.jsx)(`b`,{children:e.value}),(0,Y.jsx)(`span`,{title:e.label,children:e.label})]},e.key))})]})}function Sd({lm:e}){let t=e.model.load,n=e.values.load;return(0,Y.jsxs)(`label`,{className:`lm-range`,children:[(0,Y.jsxs)(`span`,{children:[t.label,` `,(0,Y.jsxs)(`output`,{children:[s(n),`×`]})]}),(0,Y.jsx)(`input`,{type:`range`,min:t.min,max:t.max,step:t.step,value:n,onChange:t=>e.setValues({load:Number(t.target.value)})})]})}function Cd({lm:e}){let{model:t,values:n,setValues:r,ev:i}=e,a=n;return(0,Y.jsxs)(`div`,{className:`lm-card lm-controls`,children:[(0,Y.jsx)(`h3`,{children:`Load`}),(0,Y.jsx)(Sd,{lm:e}),(0,Y.jsx)(`div`,{className:`lm-presets`,children:i.presets.map(e=>{let t=Object.entries(e.values).every(([e,t])=>a[e]===t);return(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>r(e.values),children:e.label},e.label)})}),t.params.length>1&&(0,Y.jsx)(`h3`,{children:`Design`}),t.params.map(({id:e,def:n})=>{if(n.kind===`load`)return null;let i=t.isEnabled(e,a),o=n.tag&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:n.tag});return n.kind===`switch`?(0,Y.jsxs)(`label`,{className:`lm-switch${i?``:` lm-off`}`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:!!a[e],disabled:!i,onChange:t=>r({[e]:t.target.checked})}),(0,Y.jsxs)(`span`,{children:[n.label,o]}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e):n.kind===`select`?(0,Y.jsxs)(`label`,{className:`lm-select${i?``:` lm-off`}`,children:[(0,Y.jsxs)(`span`,{children:[n.label,o]}),(0,Y.jsx)(`select`,{value:String(a[e]),disabled:!i,onChange:t=>{let i=n.options.find(e=>String(e)===t.target.value);r({[e]:i})},children:n.options.map(e=>(0,Y.jsx)(`option`,{value:String(e),children:n.format?n.format(e):String(e)},String(e)))}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e):(0,Y.jsxs)(`label`,{className:`lm-range${i?``:` lm-off`}`,children:[(0,Y.jsxs)(`span`,{children:[n.label,o,` `,(0,Y.jsx)(`output`,{children:n.format?n.format(a[e]):s(a[e])})]}),(0,Y.jsx)(`input`,{type:`range`,min:n.min,max:n.max,step:n.step,value:a[e],disabled:!i,onChange:t=>r({[e]:Number(t.target.value)})}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e)})]})}function wd({lm:e,extra:t=[]}){return(0,Y.jsxs)(`div`,{className:`lm-card`,children:[(0,Y.jsx)(`h3`,{children:`What this assumes`}),(0,Y.jsxs)(`ul`,{className:`lm-facts`,children:[t.map((e,t)=>(0,Y.jsx)(`li`,{children:e},t)),e.ev.assumptions.map(e=>(0,Y.jsx)(`li`,{children:Td(e)},e.kind===`capacity`?`c:${e.component}`:`f:${e.name}`))]})]})}function Td(e){if(e.kind===`capacity`){let t=e.capacity;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{children:[e.name,`:`]}),` `,s(t.value),` `,t.unit,t.within?` ${yd(t)}`:``,`,`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":t.provenance,children:t.provenance}),t.source?` (${t.source})`:``,`.`]})}let t=e.fit;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{children:[e.name,`:`]}),` `,t.y,` = `,Dd(t.a),` + `,Dd(t.b),` × `,t.x,`, r² `,t.r2.toFixed(3),` over `,t.n,` points,`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":`measured`,children:`measured`}),t.source?` (${t.source})`:``,`.`]})}var Ed=e=>Math.abs(e)>=1e3?c(e):s(e),Dd=e=>Number(e.toPrecision(3)).toString(),Od={verdict:`Verdict`,live:`Live`,limits:`Limits`,controls:`Load`,headroom:`Headroom`,compare:`Compare`,assumptions:`Assumptions`};function kd({lm:e,verdict:t=!0,extra:n=0,open:r,assumptions:i}){let{ev:a,model:o,values:c}=e,d=a.firstLimit,p=a.target,m=`${f(o.thresholds.target)} target`,h=d?.capacity,g=h?h.provenance===`estimated`?`est${h.within?` ${yd(h)}`:``}`:yd(h):``,_=a.ranked.filter(e=>(e.util??0)>o.thresholds.full),v=p?Gu(o,p):``,y=a.assumptions.filter(e=>e.kind===`capacity`&&e.capacity.provenance===`estimated`).length;return(0,Y.jsxs)(Y.Fragment,{children:[t&&(0,Y.jsx)(`p`,{className:`lm-headline`,title:a.verdict.text,"aria-live":`polite`,children:!d||!p?a.verdict.text:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{className:`lm-num`,children:[s(c.load),`×`]}),` ·`,` `,c.load<p.low?(0,Y.jsxs)(Y.Fragment,{children:[`the `,m,` holds to `,(0,Y.jsx)(`b`,{className:`lm-num`,children:u(p,o.searchMax,!0)}),v&&` (${v})`]}):(0,Y.jsxs)(Y.Fragment,{children:[`past the `,m,` from `,(0,Y.jsx)(`b`,{className:`lm-num`,children:l(p.low,o.searchMax)})]}),` `,`· limited by `,(0,Y.jsx)(`b`,{children:d.name}),g&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":h?.provenance===`estimated`?`estimated`:`range`,children:g}),_.length>0&&(0,Y.jsxs)(Y.Fragment,{children:[` `,`· `,(0,Y.jsx)(`b`,{children:_.map(e=>e.name).join(`, `)}),` past capacity`]})]})}),r&&t&&(0,Y.jsx)(`button`,{type:`button`,className:`lm-link`,onClick:e=>r(`verdict`,e.currentTarget),children:`Why ›`}),r&&i&&(0,Y.jsxs)(`button`,{type:`button`,className:`lm-link`,onClick:e=>r(`assumptions`,e.currentTarget),children:[`What this assumes · `,a.assumptions.length+n,y>0&&` (${y} estimated)`,` ›`]})]})}var Ad=[`controls`,`live`,`limits`,`headroom`,`compare`];function jd({lm:e,panels:t,open:n}){let r=Ad.filter(e=>t.includes(e)),[i,a]=(0,J.useState)(null);if(!r.length)return null;let o=i&&r.includes(i)?i:r[0];return(0,Y.jsxs)(`div`,{className:`lm-dock`,children:[(0,Y.jsx)(`fieldset`,{className:`lm-tabs`,"aria-label":`Panels`,children:r.map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":e===o,onClick:()=>a(e),children:Od[e]},e))}),r.map(t=>(0,Y.jsx)(Md,{lm:e,panel:t,open:n,active:t===o},t))]})}function Md({lm:e,panel:t,open:n,active:r}){let i=(0,J.useRef)(null),a=(0,J.useRef)(null);return Pd(i,a),(0,Y.jsxs)(`div`,{className:`lm-mini`,"data-mini":t,"data-active":r||void 0,ref:i,children:[t===`controls`?(0,Y.jsx)(Cd,{lm:e}):t===`compare`?(0,Y.jsx)(Ju,{lm:e}):(0,Y.jsx)(`div`,{className:`lm-card`,children:t===`live`?(0,Y.jsx)(xd,{lm:e}):t===`limits`?(0,Y.jsx)(Fd,{lm:e}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Headroom`}),(0,Y.jsx)(Id,{lm:e})]})}),(0,Y.jsx)(`button`,{type:`button`,className:`lm-more`,ref:a,"aria-label":`${Od[t]}, all of it`,onClick:e=>n(t,e.currentTarget),children:`›`})]})}var Nd=`.lm-meter, .lm-mini-lim, .lm-controls > *, .lm-table tbody tr`;function Pd(e,t){(0,J.useEffect)(()=>{let n=e.current?.querySelector(`.lm-card`);if(!n)return;let r=()=>{let e=n.getBoundingClientRect(),r=e.bottom-Number.parseFloat(getComputedStyle(n).paddingBottom||`0`),i=0;for(let t of n.querySelectorAll(Nd)){let n=e.height>0&&t.getBoundingClientRect().bottom>r+.5;t.toggleAttribute(`data-clip`,n),n&&!t.matches(`h3`)&&i++}t.current&&(t.current.dataset.more=i?`+${i}`:``)},i=new ResizeObserver(r);i.observe(n);let a=new MutationObserver(r);return a.observe(n,{childList:!0,subtree:!0}),r(),()=>{i.disconnect(),a.disconnect()}},[e,t])}function Fd({lm:e}){let{ev:t,model:n}=e,r=Math.max(1.5,n.thresholds.full*1.5),i=e=>`${e/r*100}%`;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Where it runs out`}),(0,Y.jsx)(`div`,{className:`lm-mini-limits`,children:t.ranked.map(e=>(0,Y.jsxs)(`div`,{className:`lm-mini-lim`,"data-component":e.id,children:[(0,Y.jsxs)(`span`,{className:`lm-name`,title:e.name,children:[e.name,e.capacity?.provenance===`estimated`?(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:`est`}):!!e.capacity?.within&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`range`,children:`±`})]}),(0,Y.jsxs)(`span`,{className:`lm-track`,role:`img`,"aria-label":`${e.name} at ${e.util==null?`off`:f(e.util)}`,children:[(0,Y.jsx)(`span`,{className:`lm-fill`,"data-state":e.state,style:{width:`${Math.min(100,(e.util??0)/r*100)}%`}}),(0,Y.jsx)(`span`,{className:`lm-tick`,style:{left:i(n.thresholds.target)}}),(0,Y.jsx)(`span`,{className:`lm-tick`,style:{left:i(n.thresholds.full)}})]}),(0,Y.jsx)(`span`,{className:`lm-val`,children:e.util==null?`—`:f(e.util)}),(0,Y.jsx)(`span`,{className:`lm-val lm-sub`,children:e.util==null?`off`:e.full!=null&&!Number.isFinite(e.full)?`full > ${s(n.searchMax)}×`:`full ${e.fullRange?u(e.fullRange,n.searchMax,!0):l(e.full,n.searchMax)}`})]},e.id))})]})}function Id({lm:e}){let{model:t,values:n}=e,r=Q(e),[i,{width:a,height:o}]=Z(240),s=Math.max(1.5,t.thresholds.full*1.5),c=e=>a*Math.log(e/r.from)/Math.log(r.to/r.from),d=e=>8+(o-10)*(1-Math.min(e,s*1.2)/s),p=e=>{let t=``,n=!1;for(let[r,i]of e)i==null?n=!1:(t+=`${n?`L`:`M`}${c(r).toFixed(1)} ${d(i).toFixed(1)}`,n=!0);return t},m=r.lines.find(e=>e.selected)??r.lines[0],h=f(t.thresholds.target),g=m?`${m.targetRange?u(m.targetRange,t.searchMax,!0):l(m.target,t.searchMax)}`:``,_=m?Gu(t,m.targetRange):``,v=c(Math.min(r.to,Math.max(r.from,n.load)));return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`lm-spark`,ref:i,children:o>0&&(0,Y.jsxs)(`svg`,{width:a,height:o,"aria-hidden":`true`,children:[(0,Y.jsx)(`line`,{className:`lm-spark-th`,x1:0,x2:a,y1:d(t.thresholds.target),y2:d(t.thresholds.target)}),r.lines.map(e=>(0,Y.jsx)(`path`,{d:p(e.envelope),fill:`none`,stroke:Hu(t,e.label),strokeWidth:e.selected?2:1.25},e.label??``)),(0,Y.jsx)(`line`,{className:`lm-spark-load`,x1:v,x2:v,y1:0,y2:o})]})}),m&&(0,Y.jsxs)(`p`,{className:`lm-spark-text`,title:`${m.label??`It`} reaches the ${h} target at ${g}`,children:[m.label??`It`,` reaches the `,h,` target at `,g,_&&` (${_})`,`.`]})]})}function Ld({lm:e}){let t=(0,J.useRef)(null),{story:n}=e.model;if(!n.length)return null;let r=e.cue?.step??e.step,i=n.length-1,a=t=>{let n=Math.max(0,Math.min(i,t));(n!==r||e.storyPlaying)&&e.setStep(n)},o=e=>{if(e.key===`ArrowRight`)a(r==null?0:r+1);else if(e.key===`ArrowLeft`&&r!=null)a(r-1);else return;e.preventDefault()},s=e.storyPlaying;return(0,Y.jsxs)(`fieldset`,{className:`lm-story`,onKeyDown:o,ref:t,tabIndex:-1,"data-playing":s||void 0,children:[(0,Y.jsx)(`legend`,{children:`Story`}),(0,Y.jsx)(`span`,{className:`lm-sr`,"aria-live":`polite`,children:r==null?`A walk through this model in ${n.length} steps.`:`${r+1} of ${n.length}. ${n[r].text}${e.stepChanged?` You changed the values since.`:``}`}),(0,Y.jsxs)(`p`,{"aria-hidden":`true`,children:[(0,Y.jsxs)(`span`,{"data-shown":r==null||void 0,children:[`A walk through this model in `,n.length,` steps.`]}),n.map((t,i)=>(0,Y.jsxs)(`span`,{"data-shown":i===r||void 0,children:[(0,Y.jsxs)(`b`,{children:[i+1,` of `,n.length]}),` `,t.text,(0,Y.jsx)(`em`,{"data-shown":i===r&&e.stepChanged||void 0,children:` You changed the values since.`})]},i))]}),r!=null&&(0,Y.jsx)(`span`,{className:`lm-story-progress`,"aria-hidden":`true`,children:n.map((t,n)=>(0,Y.jsx)(`i`,{"data-state":n<r?`done`:n===r?`now`:void 0,style:n===r?{"--lm-step":`${e.cue?.seconds??Tu(t,e.engine.transition)}s`}:void 0},n===r?`${n}-${s}`:n))}),(0,Y.jsxs)(`span`,{className:`lm-story-nav`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>e.setStoryPlaying(!s),"aria-pressed":s,children:s?`❚❚ Pause`:`▶ Play`}),r!=null&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(r-1),"aria-disabled":r===0,children:`Back`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(r==null?0:r+1),"aria-disabled":r===i,children:r==null?`Start`:`Next`}),r!=null&&e.stepChanged&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{e.setStep(r),t.current?.focus()},children:`Show again`}),r!=null&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>e.setStep(null),"aria-label":`Leave the story`,children:`Done`})]})]})}var Rd=`
16
+ `)[0]}`:void 0}function wn(e){let t=Object.entries(Nt).filter(([,t])=>t.children.includes(e)).map(([e])=>e===``?`the top level`:e);return t.length?`it goes in ${t.join(` or `)}`:void 0}var Tn=t((e=>{var t=Object.defineProperty;(e=>t(e,`__esModule`,{value:!0}))(e),((e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})})(e,{GIFEncoder:()=>k,applyPalette:()=>S,default:()=>ce,nearestColor:()=>ee,nearestColorIndex:()=>D,nearestColorIndexWithDistance:()=>O,prequantize:()=>x,quantize:()=>_,snapColorsToPalette:()=>T});var n={signature:`GIF`,version:`89a`,trailer:59,extensionIntroducer:33,applicationExtensionLabel:255,graphicControlExtensionLabel:249,imageSeparator:44,signatureSize:3,versionSize:3,globalColorTableFlagMask:128,colorResolutionMask:112,sortFlagMask:8,globalColorTableSizeMask:7,applicationIdentifierSize:8,applicationAuthCodeSize:3,disposalMethodMask:28,userInputFlagMask:2,transparentColorFlagMask:1,localColorTableFlagMask:128,interlaceFlagMask:64,idSortFlagMask:32,localColorTableSizeMask:7};function r(e=256){let t=0,n=new Uint8Array(e);return{get buffer(){return n.buffer},reset(){t=0},bytesView(){return n.subarray(0,t)},bytes(){return n.slice(0,t)},writeByte(e){r(t+1),n[t]=e,t++},writeBytes(e,i=0,a=e.length){r(t+a);for(let r=0;r<a;r++)n[t++]=e[r+i]},writeBytesView(e,i=0,a=e.byteLength){r(t+a),n.set(e.subarray(i,i+a),t),t+=a}};function r(e){var r=n.length;if(r>=e)return;e=Math.max(e,r*(r<1048576?2:1.125)>>>0),r!=0&&(e=Math.max(e,256));let i=n;n=new Uint8Array(e),t>0&&n.set(i.subarray(0,t),0)}}var i=12,a=5003,o=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];function s(e,t,n,s,c=r(512),l=new Uint8Array(256),u=new Int32Array(a),d=new Int32Array(a)){let f=u.length,p=Math.max(2,s);l.fill(0),d.fill(0),u.fill(-1);let m=0,h=0,g=p+1,_=g,v=!1,y=_,b=(1<<y)-1,x=1<<g-1,S=x+1,C=x+2,w=0,T=n[0],E=0;for(let e=f;e<65536;e*=2)++E;E=8-E,c.writeByte(p),O(x);let D=n.length;for(let e=1;e<D;e++)next_block:{let t=n[e],r=(t<<i)+T,a=t<<E^T;if(u[a]===r){T=d[a];break next_block}let o=a===0?1:f-a;for(;u[a]>=0;)if(a-=o,a<0&&(a+=f),u[a]===r){T=d[a];break next_block}O(T),T=t,C<1<<i?(d[a]=C++,u[a]=r):(u.fill(-1),C=x+2,v=!0,O(x))}return O(T),O(S),c.writeByte(0),c.bytesView();function O(e){for(m&=o[h],h>0?m|=e<<h:m=e,h+=y;h>=8;)l[w++]=m&255,w>=254&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0),m>>=8,h-=8;if((C>b||v)&&(v?(y=_,b=(1<<y)-1,v=!1):(++y,b=y===i?1<<y:(1<<y)-1)),e==S){for(;h>0;)l[w++]=m&255,w>=254&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0),m>>=8,h-=8;w>0&&(c.writeByte(w),c.writeBytesView(l,0,w),w=0)}}}var c=s;function l(e,t,n){return e<<8&63488|t<<2&992|n>>3}function u(e,t,n,r){return e>>4|t&240|(n&240)<<4|(r&240)<<8}function d(e,t,n){return e>>4<<8|t&240|n>>4}function f(e,t,n){return e<t?t:e>n?n:e}function p(e){return e*e}function m(e,t,n){var r=0,i=1e100;let a=e[t],o=a.cnt,s=a.ac,c=a.rc,l=a.gc,u=a.bc;for(var d=a.fw;d!=0;d=e[d].fw){let t=e[d],a=t.cnt,m=o*a/(o+a);if(!(m>=i)){var f=0;n&&(f+=m*p(t.ac-s),f>=i)||(f+=m*p(t.rc-c),f>=i||(f+=m*p(t.gc-l),f>=i||(f+=m*p(t.bc-u),f>=i||(i=f,r=d))))}}a.err=i,a.nn=r}function h(){return{ac:0,rc:0,gc:0,bc:0,cnt:0,nn:0,fw:0,bk:0,tm:0,mtm:0,err:0}}function g(e,t){let n=Array(t===`rgb444`?4096:65536),r=e.length;if(t===`rgba4444`)for(let t=0;t<r;++t){let r=e[t],i=r>>24&255,a=r>>16&255,o=r>>8&255,s=r&255,c=u(s,o,a,i),l=c in n?n[c]:n[c]=h();l.rc+=s,l.gc+=o,l.bc+=a,l.ac+=i,l.cnt++}else if(t===`rgb444`)for(let t=0;t<r;++t){let r=e[t],i=r>>16&255,a=r>>8&255,o=r&255,s=d(o,a,i),c=s in n?n[s]:n[s]=h();c.rc+=o,c.gc+=a,c.bc+=i,c.cnt++}else for(let t=0;t<r;++t){let r=e[t],i=r>>16&255,a=r>>8&255,o=r&255,s=l(o,a,i),c=s in n?n[s]:n[s]=h();c.rc+=o,c.gc+=a,c.bc+=i,c.cnt++}return n}function _(e,t,n={}){let{format:r=`rgb565`,clearAlpha:i=!0,clearAlphaColor:a=0,clearAlphaThreshold:o=0,oneBitAlpha:s=!1}=n;if(!e||!e.buffer||!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw Error(`quantize() expected RGBA Uint8Array data`);let c=new Uint32Array(e.buffer),l=n.useSqrt!==!1,u=r===`rgba4444`,d=g(c,r),h=d.length,_=h-1,y=new Uint32Array(h+1);for(var b=0,x=0;x<h;++x){let e=d[x];if(e!=null){var S=1/e.cnt;u&&(e.ac*=S),e.rc*=S,e.gc*=S,e.bc*=S,d[b++]=e}}p(t)/b<.022&&(l=!1);for(var x=0;x<b-1;++x)d[x].fw=x+1,d[x+1].bk=x,l&&(d[x].cnt=Math.sqrt(d[x].cnt));l&&(d[x].cnt=Math.sqrt(d[x].cnt));var C,w,T;for(x=0;x<b;++x){m(d,x,!1);var E=d[x].err;for(w=++y[0];w>1&&(T=w>>1,!(d[C=y[T]].err<=E));w=T)y[w]=C;y[w]=x}var D=b-t;for(x=0;x<D;){for(var O;;){var ee=y[1];if(O=d[ee],O.tm>=O.mtm&&d[O.nn].mtm<=O.tm)break;O.mtm==_?ee=y[1]=y[y[0]--]:(m(d,ee,!1),O.tm=x);var E=d[ee].err;for(w=1;(T=w+w)<=y[0]&&(T<y[0]&&d[y[T]].err>d[y[T+1]].err&&T++,!(E<=d[C=y[T]].err));w=T)y[w]=C;y[w]=ee}var k=d[O.nn],A=O.cnt,te=k.cnt,S=1/(A+te);u&&(O.ac=S*(A*O.ac+te*k.ac)),O.rc=S*(A*O.rc+te*k.rc),O.gc=S*(A*O.gc+te*k.gc),O.bc=S*(A*O.bc+te*k.bc),O.cnt+=k.cnt,O.mtm=++x,d[k.bk].fw=k.fw,d[k.fw].bk=k.bk,k.mtm=_}let ne=[];var re=0;for(x=0;;++re){let e=f(Math.round(d[x].rc),0,255),t=f(Math.round(d[x].gc),0,255),n=f(Math.round(d[x].bc),0,255),r=255;u&&(r=f(Math.round(d[x].ac),0,255),s&&(r=r<=(typeof s==`number`?s:127)?0:255),i&&r<=o&&(e=t=n=a,r=0));let c=u?[e,t,n,r]:[e,t,n];if(v(ne,c)||ne.push(c),(x=d[x].fw)==0)break}return ne}function v(e,t){for(let n=0;n<e.length;n++){let r=e[n],i=r[0]===t[0]&&r[1]===t[1]&&r[2]===t[2],a=r.length>=4&&t.length>=4?r[3]===t[3]:!0;if(i&&a)return!0}return!1}function y(e,t){for(var n=0,r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return n}function b(e,t){return t>1?Math.round(e/t)*t:e}function x(e,{roundRGB:t=5,roundAlpha:n=10,oneBitAlpha:r=null}={}){let i=new Uint32Array(e.buffer);for(let e=0;e<i.length;e++){let a=i[e],o=a>>24&255,s=a>>16&255,c=a>>8&255,l=a&255;o=b(o,n),r&&(o=o<=(typeof r==`number`?r:127)?0:255),l=b(l,t),c=b(c,t),s=b(s,t),i[e]=o<<24|s<<16|c<<8|l}}function S(e,t,n=`rgb565`){if(!e||!e.buffer||!(e instanceof Uint8Array)&&!(e instanceof Uint8ClampedArray))throw Error(`quantize() expected RGBA Uint8Array data`);if(t.length>256)throw Error(`applyPalette() only works with 256 colors or less`);let r=new Uint32Array(e.buffer),i=r.length,a=n===`rgb444`?4096:65536,o=new Uint8Array(i),s=Array(a);if(n===`rgba4444`)for(let e=0;e<i;e++){let n=r[e],i=n>>24&255,a=n>>16&255,c=n>>8&255,l=n&255,d=u(l,c,a,i),f=d in s?s[d]:s[d]=C(l,c,a,i,t);o[e]=f}else{let e=n===`rgb444`?d:l;for(let n=0;n<i;n++){let i=r[n],a=i>>16&255,c=i>>8&255,l=i&255,u=e(l,c,a),d=u in s?s[u]:s[u]=w(l,c,a,t);o[n]=d}}return o}function C(e,t,n,r,i){let a=0,o=1e100;for(let s=0;s<i.length;s++){let c=i[s],l=c[3],u=E(l-r);if(u>o)continue;let d=c[0];if(u+=E(d-e),u>o)continue;let f=c[1];if(u+=E(f-t),u>o)continue;let p=c[2];u+=E(p-n),u>o||(o=u,a=s)}return a}function w(e,t,n,r){let i=0,a=1e100;for(let o=0;o<r.length;o++){let s=r[o],c=s[0],l=E(c-e);if(l>a)continue;let u=s[1];if(l+=E(u-t),l>a)continue;let d=s[2];l+=E(d-n),l>a||(a=l,i=o)}return i}function T(e,t,n=5){if(!e.length||!t.length)return;let r=e.map(e=>e.slice(0,3)),i=n*n,a=e[0].length;for(let n=0;n<t.length;n++){let o=t[n];o=o.length<a?[o[0],o[1],o[2],255]:o.length>a?o.slice(0,3):o.slice();let s=O(r,o.slice(0,3),y),c=s[0],l=s[1];l>0&&l<=i&&(e[c]=o)}}function E(e){return e*e}function D(e,t,n=y){let r=1/0,i=-1;for(let a=0;a<e.length;a++){let o=e[a],s=n(t,o);s<r&&(r=s,i=a)}return i}function O(e,t,n=y){let r=1/0,i=-1;for(let a=0;a<e.length;a++){let o=e[a],s=n(t,o);s<r&&(r=s,i=a)}return[i,r]}function ee(e,t,n=y){return e[D(e,t,n)]}function k(e={}){let{initialCapacity:t=4096,auto:i=!0}=e,a=r(t),o=5003,s=new Uint8Array(256),c=new Int32Array(o),l=new Int32Array(o),u=!1;return{reset(){a.reset(),u=!1},finish(){a.writeByte(n.trailer)},bytes(){return a.bytes()},bytesView(){return a.bytesView()},get buffer(){return a.buffer},get stream(){return a},writeHeader:d,writeFrame(e,t,n,r={}){let{transparent:o=!1,transparentIndex:f=0,delay:p=0,palette:m=null,repeat:h=0,colorDepth:g=8,dispose:_=-1}=r,v=!1;if(i?u||=(v=!0,d(),!0):v=!!r.first,t=Math.max(0,Math.floor(t)),n=Math.max(0,Math.floor(n)),v){if(!m)throw Error(`First frame must include a { palette } option`);te(a,t,n,m,g),re(a,m),h>=0&&ne(a,h)}let y=Math.round(p/10);A(a,_,y,o,f);let b=!!m&&!v;ie(a,t,n,b?m:null),b&&re(a,m),ae(a,e,t,n,g,s,c,l)}};function d(){oe(a,`GIF89a`)}}function A(e,t,n,r,i){e.writeByte(33),e.writeByte(249),e.writeByte(4),i<0&&(i=0,r=!1);var a,o;r?(a=1,o=2):(a=0,o=0),t>=0&&(o=t&7),o<<=2,e.writeByte(o|0|a),j(e,n),e.writeByte(i||0),e.writeByte(0)}function te(e,t,n,r,i=8){let a=se(r.length)-1,o=i-1<<4|128|a;j(e,t),j(e,n),e.writeBytes([o,0,0])}function ne(e,t){e.writeByte(33),e.writeByte(255),e.writeByte(11),oe(e,`NETSCAPE2.0`),e.writeByte(3),e.writeByte(1),j(e,t),e.writeByte(0)}function re(e,t){let n=1<<se(t.length);for(let r=0;r<n;r++){let n=[0,0,0];r<t.length&&(n=t[r]),e.writeByte(n[0]),e.writeByte(n[1]),e.writeByte(n[2])}}function ie(e,t,n,r){if(e.writeByte(44),j(e,0),j(e,0),j(e,t),j(e,n),r){let t=se(r.length)-1;e.writeByte(128|t)}else e.writeByte(0)}function ae(e,t,n,r,i=8,a,o,s){c(n,r,t,i,e,a,o,s)}function j(e,t){e.writeByte(t&255),e.writeByte(t>>8&255)}function oe(e,t){for(var n=0;n<t.length;n++)e.writeByte(t.charCodeAt(n))}function se(e){return Math.max(Math.ceil(Math.log2(e)),1)}var ce=k}));function F(e){if(!e)throw Error(`Assertion failed.`)}var En=Math.PI/180,Dn=180/Math.PI,On=e=>{let t=(e%360+360)%360;if(t===0||t===90||t===180||t===270)return t;throw Error(`Invalid rotation ${e}.`)},kn=[1,0,0,0,1,0,0,0,1],An=(e,t,n)=>{let[r,i,,a,o]=e,s=Math.abs(r)*t+Math.abs(a)*n,c=Math.abs(i)*t+Math.abs(o)*n;return In(In(Pn(-t/2,-n/2),e),Pn(s/2,c/2))},jn=e=>{let[t,n]=e;return On(cr(Math.atan2(n,Mn(e)?-t:t)*Dn,90))},Mn=e=>{let[t,n,,r,i]=e;return t*i-n*r<0},Nn=e=>{let t=e*En,n=Math.round(Math.cos(t)),r=Math.round(Math.sin(t));return[n,r,0,-r,n,0,0,0,1]},Pn=(e,t)=>[1,0,0,0,1,0,e,t,1],Fn=(e,t)=>[e,0,0,0,t,0,0,0,1],In=(e,t)=>{let n=Array(9);for(let r=0;r<3;r++)for(let i=0;i<3;i++)n[3*r+i]=e[3*r]*t[i]+e[3*r+1]*t[3+i]+e[3*r+2]*t[6+i];return n},Ln=(e,t,n,r)=>({rotation:On(e+(t?-n:n)),flip:t!==r}),Rn=e=>e&&e[e.length-1],zn=e=>e>=0&&e<2**32,Bn=e=>e>=-(2**31)&&e<2**31,I=e=>{let t=0;for(;e.readBits(1)===0&&t<32;)t++;if(t>=32)throw Error(`Invalid exponential-Golomb code.`);return 2**t-1+e.readBits(t)},Vn=e=>{let t=I(e);return t%2==0?-(t/2):(t+1)/2},Hn=(e,t,n,r)=>{for(let i=t;i<n;i++){let t=Math.floor(i/8),a=e[t],o=7-(i&7);a&=~(1<<o),a|=(r&1<<n-i-1)>>n-i-1<<o,e[t]=a}},Un=e=>e.constructor===Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),Wn=e=>e.constructor===DataView?e:ArrayBuffer.isView(e)?new DataView(e.buffer,e.byteOffset,e.byteLength):new DataView(e),Gn=globalThis.TextEncoder===void 0?class{constructor(){this.encoding=`utf-8`}encode(e=``){let t=new Uint8Array(3*e.length),n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);if(i<128)t[n++]=i;else if(i<2048)t[n++]=192|i>>6,t[n++]=128|i&63;else if(i<55296||i>57343)t[n++]=224|i>>12,t[n++]=128|i>>6&63,t[n++]=128|i&63;else{let a=r+1<e.length?e.charCodeAt(r+1):0;i<56320&&a>=56320&&a<=57343?(i=65536+(i-55296<<10)+(a-56320),r++,t[n++]=240|i>>18,t[n++]=128|i>>12&63,t[n++]=128|i>>6&63,t[n++]=128|i&63):(t[n++]=239,t[n++]=191,t[n++]=189)}}return t.slice(0,n)}}:globalThis.TextEncoder;globalThis.TextDecoder===void 0||globalThis.TextDecoder;var Kn=new Gn,qn={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12},Jn={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18},Yn={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9},Xn=e=>!e||e.primaries==null&&e.transfer==null&&e.matrix==null&&e.fullRange==null,Zn=e=>e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer||ArrayBuffer.isView(e),Qn=class{constructor(){this.currentPromise=Promise.resolve(),this.pending=0}async acquire(){let e,t=new Promise(t=>{let n=!1;e=()=>{n||=(t(),this.pending--,!0)}}),n=this.currentPromise;return this.currentPromise=t,this.pending++,await n,e}},$n=e=>[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``),er=e=>(e=e>>1&1431655765|(e&1431655765)<<1,e=e>>2&858993459|(e&858993459)<<2,e=e>>4&252645135|(e&252645135)<<4,e=e>>8&16711935|(e&16711935)<<8,e=e>>16&65535|(e&65535)<<16,e>>>0),tr=(e,t,n)=>{let r=0,i=e.length-1,a=-1;for(;r<=i;){let o=r+(i-r+1)/2|0;n(e[o])<=t?(a=o,r=o+1):i=o-1}return a},nr=()=>{let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}},rr=e=>{throw Error(`Unexpected value: ${e}`)},ir=(e,t,n)=>{let r=e.getUint8(t),i=e.getUint8(t+1),a=e.getUint8(t+2);return n?r|i<<8|a<<16:r<<16|i<<8|a},ar=(e,t,n,r)=>{n>>>=0,n&=16777215,r?(e.setUint8(t,n&255),e.setUint8(t+1,n>>>8&255),e.setUint8(t+2,n>>>16&255)):(e.setUint8(t,n>>>16&255),e.setUint8(t+1,n>>>8&255),e.setUint8(t+2,n&255))},or=(e,t,n)=>Math.max(t,Math.min(n,e)),sr=(e,t,n)=>e+(t-e)*n,cr=(e,t)=>Math.round(e/t)*t,lr=(e,t)=>Math.round(e*t)/t,ur=(e,t)=>Math.floor(e*t)/t,dr=e=>{let t=0;for(;e!==0;)e&=e-1,t++;return t},fr=/^[a-z]{3}$/,pr=e=>fr.test(e),mr=1e6*(1+2**-52),hr=(e,t)=>{let n=e<0?-1:1;e=Math.abs(e);let r=0,i=1,a=1,o=0,s=e;for(;;){let e=Math.floor(s),c=e*a+r,l=e*o+i;if(l>t)return{num:n*a,den:o};if(r=a,i=o,a=c,o=l,s=1/(s-e),!isFinite(s))break}return{num:n*a,den:o}},gr=class{constructor(){this.currentPromise=Promise.resolve()}call(e){return this.currentPromise=this.currentPromise.then(e)}},_r=null,vr=()=>_r===null?_r=!!(typeof navigator<`u`&&(navigator.vendor?.match(/apple/i)||/AppleWebKit/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)||/\b(iPad|iPhone|iPod)\b/.test(navigator.userAgent))):_r,yr=null,br=()=>yr===null?yr=typeof navigator<`u`&&navigator.userAgent?.includes(`Firefox`):yr,xr=null,Sr=()=>xr===null?xr=!(typeof navigator>`u`||!navigator.vendor?.includes(`Google Inc`)&&!/Chrome/.test(navigator.userAgent)):xr,Cr=null,wr=()=>{if(Cr!==null)return Cr;if(typeof navigator>`u`)return null;let e=/\bChrome\/(\d+)/.exec(navigator.userAgent);return e?Cr=Number(e[1]):null},Tr=e=>globalThis.isSecureContext!==void 0&&!globalThis.isSecureContext?`${e} is not available in this environment; this may be because this page is running in an insecure context. Try serving your page over HTTPS or use localhost.`:`${e} is not available in this environment.`,Er=e=>e instanceof DOMException&&e.name===`QuotaExceededError`&&/reclaimed/i.test(e.message),Dr=(async()=>{})().constructor,Or=e=>e instanceof Dr||e instanceof Promise||typeof e?.then==`function`,kr=function*(e){for(let t in e){let n=e[t];n!==void 0&&(yield{key:t,value:n})}},Ar=e=>{switch(e.toLowerCase()){case`image/jpeg`:case`image/jpg`:return`.jpg`;case`image/png`:return`.png`;case`image/gif`:return`.gif`;case`image/webp`:return`.webp`;case`image/bmp`:return`.bmp`;case`image/svg+xml`:return`.svg`;case`image/tiff`:return`.tiff`;case`image/avif`:return`.avif`;case`image/x-icon`:case`image/vnd.microsoft.icon`:return`.ico`;default:return null}},jr=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0},Mr=()=>{Symbol.dispose??=Symbol(`Symbol.dispose`)},Nr=e=>typeof e==`number`&&!Number.isNaN(e),Pr=(e,t)=>{let n=-1,r=1/0;for(let i=0;i<e.length;i++){let a=t(e[i]);(n===-1||a<r)&&(r=a,n=i)}return n},Fr=e=>{F(Number.isInteger(e.num)),F(Number.isInteger(e.den)),F(e.den!==0);let t=Math.abs(e.num),n=Math.abs(e.den);for(;n!==0;){let e=t%n;t=n,n=e}let r=t||1;return{num:e.num/r,den:e.den/r}},Ir=(e,t)=>{if(typeof e!=`object`||!e)throw TypeError(`${t} must be an object.`);if(!Number.isInteger(e.left)||e.left<0)throw TypeError(`${t}.left must be a non-negative integer.`);if(!Number.isInteger(e.top)||e.top<0)throw TypeError(`${t}.top must be a non-negative integer.`);if(!Number.isInteger(e.width)||e.width<0)throw TypeError(`${t}.width must be a non-negative integer.`);if(!Number.isInteger(e.height)||e.height<0)throw TypeError(`${t}.height must be a non-negative integer.`)},Lr=e=>new Promise(t=>setTimeout(t,e)),Rr=e=>Array.isArray(e)?e:[e],zr=class{constructor(){this._listeners=new Map}on(e,t,n){this._listeners.has(e)||this._listeners.set(e,new Set);let r={fn:t,once:n?.once??!1};return this._listeners.get(e).add(r),()=>{this._listeners.get(e)?.delete(r)}}_emit(...e){let[t,n]=e,r=this._listeners.get(t);if(r)for(let e of r){try{e.fn(n)}catch(e){console.error(e)}e.once&&r.delete(e)}}},Br=e=>typeof e==`object`&&!!e&&Object.getPrototypeOf(e)===Object.prototype&&Object.values(e).every(e=>typeof e==`string`),Vr;(function(e){e[e.Silent=0]=`Silent`,e[e.Errors=1]=`Errors`,e[e.Warnings=2]=`Warnings`,e[e.Info=3]=`Info`})(Vr||={});var Hr=class e{constructor(){}static get level(){return e._level}static set level(t){if(t!==Vr.Silent&&t!==Vr.Errors&&t!==Vr.Warnings&&t!==Vr.Info)throw TypeError(`Invalid log level. Use one of the values of the LogLevel enum.`);e._level=t}static get _emitter(){return e._emitterInstance??=new zr}static on(t,n,r){return e._emitter.on(t,n,r)}static _error(...t){e._emitter._emit(`error`,t),e._level>=Vr.Errors&&console.error(...t)}static _warn(...t){e._emitter._emit(`warn`,t),e._level>=Vr.Warnings&&console.warn(...t)}static _info(...t){e._emitter._emit(`info`,t),e._level>=Vr.Info&&console.info(...t)}};Hr._level=Vr.Info,Hr._emitterInstance=null;var Ur=class{constructor(e,t){if(this.data=e,this.mimeType=t,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(typeof t!=`string`)throw TypeError(`mimeType must be a string.`)}},Wr=class{constructor(e,t,n,r){if(this.data=e,this.mimeType=t,this.name=n,this.description=r,!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==void 0&&typeof t!=`string`)throw TypeError(`mimeType, when provided, must be a string.`);if(n!==void 0&&typeof n!=`string`)throw TypeError(`name, when provided, must be a string.`);if(r!==void 0&&typeof r!=`string`)throw TypeError(`description, when provided, must be a string.`)}},Gr=e=>{if(!e||typeof e!=`object`)throw TypeError(`tags must be an object.`);if(e.title!==void 0&&typeof e.title!=`string`)throw TypeError(`tags.title, when provided, must be a string.`);if(e.description!==void 0&&typeof e.description!=`string`)throw TypeError(`tags.description, when provided, must be a string.`);if(e.artist!==void 0&&typeof e.artist!=`string`)throw TypeError(`tags.artist, when provided, must be a string.`);if(e.album!==void 0&&typeof e.album!=`string`)throw TypeError(`tags.album, when provided, must be a string.`);if(e.albumArtist!==void 0&&typeof e.albumArtist!=`string`)throw TypeError(`tags.albumArtist, when provided, must be a string.`);if(e.trackNumber!==void 0&&(!Number.isInteger(e.trackNumber)||e.trackNumber<=0))throw TypeError(`tags.trackNumber, when provided, must be a positive integer.`);if(e.tracksTotal!==void 0&&(!Number.isInteger(e.tracksTotal)||e.tracksTotal<=0))throw TypeError(`tags.tracksTotal, when provided, must be a positive integer.`);if(e.discNumber!==void 0&&(!Number.isInteger(e.discNumber)||e.discNumber<=0))throw TypeError(`tags.discNumber, when provided, must be a positive integer.`);if(e.discsTotal!==void 0&&(!Number.isInteger(e.discsTotal)||e.discsTotal<=0))throw TypeError(`tags.discsTotal, when provided, must be a positive integer.`);if(e.genre!==void 0&&typeof e.genre!=`string`)throw TypeError(`tags.genre, when provided, must be a string.`);if(e.date!==void 0&&(!(e.date instanceof Date)||Number.isNaN(e.date.getTime())))throw TypeError(`tags.date, when provided, must be a valid Date.`);if(e.creationTime!==void 0&&e.creationTime!==null&&(!(e.creationTime instanceof Date)||Number.isNaN(e.creationTime.getTime())))throw TypeError(`tags.creationTime, when provided, must be a valid Date or null.`);if(e.beatsPerMinute!==void 0&&(!Number.isInteger(e.beatsPerMinute)||e.beatsPerMinute<=0))throw TypeError(`tags.beatsPerMinute, when provided, must be a positive integer.`);if(e.lyrics!==void 0&&typeof e.lyrics!=`string`)throw TypeError(`tags.lyrics, when provided, must be a string.`);if(e.images!==void 0){if(!Array.isArray(e.images))throw TypeError(`tags.images, when provided, must be an array.`);for(let t of e.images){if(!t||typeof t!=`object`)throw TypeError(`Each image in tags.images must be an object.`);if(!(t.data instanceof Uint8Array))throw TypeError(`Each image.data must be a Uint8Array.`);if(typeof t.mimeType!=`string`)throw TypeError(`Each image.mimeType must be a string.`);if(![`coverFront`,`coverBack`,`unknown`].includes(t.kind))throw TypeError(`Each image.kind must be 'coverFront', 'coverBack', or 'unknown'.`)}}if(e.comment!==void 0&&typeof e.comment!=`string`)throw TypeError(`tags.comment, when provided, must be a string.`);if(e.raw!==void 0){if(!e.raw||typeof e.raw!=`object`)throw TypeError(`tags.raw, when provided, must be an object.`);for(let t of Object.values(e.raw))if(t!==null&&typeof t!=`string`&&!(Array.isArray(t)&&t.every(e=>typeof e==`string`))&&!(t instanceof Uint8Array)&&!(Array.isArray(t)&&t.every(e=>e instanceof Uint8Array))&&!(t instanceof Ur)&&!(t instanceof Wr)&&!Br(t))throw TypeError(`Each value in tags.raw must be a string, string array, Uint8Array, Uint8Array array, RichImageData, AttachedFile, Record<string, string>, or null.`)}},Kr=e=>{if(!e||typeof e!=`object`)throw TypeError(`disposition must be an object.`);if(e.default!==void 0&&typeof e.default!=`boolean`)throw TypeError(`disposition.default must be a boolean.`);if(e.primary!==void 0&&typeof e.primary!=`boolean`)throw TypeError(`disposition.primary must be a boolean.`);if(e.forced!==void 0&&typeof e.forced!=`boolean`)throw TypeError(`disposition.forced must be a boolean.`);if(e.original!==void 0&&typeof e.original!=`boolean`)throw TypeError(`disposition.original must be a boolean.`);if(e.commentary!==void 0&&typeof e.commentary!=`boolean`)throw TypeError(`disposition.commentary must be a boolean.`);if(e.hearingImpaired!==void 0&&typeof e.hearingImpaired!=`boolean`)throw TypeError(`disposition.hearingImpaired must be a boolean.`);if(e.visuallyImpaired!==void 0&&typeof e.visuallyImpaired!=`boolean`)throw TypeError(`disposition.visuallyImpaired must be a boolean.`)},qr=class e{constructor(e){this.bytes=e,this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),t=this.bytes[e]??0,n=7-(this.pos&7),r=(t&1<<n)>>n;return this.pos++,r}readBits(e){if(e===1)return this.readBit();let t=0;for(let n=0;n<e;n++)t<<=1,t|=this.readBit();return t}writeBits(e,t){let n=this.pos+e;for(let e=this.pos;e<n;e++){let r=Math.floor(e/8),i=this.bytes[r],a=7-(e&7);i&=~(1<<a),i|=(t&1<<n-e-1)>>n-e-1<<a,this.bytes[r]=i}this.pos=n}copyBits(e,t){let n=0;for(;n<e-7;n+=8)this.writeBits(8,t.readBits(8));let r=e-n;r>0&&this.writeBits(r,t.readBits(r))}readAlignedByte(){if(this.pos%8!=0)throw Error(`Bitstream is not byte-aligned.`);let e=this.pos/8,t=this.bytes[e]??0;return this.pos+=8,t}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let t=new e(this.bytes);return t.pos=this.pos,t}},Jr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Yr=[-1,1,2,3,4,5,6,8],Xr=[1,2,3,4,6,7,17,19,20,21,22],Zr=e=>{if(!e||e.byteLength<2)throw TypeError(`AAC description must be at least 2 bytes long.`);let t=new qr(e),n=Qr(t),{frequencyIndex:r,sampleRate:i}=$r(t),a=t.readBits(4),o=null;a>=1&&a<=7&&(o=Yr[a]);let s=n,c=!1,l=i;(n===5||n===29)&&(c=n===29,l=$r(t).sampleRate,s=Qr(t),s===22&&t.skipBits(4));let u=1024;if(Xr.includes(s)&&(u=t.readBits(1)?960:1024),n!==5&&n!==29)for(;t.getBitsLeft()>15;){let e=t.pos;if(t.readBits(11)!==695)t.pos=e+1;else{Qr(t)===5&&t.readBits(1)&&(l=$r(t).sampleRate,t.getBitsLeft()>11&&t.readBits(11)===1352&&(c=!!t.readBits(1)));break}}return o!==null&&o>1&&(c=!1),{objectType:n,coreObjectType:s,frequencyIndex:r,channelConfiguration:a,coreSampleRate:i,outputSampleRate:l,outputNumberOfChannels:c&&o===1?2:o,frameLength:u}},Qr=e=>{let t=e.readBits(5);return t===31?32+e.readBits(6):t},$r=e=>{let t=e.readBits(4);return t===15?{frequencyIndex:t,sampleRate:e.readBits(24)}:{frequencyIndex:t,sampleRate:t<Jr.length?Jr[t]:null}},ei=e=>{let t=e.objectType===5||e.objectType===29,n=e.objectType===29,r=t?e.outputSampleRate/2:e.outputSampleRate,i=n?1:e.outputNumberOfChannels,a=Yr.indexOf(i);if(a===-1)throw TypeError(`Unsupported number of channels: ${e.outputNumberOfChannels}`);let o=16;e.objectType>=32&&(o+=6),ri(r)===15&&(o+=24),t&&(o+=9,ri(e.outputSampleRate)===15&&(o+=24));let s=Math.ceil(o/8),c=new Uint8Array(s),l=new qr(c);return ti(l,e.objectType),ni(l,r),l.writeBits(4,a),t&&(ni(l,e.outputSampleRate),ti(l,2)),l.writeBits(3,0),c},ti=(e,t)=>{t<32?e.writeBits(5,t):(e.writeBits(5,31),e.writeBits(6,t-32))},ni=(e,t)=>{let n=ri(t);e.writeBits(4,n),n===15&&e.writeBits(24,t)},ri=e=>{let t=Jr.indexOf(e);return t===-1?15:t},ii=[48e3,44100,32e3],ai=[24e3,22050,16e3],oi=`Mediabunny v1.65.0`,si;(function(e){e[e.NON_IDR_SLICE=1]=`NON_IDR_SLICE`,e[e.SLICE_DPA=2]=`SLICE_DPA`,e[e.SLICE_DPB=3]=`SLICE_DPB`,e[e.SLICE_DPC=4]=`SLICE_DPC`,e[e.IDR=5]=`IDR`,e[e.SEI=6]=`SEI`,e[e.SPS=7]=`SPS`,e[e.PPS=8]=`PPS`,e[e.AUD=9]=`AUD`,e[e.SPS_EXT=13]=`SPS_EXT`})(si||={});var ci;(function(e){e[e.RASL_N=8]=`RASL_N`,e[e.RASL_R=9]=`RASL_R`,e[e.BLA_W_LP=16]=`BLA_W_LP`,e[e.RSV_IRAP_VCL23=23]=`RSV_IRAP_VCL23`,e[e.VPS_NUT=32]=`VPS_NUT`,e[e.SPS_NUT=33]=`SPS_NUT`,e[e.PPS_NUT=34]=`PPS_NUT`,e[e.AUD_NUT=35]=`AUD_NUT`,e[e.PREFIX_SEI_NUT=39]=`PREFIX_SEI_NUT`,e[e.SUFFIX_SEI_NUT=40]=`SUFFIX_SEI_NUT`})(ci||={});var li=function*(e){let t=0,n=-1;for(;t<e.length-2;){let r=e.indexOf(0,t);if(r===-1||r>=e.length-2)break;t=r;let i=0;t+3<e.length&&e[t+1]===0&&e[t+2]===0&&e[t+3]===1?i=4:e[t+1]===0&&e[t+2]===1&&(i=3),i===0?t++:(n!==-1&&t>n&&(yield{offset:n,length:t-n}),n=t+i,t=n)}n!==-1&&n<e.length&&(yield{offset:n,length:e.length-n})},ui=function*(e,t){let n=0,r=new DataView(e.buffer,e.byteOffset,e.byteLength);for(;n+t<=e.length;){let e;t===1?e=r.getUint8(n):t===2?e=r.getUint16(n,!1):t===3?e=ir(r,n,!1):(F(t===4),e=r.getUint32(n,!1)),n+=t,yield{offset:n,length:e},n+=e}},di=(e,t)=>t.description?ui(e,(Un(t.description)[4]&3)+1):li(e),fi=e=>e&31,pi=e=>{let t=new Uint8Array(e.length),n=e.length,r=0;for(let i=0;i<n;i++)i+2<n&&e[i]===0&&e[i+1]===0&&e[i+2]===3?(t[r++]=0,t[r++]=0,i+=2):t[r++]=e[i];return t.subarray(0,r)};new Uint8Array([0,0,0,1]);var mi=(e,t)=>{let n=e.reduce((e,n)=>e+t+n.byteLength,0),r=new Uint8Array(n),i=0;for(let n of e){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(t){case 1:e.setUint8(i,n.byteLength);break;case 2:e.setUint16(i,n.byteLength,!1);break;case 3:ar(e,i,n.byteLength,!1);break;case 4:e.setUint32(i,n.byteLength,!1)}i+=t,r.set(n,i),i+=n.byteLength}return r},hi=e=>{try{let t=[],n=[],r=[];for(let i of li(e)){let a=e.subarray(i.offset,i.offset+i.length),o=fi(a[0]);o===si.SPS&&t.length<31?t.push(a):o===si.PPS&&n.length<255?n.push(a):o===si.SPS_EXT&&r.length<255&&r.push(a)}if(t.length===0||n.length===0)return null;let i=t[0],a=yi(i);if(!a)return null;let o=a.profileIdc===100||a.profileIdc===110||a.profileIdc===122||a.profileIdc===144;return{configurationVersion:1,avcProfileIndication:a.profileIdc,profileCompatibility:a.constraintFlags,avcLevelIndication:a.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:t,pictureParameterSets:n,chromaFormat:o?a.chromaFormatIdc:null,bitDepthLumaMinus8:o?a.bitDepthLumaMinus8:null,bitDepthChromaMinus8:o?a.bitDepthChromaMinus8:null,sequenceParameterSetExt:o?r:null}}catch(e){return Hr._error(`Error building AVC Decoder Configuration Record:`,e),null}},gi=e=>{let t=[];t.push(e.configurationVersion),t.push(e.avcProfileIndication),t.push(e.profileCompatibility),t.push(e.avcLevelIndication),t.push(252|e.lengthSizeMinusOne&3),t.push(224|e.sequenceParameterSets.length&31);for(let n of e.sequenceParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}t.push(e.pictureParameterSets.length);for(let n of e.pictureParameterSets){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}if((e.avcProfileIndication===100||e.avcProfileIndication===110||e.avcProfileIndication===122||e.avcProfileIndication===144)&&e.chromaFormat!==null){F(e.bitDepthLumaMinus8!==null),F(e.bitDepthChromaMinus8!==null),F(e.sequenceParameterSetExt!==null),t.push(252|e.chromaFormat&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.sequenceParameterSetExt.length);for(let n of e.sequenceParameterSetExt){let e=n.byteLength;t.push(e>>8),t.push(e&255);for(let r=0;r<e;r++)t.push(n[r])}}return new Uint8Array(t)},_i=e=>{try{let t=Wn(e),n=0,r=t.getUint8(n++),i=t.getUint8(n++),a=t.getUint8(n++),o=t.getUint8(n++),s=t.getUint8(n++)&3,c=t.getUint8(n++)&31,l=[];for(let r=0;r<c;r++){let r=t.getUint16(n,!1);n+=2,l.push(e.subarray(n,n+r)),n+=r}let u=t.getUint8(n++),d=[];for(let r=0;r<u;r++){let r=t.getUint16(n,!1);n+=2,d.push(e.subarray(n,n+r)),n+=r}let f={configurationVersion:r,avcProfileIndication:i,profileCompatibility:a,avcLevelIndication:o,lengthSizeMinusOne:s,sequenceParameterSets:l,pictureParameterSets:d,chromaFormat:null,bitDepthLumaMinus8:null,bitDepthChromaMinus8:null,sequenceParameterSetExt:null};if((i===100||i===110||i===122||i===144)&&n+4<=e.length){let r=t.getUint8(n++)&3,i=t.getUint8(n++)&7,a=t.getUint8(n++)&7,o=t.getUint8(n++);f.chromaFormat=r,f.bitDepthLumaMinus8=i,f.bitDepthChromaMinus8=a;let s=[];for(let r=0;r<o;r++){let r=t.getUint16(n,!1);n+=2,s.push(e.subarray(n,n+r)),n+=r}f.sequenceParameterSetExt=s}return f}catch(e){return Hr._error(`Error deserializing AVC Decoder Configuration Record:`,e),null}},vi={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},yi=e=>{try{let t=pi(e),n=new qr(t);if(n.skipBits(1),n.skipBits(2),n.readBits(5)!==7)return null;let r=n.readAlignedByte(),i=n.readAlignedByte(),a=n.readAlignedByte();I(n);let o=1,s=0,c=0,l=0;if((r===100||r===110||r===122||r===244||r===44||r===83||r===86||r===118||r===128)&&(o=I(n),o===3&&(l=n.readBits(1)),s=I(n),c=I(n),n.skipBits(1),n.readBits(1))){for(let e=0;e<(o===3?12:8);e++)if(n.readBits(1)){let t=e<6?16:64,r=8,i=8;for(let e=0;e<t;e++){if(i!==0){let e=Vn(n);i=(r+e+256)%256}r=i===0?r:i}}}I(n);let u=I(n);if(u===0)I(n);else if(u===1){n.skipBits(1),Vn(n),Vn(n);let e=I(n);for(let t=0;t<e;t++)Vn(n)}I(n),n.skipBits(1);let d=I(n),f=I(n),p=16*(d+1),m=16*(f+1),h=p,g=m,_=n.readBits(1);if(_||n.skipBits(1),n.skipBits(1),n.readBits(1)){let e=I(n),t=I(n),r=I(n),i=I(n),a,s;if((l===0?o:0)===0)a=1,s=2-_;else{let e=o===3?1:2,t=o===1?2:1;a=e,s=t*(2-_)}h-=a*(e+t),g-=s*(r+i)}if(h<=0||g<=0)return null;let v=2,y=2,b=2,x=0,S={num:1,den:1},C=null,w=null,T=null,E=null,D=n.pos;if(n.readBits(1)){if(n.readBits(1)){let e=n.readBits(8);if(e===255)S={num:n.readBits(16),den:n.readBits(16)};else{let t=vi[e];t&&(S=t)}}n.readBits(1)&&n.skipBits(1),n.readBits(1)&&(n.skipBits(3),x=n.readBits(1),n.readBits(1)&&(v=n.readBits(8),y=n.readBits(8),b=n.readBits(8))),n.readBits(1)&&(I(n),I(n)),n.readBits(1)&&(n.skipBits(32),n.skipBits(32),n.skipBits(1));let e=n.readBits(1);e&&bi(n);let t=n.readBits(1);t&&bi(n),(e||t)&&n.skipBits(1),n.skipBits(1),T=n.pos,E=n.readBits(1),E&&(n.skipBits(1),I(n),I(n),I(n),I(n),C=Math.min(I(n),16),w=Math.min(I(n),16))}if(C===null){F(w===null);let e=i&16;if((r===44||r===86||r===100||r===110||r===122||r===244)&&e)C=0,w=0;else{let e=d+1,t=f+1,n=(2-_)*t,r=Bo.find(e=>e.level>=a)??Rn(Bo),i=Math.min(Math.floor(r.maxDpbMbs/(e*n)),16);C=i,w=i}}return F(w!==null),{emulationUnpreventedBytes:t,profileIdc:r,constraintFlags:i,levelIdc:a,frameMbsOnlyFlag:_,chromaFormatIdc:o,bitDepthLumaMinus8:s,bitDepthChromaMinus8:c,codedWidth:p,codedHeight:m,displayWidth:h,displayHeight:g,pixelAspectRatio:S,colourPrimaries:v,matrixCoefficients:b,transferCharacteristics:y,fullRangeFlag:x,numReorderFrames:C,maxDecFrameBuffering:w,vuiParametersFlagBitOffset:D,bitstreamRestrictionFlagBitOffset:T,bitstreamRestrictionFlag:E}}catch(e){return Hr._error(`Error parsing AVC SPS:`,e),null}},bi=e=>{let t=I(e);e.skipBits(4),e.skipBits(4);for(let n=0;n<=t;n++)I(e),I(e),e.skipBits(1);e.skipBits(5),e.skipBits(5),e.skipBits(5),e.skipBits(5)},xi=(e,t)=>t.description?ui(e,(Un(t.description)[21]&3)+1):li(e),Si=e=>e>>1&63,Ci=e=>{try{let t=new qr(pi(e));t.skipBits(16),t.readBits(4);let n=t.readBits(3),r=t.readBits(1),{general_profile_space:i,general_tier_flag:a,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:c,general_level_idc:l}=Ti(t,n);I(t);let u=I(t),d=0;u===3&&(d=t.readBits(1));let f=I(t),p=I(t),m=f,h=p;if(t.readBits(1)){let e=I(t),n=I(t),r=I(t),i=I(t),a=1,o=1,s=d===0?u:0;s===1?(a=2,o=2):s===2&&(a=2,o=1),m-=(e+n)*a,h-=(r+i)*o}if(m<=0||h<=0)return null;let g=I(t),_=I(t);I(t);let v=t.readBits(1)?0:n,y=0;for(let e=v;e<=n;e++)I(t),y=I(t),I(t);if(I(t),I(t),I(t),I(t),I(t),I(t),t.readBits(1)&&t.readBits(1)&&Ei(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&(t.skipBits(4),t.skipBits(4),I(t),I(t),t.skipBits(1)),Di(t,I(t)),t.readBits(1)){let e=I(t);for(let n=0;n<e;n++)I(t),t.skipBits(1)}t.skipBits(1),t.skipBits(1);let b=2,x=2,S=2,C=0,w=0,T={num:1,den:1};if(t.readBits(1)){let e=ki(t,n);T=e.pixelAspectRatio,b=e.colourPrimaries,x=e.transferCharacteristics,S=e.matrixCoefficients,C=e.fullRangeFlag,w=e.minSpatialSegmentationIdc}return{displayWidth:m,displayHeight:h,pixelAspectRatio:T,colourPrimaries:b,transferCharacteristics:x,matrixCoefficients:S,fullRangeFlag:C,maxDecFrameBuffering:Math.min(y+1,16),spsMaxSubLayersMinus1:n,spsTemporalIdNestingFlag:r,generalProfileSpace:i,generalTierFlag:a,generalProfileIdc:o,generalProfileCompatibilityFlags:s,generalConstraintIndicatorFlags:c,generalLevelIdc:l,chromaFormatIdc:u,bitDepthLumaMinus8:g,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:w}}catch(e){return Hr._error(`Error parsing HEVC SPS:`,e),null}},wi=e=>{try{let t=[],n=[],r=[],i=[],a=65535;for(let o of li(e)){let s=e.subarray(o.offset,o.offset+o.length),c=Si(s[0]);c===ci.VPS_NUT&&t.length<a?t.push(s):c===ci.SPS_NUT&&n.length<a?n.push(s):c===ci.PPS_NUT&&r.length<a?r.push(s):(c===ci.PREFIX_SEI_NUT||c===ci.SUFFIX_SEI_NUT)&&i.length<a&&i.push(s)}if(n.length===0||r.length===0)return null;let o=Ci(n[0]);if(!o)return null;let s=0;if(r.length>0){let e=r[0],t=new qr(pi(e));t.skipBits(16),I(t),I(t),t.skipBits(1),t.skipBits(1),t.skipBits(3),t.skipBits(1),t.skipBits(1),I(t),I(t),Vn(t),t.skipBits(1),t.skipBits(1),t.readBits(1)&&I(t),Vn(t),Vn(t),t.skipBits(1),t.skipBits(1),t.skipBits(1),t.skipBits(1);let n=t.readBits(1),i=t.readBits(1);s=!n&&!i?0:n&&!i?2:!n&&i?3:0}let c=[...t.length?[{arrayCompleteness:1,nalUnitType:ci.VPS_NUT,nalUnits:t}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:ci.SPS_NUT,nalUnits:n}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:ci.PPS_NUT,nalUnits:r}]:[],...i.length?[{arrayCompleteness:1,nalUnitType:Si(i[0][0]),nalUnits:i}]:[]];return{configurationVersion:1,generalProfileSpace:o.generalProfileSpace,generalTierFlag:o.generalTierFlag,generalProfileIdc:o.generalProfileIdc,generalProfileCompatibilityFlags:o.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:o.generalConstraintIndicatorFlags,generalLevelIdc:o.generalLevelIdc,minSpatialSegmentationIdc:o.minSpatialSegmentationIdc,parallelismType:s,chromaFormatIdc:o.chromaFormatIdc,bitDepthLumaMinus8:o.bitDepthLumaMinus8,bitDepthChromaMinus8:o.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:o.spsMaxSubLayersMinus1+1,temporalIdNested:o.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:c}}catch(e){return Hr._error(`Error building HEVC Decoder Configuration Record:`,e),null}},Ti=(e,t)=>{let n=e.readBits(2),r=e.readBits(1),i=e.readBits(5),a=0;for(let t=0;t<32;t++)a=a<<1|e.readBits(1);let o=new Uint8Array(6);for(let t=0;t<6;t++)o[t]=e.readBits(8);let s=e.readBits(8),c=[],l=[];for(let n=0;n<t;n++)c.push(e.readBits(1)),l.push(e.readBits(1));if(t>0)for(let n=t;n<8;n++)e.skipBits(2);for(let n=0;n<t;n++)c[n]&&e.skipBits(88),l[n]&&e.skipBits(8);return{general_profile_space:n,general_tier_flag:r,general_profile_idc:i,general_profile_compatibility_flags:a,general_constraint_indicator_flags:o,general_level_idc:s}},Ei=e=>{for(let t=0;t<4;t++)for(let n=0;n<(t===3?2:6);n++)if(!e.readBits(1))I(e);else{let n=Math.min(64,1<<4+(t<<1));t>1&&Vn(e);for(let t=0;t<n;t++)Vn(e)}},Di=(e,t)=>{let n=[];for(let r=0;r<t;r++)n[r]=Oi(e,r,t,n)},Oi=(e,t,n,r)=>{let i=0,a=0,o=0;if(t!==0&&(a=e.readBits(1)),a){o=t===n?t-(I(e)+1):t-1,e.readBits(1),I(e);let a=r[o]??0;for(let t=0;t<=a;t++)e.readBits(1)||e.readBits(1);i=r[o]}else{let t=I(e),n=I(e);for(let n=0;n<t;n++)I(e),e.readBits(1);for(let t=0;t<n;t++)I(e),e.readBits(1);i=t+n}return i},ki=(e,t)=>{let n=2,r=2,i=2,a=0,o=0,s={num:1,den:1};if(e.readBits(1)){let t=e.readBits(8);if(t===255)s={num:e.readBits(16),den:e.readBits(16)};else{let e=vi[t];e&&(s=e)}}return e.readBits(1)&&e.readBits(1),e.readBits(1)&&(e.readBits(3),a=e.readBits(1),e.readBits(1)&&(n=e.readBits(8),r=e.readBits(8),i=e.readBits(8))),e.readBits(1)&&(I(e),I(e)),e.readBits(1),e.readBits(1),e.readBits(1),e.readBits(1)&&(I(e),I(e),I(e),I(e)),e.readBits(1)&&(e.readBits(32),e.readBits(32),e.readBits(1)&&I(e),e.readBits(1)&&Ai(e,!0,t)),e.readBits(1)&&(e.readBits(1),e.readBits(1),e.readBits(1),o=I(e),I(e),I(e),I(e),I(e)),{pixelAspectRatio:s,colourPrimaries:n,transferCharacteristics:r,matrixCoefficients:i,fullRangeFlag:a,minSpatialSegmentationIdc:o}},Ai=(e,t,n)=>{let r=!1,i=!1,a=!1;t&&(r=e.readBits(1)===1,i=e.readBits(1)===1,(r||i)&&(a=e.readBits(1)===1,a&&(e.readBits(8),e.readBits(5),e.readBits(1),e.readBits(5)),e.readBits(4),e.readBits(4),a&&e.readBits(4),e.readBits(5),e.readBits(5),e.readBits(5)));for(let t=0;t<=n;t++){let t=e.readBits(1)===1,n=!0;t||(n=e.readBits(1)===1);let o=!1;n?I(e):o=e.readBits(1)===1;let s=1;o||(s=I(e)+1),r&&ji(e,s,a),i&&ji(e,s,a)}},ji=(e,t,n)=>{for(let r=0;r<t;r++)I(e),I(e),n&&(I(e),I(e)),e.readBits(1)},Mi=e=>{let t=[];t.push(e.configurationVersion),t.push((e.generalProfileSpace&3)<<6|(e.generalTierFlag&1)<<5|e.generalProfileIdc&31),t.push(e.generalProfileCompatibilityFlags>>>24&255),t.push(e.generalProfileCompatibilityFlags>>>16&255),t.push(e.generalProfileCompatibilityFlags>>>8&255),t.push(e.generalProfileCompatibilityFlags&255),t.push(...e.generalConstraintIndicatorFlags),t.push(e.generalLevelIdc&255),t.push(240|e.minSpatialSegmentationIdc>>8&15),t.push(e.minSpatialSegmentationIdc&255),t.push(252|e.parallelismType&3),t.push(252|e.chromaFormatIdc&3),t.push(248|e.bitDepthLumaMinus8&7),t.push(248|e.bitDepthChromaMinus8&7),t.push(e.avgFrameRate>>8&255),t.push(e.avgFrameRate&255),t.push((e.constantFrameRate&3)<<6|(e.numTemporalLayers&7)<<3|(e.temporalIdNested&1)<<2|e.lengthSizeMinusOne&3),t.push(e.arrays.length&255);for(let n of e.arrays){t.push((n.arrayCompleteness&1)<<7|n.nalUnitType&63),t.push(n.nalUnits.length>>8&255),t.push(n.nalUnits.length&255);for(let e of n.nalUnits){t.push(e.length>>8&255),t.push(e.length&255);for(let n=0;n<e.length;n++)t.push(e[n])}}return new Uint8Array(t)},Ni;(function(e){e[e.audAllowed=0]=`audAllowed`,e[e.beforeFirstVcl=1]=`beforeFirstVcl`,e[e.afterFirstVcl=2]=`afterFirstVcl`,e[e.eoBitstreamAllowed=3]=`eoBitstreamAllowed`,e[e.noMoreDataAllowed=4]=`noMoreDataAllowed`})(Ni||={});var Pi={1:{colourPrimaries:5,transferCharacteristics:6,matrixCoefficients:5},2:{colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1},3:{colourPrimaries:6,transferCharacteristics:6,matrixCoefficients:6},4:{colourPrimaries:7,transferCharacteristics:7,matrixCoefficients:7},5:{colourPrimaries:9,transferCharacteristics:14,matrixCoefficients:9},7:{colourPrimaries:1,transferCharacteristics:13,matrixCoefficients:0}},Fi=e=>{let t=new qr(e);if(t.readBits(2)!==2)return null;let n=t.readBits(1),r=(t.readBits(1)<<1)+n;if(r===3&&t.skipBits(1),t.readBits(1)===1||t.readBits(1)!==0||(t.skipBits(2),t.readBits(24)!==4817730))return null;let i=8;r>=2&&(i=t.readBits(1)?12:10);let a=t.readBits(3),o=0,s=0;if(a!==7){if(s=t.readBits(1),r===1||r===3){let e=t.readBits(1),n=t.readBits(1);o=!e&&!n?3:e&&!n?2:1,t.skipBits(1)}else o=1}else o=3,s=1;let c=t.readBits(16),l=t.readBits(16),u=(c+1)*(l+1),d=Rn(z).level;for(let e of z)if(u<=e.maxPictureSize){d=e.level;break}let f=Pi[a],p=f?.colourPrimaries??2,m=f?.transferCharacteristics??2,h=f?.matrixCoefficients??2;return{profile:r,level:d,bitDepth:i,chromaSubsampling:o,videoFullRangeFlag:s,colourPrimaries:p,transferCharacteristics:m,matrixCoefficients:h}},Ii=function*(e){let t=new qr(e),n=()=>{let e=0;for(let n=0;n<8;n++){let r=t.readAlignedByte();if(e+=(r&127)*2**(n*7),!(r&128))break;if(n===7&&r&128)return null}return e>2**32-1?null:e};for(;t.getBitsLeft()>=8;){t.skipBits(1);let r=t.readBits(4),i=t.readBits(1),a=t.readBits(1);t.skipBits(1),i&&t.skipBits(8);let o;if(a){let e=n();if(e===null)return;o=e}else o=Math.floor(t.getBitsLeft()/8);F(t.pos%8==0),yield{type:r,data:e.subarray(t.pos/8,t.pos/8+o)},t.skipBits(o*8)}},Li=e=>{for(let{type:t,data:n}of Ii(e)){if(t!==1)continue;let e=new qr(n),r=e.readBits(3);e.readBits(1);let i=e.readBits(1),a=0,o=0,s=0;if(i)a=e.readBits(5);else{let t=e.readBits(1),n=0;if(t){if(e.skipBits(32),e.skipBits(32),e.readBits(1)){let t=0;for(;t<32&&!e.readBits(1);)t++;t<32&&e.skipBits(t)}n=e.readBits(1),n&&(s=e.readBits(5),e.skipBits(32),e.skipBits(5),e.skipBits(5))}let r=e.readBits(1),i=e.readBits(5);for(let t=0;t<=i;t++){e.skipBits(12);let i=e.readBits(5);if(t===0&&(a=i),i>7){let n=e.readBits(1);t===0&&(o=n)}if(n&&e.readBits(1)){let t=s+1;e.skipBits(t),e.skipBits(t),e.skipBits(1)}r&&e.readBits(1)&&e.skipBits(4)}}let c=e.readBits(4),l=e.readBits(4),u=c+1;e.skipBits(u);let d=l+1;e.skipBits(d);let f=0;if(f=i?0:e.readBits(1),f&&(e.skipBits(4),e.skipBits(3)),e.skipBits(1),e.skipBits(1),e.skipBits(1),!i){e.skipBits(1),e.skipBits(1),e.skipBits(1),e.skipBits(1);let t=e.readBits(1);t&&(e.skipBits(1),e.skipBits(1));let n=e.readBits(1),r=0;r=n?2:e.readBits(1),r>0&&(e.readBits(1)||e.skipBits(1)),t&&e.skipBits(3)}e.skipBits(1),e.skipBits(1),e.skipBits(1);let p=e.readBits(1),m=8;r===2&&p?m=e.readBits(1)?12:10:r<=2&&(m=p?10:8);let h=0;r!==1&&(h=e.readBits(1));let g=2,_=2,v=2;e.readBits(1)&&(g=e.readBits(8),_=e.readBits(8),v=e.readBits(8));let y=0,b=1,x=1,S=0;return h?y=e.readBits(1):g===1&&_===13&&v===0?(y=1,b=0,x=0):(y=e.readBits(1),r===0?(b=1,x=1):r===1?(b=0,x=0):m===12?(b=e.readBits(1),x=b?e.readBits(1):0):(b=1,x=0),b&&x&&(S=e.readBits(2))),{profile:r,level:a,tier:o,bitDepth:m,monochrome:h,chromaSubsamplingX:b,chromaSubsamplingY:x,chromaSamplePosition:S,videoFullRangeFlag:y,colourPrimaries:g,transferCharacteristics:_,matrixCoefficients:v}}return null},Ri=e=>e.colourPrimaries!==2||e.transferCharacteristics!==2||e.matrixCoefficients!==2,zi=e=>{if(e.byteLength<19)throw Error(`Invalid Opus identification header: too short.`);let t=Wn(e),n=t.getUint8(9),r=t.getUint16(10,!0),i=t.getUint32(12,!0),a=t.getInt16(16,!0),o=t.getUint8(18),s=null;return o&&(s=e.subarray(19,21+n)),{outputChannelCount:n,preSkip:r,inputSampleRate:i,outputGain:a,channelMappingFamily:o,channelMappingTable:s}},Bi=[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960],Vi=e=>{let t=e[0]>>3,n=e[0]&3,r;return r=n===0?1:n===1||n===2?2:e[1]&63,{durationInSamples:Bi[t]*r}},Hi=(e,t,n)=>{switch(e){case`avc`:for(let e of di(n,t)){let t=n[e.offset],r=fi(t);if(r>=si.NON_IDR_SLICE&&r<=si.SLICE_DPC)return`delta`;if(r===si.IDR)return`key`;if(r===si.SEI&&!Sr()){let t=pi(n.subarray(e.offset,e.offset+e.length)),r=1;do{let e=0;for(;;){let n=t[r++];if(n===void 0||(e+=n,n<255))break}let n=0;for(;;){let e=t[r++];if(e===void 0||(n+=e,e<255))break}if(e===6){let e=new qr(t);e.pos=8*r;let n=-1;try{n=I(e)}catch{}let i=e.readBits(1);if(n===0&&i===1)return`key`}r+=n}while(r<t.length-1)}}return`delta`;case`hevc`:for(let e of xi(n,t)){let t=Si(n[e.offset]);if(t<ci.BLA_W_LP)return`delta`;if(t<=ci.RSV_IRAP_VCL23)return`key`}return`delta`;case`vp8`:return n[0]&1?`delta`:`key`;case`vp9`:{let e=new qr(n);if(e.readBits(2)!==2)return null;let t=e.readBits(1);return(e.readBits(1)<<1)+t===3&&e.skipBits(1),e.readBits(1)?null:e.readBits(1)===0?`key`:`delta`}case`av1`:{let e=!1;for(let{type:t,data:r}of Ii(n))if(t===1){let t=new qr(r);t.skipBits(4),e=!!t.readBits(1)}else if(t===3||t===6||t===7){if(e)return`key`;let t=new qr(r);return t.readBits(1)?null:t.readBits(2)===0?`key`:`delta`}return null}case`prores`:return`key`;default:rr(e),F(!1)}},Ui=(e,t)=>e===`truehd`?(t.byteLength>=8?Wn(t).getUint32(4):null)===4168249274?`key`:`delta`:`key`,Wi;(function(e){e[e.STREAMINFO=0]=`STREAMINFO`,e[e.VORBIS_COMMENT=4]=`VORBIS_COMMENT`,e[e.PICTURE=6]=`PICTURE`})(Wi||={});var Gi=e=>{if(e.length<7||e[0]!==11||e[1]!==119)return null;let t=new qr(e);t.skipBits(16),t.skipBits(16);let n=t.readBits(2);if(n===3)return null;let r=t.readBits(6),i=t.readBits(5);if(i>8)return null;let a=t.readBits(3),o=t.readBits(3);return o&1&&o!==1&&t.skipBits(2),o&4&&t.skipBits(2),o===2&&t.skipBits(2),{fscod:n,bsid:i,bsmod:a,acmod:o,lfeon:t.readBits(1),bitRateCode:Math.floor(r/2)}};new Uint8Array([5,4,65,67,45,51]),new Uint8Array([5,4,69,65,67,51]);var Ki=[1,2,3,6],qi=e=>{if(e.length<6||e[0]!==11||e[1]!==119)return null;let t=new qr(e);t.skipBits(16);let n=t.readBits(2);if(t.skipBits(3),n!==0&&n!==2)return null;let r=t.readBits(11),i=t.readBits(2),a=0,o;i===3?(a=t.readBits(2),o=3):o=t.readBits(2);let s=t.readBits(3),c=t.readBits(1),l=t.readBits(5);if(l<11||l>16)return null;let u=Ki[o],d;return d=i<3?ii[i]/1e3:ai[a]/1e3,{dataRate:Math.round((r+1)*d/(u*16)),substreams:[{fscod:i,fscod2:a,bsid:l,bsmod:0,acmod:s,lfeon:c,numDepSub:0,chanLoc:0}]}},Ji=8,Yi=[0,8e3,16e3,32e3,0,0,11025,22050,44100,0,0,12e3,24e3,48e3,96e3,192e3],Xi=[32e3,56e3,64e3,96e3,112e3,128e3,192e3,224e3,256e3,32e4,384e3,448e3,512e3,576e3,64e4,768e3,96e4,1024e3,1152e3,128e4,1344e3,1408e3,1411200,1472e3,1536e3,192e4,2048e3,3072e3,384e4,0,0,0],Zi=[16,16,20,20,0,24,24,0],Qi=[1,2,2,2,2,3,3,4,4,5,6,6,6,7,8,8],$i=[1,2,2,2,2,3,18,19,6,7,518,323,83,519,582,535],ea=8,ta=[32e3,44100,48e3,0],na=[8e3,16e3,32e3,64e3,128e3,22050,44100,88200,176400,352800,12e3,24e3,48e3,96e3,192e3,384e3],ra=[512,1024,2048,4096],ia=e=>{let t=L(e),n=Wn(e),r=t?Math.ceil(t.frameSize/4)*4:0,i=null;for(;r+4<=e.length&&n.getUint32(r)===1683496997;){let t=aa(e.subarray(r));if(!t)break;i??=t,r+=t.frameSize}if(t)return{frameSize:i?r:t.frameSize,sampleRate:t.sampleRate,numberOfChannels:t.numberOfChannels,sampleCount:t.sampleCount,channelLayout:t.channelLayout,pcmResolution:t.pcmResolution,bitRate:t.bitRate,core:t,hasExtensions:i!==null};if(!i?.asset)return null;let{asset:a}=i;return{frameSize:r,sampleRate:a.sampleRate,numberOfChannels:a.numberOfChannels,sampleCount:a.sampleCount,channelLayout:a.channelLayout,pcmResolution:a.pcmResolution,bitRate:0,core:null,hasExtensions:!0}},L=e=>{if(e.length<18||e[0]!==127||e[1]!==254||e[2]!==128||e[3]!==1)return null;let t=new qr(e);if(t.skipBits(32),t.skipBits(1),t.readBits(5)!==31)return null;let n=t.readBits(1),r=t.readBits(7)+1;if(r%Ji!==0)return null;let i=t.readBits(14)+1;if(i<96)return null;let a=t.readBits(6);if(a>=Qi.length)return null;let o=Yi[t.readBits(4)];if(o===0)return null;let s=Xi[t.readBits(5)];if(t.readBits(1)!==0)return null;t.skipBits(4),t.skipBits(5);let c=t.readBits(2);if(c===3)return null;t.skipBits(1),n&&t.skipBits(16),t.skipBits(7);let l=Zi[t.readBits(3)];if(l===0)return null;let u=c!==0;return{frameSize:i,sampleRate:o,numberOfChannels:Qi[a]+ +!!u,sampleCount:r*32,channelLayout:$i[a]|(u?ea:0),amode:a,lfePresent:u,bitRate:s,pcmResolution:l}},aa=e=>{if(e.length<10||e[0]!==100||e[1]!==88||e[2]!==32||e[3]!==37)return null;let t=new qr(e);t.skipBits(32),t.skipBits(8);let n=t.readBits(2),r=t.readBits(1),i=8+4*r,a=16+4*r;t.skipBits(i);let o=t.readBits(a)+1,s={frameSize:o,asset:null};if(!t.readBits(1))return s;let c=ta[t.readBits(2)],l=512*(t.readBits(3)+1);t.readBits(1)&&t.skipBits(36);let u=t.readBits(3)+1,d=t.readBits(3)+1,f=[];for(let e=0;e<u;e++)f.push(t.readBits(n+1));for(let e of f)t.skipBits(8*dr(e));if(t.readBits(1)){t.skipBits(2);let e=t.readBits(2)+1<<2,n=t.readBits(2)+1;t.skipBits(n*e)}for(let e=0;e<d;e++)t.skipBits(a);t.skipBits(9),t.skipBits(3),t.readBits(1)&&t.skipBits(4),t.readBits(1)&&t.skipBits(24),t.readBits(1)&&t.skipBits(8*(t.readBits(10)+1));let p=t.readBits(5)+1,m=na[t.readBits(4)],h=t.readBits(8)+1,g=0;if(t.readBits(1)&&(h>2&&t.skipBits(1),h>6&&t.skipBits(1),t.readBits(1))){let e=t.readBits(2)+1<<2;g=t.readBits(e)}return c===0||t.getBitsLeft()<0?s:{frameSize:o,asset:{sampleRate:m,numberOfChannels:h,sampleCount:Math.round(l*m/c),channelLayout:g,pcmResolution:p}}},oa=e=>{let t=new Uint8Array(20),n=Wn(t);n.setUint32(0,e.sampleRate),n.setUint32(4,e.bitRate),n.setUint32(8,e.bitRate),t[12]=e.pcmResolution;let r=e.core&&!e.hasExtensions?1:0,i=new qr(t);return i.seekToByte(13),i.writeBits(2,Math.max(ra.indexOf(e.sampleCount),0)),i.writeBits(5,r),i.writeBits(1,+!!e.core?.lfePresent),i.writeBits(6,e.core?.amode??0),i.writeBits(14,e.core?e.core.frameSize-1:0),i.writeBits(1,0),i.writeBits(3,0),i.writeBits(16,e.channelLayout),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(1,0),i.writeBits(5,0),t},sa=/<(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})>/g,ca=/(?:(\d{2}):)?(\d{2}):(\d{2}).(\d{3})/,la=e=>{let t=ca.exec(e);if(!t)throw Error(`Expected match.`);return 36e5*Number(t[1]||`0`)+6e4*Number(t[2])+1e3*Number(t[3])+Number(t[4])},ua=e=>{let t=Math.floor(e/36e5),n=Math.floor(e%36e5/6e4),r=Math.floor(e%6e4/1e3),i=e%1e3;return t.toString().padStart(2,`0`)+`:`+n.toString().padStart(2,`0`)+`:`+r.toString().padStart(2,`0`)+`.`+i.toString().padStart(3,`0`)},da=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},fa=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r});Mr();var pa=-1/0,ma=-1/0,ha=null;typeof FinalizationRegistry<`u`&&(ha=new FinalizationRegistry(e=>{let t=performance.now();e.type===`video`?(t-pa>=1e3&&(Hr._error(`A VideoSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your VideoSamples as soon as you're done using them.`),pa=t),typeof VideoFrame<`u`&&e.data instanceof VideoFrame&&e.data.close()):(t-ma>=1e3&&(Hr._error(`An AudioSample was garbage collected without first being closed. For proper resource management, make sure to call close() on all your AudioSamples as soon as you're done using them.`),ma=t),typeof AudioData<`u`&&e.data instanceof AudioData&&e.data.close())}));var ga=class{constructor(){this._referenceCount=0,this._lastAllocationBuffer=null}},_a=[`I420`,`I420P10`,`I420P12`,`I420A`,`I420AP10`,`I420AP12`,`I422`,`I422P10`,`I422P12`,`I422A`,`I422AP10`,`I422AP12`,`I444`,`I444P10`,`I444P12`,`I444A`,`I444AP10`,`I444AP12`,`NV12`,`RGBA`,`RGBX`,`BGRA`,`BGRX`],va=new Set(_a),ya=class e{get codedWidth(){return this.visibleRect.width}get codedHeight(){return this.visibleRect.height}get displayWidth(){return this.rotation%180==0?this.squarePixelWidth:this.squarePixelHeight}get displayHeight(){return this.rotation%180==0?this.squarePixelHeight:this.squarePixelWidth}get microsecondTimestamp(){return Math.trunc(mr*this.timestamp)}get microsecondDuration(){return Math.trunc(mr*this.duration)}get hasAlpha(){return this.format&&this.format.includes(`A`)}constructor(t,n){if(this._closed=!1,t instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&t instanceof SharedArrayBuffer||ArrayBuffer.isView(t)){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.format===void 0||!va.has(n.format))throw TypeError(`init.format must be one of: `+_a.join(`, `));if(!Number.isInteger(n.codedWidth)||n.codedWidth<=0)throw TypeError(`init.codedWidth must be a positive integer.`);if(!Number.isInteger(n.codedHeight)||n.codedHeight<=0)throw TypeError(`init.codedHeight must be a positive integer.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(n.layout!==void 0){if(!Array.isArray(n.layout))throw TypeError(`init.layout, when provided, must be an array.`);for(let e of n.layout){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`Each entry in init.layout must be an object.`);if(!Number.isInteger(e.offset)||e.offset<0)throw TypeError(`plane.offset must be a non-negative integer.`);if(!Number.isInteger(e.stride)||e.stride<0)throw TypeError(`plane.stride must be a non-negative integer.`)}}if(n.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),n.displayWidth!==void 0&&(!Number.isInteger(n.displayWidth)||n.displayWidth<=0))throw TypeError(`init.displayWidth, when provided, must be a positive integer.`);if(n.displayHeight!==void 0&&(!Number.isInteger(n.displayHeight)||n.displayHeight<=0))throw TypeError(`init.displayHeight, when provided, must be a positive integer.`);if(n.displayWidth!==void 0!=(n.displayHeight!==void 0))throw TypeError(`init.displayWidth and init.displayHeight must be either both provided or both omitted.`);this.format=n.format,this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0;let e=n.layout??Aa(n.format,n.codedWidth,n.codedHeight),r=n.colorSpace??null;r===null&&(r=this.format===`RGBA`||this.format===`RGBX`||this.format===`BGRA`||this.format===`BGRX`?{primaries:`bt709`,transfer:`iec61966-2-1`,matrix:`rgb`,fullRange:!0}:{primaries:`bt709`,transfer:`bt709`,matrix:`bt709`,fullRange:!1}),this.visibleRect={left:n.visibleRect?.left??0,top:n.visibleRect?.top??0,width:n.visibleRect?.width??n.codedWidth,height:n.visibleRect?.height??n.codedHeight},n.displayWidth===void 0?(this.squarePixelWidth=this.visibleRect.width,this.squarePixelHeight=this.visibleRect.height):(this.squarePixelWidth=this.rotation%180==0?n.displayWidth:n.displayHeight,this.squarePixelHeight=this.rotation%180==0?n.displayHeight:n.displayWidth),this._data=n._doNotCopy?Un(t):Un(t).slice(),this._layout=e,this.colorSpace=new Ta(r)}else if(typeof VideoFrame<`u`&&t instanceof VideoFrame){if(n?.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n?.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(n?.timestamp!==void 0&&!Number.isFinite(n?.timestamp))throw TypeError(`init.timestamp, when provided, must be a number.`);if(n?.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);n?.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),this._data=t,this._layout=null,this.format=t.format,this.visibleRect={left:t.visibleRect?.x??0,top:t.visibleRect?.y??0,width:t.visibleRect?.width??t.codedWidth,height:t.visibleRect?.height??t.codedHeight},this.rotation=n?.rotation??0,this.flip=n?.flip??!1,this.squarePixelWidth=t.displayWidth,this.squarePixelHeight=t.displayHeight,this.timestamp=n?.timestamp??t.timestamp/1e6,this.duration=n?.duration??(t.duration??0)/1e6;let{primaries:e,transfer:r,matrix:i,fullRange:a}=t.colorSpace;this.colorSpace=new Ta({primaries:e!==null&&e in qn?e:null,transfer:r!==null&&r in Jn?r:null,matrix:i!==null&&i in Yn?i:null,fullRange:a})}else if(typeof HTMLImageElement<`u`&&t instanceof HTMLImageElement||typeof SVGImageElement<`u`&&t instanceof SVGImageElement||typeof ImageBitmap<`u`&&t instanceof ImageBitmap||typeof HTMLVideoElement<`u`&&t instanceof HTMLVideoElement||typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement||typeof OffscreenCanvas<`u`&&t instanceof OffscreenCanvas){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(n.visibleRect!==void 0&&Ir(n.visibleRect,`init.visibleRect`),typeof VideoFrame<`u`)return new e(new VideoFrame(t,{timestamp:Math.trunc(n.timestamp*mr),duration:Math.trunc((n.duration??0)*mr)||void 0,visibleRect:n.visibleRect&&{x:n.visibleRect.left,y:n.visibleRect.top,width:n.visibleRect.width,height:n.visibleRect.height}}),n);let r=0,i=0;if(`naturalWidth`in t?(r=t.naturalWidth,i=t.naturalHeight):`videoWidth`in t?(r=t.videoWidth,i=t.videoHeight):`width`in t&&(r=Number(t.width),i=Number(t.height)),!r||!i)throw TypeError(`Could not determine dimensions.`);let a=n.visibleRect??{left:0,top:0,width:r,height:i},o=new OffscreenCanvas(a.width,a.height),s=o.getContext(`2d`,{alpha:br(),willReadFrequently:!0});if(!s)throw Error(`OffscreenCanvas must have support for the '2d' context in order to create a VideoSample from this data.`);s.drawImage(t,-a.left,-a.top),this._data=o,this._layout=null,this.format=`RGBX`,this.visibleRect={left:0,top:0,width:a.width,height:a.height},this.squarePixelWidth=a.width,this.squarePixelHeight=a.height,this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0,this.colorSpace=new Ta({matrix:`rgb`,primaries:`bt709`,transfer:`iec61966-2-1`,fullRange:!0})}else if(t instanceof ga){if(!n||typeof n!=`object`)throw TypeError(`init must be an object.`);if(n.rotation!==void 0&&![0,90,180,270].includes(n.rotation))throw TypeError(`init.rotation, when provided, must be 0, 90, 180, or 270.`);if(n.flip!==void 0&&typeof n.flip!=`boolean`)throw TypeError(`init.flip, when provided, must be a boolean.`);if(!Number.isFinite(n.timestamp))throw TypeError(`init.timestamp must be a number.`);if(n.duration!==void 0&&(!Number.isFinite(n.duration)||n.duration<0))throw TypeError(`init.duration, when provided, must be a non-negative number.`);if(this._data=t,t._referenceCount++,this.format=t.getFormat(),this.format!==null&&!_a.includes(this.format))throw TypeError(`getFormat() must return a VideoSamplePixelFormat or null.`);if(this.visibleRect={left:0,top:0,width:t.getCodedWidth(),height:t.getCodedHeight()},!Number.isInteger(this.visibleRect.width)||this.visibleRect.width<=0)throw TypeError(`getCodedWidth() must return a positive integer.`);if(!Number.isInteger(this.visibleRect.height)||this.visibleRect.height<=0)throw TypeError(`getCodedHeight() must return a positive integer.`);if(this.squarePixelWidth=t.getSquarePixelWidth(),!Number.isInteger(this.squarePixelWidth)||this.squarePixelWidth<=0)throw TypeError(`getSquarePixelWidth() must return a positive integer.`);if(this.squarePixelHeight=t.getSquarePixelHeight(),!Number.isInteger(this.squarePixelHeight)||this.squarePixelHeight<=0)throw TypeError(`getSquarePixelHeight() must return a positive integer.`);this.rotation=n.rotation??0,this.flip=n.flip??!1,this.timestamp=n.timestamp,this.duration=n.duration??0,this.colorSpace=t.getColorSpace()}else throw TypeError(`Invalid data type: Must be a BufferSource, CanvasImageSource, or VideoSampleResource.`);this.encodeOptions=n?.encodeOptions??{},this.pixelAspectRatio=Fr({num:this.squarePixelWidth*this.codedHeight,den:this.squarePixelHeight*this.codedWidth}),ha?.register(this,{type:`video`,data:this._data},this)}clone(){if(this._closed)throw Error(`VideoSample is closed.`);return F(this._data!==null),this._data instanceof ga?new e(this._data,{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):Ea(this._data)?new e(this._data.clone(),{timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip,encodeOptions:this.encodeOptions}):this._data instanceof Uint8Array?(F(this._layout),new e(this._data,{format:this.format,layout:this._layout,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions,_doNotCopy:!0})):new e(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,colorSpace:this.colorSpace,rotation:this.rotation,flip:this.flip,visibleRect:this.visibleRect,displayWidth:this.displayWidth,displayHeight:this.displayHeight,encodeOptions:this.encodeOptions})}close(){this._closed||=(ha?.unregister(this),this._data instanceof ga?(this._data._referenceCount--,this._data._referenceCount===0&&this._data.close()):Ea(this._data)?this._data.close():this._data=null,!0)}allocationSize(e={}){if(ka(e),this._closed)throw Error(`VideoSample is closed.`);if((e.format??this.format)==null)throw Error(`Cannot get allocation size when format is null.`);return Ea(this._data)?this._data.allocationSize(e):Ma(this,e).allocationSize}async copyTo(t,n={}){if(!Zn(t))throw TypeError(`destination must be an ArrayBuffer or an ArrayBuffer view.`);if(ka(n),this._closed)throw Error(`VideoSample is closed.`);if((n.format??this.format)==null)throw Error(`Cannot copy video sample data when format is null.`);if(F(this._data!==null),Ea(this._data))return this._data.copyTo(t,n);if(n.format&&![`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(this.format)&&[`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(n.format)){if(this._data instanceof ga){let r={stack:[],error:void 0,hasError:!1};try{let i=da(r,await this._data.toRgbSample({timestamp:this.timestamp,duration:this.duration,rotation:this.rotation,flip:this.flip},n.colorSpace??`srgb`),!1);if(!(i instanceof e))throw TypeError(`toRgbSample() must return a VideoSample.`);if(![`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(i.format))throw Error(`Sample returned by toRgbSample was expected to have an RGB format, got '${i.format}' instead.`);return await i.copyTo(t,n)}catch(e){r.error=e,r.hasError=!0}finally{fa(r)}}else{if(typeof VideoFrame>`u`)throw Error(`For this sample, converting from a non-RGB to an RGB format requires VideoFrame to be defined.`);let e=this.toVideoFrame(),r=await e.copyTo(t,n);return e.close(),r}}let r=Ma(this,n);F(this.format);let i=Un(t);if(i.byteLength<r.allocationSize)throw TypeError(`Destination buffer too small. Required: ${r.allocationSize}, Available: ${i.byteLength}`);let a=ja(this.format),o;if(this._data instanceof ga){let e=this._data.getDataPlanes();if(Or(e)&&(e=await e),!Array.isArray(e)||e.some(e=>!(e.data instanceof Uint8Array)||!Number.isInteger(e.stride)||e.stride<0))throw TypeError(`getDataPlanes() must return an array of objects with a Uint8Array "data" property and a non-negative integer "stride" property.`);o=e}else if(this._data instanceof Uint8Array)F(this._layout),F(this._layout.length===a.length),o=this._layout.map((e,t)=>{let n=Math.ceil(this.codedHeight/a[t].heightDivisor);return{data:this._data.subarray(e.offset,e.offset+e.stride*n),stride:e.stride}});else{let e=this._data.getContext(`2d`);F(e),o=[{data:Un(e.getImageData(0,0,this.codedWidth,this.codedHeight).data),stride:4*this.codedWidth}]}let s=[],c=a.length;for(let e=0;e<c;e++){let t=r.computedLayouts[e],n=o[e].stride,a=o[e].data,c=t.sourceTop*n;c+=t.sourceLeftBytes;let l=t.destinationOffset,u=t.sourceWidthBytes,d={offset:l,stride:t.destinationStride};for(let e=0;e<t.sourceHeight;e++){if(c+u>a.byteLength)throw Error(`Source buffer OOB read.`);if(l+u>i.byteLength)throw Error(`Destination buffer OOB write.`);let e=a.subarray(c,c+u);i.set(e,l),c+=n,l+=t.destinationStride}s.push(d)}if(n.format!==void 0){let e=this.format.startsWith(`RGB`)!==n.format.startsWith(`RGB`),t=this.format.includes(`X`)&&n.format.includes(`A`);if(e||t)for(let n=0;n<r.allocationSize;n+=4){if(e){let e=i[n],t=i[n+2];i[n]=t,i[n+2]=e}t&&(i[n+3]=255)}}return s}toVideoFrame(){if(this._closed)throw Error(`VideoSample is closed.`);if(F(this._data!==null),this._data instanceof ga){if(this.format===null)throw Error(`Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if format is null.`);let e=this._data.getDataPlanes();if(Or(e))throw Error(`Cannot convert a VideoSampleResource-backed VideoSample to VideoFrame if getDataPlanes() returns a promise.`);let t=e.reduce((e,t)=>e+t.data.byteLength,0),n=new Uint8Array(t),r=0,i=[];for(let t of e)n.set(t.data,r),i.push(r),r+=t.data.byteLength;return new VideoFrame(n,{format:this.format,layout:e.map((e,t)=>({offset:i[t],stride:e.stride})),codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})}return Ea(this._data)?new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0}):this._data instanceof Uint8Array?(F(this._layout),new VideoFrame(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,layout:this._layout,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0,colorSpace:this.colorSpace,visibleRect:this.visibleRect,displayWidth:this.squarePixelWidth,displayHeight:this.squarePixelHeight})):new VideoFrame(this._data,{timestamp:this.microsecondTimestamp,duration:this.microsecondDuration||void 0})}draw(e,t,n,r,i,a,o,s,c){let l=0,u=0,d=this.displayWidth,f=this.displayHeight,p=0,m=0,h=this.displayWidth,g=this.displayHeight;if(a===void 0?(p=t,m=n,r!==void 0&&(h=r,g=i)):(l=t,u=n,d=r,f=i,p=a,m=o,s===void 0?(h=d,g=f):(h=s,g=c)),!(typeof CanvasRenderingContext2D<`u`&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<`u`&&e instanceof OffscreenCanvasRenderingContext2D))throw TypeError(`context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.`);if(!Number.isFinite(l))throw TypeError(`sx must be a number.`);if(!Number.isFinite(u))throw TypeError(`sy must be a number.`);if(!Number.isFinite(d)||d<0)throw TypeError(`sWidth must be a non-negative number.`);if(!Number.isFinite(f)||f<0)throw TypeError(`sHeight must be a non-negative number.`);if(!Number.isFinite(p))throw TypeError(`dx must be a number.`);if(!Number.isFinite(m))throw TypeError(`dy must be a number.`);if(!Number.isFinite(h)||h<0)throw TypeError(`dWidth must be a non-negative number.`);if(!Number.isFinite(g)||g<0)throw TypeError(`dHeight must be a non-negative number.`);if(this._closed)throw Error(`VideoSample is closed.`);({sx:l,sy:u,sWidth:d,sHeight:f}=this._unmapSourceRegion(l,u,d,f,this.rotation,this.flip));let _=this.toCanvasImageSource();e.save();let v=p+h/2,y=m+g/2;e.translate(v,y),this.flip&&e.scale(-1,1),e.rotate(this.rotation*Math.PI/180);let b=this.rotation%180==0?1:h/g;e.scale(1/b,b),e.drawImage(_,l,u,d,f,-h/2,-g/2,h,g),e.restore()}drawWithFit(e,t){if(!(typeof CanvasRenderingContext2D<`u`&&e instanceof CanvasRenderingContext2D||typeof OffscreenCanvasRenderingContext2D<`u`&&e instanceof OffscreenCanvasRenderingContext2D))throw TypeError(`context must be a CanvasRenderingContext2D or OffscreenCanvasRenderingContext2D.`);if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(![`fill`,`contain`,`cover`].includes(t.fit))throw TypeError(`options.fit must be 'fill', 'contain', or 'cover'.`);if(t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw TypeError(`options.rotation, when provided, must be 0, 90, 180, or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`options.flip, when provided, must be a boolean.`);t.crop!==void 0&&Oa(t.crop,`options.`);let n=e.canvas.width,r=e.canvas.height,i=t.rotation??this.rotation,a=t.flip??this.flip,[o,s]=i%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],c=t.crop;c&&=Da(c,o,s);let l,u,d,f,{sx:p,sy:m,sWidth:h,sHeight:g}=this._unmapSourceRegion(t.crop?.left??0,t.crop?.top??0,t.crop?.width??o,t.crop?.height??s,i,a);if(t.fit===`fill`)l=0,u=0,d=n,f=r;else{let[e,i]=t.crop?[t.crop.width,t.crop.height]:[o,s],a=t.fit===`contain`?Math.min(n/e,r/i):Math.max(n/e,r/i);d=e*a,f=i*a,l=(n-d)/2,u=(r-f)/2}e.save();let _=i%180==0?1:d/f;e.translate(n/2,r/2),a&&e.scale(-1,1),e.rotate(i*Math.PI/180),e.scale(1/_,_),e.translate(-n/2,-r/2),e.drawImage(this.toCanvasImageSource(),p,m,h,g,l,u,d,f),e.restore()}_unmapSourceRegion(e,t,n,r,i,a){return a&&(e=(i%180==0?this.squarePixelWidth:this.squarePixelHeight)-e-n),i===90?[e,t,n,r]=[t,this.squarePixelHeight-e-n,r,n]:i===180?[e,t]=[this.squarePixelWidth-e-n,this.squarePixelHeight-t-r]:i===270&&([e,t,n,r]=[this.squarePixelWidth-t-r,e,r,n]),{sx:e,sy:t,sWidth:n,sHeight:r}}_drawWithFitAndMipmapping(e,t,n){let r=e.width,i=e.height,[a,o]=n.rotation%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],s=n.crop?n.crop.width:a,c=n.crop?n.crop.height:o,l=0;2*r<s&&2*i<c&&(l=Math.floor(Math.log2(Math.min(s/r,c/i))));let u=r*2**l,d=i*2**l,{canvas:f,context:p,isNew:m}=l>0?wa(u,d):{canvas:e,context:t,isNew:n.targetIsFresh};p.imageSmoothingQuality=`high`,n.fillBlack?(p.fillStyle=`black`,p.fillRect(0,0,u,d)):m||p.clearRect(0,0,u,d),this.drawWithFit(p,{fit:n.fit,rotation:n.rotation,flip:n.flip,crop:n.crop}),p.globalCompositeOperation=`copy`;for(let e=l;e>1;e--){let t=r*2**e,n=i*2**e;p.drawImage(f,0,0,t,n,0,0,t/2,n/2)}p.globalCompositeOperation=`source-over`,l>0&&(t.imageSmoothingQuality=`high`,t.globalCompositeOperation=`copy`,t.drawImage(f,0,0,2*r,2*i,0,0,r,i),t.globalCompositeOperation=`source-over`)}toCanvasImageSource(){if(this._closed)throw Error(`VideoSample is closed.`);if(F(this._data!==null),this._data instanceof ga||this._data instanceof Uint8Array){let e=this.toVideoFrame();return queueMicrotask(()=>e.close()),e}return this._data}async transform(t){if(!t||typeof t!=`object`)throw TypeError(`options must be an object.`);if(t.width!==void 0&&(!Number.isInteger(t.width)||t.width<=0))throw TypeError(`options.width, when provided, must be a positive integer.`);if(t.height!==void 0&&(!Number.isInteger(t.height)||t.height<=0))throw TypeError(`options.height, when provided, must be a positive integer.`);if(t.roundDimensionsTo!==void 0&&(!Number.isInteger(t.roundDimensionsTo)||t.roundDimensionsTo<=0))throw TypeError(`options.roundDimensionsTo, when provided, must be a positive integer.`);if(t.fit!==void 0&&![`fill`,`contain`,`cover`].includes(t.fit))throw TypeError(`options.fit, when provided, must be one of "fill", "contain", or "cover".`);if(t.width!==void 0&&t.height!==void 0&&t.fit===void 0)throw TypeError(`When both options.width and options.height are provided, options.fit must also be provided.`);if(t.rotate!==void 0&&![0,90,180,270].includes(t.rotate))throw TypeError(`options.rotate, when provided, must be 0, 90, 180 or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`options.flip, when provided, must be a boolean.`);if(t.crop!==void 0&&Oa(t.crop,`options.`),t.alpha!==void 0&&![`keep`,`discard`].includes(t.alpha))throw TypeError(`options.alpha, when provided, must be 'keep' or 'discard'.`);let{rotation:n,flip:r}=Ln(this.rotation,this.flip,t.rotate??0,t.flip??!1),[i,a]=n%180==0?[this.squarePixelWidth,this.squarePixelHeight]:[this.squarePixelHeight,this.squarePixelWidth],o=t.crop;o&&=Da(o,i,a);let s=o?o.width:i,c=o?o.height:a,l=s/c,u,d;t.width!==void 0&&t.height===void 0?(u=t.width,d=u/l):t.width===void 0&&t.height!==void 0?(d=t.height,u=d*l):t.width!==void 0&&t.height!==void 0?(u=t.width,d=t.height):(u=s,d=c),u=cr(u,t.roundDimensionsTo??1),d=cr(d,t.roundDimensionsTo??1);let f={width:u,height:d,fit:t.fit??`fill`,rotation:n,flip:r,crop:o??{left:0,top:0,width:i,height:a},alpha:t.alpha??`keep`};for(let e of ba){let t=e(this,f);if(Or(t)&&(t=await t),t!==null)return t}let{canvas:p,context:m,isNew:h}=wa(f.width,f.height);return this._drawWithFitAndMipmapping(p,m,{fit:f.fit,rotation:f.rotation,flip:f.flip,crop:f.crop,targetIsFresh:h,fillBlack:f.alpha===`discard`}),new e(p,{timestamp:this.timestamp,duration:this.duration,rotation:0,flip:!1})}setRotation(e){if(![0,90,180,270].includes(e))throw TypeError(`newRotation must be 0, 90, 180, or 270.`);this.rotation=e}setFlip(e){if(typeof e!=`boolean`)throw TypeError(`newFlip must be a boolean.`);this.flip=e}setTimestamp(e){if(!Number.isFinite(e))throw TypeError(`newTimestamp must be a number.`);this.timestamp=e}setDuration(e){if(!Number.isFinite(e)||e<0)throw TypeError(`newDuration must be a non-negative number.`);this.duration=e}setEncodeOptions(e){if(!e||typeof e!=`object`)throw TypeError(`newEncodeOptions must be an object.`);this.encodeOptions=e}[Symbol.dispose](){this.close()}},ba=[],xa=3,Sa=[],Ca=0,wa=(e,t)=>{for(let n of Sa)if(n.canvas.width===e&&n.canvas.height===t)return n.age=Ca++,{canvas:n.canvas,context:n.context,isNew:!1};let n;if(typeof OffscreenCanvas<`u`)n=new OffscreenCanvas(e,t);else{if(typeof window>`u`||typeof document>`u`)throw Error(`Cannot transform VideoSamples in this environment. Either run in an environment with OffscreenCanvas or HTMLCanvasElement, or supply a custom VideoSample transformer using registerVideoSampleTransformer().`);n=document.createElement(`canvas`),n.width=e,n.height=t}let r=n.getContext(`2d`,{alpha:!0,willReadFrequently:!1});if(!r)throw Error(`The '2d' canvas context is required to transform VideoSamples. Register a custom transformer using registerVideoSampleTransformer to work around this limitation.`);return Sa.length>=xa&&Sa.splice(Pr(Sa,e=>e.age),1),Sa.push({canvas:n,context:r,age:Ca++}),{canvas:n,context:r,isNew:!0}},Ta=class{constructor(e){if(e!==void 0){if(!e||typeof e!=`object`)throw TypeError(`init.colorSpace, when provided, must be an object.`);let t=Object.keys(qn);if(e.primaries!=null&&!t.includes(e.primaries))throw TypeError(`init.colorSpace.primaries, when provided, must be one of ${t.join(`, `)}.`);let n=Object.keys(Jn);if(e.transfer!=null&&!n.includes(e.transfer))throw TypeError(`init.colorSpace.transfer, when provided, must be one of ${n.join(`, `)}.`);let r=Object.keys(Yn);if(e.matrix!=null&&!r.includes(e.matrix))throw TypeError(`init.colorSpace.matrix, when provided, must be one of ${r.join(`, `)}.`);if(e.fullRange!=null&&typeof e.fullRange!=`boolean`)throw TypeError(`init.colorSpace.fullRange, when provided, must be a boolean.`)}this.primaries=e?.primaries??null,this.transfer=e?.transfer??null,this.matrix=e?.matrix??null,this.fullRange=e?.fullRange??null}toJSON(){return{primaries:this.primaries,transfer:this.transfer,matrix:this.matrix,fullRange:this.fullRange}}},Ea=e=>typeof VideoFrame<`u`&&e instanceof VideoFrame,Da=(e,t,n)=>{let r=Math.min(e.left,t),i=Math.min(e.top,n),a=Math.min(e.width,t-r),o=Math.min(e.height,n-i);return F(a>=0),F(o>=0),{left:r,top:i,width:a,height:o}},Oa=(e,t)=>{if(!e||typeof e!=`object`)throw TypeError(t+`crop, when provided, must be an object.`);if(!Number.isInteger(e.left)||e.left<0)throw TypeError(t+`crop.left must be a non-negative integer.`);if(!Number.isInteger(e.top)||e.top<0)throw TypeError(t+`crop.top must be a non-negative integer.`);if(!Number.isInteger(e.width)||e.width<0)throw TypeError(t+`crop.width must be a non-negative integer.`);if(!Number.isInteger(e.height)||e.height<0)throw TypeError(t+`crop.height must be a non-negative integer.`)},ka=e=>{if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.colorSpace!==void 0&&![`display-p3`,`srgb`].includes(e.colorSpace))throw TypeError(`options.colorSpace, when provided, must be 'display-p3' or 'srgb'.`);if(e.format!==void 0&&typeof e.format!=`string`)throw TypeError(`options.format, when provided, must be a string.`);if(e.layout!==void 0){if(!Array.isArray(e.layout))throw TypeError(`options.layout, when provided, must be an array.`);for(let t of e.layout){if(!t||typeof t!=`object`)throw TypeError(`Each entry in options.layout must be an object.`);if(!Number.isInteger(t.offset)||t.offset<0)throw TypeError(`plane.offset must be a non-negative integer.`);if(!Number.isInteger(t.stride)||t.stride<0)throw TypeError(`plane.stride must be a non-negative integer.`)}}if(e.rect!==void 0){if(!e.rect||typeof e.rect!=`object`)throw TypeError(`options.rect, when provided, must be an object.`);if(e.rect.x!==void 0&&(!Number.isInteger(e.rect.x)||e.rect.x<0))throw TypeError(`options.rect.x, when provided, must be a non-negative integer.`);if(e.rect.y!==void 0&&(!Number.isInteger(e.rect.y)||e.rect.y<0))throw TypeError(`options.rect.y, when provided, must be a non-negative integer.`);if(e.rect.width!==void 0&&(!Number.isInteger(e.rect.width)||e.rect.width<0))throw TypeError(`options.rect.width, when provided, must be a non-negative integer.`);if(e.rect.height!==void 0&&(!Number.isInteger(e.rect.height)||e.rect.height<0))throw TypeError(`options.rect.height, when provided, must be a non-negative integer.`)}},Aa=(e,t,n)=>{let r=ja(e),i=[],a=0;for(let e of r){let r=Math.ceil(t/e.widthDivisor),o=Math.ceil(n/e.heightDivisor),s=r*e.sampleBytes,c=s*o;i.push({offset:a,stride:s}),a+=c}return i},ja=e=>{let t=(e,t,n,r,i)=>{let a=[{sampleBytes:e,widthDivisor:1,heightDivisor:1},{sampleBytes:t,widthDivisor:n,heightDivisor:r},{sampleBytes:t,widthDivisor:n,heightDivisor:r}];return i&&a.push({sampleBytes:e,widthDivisor:1,heightDivisor:1}),a};switch(e){case`I420`:return t(1,1,2,2,!1);case`I420P10`:case`I420P12`:return t(2,2,2,2,!1);case`I420A`:return t(1,1,2,2,!0);case`I420AP10`:case`I420AP12`:return t(2,2,2,2,!0);case`I422`:return t(1,1,2,1,!1);case`I422P10`:case`I422P12`:return t(2,2,2,1,!1);case`I422A`:return t(1,1,2,1,!0);case`I422AP10`:case`I422AP12`:return t(2,2,2,1,!0);case`I444`:return t(1,1,1,1,!1);case`I444P10`:case`I444P12`:return t(2,2,1,1,!1);case`I444A`:return t(1,1,1,1,!0);case`I444AP10`:case`I444AP12`:return t(2,2,1,1,!0);case`NV12`:return[{sampleBytes:1,widthDivisor:1,heightDivisor:1},{sampleBytes:2,widthDivisor:2,heightDivisor:2}];case`RGBA`:case`RGBX`:case`BGRA`:case`BGRX`:return[{sampleBytes:4,widthDivisor:1,heightDivisor:1}];default:rr(e),F(!1)}},Ma=(e,t)=>{let n={left:0,top:0,width:e.codedWidth,height:e.codedHeight},r=t.rect,i=Na(n,r,e.codedWidth,e.codedHeight,e.format),a=t.layout,o;if(!t.format||t.format===e.format)o=e.format;else if([`RGBA`,`RGBX`,`BGRA`,`BGRX`].includes(t.format))o=t.format;else throw Error(`NotSupportedError: Invalid destination format.`);return Fa(i,o,a)},Na=(e,t,n,r,i)=>{let a={...e};if(t!==void 0){if(t.width===0||t.height===0)throw TypeError(`visibleRect dimensions cannot be zero.`);if((t.x||0)+(t.width||0)>n)throw TypeError(`visibleRect exceeds codedWidth.`);if((t.y||0)+(t.height||0)>r)throw TypeError(`visibleRect exceeds codedHeight.`);a.x=t.x||0,a.y=t.y||0,a.width=t.width||0,a.height=t.height||0}if(!Pa(i,a))throw TypeError(`visibleRect alignment is invalid for the format.`);return a},Pa=(e,t)=>{if(e===null)return!0;let n=ja(e);for(let e=0;e<n.length;e++){let r=n[e],i=r.widthDivisor,a=r.heightDivisor;if((t.x||0)%i!==0||(t.y||0)%a!==0)return!1}return!0},Fa=(e,t,n)=>{let r=ja(t),i=r.length;if(n!==void 0&&n.length!==i)throw TypeError(`Layout must have ${i} planes.`);let a=0,o=[],s=[];for(let t=0;t<i;t++){let i=r[t],c=i.sampleBytes,l=i.widthDivisor,u=i.heightDivisor,d={destinationOffset:0,destinationStride:0,sourceTop:0,sourceHeight:0,sourceLeftBytes:0,sourceWidthBytes:0};if(d.sourceTop=Math.ceil(Math.trunc(e.y||0)/u),d.sourceHeight=Math.ceil(Math.trunc(e.height||0)/u),d.sourceLeftBytes=Math.floor(Math.trunc(e.x||0)/l)*c,d.sourceWidthBytes=Math.floor(Math.trunc(e.width||0)/l)*c,n!==void 0){let e=n[t];if(e.stride<d.sourceWidthBytes)throw TypeError(`Stride for plane ${t} is too small.`);d.destinationOffset=e.offset,d.destinationStride=e.stride}else d.destinationOffset=a,d.destinationStride=d.sourceWidthBytes;let f=d.destinationStride*d.sourceHeight+d.destinationOffset;if(f>4294967295)throw TypeError(`Allocation size exceeds limit.`);s.push(f),a=Math.max(a,f);for(let e=0;e<t;e++){let n=o[e];if(!(s[t]<=n.destinationOffset||s[e]<=d.destinationOffset))throw TypeError(`Planes overlap.`)}o.push(d)}return{allocationSize:a,computedLayouts:o}},Ia=new Map,La=e=>{if(!e||typeof e!=`object`)throw TypeError(`Encoding config must be an object.`);if(!Fo.includes(e.codec))throw TypeError(`Invalid video codec '${e.codec}'. Must be one of: ${Fo.join(`, `)}.`);let t=e.bitrate;if(e.quality===void 0&&t===void 0)throw TypeError(`config.quality must be provided.`);if(e.quality!==void 0&&t!==void 0)throw TypeError(`config.quality and config.bitrate cannot both be provided.`);if(e.quality!==void 0&&!(e.quality instanceof Ba))throw TypeError(`config.quality, when provided, must be a Quality.`);if(t!==void 0&&!(t instanceof Ba)&&(!Number.isInteger(t)||t<=0))throw TypeError(`config.bitrate, when provided, must be a positive integer or a quality.`);if(e.keyFrameInterval!==void 0&&(!Number.isFinite(e.keyFrameInterval)||e.keyFrameInterval<0))throw TypeError(`config.keyFrameInterval, when provided, must be a non-negative number.`);if(e.sizeChangeBehavior!==void 0&&![`deny`,`passThrough`,`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior))throw TypeError(`config.sizeChangeBehavior, when provided, must be 'deny', 'passThrough', 'fill', 'contain' or 'cover'.`);if(e.transform!==void 0){if(typeof e.transform!=`object`||!e.transform)throw TypeError(`config.transform, when provided, must be an object.`);if(e.transform.width!==void 0&&(!Number.isInteger(e.transform.width)||e.transform.width<=0))throw TypeError(`config.transform.width, when provided, must be a positive integer.`);if(e.transform.height!==void 0&&(!Number.isInteger(e.transform.height)||e.transform.height<=0))throw TypeError(`config.transform.height, when provided, must be a positive integer.`);if(e.transform.fit!==void 0&&![`fill`,`contain`,`cover`].includes(e.transform.fit))throw TypeError(`config.transform.fit, when provided, must be one of "fill", "contain", or "cover".`);if(e.transform.width!==void 0&&e.transform.height!==void 0&&e.transform.fit===void 0&&![`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior))throw TypeError(`When both config.transform.width and config.transform.height are provided, config.transform.fit must also be provided.`);if(e.transform.fit!==void 0&&[`fill`,`contain`,`cover`].includes(e.sizeChangeBehavior)&&e.transform.fit!==e.sizeChangeBehavior)throw TypeError(`config.transform.fit, when provided, cannot differ from config.sizeChangeBehavior when config.sizeChangeBehavior is 'fill', 'contain' or 'cover', as sizeChangeBehavior already determines the fitting algorithm.`);if(e.transform.rotate!==void 0&&![0,90,180,270].includes(e.transform.rotate))throw TypeError(`config.transform.rotate, when provided, must be 0, 90, 180 or 270.`);if(e.transform.flip!==void 0&&typeof e.transform.flip!=`boolean`)throw TypeError(`config.transform.flip, when provided, must be a boolean.`);if(e.transform.crop!==void 0&&Oa(e.transform.crop,`config.transform.`),e.transform.process!==void 0&&typeof e.transform.process!=`function`)throw TypeError(`config.transform.process, when provided, must be a function.`);if(e.transform.frameRate!==void 0&&(!Number.isFinite(e.transform.frameRate)||e.transform.frameRate<=0))throw TypeError(`config.transform.frameRate, when provided, must be a finite positive number.`);if(e.transform.force!==void 0&&typeof e.transform.force!=`boolean`)throw TypeError(`config.transform.force, when provided, must be a boolean.`)}if(e.onEncodedPacket!==void 0&&typeof e.onEncodedPacket!=`function`)throw TypeError(`config.onEncodedPacket, when provided, must be a function.`);if(e.onEncoderConfig!==void 0&&typeof e.onEncoderConfig!=`function`)throw TypeError(`config.onEncoderConfig, when provided, must be a function.`);if(e.onEncodedSample!==void 0&&typeof e.onEncodedSample!=`function`)throw TypeError(`config.onEncodedSample, when provided, must be a function.`);Ra(e.codec,e)},Ra=(e,t)=>{if(!t||typeof t!=`object`)throw TypeError(`Encoding options must be an object.`);if(t.alpha!==void 0&&![`discard`,`keep`].includes(t.alpha))throw TypeError(`options.alpha, when provided, must be 'discard' or 'keep'.`);let n=t.bitrateMode;if(n!==void 0&&![`constant`,`variable`].includes(n))throw TypeError(`bitrateMode, when provided, must be 'constant' or 'variable'.`);if(t.latencyMode!==void 0&&![`quality`,`realtime`].includes(t.latencyMode))throw TypeError(`latencyMode, when provided, must be 'quality' or 'realtime'.`);if(t.fullCodecString!==void 0&&typeof t.fullCodecString!=`string`)throw TypeError(`fullCodecString, when provided, must be a string.`);if(t.fullCodecString!==void 0&&rs(t.fullCodecString)!==e)throw TypeError(`fullCodecString, when provided, must be a string that matches the specified codec (${e}).`);if(t.hardwareAcceleration!==void 0&&![`no-preference`,`prefer-hardware`,`prefer-software`].includes(t.hardwareAcceleration))throw TypeError(`hardwareAcceleration, when provided, must be 'no-preference', 'prefer-hardware' or 'prefer-software'.`);if(t.scalabilityMode!==void 0&&typeof t.scalabilityMode!=`string`)throw TypeError(`scalabilityMode, when provided, must be a string.`);if(t.contentHint!==void 0&&typeof t.contentHint!=`string`)throw TypeError(`contentHint, when provided, must be a string.`)},za=e=>{let t=e.bitrateMode,n=e.quality._toVideoRateControl(e.codec,e.width,e.height,t),r=(t,n,r)=>({codec:e.fullCodecString??Jo(e.codec,e.width,e.height,r,e.alpha===`keep`),width:e.width,height:e.height,displayWidth:e.squarePixelWidth,displayHeight:e.squarePixelHeight,bitrate:t,bitrateMode:n,alpha:e.alpha??`discard`,framerate:e.framerate,latencyMode:e.latencyMode,hardwareAcceleration:e.hardwareAcceleration,scalabilityMode:e.scalabilityMode,contentHint:e.contentHint,...is(e.codec)}),i=[];return n.quantizer!==null&&i.push({config:r(void 0,`quantizer`,n.bitrate),quantizer:n.quantizer}),n.bitrateMode!==`quantizer`&&i.push({config:r(n.bitrate,n.bitrateMode,n.bitrate),quantizer:null}),F(i.length>0),i},Ba=class{constructor(e){if((typeof e==`number`||typeof e==`string`)&&(e={quality:e}),!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.bitrateMode!==void 0&&![`constant`,`variable`].includes(e.bitrateMode))throw TypeError(`options.bitrateMode, when provided, must be 'constant' or 'variable'.`);if(`quality`in e){if(typeof e.quality==`string`?!(e.quality in Va):typeof e.quality!=`number`||Number.isNaN(e.quality))throw TypeError(`options.quality must be a number, or one of 'very-low', 'low', 'medium', 'high' or 'very-high'.`);if(e.preferBitrate!==void 0&&typeof e.preferBitrate!=`boolean`)throw TypeError(`options.preferBitrate, when provided, must be a boolean.`);if(`bitrate`in e||`quantizer`in e)throw TypeError(`options.quality cannot be combined with options.bitrate or options.quantizer.`);this._quality=typeof e.quality==`string`?Va[e.quality]:e.quality,this._preferBitrate=e.preferBitrate??!1,this._bitrate=void 0,this._quantizer=void 0}else{if(e.bitrate!==void 0&&(!Number.isInteger(e.bitrate)||e.bitrate<=0))throw TypeError(`options.bitrate, when provided, must be a positive integer.`);if(e.quantizer!==void 0&&(!Number.isInteger(e.quantizer)||e.quantizer<0))throw TypeError(`options.quantizer, when provided, must be a non-negative integer.`);if(e.bitrate===void 0&&e.quantizer===void 0)throw TypeError(`At least one of options.bitrate or options.quantizer must be set.`);if(`preferBitrate`in e)throw TypeError(`options.preferBitrate can only be combined with options.quality.`);this._quality=void 0,this._preferBitrate=!1,this._bitrate=e.bitrate,this._quantizer=e.quantizer}this._bitrateMode=e.bitrateMode}_toVideoRateControl(e,t,n,r){let i=Ha[e],a=null,o=this._bitrateMode??r??`variable`;if(this._quantizer!==void 0){if(!i){if(this._bitrate===void 0)throw Error(`Codec '${e}' does not support quantizer-based encoding. Provide a bitrate in the Quality to define a fallback.`)}else if(this._quantizer<i.min||this._quantizer>i.max){if(this._bitrate===void 0)throw Error(`Quantizer ${this._quantizer} is out of range for codec '${e}'; must be between ${i.min} and ${i.max}.`)}else a=this._quantizer,this._bitrate===void 0&&(o=`quantizer`)}else this._bitrate===void 0&&i&&!this._preferBitrate&&(F(this._quality!==void 0),a=or(Math.round(sr(i.worst,i.best,this._quality)),i.min,i.max));let s;if(this._bitrate!==void 0)s=this._bitrate;else{let r=this._quality;r===void 0&&(F(a!==null&&i),r=or((a-i.worst)/(i.best-i.worst),0,1)),s=Wa(e,t,n,Ua(r))}return{quantizer:a,bitrate:s,bitrateMode:o}}_toVideoBitrate(e,t,n){return this._bitrate===void 0?(F(this._quality!==void 0),Wa(e,t,n,Ua(this._quality))):this._bitrate}_toAudioBitrate(e){if(Io.includes(e)||e===`flac`||e===`truehd`)return;if(this._bitrate!==void 0)return this._bitrate;if(this._quality===void 0)throw Error(`This Quality defines neither a quality level nor a bitrate and therefore cannot be used for audio encoding.`);let t=Ua(this._quality),n={aac:128e3,opus:64e3,mp3:16e4,vorbis:64e3,ac3:384e3,eac3:192e3,dts:768e3}[e];if(!n)throw Error(`Unhandled codec: ${e}`);let r=n*t;return e===`aac`?r=[96e3,128e3,16e4,192e3].reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e):e===`opus`||e===`vorbis`?r=Math.max(6e3,r):e===`mp3`&&(r=[8e3,16e3,24e3,32e3,4e4,48e3,64e3,8e4,96e3,112e3,128e3,16e4,192e3,224e3,256e3,32e4].reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e)),Math.round(r/1e3)*1e3}},Va={"very-low":0,low:.25,medium:.5,high:.75,"very-high":1},Ha={avc:{min:0,max:51,worst:41,best:16},hevc:{min:0,max:51,worst:41,best:16},vp9:(wr()??1/0)<145?{min:0,max:63,worst:52,best:20}:{min:0,max:255,worst:208,best:80},av1:{min:0,max:255,worst:208,best:80}},Ua=e=>.3*Math.exp(2.5538*e),Wa=(e,t,n,r)=>{let i=t*n,a=3e6,o=a*(i/2073600)**.95*{avc:1,hevc:.6,vp9:.6,av1:.4,vp8:1.2,prores:22e7/a}[e]*r;return Math.ceil(o/1e3)*1e3},Ga=(e,t)=>{if(e===`avc`)return{avc:{quantizer:t}};if(e===`hevc`)return{hevc:{quantizer:t}};if(e===`vp9`)return{vp9:{quantizer:t}};if(e===`av1`)return{av1:{quantizer:t}};F(!1)},Ka=new Ba(`high`),qa=async(e,t={})=>{let{width:n=1280,height:r=720,quality:i,bitrate:a,frameRate:o,...s}=t;if(!Fo.includes(e))return!1;if(!Number.isInteger(n)||n<=0)throw TypeError(`width must be a positive integer.`);if(!Number.isInteger(r)||r<=0)throw TypeError(`height must be a positive integer.`);if(i!==void 0&&!(i instanceof Ba))throw TypeError(`quality, when provided, must be a Quality.`);if(i!==void 0&&a!==void 0)throw TypeError(`quality and bitrate cannot both be provided.`);if(a!==void 0&&!(a instanceof Ba)&&(!Number.isInteger(a)||a<=0))throw TypeError(`bitrate must be a positive integer or a quality.`);if(o!==void 0&&(!Number.isFinite(o)||o<=0))throw TypeError(`frameRate, when provided, must be a finite positive number.`);Ra(e,s);let c=Ja(i,a)??new Ba(`medium`),l;try{l=za({codec:e,width:n,height:r,quality:c,framerate:o,...s,alpha:`discard`})}catch{return!1}let u=JSON.stringify(l),d=Ia.get(u);if(d)return d;let f=(async()=>{for(let{config:t}of l)if(Ya.some(n=>n.supports(e,t)))return!0;if(typeof VideoEncoder>`u`||(n%2==1||r%2==1)&&(e===`avc`||e===`hevc`))return!1;for(let{config:t,quantizer:i}of l){try{if(!(await VideoEncoder.isConfigSupported(t)).supported)continue}catch{continue}if(!br()||await new Promise(async a=>{try{let o=new VideoEncoder({output:()=>{},error:()=>a(!1)});o.configure(t);let s=new Uint8Array(n*r*4),c=new VideoFrame(s,{format:`RGBA`,codedWidth:n,codedHeight:r,timestamp:0});o.encode(c,i===null?void 0:Ga(e,i)),c.close(),await o.flush(),a(!0)}catch{a(!1)}}))return!0}return!1})();return Ia.set(u,f),f},Ja=(e,t)=>{if(e!==void 0)return e;if(t!==void 0)return t instanceof Ba?t:new Ba({bitrate:t})},Ya=[],Xa=new Uint8Array,Za=class e{constructor(e,t,n,r,i=-1,a,o){if(this.data=e,this.type=t,this.timestamp=n,this.duration=r,this.sequenceNumber=i,e===Xa&&a===void 0)throw Error(`Internal error: byteLength must be explicitly provided when constructing metadata-only packets.`);if(a===void 0&&(a=e.byteLength),!(e instanceof Uint8Array))throw TypeError(`data must be a Uint8Array.`);if(t!==`key`&&t!==`delta`)throw TypeError(`type must be either "key" or "delta".`);if(!Number.isFinite(n))throw TypeError(`timestamp must be a number.`);if(!Number.isFinite(r)||r<0)throw TypeError(`duration must be a non-negative number.`);if(!Number.isFinite(i))throw TypeError(`sequenceNumber must be a number.`);if(!Number.isInteger(a)||a<0)throw TypeError(`byteLength must be a non-negative integer.`);if(o!==void 0&&(typeof o!=`object`||!o))throw TypeError(`sideData, when provided, must be an object.`);if(o?.alpha!==void 0&&!(o.alpha instanceof Uint8Array))throw TypeError(`sideData.alpha, when provided, must be a Uint8Array.`);if(o?.alphaByteLength!==void 0&&(!Number.isInteger(o.alphaByteLength)||o.alphaByteLength<0))throw TypeError(`sideData.alphaByteLength, when provided, must be a non-negative integer.`);this.byteLength=a,this.sideData=o??{},this.sideData.alpha&&this.sideData.alphaByteLength===void 0&&(this.sideData.alphaByteLength=this.sideData.alpha.byteLength)}get isMetadataOnly(){return this.data===Xa}get microsecondTimestamp(){return Math.trunc(mr*this.timestamp)}get microsecondDuration(){return Math.trunc(mr*this.duration)}toEncodedVideoChunk(){if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to a video chunk.`);if(typeof EncodedVideoChunk>`u`)throw Error(`EncodedVideoChunk is not available in this environment.`);return new EncodedVideoChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}alphaToEncodedVideoChunk(e=this.type){if(!this.sideData.alpha)throw TypeError(`This packet does not contain alpha side data.`);if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to a video chunk.`);if(typeof EncodedVideoChunk>`u`)throw Error(`EncodedVideoChunk is not available in this environment.`);return new EncodedVideoChunk({data:this.sideData.alpha,type:e,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}toEncodedAudioChunk(){if(this.isMetadataOnly)throw TypeError(`Metadata-only packets cannot be converted to an audio chunk.`);if(typeof EncodedAudioChunk>`u`)throw Error(`EncodedAudioChunk is not available in this environment.`);return new EncodedAudioChunk({data:this.data,type:this.type,timestamp:this.microsecondTimestamp,duration:this.microsecondDuration})}static fromEncodedChunk(t,n){if(!(t instanceof EncodedVideoChunk||t instanceof EncodedAudioChunk))throw TypeError(`chunk must be an EncodedVideoChunk or EncodedAudioChunk.`);let r=new Uint8Array(t.byteLength);return t.copyTo(r),new e(r,t.type,t.timestamp/1e6,(t.duration??0)/1e6,void 0,void 0,n)}clone(t){if(t!==void 0&&(typeof t!=`object`||!t))throw TypeError(`options, when provided, must be an object.`);if(t?.data!==void 0&&!(t.data instanceof Uint8Array))throw TypeError(`options.data, when provided, must be a Uint8Array.`);if(t?.type!==void 0&&t.type!==`key`&&t.type!==`delta`)throw TypeError(`options.type, when provided, must be either "key" or "delta".`);if(t?.timestamp!==void 0&&!Number.isFinite(t.timestamp))throw TypeError(`options.timestamp, when provided, must be a number.`);if(t?.duration!==void 0&&!Number.isFinite(t.duration))throw TypeError(`options.duration, when provided, must be a number.`);if(t?.sequenceNumber!==void 0&&!Number.isFinite(t.sequenceNumber))throw TypeError(`options.sequenceNumber, when provided, must be a number.`);if(t?.sideData!==void 0&&(typeof t.sideData!=`object`||t.sideData===null))throw TypeError(`options.sideData, when provided, must be an object.`);return new e(t?.data??this.data,t?.type??this.type,t?.timestamp??this.timestamp,t?.duration??this.duration,t?.sequenceNumber??this.sequenceNumber,this.byteLength,t?.sideData??this.sideData)}},Qa=2082844800,$a=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.isQuickTime?`quicktime`:`mp4`);if(e.codecStrings.length>0){let n=[...new Set(e.codecStrings)];t+=`; codecs="${n.join(`, `)}"`}return t},eo=class{constructor(e){this.value=e}},to=class{constructor(e){this.value=e}},no=class{constructor(e){this.value=e}},ro=class{constructor(e){this.value=e}},R;(function(e){e[e.EBML=440786851]=`EBML`,e[e.EBMLVersion=17030]=`EBMLVersion`,e[e.EBMLReadVersion=17143]=`EBMLReadVersion`,e[e.EBMLMaxIDLength=17138]=`EBMLMaxIDLength`,e[e.EBMLMaxSizeLength=17139]=`EBMLMaxSizeLength`,e[e.DocType=17026]=`DocType`,e[e.DocTypeVersion=17031]=`DocTypeVersion`,e[e.DocTypeReadVersion=17029]=`DocTypeReadVersion`,e[e.Void=236]=`Void`,e[e.Segment=408125543]=`Segment`,e[e.SeekHead=290298740]=`SeekHead`,e[e.Seek=19899]=`Seek`,e[e.SeekID=21419]=`SeekID`,e[e.SeekPosition=21420]=`SeekPosition`,e[e.Duration=17545]=`Duration`,e[e.Info=357149030]=`Info`,e[e.TimestampScale=2807729]=`TimestampScale`,e[e.DateUTC=17505]=`DateUTC`,e[e.MuxingApp=19840]=`MuxingApp`,e[e.WritingApp=22337]=`WritingApp`,e[e.Tracks=374648427]=`Tracks`,e[e.TrackEntry=174]=`TrackEntry`,e[e.TrackNumber=215]=`TrackNumber`,e[e.TrackUID=29637]=`TrackUID`,e[e.TrackType=131]=`TrackType`,e[e.FlagEnabled=185]=`FlagEnabled`,e[e.FlagDefault=136]=`FlagDefault`,e[e.FlagForced=21930]=`FlagForced`,e[e.FlagOriginal=21934]=`FlagOriginal`,e[e.FlagHearingImpaired=21931]=`FlagHearingImpaired`,e[e.FlagVisualImpaired=21932]=`FlagVisualImpaired`,e[e.FlagCommentary=21935]=`FlagCommentary`,e[e.FlagLacing=156]=`FlagLacing`,e[e.Name=21358]=`Name`,e[e.Language=2274716]=`Language`,e[e.LanguageBCP47=2274717]=`LanguageBCP47`,e[e.CodecID=134]=`CodecID`,e[e.CodecPrivate=25506]=`CodecPrivate`,e[e.CodecDelay=22186]=`CodecDelay`,e[e.SeekPreRoll=22203]=`SeekPreRoll`,e[e.DefaultDuration=2352003]=`DefaultDuration`,e[e.Video=224]=`Video`,e[e.PixelWidth=176]=`PixelWidth`,e[e.PixelHeight=186]=`PixelHeight`,e[e.DisplayWidth=21680]=`DisplayWidth`,e[e.DisplayHeight=21690]=`DisplayHeight`,e[e.DisplayUnit=21682]=`DisplayUnit`,e[e.AlphaMode=21440]=`AlphaMode`,e[e.Audio=225]=`Audio`,e[e.SamplingFrequency=181]=`SamplingFrequency`,e[e.Channels=159]=`Channels`,e[e.BitDepth=25188]=`BitDepth`,e[e.SimpleBlock=163]=`SimpleBlock`,e[e.BlockGroup=160]=`BlockGroup`,e[e.Block=161]=`Block`,e[e.BlockAdditions=30113]=`BlockAdditions`,e[e.BlockMore=166]=`BlockMore`,e[e.BlockAdditional=165]=`BlockAdditional`,e[e.BlockAddID=238]=`BlockAddID`,e[e.BlockDuration=155]=`BlockDuration`,e[e.ReferenceBlock=251]=`ReferenceBlock`,e[e.Cluster=524531317]=`Cluster`,e[e.Timestamp=231]=`Timestamp`,e[e.Cues=475249515]=`Cues`,e[e.CuePoint=187]=`CuePoint`,e[e.CueTime=179]=`CueTime`,e[e.CueTrackPositions=183]=`CueTrackPositions`,e[e.CueTrack=247]=`CueTrack`,e[e.CueClusterPosition=241]=`CueClusterPosition`,e[e.CueRelativePosition=240]=`CueRelativePosition`,e[e.Colour=21936]=`Colour`,e[e.MatrixCoefficients=21937]=`MatrixCoefficients`,e[e.TransferCharacteristics=21946]=`TransferCharacteristics`,e[e.Primaries=21947]=`Primaries`,e[e.Range=21945]=`Range`,e[e.Projection=30320]=`Projection`,e[e.ProjectionType=30321]=`ProjectionType`,e[e.ProjectionPoseYaw=30323]=`ProjectionPoseYaw`,e[e.ProjectionPosePitch=30324]=`ProjectionPosePitch`,e[e.ProjectionPoseRoll=30325]=`ProjectionPoseRoll`,e[e.Attachments=423732329]=`Attachments`,e[e.AttachedFile=24999]=`AttachedFile`,e[e.FileDescription=18046]=`FileDescription`,e[e.FileName=18030]=`FileName`,e[e.FileMediaType=18016]=`FileMediaType`,e[e.FileData=18012]=`FileData`,e[e.FileUID=18094]=`FileUID`,e[e.Chapters=272869232]=`Chapters`,e[e.Tags=307544935]=`Tags`,e[e.Tag=29555]=`Tag`,e[e.Targets=25536]=`Targets`,e[e.TargetTypeValue=26826]=`TargetTypeValue`,e[e.TargetType=25546]=`TargetType`,e[e.TagTrackUID=25541]=`TagTrackUID`,e[e.TagEditionUID=25545]=`TagEditionUID`,e[e.TagChapterUID=25540]=`TagChapterUID`,e[e.TagAttachmentUID=25542]=`TagAttachmentUID`,e[e.SimpleTag=26568]=`SimpleTag`,e[e.TagName=17827]=`TagName`,e[e.TagLanguage=17530]=`TagLanguage`,e[e.TagString=17543]=`TagString`,e[e.TagBinary=17541]=`TagBinary`,e[e.ContentEncodings=28032]=`ContentEncodings`,e[e.ContentEncoding=25152]=`ContentEncoding`,e[e.ContentEncodingOrder=20529]=`ContentEncodingOrder`,e[e.ContentEncodingScope=20530]=`ContentEncodingScope`,e[e.ContentCompression=20532]=`ContentCompression`,e[e.ContentCompAlgo=16980]=`ContentCompAlgo`,e[e.ContentCompSettings=16981]=`ContentCompSettings`,e[e.ContentEncryption=20533]=`ContentEncryption`})(R||={});var io=[R.EBML,R.Segment],ao=[R.SeekHead,R.Info,R.Cluster,R.Tracks,R.Cues,R.Attachments,R.Chapters,R.Tags];[...io,...ao];var oo=e=>e<256?1:e<65536?2:e<1<<24?3:e<2**32?4:e<2**40?5:6,so=e=>e<1n<<8n?1:e<1n<<16n?2:e<1n<<24n?3:e<1n<<32n?4:e<1n<<40n?5:e<1n<<48n?6:e<1n<<56n?7:8,co=e=>e>=-64&&e<64?1:e>=-8192&&e<8192?2:e>=-1048576&&e<1<<20?3:e>=-134217728&&e<1<<27?4:e>=-(2**34)&&e<2**34?5:6,lo=e=>{if(e<127)return 1;if(e<16383)return 2;if(e<(1<<21)-1)return 3;if(e<(1<<28)-1)return 4;if(e<2**35-1)return 5;if(e<2**42-1)return 6;throw Error(`EBML varint size not supported `+e)},uo=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap,this.dataOffsets=new WeakMap}writeByte(e){this.helperView.setUint8(0,e),this.writer.write(this.helper.subarray(0,1))}writeFloat32(e){this.helperView.setFloat32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeFloat64(e){this.helperView.setFloat64(0,e,!1),this.writer.write(this.helper)}writeUnsignedInt(e,t=oo(e)){let n=0;switch(t){case 6:this.helperView.setUint8(n++,e/2**40|0);case 5:this.helperView.setUint8(n++,e/2**32|0);case 4:this.helperView.setUint8(n++,e>>24);case 3:this.helperView.setUint8(n++,e>>16);case 2:this.helperView.setUint8(n++,e>>8);case 1:this.helperView.setUint8(n++,e);break;default:throw Error(`Bad unsigned int size `+t)}this.writer.write(this.helper.subarray(0,n))}writeUnsignedBigInt(e,t=so(e)){let n=0;for(let r=t-1;r>=0;r--)this.helperView.setUint8(n++,Number(e>>BigInt(r*8)&255n));this.writer.write(this.helper.subarray(0,n))}writeSignedInt(e,t=co(e)){e<0&&(e+=2**(t*8)),this.writeUnsignedInt(e,t)}writeVarInt(e,t=lo(e)){let n=0;switch(t){case 1:this.helperView.setUint8(n++,128|e);break;case 2:this.helperView.setUint8(n++,64|e>>8),this.helperView.setUint8(n++,e);break;case 3:this.helperView.setUint8(n++,32|e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 4:this.helperView.setUint8(n++,16|e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 5:this.helperView.setUint8(n++,8|e/2**32&7),this.helperView.setUint8(n++,e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;case 6:this.helperView.setUint8(n++,4|e/2**40&3),this.helperView.setUint8(n++,e/2**32|0),this.helperView.setUint8(n++,e>>24),this.helperView.setUint8(n++,e>>16),this.helperView.setUint8(n++,e>>8),this.helperView.setUint8(n++,e);break;default:throw Error(`Bad EBML varint size `+t)}this.writer.write(this.helper.subarray(0,n))}writeAsciiString(e){this.writer.write(new Uint8Array(e.split(``).map(e=>e.charCodeAt(0))))}writeEBML(e){if(e!==null){if(e instanceof Uint8Array)this.writer.write(e);else if(Array.isArray(e))for(let t of e)this.writeEBML(t);else if(this.offsets.set(e,this.writer.getPos()),this.writeUnsignedInt(e.id),Array.isArray(e.data)){let t=this.writer.getPos(),n=e.size===-1?1:e.size??4;e.size===-1?this.writeByte(255):this.writer.seek(this.writer.getPos()+n);let r=this.writer.getPos();if(this.dataOffsets.set(e,r),this.writeEBML(e.data),e.size!==-1){let e=this.writer.getPos()-r,i=this.writer.getPos();this.writer.seek(t),this.writeVarInt(e,n),this.writer.seek(i)}}else if(typeof e.data==`number`){let t=e.size??oo(e.data);this.writeVarInt(t),this.writeUnsignedInt(e.data,t)}else if(typeof e.data==`bigint`){let t=e.size??so(e.data);this.writeVarInt(t),this.writeUnsignedBigInt(e.data,t)}else if(typeof e.data==`string`)this.writeVarInt(e.data.length),this.writeAsciiString(e.data);else if(e.data instanceof Uint8Array)this.writeVarInt(e.data.byteLength,e.size),this.writer.write(e.data);else if(e.data instanceof eo)this.writeVarInt(4),this.writeFloat32(e.data.value);else if(e.data instanceof to)this.writeVarInt(8),this.writeFloat64(e.data.value);else if(e.data instanceof no){let t=e.size??co(e.data.value);this.writeVarInt(t),this.writeSignedInt(e.data.value,t)}else if(e.data instanceof ro){let t=Kn.encode(e.data.value);this.writeVarInt(t.length),this.writer.write(t)}else rr(e.data)}}},fo=Date.UTC(2001,0,1),po={avc:`V_MPEG4/ISO/AVC`,hevc:`V_MPEGH/ISO/HEVC`,vp8:`V_VP8`,vp9:`V_VP9`,av1:`V_AV1`,prores:`V_PRORES`,aac:`A_AAC`,mp3:`A_MPEG/L3`,opus:`A_OPUS`,vorbis:`A_VORBIS`,flac:`A_FLAC`,ac3:`A_AC3`,eac3:`A_EAC3`,dts:`A_DTS`,truehd:`A_TRUEHD`,"pcm-u8":`A_PCM/INT/LIT`,"pcm-s16":`A_PCM/INT/LIT`,"pcm-s16be":`A_PCM/INT/BIG`,"pcm-s24":`A_PCM/INT/LIT`,"pcm-s24be":`A_PCM/INT/BIG`,"pcm-s32":`A_PCM/INT/LIT`,"pcm-s32be":`A_PCM/INT/BIG`,"pcm-f32":`A_PCM/FLOAT/IEEE`,"pcm-f64":`A_PCM/FLOAT/IEEE`,webvtt:`S_TEXT/WEBVTT`},mo=e=>{let t=(e.hasVideo?`video/`:e.hasAudio?`audio/`:`application/`)+(e.isWebM?`webm`:`x-matroska`);if(e.codecStrings.length>0){let n=[...new Set(e.codecStrings.filter(Boolean))];t+=`; codecs="${n.join(`, `)}"`}return t},ho=e=>{let t=e.filePos;if(e.remainingLength<7)return null;let n=new qr(yo(e,7));if(n.readBits(12)!==4095||(n.skipBits(1),n.readBits(2)!==0))return null;let r=n.readBits(1),i=n.readBits(2)+1,a=n.readBits(4);if(a>=Jr.length)return null;n.skipBits(1);let o=n.readBits(3);if(o===0)throw Error(`ADTS frames with channel configuration 0 are not supported.`);n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);let s=n.readBits(13);n.skipBits(11);let c=n.readBits(2)+1;if(c!==1)throw Error(`ADTS frames with more than one AAC frame are not supported.`);let l=null;if(r===0){if(e.remainingLength<2)return null;l=bo(e)}return s<e.filePos-t?null:{objectType:i,samplingFrequencyIndex:a,channelConfiguration:o,frameLength:s,numberOfAacFrames:c,crcCheck:l,startPos:t}},go=t(((e,t)=>{t.exports={}})),_o=class e{constructor(e,t,n,r,i){this.bytes=e,this.view=t,this.offset=n,this.start=r,this.end=i,this.bufferPos=r-n}static tempFromBytes(t){return new e(t,Wn(t),0,0,t.length)}get length(){return this.end-this.start}get filePos(){return this.offset+this.bufferPos}set filePos(e){this.bufferPos=e-this.offset}get remainingLength(){return Math.max(this.end-this.filePos,0)}skip(e){this.bufferPos+=e}slice(t,n=this.end-t){if(t<this.start||t+n>this.end)throw RangeError(`Slicing outside of original slice.`);return new e(this.bytes,this.view,this.offset,t,t+n)}},vo=(e,t)=>{if(t<0||e.filePos<e.start||e.filePos+t>e.end)throw RangeError(`Tried reading [${e.filePos}, ${e.filePos+t}), but slice is [${e.start}, ${e.end}). This is likely an internal error, please report it alongside the file that caused it.`)},yo=(e,t)=>{vo(e,t);let n=e.bytes.subarray(e.bufferPos,e.bufferPos+t);return e.bufferPos+=t,n},bo=e=>{vo(e,2);let t=e.view.getUint16(e.bufferPos,!1);return e.bufferPos+=2,t},xo=function(e,t,n){if(t!=null){if(typeof t!=`object`&&typeof t!=`function`)throw TypeError(`Object expected.`);var r,i;if(n){if(!Symbol.asyncDispose)throw TypeError(`Symbol.asyncDispose is not defined.`);r=t[Symbol.asyncDispose]}if(r===void 0){if(!Symbol.dispose)throw TypeError(`Symbol.dispose is not defined.`);r=t[Symbol.dispose],n&&(i=r)}if(typeof r!=`function`)throw TypeError(`Object not disposable.`);i&&(r=function(){try{i.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:r,async:n})}else n&&e.stack.push({async:!0});return t},So=(function(e){return function(t){function n(n){t.error=t.hasError?new e(n,t.error,`An error was suppressed during disposal.`):n,t.hasError=!0}var r,i=0;function a(){for(;r=t.stack.pop();)try{if(!r.async&&i===1)return i=0,t.stack.push(r),Promise.resolve().then(a);if(r.dispose){var e=r.dispose.call(r.value);if(r.async)return i|=2,Promise.resolve(e).then(a,function(e){return n(e),a()})}else i|=1}catch(e){n(e)}if(i===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return a()}})(typeof SuppressedError==`function`?SuppressedError:function(e,t,n){var r=Error(n);return r.name=`SuppressedError`,r.error=e,r.suppressed=t,r}),Co=class{constructor(){this._connectedTrack=null,this._closingPromise=null,this._closed=!1,this._nominalBitrate=null}_ensureValidAdd(){if(!this._connectedTrack)throw Error(`Source is not connected to an output track.`);if(this._connectedTrack.output.state===`canceled`)throw Error(`Output has been canceled.`);if(this._connectedTrack.output.state===`finalizing`||this._connectedTrack.output.state===`finalized`)throw Error(`Output has been finalized.`);if(this._connectedTrack.output.state===`pending`)throw Error(`Output has not started.`);if(this._closed)throw Error(`Source is closed.`)}async _start(){}async _flushAndClose(e){}close(){if(this._closingPromise)return;let e=this._connectedTrack;if(!e)throw Error(`Cannot call close without connecting the source to an output track.`);if(e.output.state===`pending`)throw Error(`Cannot call close before output has been started.`);this._closingPromise=(async()=>{await this._flushAndClose(!1),this._closed=!0,e.output.state!==`finalizing`&&e.output.state!==`finalized`&&e.output._muxer.onTrackClose(e)})()}async _flushOrWaitForOngoingClose(e){return this._closingPromise??=(async()=>{await this._flushAndClose(e),this._closed=!0})()}},wo=class extends Co{constructor(e){if(super(),!Fo.includes(e))throw TypeError(`Invalid video codec '${e}'. Must be one of: ${Fo.join(`, `)}.`);this._codec=e}},To=(e,t)=>{if(e.metadata.hasOnlyKeyPackets&&t.type!==`key`)throw Error(`Cannot add non-key packets to a hasOnlyKeyPackets video track.`)},Eo=class{setError(e){this.errorSet||=(this.error=e,!0)}constructor(e,t){this.source=e,this.encodingConfig=t,this.ensureEncoderPromise=null,this.encoderInitialized=!1,this.encoder=null,this.encoderConfig=null,this.encodersReclaimed=!1,this.muxer=null,this.lastMultipleOfKeyFrameInterval=-1,this.emittedEncoderPackets=0,this.chunkTimestampsAreShiftedByDuration=!1,this.codedWidth=null,this.codedHeight=null,this.outputWidth=null,this.outputHeight=null,this.frameRateLastSample=null,this.frameRateLastTimestamp=null,this.frameRateLastEndTimestamp=null,this.preciseTimings=[],this.customEncoder=null,this.customEncoderCallSerializer=new gr,this.customEncoderQueueSize=0,this.defaultEncodeOptions={},this.alphaEncoder=null,this.splitter=null,this.splitterCreationFailed=!1,this.alphaFrameQueue=[],this.error=null,this.errorSet=!1,this.lastMuxerPromise=Promise.resolve(),this.closed=!1}async add(e,t,n){let r=e;try{this.checkForEncoderError(),this.source._ensureValidAdd();let i=this.encodingConfig,a=i.sizeChangeBehavior??`deny`,o=!1;if(this.codedWidth!==null&&this.codedHeight!==null){if((e.codedWidth!==this.codedWidth||e.codedHeight!==this.codedHeight)&&(o=!0,a===`deny`))throw Error(`Video sample size must remain constant. Expected ${this.codedWidth}x${this.codedHeight}, got ${e.codedWidth}x${e.codedHeight}. To allow the sample size to change over time, set \`sizeChangeBehavior\` to a value other than 'deny' in the encoding options.`)}else this.codedWidth=e.codedWidth,this.codedHeight=e.codedHeight;if(i.transform?.width!==void 0||i.transform?.height!==void 0||i.transform?.rotate!==void 0||i.transform?.flip!==void 0||i.transform?.crop!==void 0||i.transform?.force===!0||o&&a!==`passThrough`){let n=i.transform?.width,r=i.transform?.height,s=i.transform?.fit??`fill`;o&&a!==`passThrough`&&(F(this.outputWidth),F(this.outputHeight),F(a!==`deny`),n=this.outputWidth,r=this.outputHeight,s=a);let c=await e.transform({width:n,height:r,roundDimensionsTo:2,crop:i.transform?.crop,rotate:i.transform?.rotate,flip:i.transform?.flip,fit:s,alpha:i.alpha});(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=c.displayWidth,this.outputHeight=c.displayHeight),t&&e.close(),e=c,t=!0}else(this.outputWidth===null||this.outputHeight===null)&&(this.outputWidth=e.codedWidth,this.outputHeight=e.codedHeight);let s=i.transform?.frameRate;if(s!==void 0){let i=e.timestamp+e.duration,a=ur(e.timestamp,s);if(this.frameRateLastSample!==null){if(a<=this.frameRateLastTimestamp){this.frameRateLastSample.close(),this.frameRateLastSample=e.clone(),this.frameRateLastEndTimestamp=i;return}await this.padFrameRate(a,n)}e===r&&(e=e.clone(),t=!0),e.setTimestamp(a),e.setDuration(1/s),this.frameRateLastSample?.close(),this.frameRateLastSample=e.clone(),this.frameRateLastTimestamp=a,this.frameRateLastEndTimestamp=i}await this.processAndEncode(e,n)}finally{t&&e.close()}}async processAndEncode(e,t){let n=this.encodingConfig,r;if(n.transform?.process){let t=n.transform.process(e);if(Or(t)&&(t=await t),t===null)return;Array.isArray(t)||(t=[t]);let i=[];try{for(let n of t)n instanceof ya?i.push(n):typeof VideoFrame<`u`&&n instanceof VideoFrame?i.push(new ya(n)):i.push(new ya(n,{timestamp:e.timestamp,duration:e.duration}))}catch(n){for(let t of i)t!==e&&t.close();for(let n of t)(n instanceof ya&&n!==e||typeof VideoFrame<`u`&&n instanceof VideoFrame)&&n.close();throw n}r=i}else r=[e];try{for(let e of r){if(this.encoderInitialized||(this.ensureEncoderPromise||this.ensureEncoder(e),this.encoderInitialized||await this.ensureEncoderPromise),F(this.encoderInitialized),this.closed)break;this.encodersReclaimed&&this.recreateWebCodecsEncoders();let n=this.encodingConfig.keyFrameInterval??2,r=Math.floor(e.timestamp/n),i={...this.defaultEncodeOptions,...e.encodeOptions,...t},a={...i,keyFrame:i.keyFrame===void 0?n===0||r!==this.lastMultipleOfKeyFrameInterval:i.keyFrame};if(this.lastMultipleOfKeyFrameInterval=r,this.encodingConfig.onEncodedSample?.(e),this.customEncoder){this.customEncoderQueueSize++;let t=e.clone(),n=this.customEncoderCallSerializer.call(()=>this.customEncoder.encode(t,a)).catch(e=>this.setError(e)).finally(()=>{this.customEncoderQueueSize--,t.close()});this.customEncoderQueueSize>=4&&await n}else{F(this.encoder);let t=e.toVideoFrame(),n=tr(this.preciseTimings,t.timestamp,e=>e.microsecondTimestamp),r=n===-1?null:this.preciseTimings[n];if(r&&r.microsecondTimestamp===t.timestamp?(r.timestamp!==e.timestamp&&(r.timestampIsValid=!1),r.duration!==e.duration&&(r.durationIsValid=!1)):(this.preciseTimings.splice(n+1,0,{microsecondTimestamp:t.timestamp,timestamp:e.timestamp,duration:e.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift()),!this.alphaEncoder)try{this.encoder.encode(t,a)}finally{t.close()}else if(t.format&&!t.format.includes(`A`)||this.splitterCreationFailed){this.alphaFrameQueue.push(null);try{this.encoder.encode(t,a)}finally{t.close()}}else{this.splitter||=new Ao;let{colorFrame:e,alphaFrame:n}=await this.splitter.split(t);this.alphaFrameQueue.push(n);try{this.encoder.encode(e,a)}finally{e.close()}}this.encoder.encodeQueueSize>=4&&await new Promise(e=>this.encoder.addEventListener(`dequeue`,e,{once:!0}))}await this.lastMuxerPromise}}finally{for(let t of r)t!==e&&t.close()}}async padFrameRate(e,t){let n=this.encodingConfig.transform.frameRate;F(this.frameRateLastSample);let r=Math.round((e-this.frameRateLastTimestamp)*n);for(let e=1;e<r;e++){let r={stack:[],error:void 0,hasError:!1};try{let i=xo(r,this.frameRateLastSample.clone(),!1);i.setTimestamp(this.frameRateLastTimestamp+e/n),i.setDuration(1/n),await this.processAndEncode(i,t)}catch(e){r.error=e,r.hasError=!0}finally{So(r)}}}ensureEncoder(e){this.ensureEncoderPromise=(async()=>{let t=Ja(this.encodingConfig.quality,this.encodingConfig.bitrate);F(t!==void 0);let n=za({...this.encodingConfig,quality:t,width:e.codedWidth,height:e.codedHeight,squarePixelWidth:e.squarePixelWidth,squarePixelHeight:e.squarePixelHeight,framerate:this.source._connectedTrack?.metadata.frameRate}),r=null,i;for(let e of n){let t=e.config;if(this.encodingConfig.onEncoderConfig?.(t),i=Ya.find(e=>e.supports(this.encodingConfig.codec,t)),i){r=e;break}if(typeof VideoEncoder<`u`){if(t.alpha=`discard`,this.encodingConfig.alpha===`keep`&&(t.latencyMode=`quality`),(t.width%2==1||t.height%2==1)&&(this.encodingConfig.codec===`avc`||this.encodingConfig.codec===`hevc`))throw Error(`The dimensions ${t.width}x${t.height} are not supported for codec '${this.encodingConfig.codec}'; both width and height must be even numbers. Make sure to round your dimensions to the nearest even number.`);try{if((await VideoEncoder.isConfigSupported(t)).supported){r=e;break}}catch{}}}if(!r){if(typeof VideoEncoder>`u`)throw Error(Tr(`VideoEncoder`));let e=n[0].config,t=n.map(({config:e,quantizer:t})=>t===null?`${e.bitrate} bps`:`quantizer ${t}`);throw Error(`This specific encoder configuration (${e.codec}, ${t.join(` / `)}, ${e.width}x${e.height}, hardware acceleration: ${e.hardwareAcceleration??`no-preference`}) is not supported in this environment. Consider using another codec or changing your video parameters.`)}let a=r.config;r.quantizer===null?this.source._nominalBitrate=a.bitrate??null:this.defaultEncodeOptions=Ga(this.encodingConfig.codec,r.quantizer),i?(this.customEncoder=new i,this.customEncoder.codec=this.encodingConfig.codec,this.customEncoder.config=a,this.customEncoder.onPacket=(e,t)=>{if(!(e instanceof Za))throw TypeError(`The first argument passed to onPacket must be an EncodedPacket.`);if(t!==void 0&&(!t||typeof t!=`object`))throw TypeError(`The second argument passed to onPacket must be an object or undefined.`);To(this.source._connectedTrack,e),this.encodingConfig.onEncodedPacket?.(e,t),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,e,t).catch(e=>{this.setError(e)})},this.customEncoder.onError=e=>{this.setError(e)},await this.customEncoder.init()):(this.encoderConfig=a,this.encodingConfig.codec===`avc`&&br()&&(this.chunkTimestampsAreShiftedByDuration=await Oo()),this.createWebCodecsEncoders()),F(this.source._connectedTrack),this.muxer=this.source._connectedTrack.output._muxer,this.encoderInitialized=!0})()}createWebCodecsEncoders(){let e=this.encoderConfig;F(e);let t=[],n=[],r=0,i=0,a=(e,t)=>{Er(e)?this.encodersReclaimed=!0:(e.stack=t,this.setError(e))},o=Error(`Encoding error`).stack;if(this.encoder=new VideoEncoder({output:(e,a)=>{if(!this.alphaEncoder){this.addPacket(e,null,a);return}let o=this.alphaFrameQueue.shift();F(o!==void 0),o?(this.alphaEncoder.encode(o,{...this.defaultEncodeOptions,keyFrame:e.type===`key`}),i++,o.close(),t.push({chunk:e,meta:a})):i===0?this.addPacket(e,null,a):(n.push(r+i),t.push({chunk:e,meta:a}))},error:e=>a(e,o)}),this.encoder.configure(e),this.encodingConfig.alpha===`keep`){let o=Error(`Encoding error`).stack;this.alphaEncoder=new VideoEncoder({output:(e,a)=>{i--;let o=t.shift();for(F(o!==void 0),this.addPacket(o.chunk,e,o.meta),r++;n.length>0&&n[0]===r;){n.shift();let e=t.shift();F(e!==void 0),this.addPacket(e.chunk,null,e.meta)}},error:e=>a(e,o)}),this.alphaEncoder.configure(e)}}addPacket(e,t,n){let r={};if(t){let e=new Uint8Array(t.byteLength);t.copyTo(e),r.alpha=e}let i=Za.fromEncodedChunk(e,r),a=this.encoderConfig;if(F(a),n?.decoderConfig&&(n.decoderConfig.codec=Zo({width:a.width,height:a.height,codec:this.encodingConfig.codec,codecDescription:n.decoderConfig.description?Un(n.decoderConfig.description):null,colorSpace:n.decoderConfig.colorSpace??null,avcType:a.codec.includes(`avc1.`)?1:a.codec.includes(`avc3.`)?3:null,avcCodecInfo:this.encodingConfig.codec===`avc`&&!n.decoderConfig.description?hi(i.data):null,hevcCodecInfo:this.encodingConfig.codec===`hevc`&&!n.decoderConfig.description?wi(i.data):null,vp9CodecInfo:this.encodingConfig.codec===`vp9`?Fi(i.data):null,av1CodecInfo:this.encodingConfig.codec===`av1`?Li(i.data):null,proresFormat:null}),this.encodingConfig.codec===`avc`&&n.decoderConfig.description&&br())){let e=_i(Un(n.decoderConfig.description)),t=e?.sequenceParameterSets[0];if(t&&t[0]===t[1]){F(e),t=t.subarray(1);let r=e.pictureParameterSets[0];r&&=r.subarray(1);let i=gi({...e,sequenceParameterSets:[t],pictureParameterSets:r?[r]:[]});n.decoderConfig.description=i}}let o=e.timestamp;this.chunkTimestampsAreShiftedByDuration&&(o-=e.duration??0,i=i.clone({timestamp:o/1e6}));let s=tr(this.preciseTimings,o,e=>e.microsecondTimestamp),c=s===-1?null:this.preciseTimings[s],l=null;this.emittedEncoderPackets===0&&i.type===`delta`&&n?.decoderConfig&&(l=Hi(this.encodingConfig.codec,n.decoderConfig,i.data)),(c&&c.microsecondTimestamp===o||l!==null)&&(i=i.clone({timestamp:c?.timestampIsValid?c.timestamp:void 0,duration:c?.durationIsValid?c.duration:void 0,type:l??void 0})),To(this.source._connectedTrack,i),this.encodingConfig.onEncodedPacket?.(i,n),this.lastMuxerPromise=this.muxer.addEncodedVideoPacket(this.source._connectedTrack,i,n).catch(e=>{this.setError(e)}),this.emittedEncoderPackets++}recreateWebCodecsEncoders(){F(this.encoder),this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.encodersReclaimed=!1,this.lastMultipleOfKeyFrameInterval=-1,this.createWebCodecsEncoders()}async flushAndClose(e){try{if(!e&&(this.checkForEncoderError(),this.frameRateLastSample)){let e=this.encodingConfig.transform.frameRate,t=ur(this.frameRateLastEndTimestamp,e);await this.padFrameRate(t)}this.closed=!0,e||(this.customEncoder?this.customEncoderCallSerializer.call(()=>this.customEncoder.flush()):this.encoder&&!this.encodersReclaimed&&(await this.encoder.flush(),await this.alphaEncoder?.flush(),await Lr(25)))}finally{this.closed=!0,this.frameRateLastSample?.close(),this.frameRateLastSample=null,this.customEncoder?await this.customEncoderCallSerializer.call(()=>this.customEncoder.close()).catch(e=>this.setError(e)):this.encoder&&(this.encoder.state!==`closed`&&this.encoder.close(),this.alphaEncoder&&this.alphaEncoder.state!==`closed`&&this.alphaEncoder.close(),this.alphaFrameQueue.forEach(e=>e?.close()),this.alphaFrameQueue.length=0,this.splitter?.close())}e||this.checkForEncoderError()}getQueueSize(){return this.customEncoder?this.customEncoderQueueSize:this.encoder?.encodeQueueSize??0}checkForEncoderError(){if(this.errorSet)throw this.error}},Do=null,Oo=()=>Do??=(async()=>{let e=null,t=new VideoEncoder({output:t=>{e??=t.timestamp},error:()=>{}});try{t.configure({codec:`avc1.64001f`,width:1280,height:720});let e=new VideoFrame(new Uint8Array(1382400),{format:`I420`,codedWidth:1280,codedHeight:720,timestamp:0,duration:500});t.encode(e,{keyFrame:!0}),e.close(),await t.flush()}catch{return!1}finally{t.state!==`closed`&&t.close()}return e===500})(),ko=null,Ao=class{constructor(){this.worker=null,this.pendingRequests=new Map,this.nextRequestId=0}split(e){if(!this.worker){if(!ko){let e=new Blob([`(${jo.toString()})()`],{type:`application/javascript`});ko=URL.createObjectURL(e)}this.worker=new Worker(ko),this.worker.addEventListener(`message`,e=>{let t=e.data,n=this.pendingRequests.get(t.id);n&&(this.pendingRequests.delete(t.id),`error`in t?n.reject(Error(t.error)):n.resolve({colorFrame:t.colorFrame,alphaFrame:t.alphaFrame}))}),this.worker.addEventListener(`error`,e=>{let t=Error(e.message||`Color/alpha splitter worker error.`);for(let e of this.pendingRequests.values())e.reject(t);this.pendingRequests.clear()})}let t=this.nextRequestId++,n=nr();return this.pendingRequests.set(t,n),this.worker.postMessage({id:t,sourceFrame:e},{transfer:[e]}),n.promise}close(){this.worker?.terminate(),this.worker=null;let e=Error(`Color/alpha splitter closed.`);for(let t of this.pendingRequests.values())t.reject(e);this.pendingRequests.clear()}},jo=()=>{let e=null,t=Promise.resolve();self.addEventListener(`message`,e=>{let{id:r,sourceFrame:i}=e.data;t=t.then(async()=>{try{let{colorFrame:e,alphaFrame:t}=await n(i);self.postMessage({id:r,colorFrame:e,alphaFrame:t},{transfer:[e,t]})}catch(e){self.postMessage({id:r,error:e.message})}finally{i.close()}})});let n=async t=>{let n=t.format;if(!n)throw Error(`CPU color/alpha splitting requires a known VideoFrame format.`);let a=t.allocationSize();if(e&&e.byteLength===a||(e=new Uint8Array(a)),await t.copyTo(e),n===`RGBA`||n===`BGRA`)return r(e,n,t);if(n===`I420A`||n===`I420AP10`||n===`I420AP12`||n===`I422A`||n===`I422AP10`||n===`I422AP12`||n===`I444A`||n===`I444AP10`||n===`I444AP12`)return i(e,n,t);throw Error(`CPU color/alpha splitting does not support format '${n}'.`)},r=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=r*i,o=a+Math.ceil(r/2)*Math.ceil(i/2)*2,s=new Uint8Array(o);for(let t=0,n=3;t<a;t++,n+=4)s[t]=e[n];s.fill(128,a);let c=new VideoFrame(e,{format:t===`RGBA`?`RGBX`:`BGRX`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),l={format:`I420`,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[s.buffer]};return{colorFrame:c,alphaFrame:new VideoFrame(s,l)}},i=(e,t,n)=>{let r=n.visibleRect?.width??n.codedWidth,i=n.visibleRect?.height??n.codedHeight,a=t.includes(`P10`),o=t.includes(`P12`),s=a||o?2:1,c,l;t.startsWith(`I420`)?(c=Math.ceil(r/2),l=Math.ceil(i/2)):t.startsWith(`I422`)?(c=Math.ceil(r/2),l=i):(c=r,l=i);let u=r*i,d=c*l,f=u*s,p=d*s,m=u*s,h=f+p*2,g=t.replace(`A`,``),_=Math.ceil(r/2)*Math.ceil(i/2),v=m+_*s*2,y=new Uint8Array(v),b=h;y.set(e.subarray(b,b+m),0);let x=m,S=a?512:o?2048:128;s===1?y.fill(S,x):new Uint16Array(y.buffer,x,2*_).fill(S);let C=a?`I420P10`:o?`I420P12`:`I420`,w=new VideoFrame(e.subarray(0,h),{format:g,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0}),T={format:C,codedWidth:r,codedHeight:i,timestamp:n.timestamp,duration:n.duration??void 0,colorSpace:{fullRange:!0,matrix:`bt709`,primaries:`bt709`,transfer:`bt709`},transfer:[y.buffer]};return{colorFrame:w,alphaFrame:new VideoFrame(y,T)}}},Mo=class extends wo{constructor(e,t){if(!(typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement)&&!(typeof OffscreenCanvas<`u`&&e instanceof OffscreenCanvas))throw TypeError(`canvas must be an HTMLCanvasElement or OffscreenCanvas.`);La(t),super(t.codec),this._encoder=new Eo(this,t),this._canvas=e}add(e,t=0,n){if(!Number.isFinite(e))throw TypeError(`timestamp must be a finite number.`);if(!Number.isFinite(t)||t<0)throw TypeError(`duration must be a non-negative number.`);let r=new ya(this._canvas,{timestamp:e,duration:t});return this._encoder.add(r,!0,n)}_flushAndClose(e){return this._encoder.flushAndClose(e)}},No=class extends Co{constructor(e){if(super(),!Ro.includes(e))throw TypeError(`Invalid audio codec '${e}'. Must be one of: ${Ro.join(`, `)}.`);this._codec=e}},Po=class extends Co{constructor(e){if(super(),!zo.includes(e))throw TypeError(`Invalid subtitle codec '${e}'. Must be one of: ${zo.join(`, `)}.`);this._codec=e}},Fo=[`avc`,`hevc`,`vp9`,`av1`,`vp8`,`prores`],Io=[`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,`pcm-u8`,`pcm-s8`,`ulaw`,`alaw`],Lo=[`aac`,`opus`,`mp3`,`vorbis`,`flac`,`ac3`,`eac3`,`dts`,`truehd`],Ro=[...Lo,...Io],zo=[`webvtt`],Bo=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}],Vo=[{maxPictureSize:36864,maxBitrate:128e3,tier:`L`,level:30},{maxPictureSize:122880,maxBitrate:15e5,tier:`L`,level:60},{maxPictureSize:245760,maxBitrate:3e6,tier:`L`,level:63},{maxPictureSize:552960,maxBitrate:6e6,tier:`L`,level:90},{maxPictureSize:983040,maxBitrate:1e7,tier:`L`,level:93},{maxPictureSize:2228224,maxBitrate:12e6,tier:`L`,level:120},{maxPictureSize:2228224,maxBitrate:3e7,tier:`H`,level:120},{maxPictureSize:2228224,maxBitrate:2e7,tier:`L`,level:123},{maxPictureSize:2228224,maxBitrate:5e7,tier:`H`,level:123},{maxPictureSize:8912896,maxBitrate:25e6,tier:`L`,level:150},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:150},{maxPictureSize:8912896,maxBitrate:4e7,tier:`L`,level:153},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:153},{maxPictureSize:8912896,maxBitrate:6e7,tier:`L`,level:156},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:156},{maxPictureSize:35651584,maxBitrate:6e7,tier:`L`,level:180},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:180},{maxPictureSize:35651584,maxBitrate:12e7,tier:`L`,level:183},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:183},{maxPictureSize:35651584,maxBitrate:24e7,tier:`L`,level:186},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:186}],z=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}],Ho=[{maxPictureSize:147456,maxBitrate:15e5,tier:`M`,level:0},{maxPictureSize:278784,maxBitrate:3e6,tier:`M`,level:1},{maxPictureSize:665856,maxBitrate:6e6,tier:`M`,level:4},{maxPictureSize:1065024,maxBitrate:1e7,tier:`M`,level:5},{maxPictureSize:2359296,maxBitrate:12e6,tier:`M`,level:8},{maxPictureSize:2359296,maxBitrate:3e7,tier:`H`,level:8},{maxPictureSize:2359296,maxBitrate:2e7,tier:`M`,level:9},{maxPictureSize:2359296,maxBitrate:5e7,tier:`H`,level:9},{maxPictureSize:8912896,maxBitrate:3e7,tier:`M`,level:12},{maxPictureSize:8912896,maxBitrate:1e8,tier:`H`,level:12},{maxPictureSize:8912896,maxBitrate:4e7,tier:`M`,level:13},{maxPictureSize:8912896,maxBitrate:16e7,tier:`H`,level:13},{maxPictureSize:8912896,maxBitrate:6e7,tier:`M`,level:14},{maxPictureSize:8912896,maxBitrate:24e7,tier:`H`,level:14},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:15},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:15},{maxPictureSize:35651584,maxBitrate:6e7,tier:`M`,level:16},{maxPictureSize:35651584,maxBitrate:24e7,tier:`H`,level:16},{maxPictureSize:35651584,maxBitrate:1e8,tier:`M`,level:17},{maxPictureSize:35651584,maxBitrate:48e7,tier:`H`,level:17},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:18},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:18},{maxPictureSize:35651584,maxBitrate:16e7,tier:`M`,level:19},{maxPictureSize:35651584,maxBitrate:8e8,tier:`H`,level:19}],Uo=`.01.01.01.01.00`,Wo=`.0.110.01.01.01.0`,Go=[`ap4x`,`ap4h`,`apch`,`apcn`,`apcs`,`apco`],Ko=[`dtsc`,`dtsh`,`dtsl`,`dtse`],qo=[{fourCc:`apco`,bitrate:45e6,alpha:!1},{fourCc:`apcs`,bitrate:102e6,alpha:!1},{fourCc:`apcn`,bitrate:147e6,alpha:!1},{fourCc:`apch`,bitrate:22e7,alpha:!1},{fourCc:`ap4h`,bitrate:33e7,alpha:!0},{fourCc:`ap4x`,bitrate:5e8,alpha:!0}],Jo=(e,t,n,r,i)=>{if(e===`avc`){let e=vr(),i=e?66:100,a=Math.ceil(t/16)*Math.ceil(n/16),o=Bo.find(e=>a<=e.maxMacroblocks&&r<=e.maxBitrate)??Rn(Bo),s=o?o.level:0;return`avc1.${i.toString(16).padStart(2,`0`)}${e?`40`:`00`}${s.toString(16).padStart(2,`0`)}`}if(e===`hevc`){let e=t*n,i=Vo.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(Vo);return`hev1.1.6.${i.tier}${i.level}.B0`}if(e===`vp8`)return`vp8`;if(e===`vp9`){let e=t*n;return`vp09.00.${(z.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(z)).level.toString().padStart(2,`0`)}.08`}if(e===`av1`){let e=t*n,i=Ho.find(t=>e<=t.maxPictureSize&&r<=t.maxBitrate)??Rn(Ho);return`av01.0.${i.level.toString().padStart(2,`0`)}${i.tier}.08`}if(e===`prores`){let e=(t*n/2073600)**.95,a=qo.filter(e=>e.alpha===i),o=a[0].fourCc,s=1/0;for(let{fourCc:t,bitrate:n}of a){let i=Math.abs(n*e-r);i<s&&(s=i,o=t)}return o}throw rr(e),TypeError(`Unhandled codec '${String(e)}'.`)},Yo=e=>{let t=e.split(`.`);return[1,1,Number(t[1]),2,1,Number(t[2]),3,1,Number(t[3]),4,1,t[4]?Number(t[4]):1]},Xo=e=>{let t=e.split(`.`),n=Number(t[1]),r=t[2],i=Number(r.slice(0,-1)),a=(n<<5)+i,o=+(r.slice(-1)===`H`),s=Number(t[3]),c=s===8?0:1,l=+(s===12),u=t[4]?Number(t[4]):0,d=t[5]?Number(t[5][0]):1,f=t[5]?Number(t[5][1]):1,p=t[5]?Number(t[5][2]):0;return[129,a,(o<<7)+(c<<6)+(l<<5)+(u<<4)+(d<<3)+(f<<2)+p,0]},Zo=e=>{let{codec:t,codecDescription:n,colorSpace:r,avcCodecInfo:i,hevcCodecInfo:a,vp9CodecInfo:o,av1CodecInfo:s,proresFormat:c}=e;if(t===`avc`){if(F(e.avcType!==null),i){let t=new Uint8Array([i.avcProfileIndication,i.profileCompatibility,i.avcLevelIndication]);return`avc${e.avcType}.${$n(t)}`}if(!n||n.byteLength<4)throw TypeError(`AVC decoder description is not provided or is not at least 4 bytes long.`);return`avc${e.avcType}.${$n(n.subarray(1,4))}`}if(t===`hevc`){let e,t,r,i,o,s;if(a)e=a.generalProfileSpace,t=a.generalProfileIdc,r=er(a.generalProfileCompatibilityFlags),i=a.generalTierFlag,o=a.generalLevelIdc,s=[...a.generalConstraintIndicatorFlags];else{if(!n||n.byteLength<23)throw TypeError(`HEVC decoder description is not provided or is not at least 23 bytes long.`);let a=Wn(n),c=a.getUint8(1);e=c>>6&3,t=c&31,r=er(a.getUint32(2)),i=c>>5&1,o=a.getUint8(12),s=[];for(let e=0;e<6;e++)s.push(a.getUint8(6+e))}let c=`hev1.`;for(c+=[``,`A`,`B`,`C`][e]+t,c+=`.`,c+=r.toString(16).toUpperCase(),c+=`.`,c+=i===0?`L`:`H`,c+=o;s.length>0&&s[s.length-1]===0;)s.pop();return s.length>0&&(c+=`.`,c+=s.map(e=>e.toString(16).toUpperCase()).join(`.`)),c}if(t===`vp8`)return`vp8`;if(t===`vp9`){if(!o){let t=e.width*e.height,n=Rn(z).level;for(let e of z)if(t<=e.maxPictureSize){n=e.level;break}return`vp09.00.${n.toString().padStart(2,`0`)}.08`}let t=o.profile.toString().padStart(2,`0`),n=o.level.toString().padStart(2,`0`),r=o.bitDepth.toString().padStart(2,`0`),i=o.chromaSubsampling.toString().padStart(2,`0`),a=o.colourPrimaries.toString().padStart(2,`0`),s=o.transferCharacteristics.toString().padStart(2,`0`),c=o.matrixCoefficients.toString().padStart(2,`0`),l=o.videoFullRangeFlag.toString().padStart(2,`0`),u=`vp09.${t}.${n}.${r}.${i}`;return u+=`.${a}.${s}.${c}.${l}`,u.endsWith(Uo)&&(u=u.slice(0,-15)),u}if(t===`av1`){if(!s){let t=e.width*e.height,n=Rn(z).level;for(let e of z)if(t<=e.maxPictureSize){n=e.level;break}return`av01.0.${n.toString().padStart(2,`0`)}M.08`}let t=s.profile,n=s.level.toString().padStart(2,`0`),i=s.tier?`H`:`M`,a=s.bitDepth.toString().padStart(2,`0`),o=s.monochrome?`1`:`0`,c=100*s.chromaSubsamplingX+10*s.chromaSubsamplingY+1*(s.chromaSubsamplingX&&s.chromaSubsamplingY?s.chromaSamplePosition:0),l,u,d,f;Ri(s)?(l=s.colourPrimaries,u=s.transferCharacteristics,d=s.matrixCoefficients,f=s.videoFullRangeFlag):(l=r?.primaries?qn[r.primaries]:1,u=r?.transfer?Jn[r.transfer]:1,d=r?.matrix?Yn[r.matrix]:1,f=+!!r?.fullRange);let p=`av01.${t}.${n}${i}.${a}`;return p+=`.${o}.${c.toString().padStart(3,`0`)}`,p+=`.${l.toString().padStart(2,`0`)}`,p+=`.${u.toString().padStart(2,`0`)}`,p+=`.${d.toString().padStart(2,`0`)}`,p+=`.${f}`,p.endsWith(Wo)&&(p=p.slice(0,-17)),p}if(t===`prores`)return c??`apch`;throw t!==null&&rr(t),TypeError(`Unhandled codec '${t}'.`)},Qo=(e,t)=>{switch(e){case`aac`:{if(!t.description)return 1024/t.sampleRate;let e=Zr(Un(t.description));if(e.coreSampleRate===null)throw Error(`Invalid AAC sampling frequency index.`);return e.frameLength/e.coreSampleRate}case`opus`:return es;case`mp3`:{let{sampleRate:e,numberOfChannels:n}=t,r=e>=32e3,i=r?1152:576,a=r?32e3:8e3,o=r?511:255,s=r?n===1?17:32:n===1?9:17,c=Math.floor(i/8*a/e)-4-s;return(1+Math.ceil(o/c))*i/e}case`vorbis`:{F(t.description);let e=Un(t.description),n=1,r=2;for(;r>0;)e[n++]<255&&r--;return(1<<(e[n+28]>>4))/2/t.sampleRate}case`ac3`:case`eac3`:return 256/t.sampleRate;case`dts`:return 512/t.sampleRate;case`flac`:case`truehd`:case`pcm-s16`:case`pcm-s16be`:case`pcm-s24`:case`pcm-s24be`:case`pcm-s32`:case`pcm-s32be`:case`pcm-f32`:case`pcm-f32be`:case`pcm-f64`:case`pcm-f64be`:case`pcm-u8`:case`pcm-s8`:case`ulaw`:case`alaw`:return 0;default:rr(e),F(!1)}},$o=48e3,es=.4,ts=/^pcm-([usf])(\d+)(be)?$/,ns=e=>{if(F(Io.includes(e)),e===`ulaw`)return{dataType:`ulaw`,sampleSize:1,littleEndian:!0,silentValue:255};if(e===`alaw`)return{dataType:`alaw`,sampleSize:1,littleEndian:!0,silentValue:213};let t=ts.exec(e);F(t);let n;n=t[1]===`u`?`unsigned`:t[1]===`s`?`signed`:`float`;let r=Number(t[2])/8,i=t[3]!==`be`;return{dataType:n,sampleSize:r,littleEndian:i,silentValue:e===`pcm-u8`?128:0}},rs=e=>e.startsWith(`avc1`)||e.startsWith(`avc3`)?`avc`:e.startsWith(`hev1`)||e.startsWith(`hvc1`)?`hevc`:e===`vp8`?`vp8`:e.startsWith(`vp09`)?`vp9`:e.startsWith(`av01`)?`av1`:Go.includes(e)?`prores`:e===`mp3`||e===`mp4a.69`||e===`mp4a.6B`||e===`mp4a.6b`||e===`mp4a.40.34`?`mp3`:e.startsWith(`mp4a.40.`)||e===`mp4a.67`?`aac`:e===`opus`||e===`Opus`?`opus`:e===`vorbis`?`vorbis`:e===`flac`?`flac`:e===`ac-3`||e===`ac3`?`ac3`:e===`ec-3`||e===`eac3`?`eac3`:Ko.includes(e)?`dts`:e===`mlpa`?`truehd`:e===`ulaw`?`ulaw`:e===`alaw`?`alaw`:ts.test(e)?e:e===`webvtt`?`webvtt`:null,is=e=>e===`avc`?{avc:{format:`avc`}}:e===`hevc`?{hevc:{format:`hevc`}}:{},as=[`avc1`,`avc3`,`hev1`,`hvc1`,`vp8`,`vp09`,`av01`,...Go],os=/^(avc1|avc3)\.[0-9a-fA-F]{6}$/,ss=/^(hev1|hvc1)\.(?:[ABC]?\d+)\.[0-9a-fA-F]{1,8}\.[LH]\d+(?:\.[0-9a-fA-F]{1,2}){0,6}$/,cs=/^vp09(?:\.\d{2}){3}(?:(?:\.\d{2}){5})?$/,ls=/^av01\.\d\.\d{2}[MH]\.\d{2}(?:\.\d\.\d{3}\.\d{2}\.\d{2}\.\d{2}\.\d)?$/,us=(e,t)=>{if(!e)throw TypeError(`Video chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Video chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Video chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Video chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Video chunk metadata decoder configuration must specify a codec string.`);if(!as.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Video chunk metadata decoder configuration codec string must be a valid video codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.codedWidth)||e.decoderConfig.codedWidth<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedWidth (positive integer).`);if(!Number.isInteger(e.decoderConfig.codedHeight)||e.decoderConfig.codedHeight<=0)throw TypeError(`Video chunk metadata decoder configuration must specify a valid codedHeight (positive integer).`);if(e.decoderConfig.displayAspectWidth!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectWidth)||e.decoderConfig.displayAspectWidth<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectWidth, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectHeight!==void 0&&(!Number.isInteger(e.decoderConfig.displayAspectHeight)||e.decoderConfig.displayAspectHeight<=0))throw TypeError(`Video chunk metadata decoder configuration displayAspectHeight, when defined, must be a positive integer.`);if(e.decoderConfig.displayAspectWidth!==void 0!=(e.decoderConfig.displayAspectHeight!==void 0))throw TypeError(`Video chunk metadata decoder configuration must specify both displayAspectWidth and displayAspectHeight, or neither.`);if(e.decoderConfig.description!==void 0&&!Zn(e.decoderConfig.description))throw TypeError(`Video chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.colorSpace!==void 0){let{colorSpace:t}=e.decoderConfig;if(typeof t!=`object`)throw TypeError(`Video chunk metadata decoder configuration colorSpace, when provided, must be an object.`);let n=Object.keys(qn);if(t.primaries!=null&&!n.includes(t.primaries))throw TypeError(`Video chunk metadata decoder configuration colorSpace primaries, when defined, must be one of ${n.join(`, `)}.`);let r=Object.keys(Jn);if(t.transfer!=null&&!r.includes(t.transfer))throw TypeError(`Video chunk metadata decoder configuration colorSpace transfer, when defined, must be one of ${r.join(`, `)}.`);let i=Object.keys(Yn);if(t.matrix!=null&&!i.includes(t.matrix))throw TypeError(`Video chunk metadata decoder configuration colorSpace matrix, when defined, must be one of ${i.join(`, `)}.`);if(t.fullRange!=null&&typeof t.fullRange!=`boolean`)throw TypeError(`Video chunk metadata decoder configuration colorSpace fullRange, when defined, must be a boolean.`)}if(e.decoderConfig.codec.startsWith(`avc1`)||e.decoderConfig.codec.startsWith(`avc3`)){if(!os.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for AVC must be a valid AVC codec string as specified in Section 3.4 of RFC 6381.`)}else if(e.decoderConfig.codec.startsWith(`hev1`)||e.decoderConfig.codec.startsWith(`hvc1`)){if(!ss.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for HEVC must be a valid HEVC codec string as specified in Section E.3 of ISO 14496-15.`)}else if(e.decoderConfig.codec.startsWith(`vp8`)){if(e.decoderConfig.codec!==`vp8`)throw TypeError(`Video chunk metadata decoder configuration codec string for VP8 must be "vp8".`)}else if(e.decoderConfig.codec.startsWith(`vp09`)){if(!cs.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for VP9 must be a valid VP9 codec string as specified in Section "Codecs Parameter String" of https://www.webmproject.org/vp9/mp4/.`)}else if(e.decoderConfig.codec.startsWith(`av01`)){if(!ls.test(e.decoderConfig.codec))throw TypeError(`Video chunk metadata decoder configuration codec string for AV1 must be a valid AV1 codec string as specified in Section "Codecs Parameter String" of https://aomediacodec.github.io/av1-isobmff/.`)}else if(Go.some(t=>e.decoderConfig.codec.startsWith(t))&&!Go.some(t=>e.decoderConfig.codec===t))throw TypeError(`Video chunk metadata decoder configuration codec string for ProRes must be one of the valid ProRes four-character codes: ${Go.join(`, `)}.`);if(t!==null&&rs(e.decoderConfig.codec)!==t)throw TypeError(`Video chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ds=[`mp4a`,`mp3`,`opus`,`vorbis`,`flac`,`ulaw`,`alaw`,`pcm`,`ac-3`,`ec-3`,`dts`,`mlpa`],fs=(e,t)=>{if(!e)throw TypeError(`Audio chunk metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Audio chunk metadata must be an object.`);if(!e.decoderConfig)throw TypeError(`Audio chunk metadata must include a decoder configuration.`);if(typeof e.decoderConfig!=`object`)throw TypeError(`Audio chunk metadata decoder configuration must be an object.`);if(typeof e.decoderConfig.codec!=`string`)throw TypeError(`Audio chunk metadata decoder configuration must specify a codec string.`);if(!ds.some(t=>e.decoderConfig.codec.startsWith(t)))throw TypeError(`Audio chunk metadata decoder configuration codec string must be a valid audio codec string as specified in the Mediabunny Codec Registry.`);if(!Number.isInteger(e.decoderConfig.sampleRate)||e.decoderConfig.sampleRate<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid sampleRate (positive integer).`);if(!Number.isInteger(e.decoderConfig.numberOfChannels)||e.decoderConfig.numberOfChannels<=0)throw TypeError(`Audio chunk metadata decoder configuration must specify a valid numberOfChannels (positive integer).`);if(e.decoderConfig.description!==void 0&&!Zn(e.decoderConfig.description))throw TypeError(`Audio chunk metadata decoder configuration description, when defined, must be an ArrayBuffer or an ArrayBuffer view.`);if(e.decoderConfig.codec.startsWith(`mp4a`)&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`){if(![`mp4a.40.2`,`mp4a.40.02`,`mp4a.40.5`,`mp4a.40.05`,`mp4a.40.29`,`mp4a.67`].includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for AAC must be a valid AAC codec string as specified in https://www.w3.org/TR/webcodecs-aac-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`mp3`)||e.decoderConfig.codec.startsWith(`mp4a`)){if(e.decoderConfig.codec!==`mp3`&&e.decoderConfig.codec!==`mp4a.69`&&e.decoderConfig.codec!==`mp4a.6B`&&e.decoderConfig.codec!==`mp4a.6b`)throw TypeError(`Audio chunk metadata decoder configuration codec string for MP3 must be "mp3", "mp4a.69" or "mp4a.6B".`)}else if(e.decoderConfig.codec.startsWith(`opus`)){if(e.decoderConfig.codec!==`opus`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Opus must be "opus".`);if(e.decoderConfig.description&&e.decoderConfig.description.byteLength<18)throw TypeError(`Audio chunk metadata decoder configuration description, when specified, is expected to be an Identification Header as specified in Section 5.1 of RFC 7845.`)}else if(e.decoderConfig.codec.startsWith(`vorbis`)){if(e.decoderConfig.codec!==`vorbis`)throw TypeError(`Audio chunk metadata decoder configuration codec string for Vorbis must be "vorbis".`);if(!e.decoderConfig.description)throw TypeError(`Audio chunk metadata decoder configuration for Vorbis must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-vorbis-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`flac`)){if(e.decoderConfig.codec!==`flac`)throw TypeError(`Audio chunk metadata decoder configuration codec string for FLAC must be "flac".`);if(!e.decoderConfig.description||e.decoderConfig.description.byteLength<42)throw TypeError(`Audio chunk metadata decoder configuration for FLAC must include a description, which is expected to adhere to the format described in https://www.w3.org/TR/webcodecs-flac-codec-registration/.`)}else if(e.decoderConfig.codec.startsWith(`ac-3`)||e.decoderConfig.codec.startsWith(`ac3`)){if(e.decoderConfig.codec!==`ac-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for AC-3 must be "ac-3".`)}else if(e.decoderConfig.codec.startsWith(`ec-3`)||e.decoderConfig.codec.startsWith(`eac3`)){if(e.decoderConfig.codec!==`ec-3`)throw TypeError(`Audio chunk metadata decoder configuration codec string for EC-3 must be "ec-3".`)}else if(e.decoderConfig.codec.startsWith(`dts`)){if(!Ko.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for DTS must be one of the following four-character codes: ${Ko.join(`, `)}.`)}else if(e.decoderConfig.codec.startsWith(`mlpa`)){if(e.decoderConfig.codec!==`mlpa`)throw TypeError(`Audio chunk metadata decoder configuration codec string for TrueHD must be "mlpa".`)}else if((e.decoderConfig.codec.startsWith(`pcm`)||e.decoderConfig.codec.startsWith(`ulaw`)||e.decoderConfig.codec.startsWith(`alaw`))&&!Io.includes(e.decoderConfig.codec))throw TypeError(`Audio chunk metadata decoder configuration codec string for PCM must be one of the supported PCM codecs (${Io.join(`, `)}).`);if(t!==null&&rs(e.decoderConfig.codec)!==t)throw TypeError(`Audio chunk metadata decoder configuration codec string '${e.decoderConfig.codec}' does not fit to the track codec '${t}'.`)},ps=e=>{if(!e)throw TypeError(`Subtitle metadata must be provided.`);if(typeof e!=`object`)throw TypeError(`Subtitle metadata must be an object.`);if(!e.config)throw TypeError(`Subtitle metadata must include a config object.`);if(typeof e.config!=`object`)throw TypeError(`Subtitle metadata config must be an object.`);if(typeof e.config.description!=`string`)throw TypeError(`Subtitle metadata config description must be a string.`)},ms=class{constructor(e){this.mutex=new Qn,this.trackTimestampInfo=new WeakMap,this.output=e}onTrackClose(e){}validateTimestamp(e,t,n){let r=this.trackTimestampInfo.get(e);if(r){if(n&&(r.maxTimestampBeforeLastKeyPacket=r.maxTimestamp),r.maxTimestampBeforeLastKeyPacket!==null&&t<r.maxTimestampBeforeLastKeyPacket)throw Error(`Timestamps cannot be smaller than the largest timestamp of the previous GOP (a GOP begins with a key packet and ends right before the next key packet). Got ${t}s, but largest timestamp is ${r.maxTimestampBeforeLastKeyPacket}s.`);r.maxTimestamp=Math.max(r.maxTimestamp,t)}else{if(!n)throw Error(`First packet must be a key packet.`);r={maxTimestamp:t,maxTimestampBeforeLastKeyPacket:null},this.trackTimestampInfo.set(e,r)}}},hs=class{constructor(e){this.writer=e,this.helper=new Uint8Array(8),this.helperView=new DataView(this.helper.buffer),this.offsets=new WeakMap}writeU32(e){this.helperView.setUint32(0,e,!1),this.writer.write(this.helper.subarray(0,4))}writeU64(e){this.helperView.setUint32(0,Math.floor(e/2**32),!1),this.helperView.setUint32(4,e,!1),this.writer.write(this.helper.subarray(0,8))}writeAscii(e){for(let t=0;t<e.length;t++)this.helperView.setUint8(t%8,e.charCodeAt(t)),t%8==7&&this.writer.write(this.helper);e.length%8!=0&&this.writer.write(this.helper.subarray(0,e.length%8))}writeBox(e){if(this.offsets.set(e,this.writer.getPos()),e.contents&&!e.children)this.writeBoxHeader(e,e.size??e.contents.byteLength+8),this.writer.write(e.contents);else{let t=this.writer.getPos();if(this.writeBoxHeader(e,0),e.contents&&this.writer.write(e.contents),e.children)for(let t of e.children)t&&this.writeBox(t);let n=this.writer.getPos(),r=e.size??n-t;this.writer.seek(t),this.writeBoxHeader(e,r),this.writer.seek(n)}}writeBoxHeader(e,t){this.writeU32(e.largeSize?1:t),this.writeAscii(e.type),e.largeSize&&this.writeU64(t)}measureBoxHeader(e){return 8+(e.largeSize?8:0)}patchBox(e){let t=this.offsets.get(e);F(t!==void 0);let n=this.writer.getPos();this.writer.seek(t),this.writeBox(e),this.writer.seek(n)}measureBox(e){if(e.contents&&!e.children)return this.measureBoxHeader(e)+e.contents.byteLength;{let t=this.measureBoxHeader(e);if(e.contents&&(t+=e.contents.byteLength),e.children)for(let n of e.children)n&&(t+=this.measureBox(n));return t}}},B=new Uint8Array(8),gs=new DataView(B.buffer),_s=e=>[(e%256+256)%256],V=e=>(gs.setUint16(0,e,!1),[B[0],B[1]]),vs=e=>(gs.setInt16(0,e,!1),[B[0],B[1]]),ys=e=>(gs.setUint32(0,e,!1),[B[1],B[2],B[3]]),H=e=>(gs.setUint32(0,e,!1),[B[0],B[1],B[2],B[3]]),bs=e=>(gs.setInt32(0,e,!1),[B[0],B[1],B[2],B[3]]),xs=e=>(gs.setUint32(0,Math.floor(e/2**32),!1),gs.setUint32(4,e,!1),[B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7]]),Ss=e=>(gs.setInt32(0,Math.floor(e/2**32),!1),gs.setUint32(4,e,!1),[B[0],B[1],B[2],B[3],B[4],B[5],B[6],B[7]]),Cs=e=>(gs.setInt16(0,256*e,!1),[B[0],B[1]]),ws=e=>(gs.setInt32(0,2**16*e,!1),[B[0],B[1],B[2],B[3]]),Ts=e=>(gs.setInt32(0,2**30*e,!1),[B[0],B[1],B[2],B[3]]),Es=(e,t)=>{let n=[],r=e;do{let e=r&127;r>>=7,n.length>0&&(e|=128),n.push(e),t!==void 0&&t--}while(r>0||t);return n.reverse()},U=(e,t=!1)=>{let n=Array(e.length).fill(null).map((t,n)=>e.charCodeAt(n));return t&&n.push(0),n},Ds=e=>[ws(e[0]),ws(e[1]),Ts(e[2]),ws(e[3]),ws(e[4]),Ts(e[5]),ws(e[6]),ws(e[7]),Ts(e[8])],W=(e,t,n)=>({type:e,contents:t&&new Uint8Array(t.flat(10)),children:n}),G=(e,t,n,r,i)=>W(e,[_s(t),ys(n),r??[]],i),Os=e=>e.isQuickTime?W(`ftyp`,[U(`qt `),H(512),U(`qt `)]):e.fragmented?e.cmaf?W(`ftyp`,[U(`iso5`),H(512),U(`iso5`),U(`iso6`),U(`mp41`),U(`cmfc`),U(`dash`)]):W(`ftyp`,[U(`iso5`),H(512),U(`iso5`),U(`iso6`),U(`mp41`)]):W(`ftyp`,[U(`isom`),H(512),U(`isom`),e.holdsAvc?U(`avc1`):[],U(`mp41`)]),ks=()=>W(`styp`,[U(`iso5`),H(0),U(`iso5`),U(`iso6`),U(`mp41`),U(`cmfc`),U(`dash`)]),As=(e,t)=>{let n=Math.max(0,e.minWrittenTimestamp),r=Math.max(0,e.maxWrittenEndTimestamp-n);return Number.isFinite(r)||(r=0),G(`sidx`,1,0,[H(1),H(ul),xs(K(n,ul)),xs(0),V(0),V(1),H(t&2147483647),H(K(r,ul)),H(0)])},js=e=>({type:`mdat`,largeSize:e}),Ms=e=>({type:`free`,size:e}),Ns=e=>W(`moov`,void 0,[Ps(e.creationTime,e.trackDatas),...e.trackDatas.map(t=>Fs(t,e.creationTime)),e.isFragmented?Ec(e.trackDatas):null,Vc(e)]),Ps=(e,t)=>{let n=Math.max(0,...t.map(e=>Math.max(0,K(pl(e),ul)+K(e.startTimestampOffset??0,ul)))),r=Math.max(0,...t.map(e=>e.track.id))+1,i=!zn(e)||!zn(n),a=i?xs:H;return G(`mvhd`,+i,0,[a(e),a(e),H(ul),a(n),ws(1),Cs(1),Array(10).fill(0),Ds(kn),Array(24).fill(0),H(r)])},Fs=(e,t)=>{let n=fl(e),r=e.startTimestampOffset!==null&&e.startTimestampOffset!==0;return W(`trak`,void 0,[Is(e,t),r?Ls(e):null,Rs(e,t),n.name===void 0?null:W(`udta`,void 0,[W(`name`,[...Kn.encode(n.name)])])])},Is=(e,t)=>{let n=Math.max(0,K(pl(e),ul)+K(e.startTimestampOffset??0,ul)),r=!zn(t)||!zn(n),i=r?xs:H,a;if(e.type===`video`&&e.track.metadata.transformationMatrix)a=e.track.metadata.transformationMatrix;else if(e.type===`video`){let{rotation:t,flip:n}=e.track.metadata;a=An(In(Nn(t??0),Fn(n?-1:1,1)),e.info.width,e.info.height)}else a=kn;let o=2;e.track.metadata.disposition?.default!==!1&&(o|=1);let s=e.type===`video`?0:e.type===`audio`?1:e.type===`subtitle`?2:rr(e);return G(`tkhd`,+r,o,[i(t),i(t),H(e.track.id),H(0),i(n),Array(8).fill(0),V(0),V(s),Cs(+(e.type===`audio`)),V(0),Ds(a),ws(e.type===`video`?e.info.width:0),ws(e.type===`video`?e.info.height:0)])},Ls=e=>{let t=e.startTimestampOffset;if(F(t!==null),t>0){let n=K(t,ul),r=K(pl(e),ul),i=!zn(n)||!zn(r),a=i?xs:H,o=i?Ss:bs;return W(`edts`,void 0,[G(`elst`,+!!i,0,[H(2),a(n),o(-1),ws(1),a(r),o(0),ws(1)])])}{let n=K(-t,e.timescale),r=Math.max(0,K(pl(e),ul)+K(t,ul)),i=!Bn(n)||!zn(r),a=i?xs:H,o=i?Ss:bs;return W(`edts`,void 0,[G(`elst`,+!!i,0,[H(1),a(r),o(n),ws(1)])])}},Rs=(e,t)=>W(`mdia`,void 0,[zs(e,t),Hs(!0,Bs[e.type],Vs[e.type]),Us(e)]),zs=(e,t)=>{let n=K(pl(e),e.timescale),r=!zn(t)||!zn(n),i=r?xs:H;return G(`mdhd`,+r,0,[i(t),i(t),H(e.timescale),i(n),V(nl(e.track.metadata.languageCode??`und`)),V(0)])},Bs={video:`vide`,audio:`soun`,subtitle:`text`},Vs={video:`MediabunnyVideoHandler`,audio:`MediabunnySoundHandler`,subtitle:`MediabunnyTextHandler`},Hs=(e,t,n,r=`\0\0\0\0`)=>G(`hdlr`,0,0,[e?U(`mhlr`):H(0),U(t),U(r),H(0),H(0),U(n,!0)]),Us=e=>W(`minf`,void 0,[Ws[e.type](),Gs(),Js(e)]),Ws={video:()=>G(`vmhd`,0,1,[V(0),V(0),V(0),V(0)]),audio:()=>G(`smhd`,0,0,[V(0),V(0)]),subtitle:()=>G(`nmhd`,0,0)},Gs=()=>W(`dinf`,void 0,[Ks()]),Ks=()=>G(`dref`,0,0,[H(1)],[qs()]),qs=()=>G(`url `,0,1),Js=e=>{let t=e.compositionTimeOffsetTable.length>1||e.compositionTimeOffsetTable.some(e=>e.sampleCompositionTimeOffset!==0);return W(`stbl`,void 0,[Ys(e),vc(e),t?Cc(e):null,t?wc(e):null,bc(e),xc(e),Sc(e),yc(e),...Tc(e.samples,!1)])},Ys=e=>{let t;if(e.type===`video`)t=Xs(Xc(e.track.source._codec,e.info.decoderConfig.codec),e);else if(e.type===`audio`){let n=Qc(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime);F(n),t=ic(n,e)}else e.type===`subtitle`&&(t=gc(el[e.track.source._codec],e));return F(t),G(`stsd`,0,0,[H(1)],[t])},Xs=(e,t)=>W(e,[[,,,,,,].fill(0),V(1),V(0),V(0),Array(12).fill(0),V(t.info.width),V(t.info.height),H(4718592),H(4718592),H(0),V(1),_s(oi.length),U(oi),Array(31-oi.length).fill(0),V(t.info.hasAlphaChannel?32:24),vs(65535)],[Zc[t.track.source._codec]?.(t)??null,Qs(t),Xn(t.info.decoderConfig.colorSpace)?null:$s(t),Zs(t)]),Zs=e=>e.avgBitrate===0&&e.maxBitrate===0?null:W(`btrt`,[H(0),H(e.maxBitrate),H(e.avgBitrate)]),Qs=e=>e.info.pixelAspectRatio.num===e.info.pixelAspectRatio.den?null:W(`pasp`,[H(e.info.pixelAspectRatio.num),H(e.info.pixelAspectRatio.den)]),$s=e=>{let t=e.info.decoderConfig.colorSpace;return W(`colr`,[U(e.muxer.isQuickTime?`nclc`:`nclx`),V(t?.primaries==null?2:qn[t.primaries]),V(t?.transfer==null?2:Jn[t.transfer]),V(t?.matrix==null?2:Yn[t.matrix]),e.muxer.isQuickTime?[]:_s(!!t?.fullRange<<7)])},ec=e=>e.info.decoderConfig&&W(`avcC`,[...Un(e.info.decoderConfig.description)]),tc=e=>e.info.decoderConfig&&W(`hvcC`,[...Un(e.info.decoderConfig.description)]),nc=e=>{if(!e.info.decoderConfig)return null;let t=e.info.decoderConfig,n=t.codec.split(`.`),r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?Number(n[4]):1,s=n[8]?Number(n[8]):Number(t.colorSpace?.fullRange??0),c=(a<<4)+(o<<1)+s,l=n[5]?Number(n[5]):t.colorSpace?.primaries?qn[t.colorSpace.primaries]:1,u=n[6]?Number(n[6]):t.colorSpace?.transfer?Jn[t.colorSpace.transfer]:1,d=n[7]?Number(n[7]):t.colorSpace?.matrix?Yn[t.colorSpace.matrix]:1;return G(`vpcC`,1,0,[_s(r),_s(i),_s(c),_s(l),_s(u),_s(d),V(0)])},rc=e=>W(`av1C`,Xo(e.info.decoderConfig.codec)),ic=(e,t)=>{let n=0,r,i=16,a=Io.includes(t.track.source._codec);if(a){let e=t.track.source._codec,{sampleSize:r}=ns(e);i=8*r,i>16&&(n=1)}if(t.muxer.isQuickTime&&t.track.source._codec!==`truehd`&&(n=1),n===0)r=[[,,,,,,].fill(0),V(1),V(n),V(0),H(0),V(t.info.numberOfChannels),V(i),V(0),V(0),t.track.source._codec===`truehd`?H(t.info.sampleRate):[V(t.info.sampleRate<2**16?t.info.sampleRate:0),V(0)]];else{let e=a?0:-2;r=[[,,,,,,].fill(0),V(1),V(n),V(0),H(0),V(t.info.numberOfChannels),V(Math.min(i,16)),vs(e),V(0),V(t.info.sampleRate<2**16?t.info.sampleRate:0),V(0),a?[H(1),H(i/8),H(t.info.numberOfChannels*i/8)]:[H(0),H(0),H(0)],H(2)]}return W(e,r,[$c(t.track.source._codec,t.muxer.isQuickTime)?.(t)??null,Zs(t)])},ac=e=>{let t;switch(e.track.source._codec){case`aac`:t=64;break;case`mp3`:t=107;break;case`vorbis`:t=221;break;default:throw Error(`Unhandled audio codec: ${e.track.source._codec}`)}let n=[..._s(t),..._s(21),...ys(0),...H(e.maxBitrate),...H(e.avgBitrate)];if(e.info.decoderConfig.description){let t=Un(e.info.decoderConfig.description);n=[...n,..._s(5),...Es(t.byteLength),...t]}return n=[...V(1),..._s(0),..._s(4),...Es(n.length),...n,..._s(6),..._s(1),..._s(2)],n=[..._s(3),...Es(n.length),...n],G(`esds`,0,0,n)},oc=e=>W(`wave`,void 0,[sc(e),cc(e),W(`\0\0\0\0`)]),sc=e=>W(`frma`,[U(Qc(e.track.source._codec,e.info.decoderConfig.codec,e.muxer.isQuickTime))]),cc=e=>{let{littleEndian:t}=ns(e.track.source._codec);return W(`enda`,[V(+t)])},lc=e=>{let t=e.info.numberOfChannels,n=312,r=e.info.sampleRate,i=0,a=0,o=new Uint8Array,s=e.info.decoderConfig?.description;if(s){F(s.byteLength>=18);let e=zi(Un(s));t=e.outputChannelCount,n=e.preSkip,r=e.inputSampleRate,i=e.outputGain,a=e.channelMappingFamily,e.channelMappingTable&&(o=e.channelMappingTable)}return W(`dOps`,[_s(0),_s(t),V(n),H(r),vs(i),_s(a),...o])},uc=e=>{let t=e.info.decoderConfig?.description;return F(t),G(`dfLa`,0,0,[...Un(t).subarray(4)])},dc=e=>{let{littleEndian:t,sampleSize:n}=ns(e.track.source._codec);return G(`pcmC`,0,0,[_s(+t),_s(8*n)])},fc=e=>{F(e.info.primingPacket);let t=Gi(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract AC-3 frame info from the audio packet. Ensure the packets contain valid AC-3 sync frames (as specified in ETSI TS 102 366).`);let n=new Uint8Array(3),r=new qr(n);return r.writeBits(2,t.fscod),r.writeBits(5,t.bsid),r.writeBits(3,t.bsmod),r.writeBits(3,t.acmod),r.writeBits(1,t.lfeon),r.writeBits(5,t.bitRateCode),r.writeBits(5,0),W(`dac3`,[...n])},pc=e=>{F(e.info.primingPacket);let t=qi(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract E-AC-3 frame info from the audio packet. Ensure the packets contain valid E-AC-3 sync frames (as specified in ETSI TS 102 366).`);let n=16;for(let e of t.substreams)n+=23,e.numDepSub>0?n+=9:n+=1;let r=Math.ceil(n/8),i=new Uint8Array(r),a=new qr(i);a.writeBits(13,t.dataRate),a.writeBits(3,t.substreams.length-1);for(let e of t.substreams)a.writeBits(2,e.fscod),a.writeBits(5,e.bsid),a.writeBits(1,0),a.writeBits(1,0),a.writeBits(3,e.bsmod),a.writeBits(3,e.acmod),a.writeBits(1,e.lfeon),a.writeBits(3,0),a.writeBits(4,e.numDepSub),e.numDepSub>0?a.writeBits(9,e.chanLoc):a.writeBits(1,0);return W(`dec3`,[...i])},mc=e=>{F(e.info.primingPacket);let t=ia(e.info.primingPacket.data);if(!t)throw Error(`Couldn't extract DTS frame info from the audio packet. Ensure the packets contain valid DTS frames as specified in ETSI TS 102 114.`);return W(`ddts`,[...oa(t)])},hc=e=>{F(e.info.primingPacket);let t=e.info.primingPacket.data;if(Ui(`truehd`,t)!==`key`)throw Error(`Couldn't extract TrueHD stream info from the audio packet. Ensure the first packet is an access unit carrying a major sync.`);let n=Wn(t),r=n.getUint32(8),i=n.getUint16(18)&32767;return W(`dmlp`,[H(r),V(i<<1),H(0)])},gc=(e,t)=>W(e,[[,,,,,,].fill(0),V(1)],[tl[t.track.source._codec](t),Zs(t)]),_c=e=>W(`vttC`,[...Kn.encode(e.info.config.description)]),vc=e=>G(`stts`,0,0,[H(e.timeToSampleTable.length),e.timeToSampleTable.map(e=>[H(e.sampleCount),H(e.sampleDelta)])]),yc=e=>{if(e.samples.every(e=>e.type===`key`))return null;let t=[...e.samples.entries()].filter(([,e])=>e.type===`key`);return G(`stss`,0,0,[H(t.length),t.map(([e])=>H(e+1))])},bc=e=>G(`stsc`,0,0,[H(e.compactlyCodedChunkTable.length),e.compactlyCodedChunkTable.map(e=>[H(e.firstChunk),H(e.samplesPerChunk),H(1)])]),xc=e=>{if(e.type===`audio`&&e.info.requiresPcmTransformation){let{sampleSize:t}=ns(e.track.source._codec);return G(`stsz`,0,0,[H(t*e.info.numberOfChannels),H(e.samples.reduce((t,n)=>t+K(n.duration,e.timescale),0))])}return G(`stsz`,0,0,[H(0),H(e.samples.length),e.samples.map(e=>H(e.size))])},Sc=e=>e.finalizedChunks.length>0&&Rn(e.finalizedChunks).offset>=2**32?G(`co64`,0,0,[H(e.finalizedChunks.length),e.finalizedChunks.map(e=>xs(e.offset))]):G(`stco`,0,0,[H(e.finalizedChunks.length),e.finalizedChunks.map(e=>H(e.offset))]),Cc=e=>G(`ctts`,1,0,[H(e.compositionTimeOffsetTable.length),e.compositionTimeOffsetTable.map(e=>[H(e.sampleCount),bs(e.sampleCompositionTimeOffset)])]),wc=e=>{if(F(e.compositionTimeOffsetTable.length>0),e.samples.length===0)return null;let t=1/0,n=-1/0,r=1/0,i=-1/0;for(let r=0;r<e.compositionTimeOffsetTable.length;r++){let i=e.compositionTimeOffsetTable[r];t=Math.min(t,i.sampleCompositionTimeOffset),n=Math.max(n,i.sampleCompositionTimeOffset)}for(let t=0;t<e.samples.length;t++){let n=e.samples[t];r=Math.min(r,K(n.timestamp,e.timescale)),i=Math.max(i,K(n.timestamp+n.duration,e.timescale))}let a=Math.max(-t,0);return i>=2**31?null:G(`cslg`,0,0,[bs(a),bs(t),bs(n),bs(r),bs(i)])},Tc=(e,t)=>{let n=[];for(let t of e)if(n.length===0)n.push({sampleCount:1,prerollSamples:t.prerollSamples});else{let e=n[n.length-1];e.prerollSamples===t.prerollSamples?e.sampleCount++:n.push({sampleCount:1,prerollSamples:t.prerollSamples})}let r=n.filter(e=>e.prerollSamples!==0);if(r.length===0)return[];let i=t?65537:1;return[G(`sgpd`,1,0,[U(`roll`),H(2),H(r.length),...r.map(e=>vs(e.prerollSamples))]),G(`sbgp`,0,0,[U(`roll`),H(n.length),...n.map(e=>[H(e.sampleCount),H(e.prerollSamples===0?0:i++)])])]},Ec=e=>W(`mvex`,void 0,e.map(Dc)),Dc=e=>G(`trex`,0,0,[H(e.track.id),H(1),H(0),H(0),H(0)]),Oc=(e,t)=>W(`moof`,void 0,[kc(e),...t.map(jc)]),kc=e=>G(`mfhd`,0,0,[H(e)]),Ac=e=>{let t=0,n=0,r=e.type===`delta`;return n|=+r,t|=r?1:2,t<<24|n<<16},jc=e=>W(`traf`,void 0,[Mc(e),Nc(e),Pc(e),...Tc(e.currentChunk.samples,!0)]),Mc=e=>{F(e.currentChunk);let t=0;t|=8,t|=16,t|=32,t|=131072;let n=e.currentChunk.samples[1]??e.currentChunk.samples[0],r={duration:n.timescaleUnitsToNextSample,size:n.size,flags:Ac(n)};return G(`tfhd`,0,t,[H(e.track.id),H(r.duration),H(r.size),H(r.flags)])},Nc=e=>(F(e.currentChunk),G(`tfdt`,1,0,[xs(K(e.currentChunk.startTimestamp,e.timescale))])),Pc=e=>{F(e.currentChunk);let t=e.currentChunk.samples.map(e=>e.timescaleUnitsToNextSample),n=e.currentChunk.samples.map(e=>e.size),r=e.currentChunk.samples.map(Ac),i=e.currentChunk.samples.map(t=>K(t.timestamp-t.decodeTimestamp,e.timescale)),a=new Set(t),o=new Set(n),s=new Set(r),c=new Set(i),l=s.size===2&&r[0]!==r[1],u=a.size>1,d=o.size>1,f=!l&&s.size>1,p=c.size>1||[...c].some(e=>e!==0),m=0;return m|=1,m|=4*l,m|=256*u,m|=512*d,m|=1024*f,m|=2048*p,G(`trun`,1,m,[H(e.currentChunk.samples.length),H(e.currentChunk.offset-e.currentChunk.moofOffset||0),l?H(r[0]):[],e.currentChunk.samples.map((e,a)=>[u?H(t[a]):[],d?H(n[a]):[],f?H(r[a]):[],p?bs(i[a]):[]])])},Fc=e=>W(`mfra`,void 0,[...e.map(Ic),Lc()]),Ic=e=>{let t=[];for(let n of e.finalizedChunks){let r=n.samples.findIndex(e=>e.type===`key`);if(r===-1)continue;let i=n.samples[r];t.push([xs(K(i.timestamp,e.timescale)),xs(n.moofOffset),H(n.trafIndex+1),H(1),H(r+1)])}return G(`tfra`,1,0,[H(e.track.id),H(63),H(t.length),t])},Lc=()=>G(`mfro`,0,0,[H(0)]),Rc=()=>W(`vtte`),zc=(e,t,n,r,i)=>W(`vttc`,void 0,[i===null?null:W(`vsid`,[bs(i)]),n===null?null:W(`iden`,[...Kn.encode(n)]),t===null?null:W(`ctim`,[...Kn.encode(ua(t))]),r===null?null:W(`sttg`,[...Kn.encode(r)]),W(`payl`,[...Kn.encode(e)])]),Bc=e=>W(`vtta`,[...Kn.encode(e)]),Vc=e=>{let t=[],n=e.format._options.metadataFormat??`auto`,r=e.output._metadataTags;if(n===`mdir`||n===`auto`&&!e.isQuickTime){let e=qc(r);e&&t.push(e)}else if(n===`mdta`){let e=Jc(r);e&&t.push(e)}else(n===`udta`||n===`auto`&&e.isQuickTime)&&Hc(t,e.output._metadataTags);return t.length===0?null:W(`udta`,void 0,t)},Hc=(e,t)=>{for(let{key:n,value:r}of kr(t))switch(n){case`title`:e.push(Uc(`©nam`,r));break;case`description`:e.push(Uc(`©des`,r));break;case`artist`:e.push(Uc(`©ART`,r));break;case`album`:e.push(Uc(`©alb`,r));break;case`albumArtist`:e.push(Uc(`albr`,r));break;case`genre`:e.push(Uc(`©gen`,r));break;case`date`:e.push(Uc(`©day`,r.toISOString().slice(0,10)));break;case`comment`:e.push(Uc(`©cmt`,r));break;case`lyrics`:e.push(Uc(`©lyr`,r));break;case`raw`:break;case`creationTime`:break;case`discNumber`:case`discsTotal`:case`trackNumber`:case`tracksTotal`:case`beatsPerMinute`:case`images`:break;default:rr(n)}if(t.raw)for(let n in t.raw){let r=t.raw[n];r==null||n.length!==4||e.some(e=>e.type===n)||(typeof r==`string`?e.push(Uc(n,r)):r instanceof Uint8Array&&e.push(W(n,Array.from(r))))}},Uc=(e,t)=>{let n=Kn.encode(t);return W(e,[V(n.length),V(nl(`und`)),Array.from(n)])},Wc={"image/jpeg":13,"image/png":14,"image/bmp":27},Gc=new Set([`HMMT`,`loci`,`chpl`]),Kc=(e,t)=>{let n=[];for(let{key:r,value:i}of kr(e))switch(r){case`title`:n.push({key:t?`title`:`©nam`,value:Yc(i)});break;case`description`:n.push({key:t?`description`:`©des`,value:Yc(i)});break;case`artist`:n.push({key:t?`artist`:`©ART`,value:Yc(i)});break;case`album`:n.push({key:t?`album`:`©alb`,value:Yc(i)});break;case`albumArtist`:n.push({key:t?`album_artist`:`aART`,value:Yc(i)});break;case`comment`:n.push({key:t?`comment`:`©cmt`,value:Yc(i)});break;case`genre`:n.push({key:t?`genre`:`©gen`,value:Yc(i)});break;case`beatsPerMinute`:t||n.push({key:`tmpo`,value:W(`data`,[H(21),H(0),V(i)])});break;case`lyrics`:n.push({key:t?`lyrics`:`©lyr`,value:Yc(i)});break;case`date`:n.push({key:t?`date`:`©day`,value:Yc(i.toISOString().slice(0,10))});break;case`images`:for(let e of i)e.kind===`coverFront`&&n.push({key:`covr`,value:W(`data`,[H(Wc[e.mimeType]??0),H(0),Array.from(e.data)])});break;case`trackNumber`:if(t){let t=e.tracksTotal===void 0?i.toString():`${i}/${e.tracksTotal}`;n.push({key:`track`,value:Yc(t)})}else n.push({key:`trkn`,value:W(`data`,[H(0),H(0),V(0),V(i),V(e.tracksTotal??0),V(0)])});break;case`discNumber`:t||n.push({key:`disc`,value:W(`data`,[H(0),H(0),V(0),V(i),V(e.discsTotal??0),V(0)])});break;case`tracksTotal`:case`discsTotal`:break;case`raw`:break;case`creationTime`:break;default:rr(r)}if(e.raw)for(let r in e.raw){let i=e.raw[r];i==null||!t&&(r.length!==4||Gc.has(r))||n.some(e=>e.key===r)||(typeof i==`string`?n.push({key:r,value:Yc(i)}):i instanceof Uint8Array?n.push({key:r,value:W(`data`,[H(0),H(0),Array.from(i)])}):i instanceof Ur&&n.push({key:r,value:W(`data`,[H(Wc[i.mimeType]??0),H(0),Array.from(i.data)])}))}return n},qc=e=>{let t=Kc(e,!1);return t.length===0?null:G(`meta`,0,0,void 0,[Hs(!1,`mdir`,``,`appl`),W(`ilst`,void 0,t.map(e=>W(e.key,void 0,[e.value])))])},Jc=e=>{let t=Kc(e,!0);return t.length===0?null:W(`meta`,void 0,[Hs(!1,`mdta`,``),G(`keys`,0,0,[H(t.length)],t.map(e=>W(`mdta`,[...Kn.encode(e.key)]))),W(`ilst`,void 0,t.map((e,t)=>W(String.fromCharCode(...H(t+1)),void 0,[e.value])))])},Yc=e=>W(`data`,[H(1),H(0),...Kn.encode(e)]),Xc=(e,t)=>{switch(e){case`avc`:return t.startsWith(`avc3`)?`avc3`:`avc1`;case`hevc`:return`hvc1`;case`vp8`:return`vp08`;case`vp9`:return`vp09`;case`av1`:return`av01`;case`prores`:return t}},Zc={avc:ec,hevc:tc,vp8:nc,vp9:nc,av1:rc,prores:null},Qc=(e,t,n)=>{switch(e){case`aac`:return`mp4a`;case`mp3`:return`mp4a`;case`opus`:return`Opus`;case`vorbis`:return`mp4a`;case`flac`:return`fLaC`;case`ulaw`:return`ulaw`;case`alaw`:return`alaw`;case`pcm-u8`:return`raw `;case`pcm-s8`:return`sowt`;case`ac3`:return`ac-3`;case`eac3`:return`ec-3`;case`dts`:return t;case`truehd`:return`mlpa`}if(n)switch(e){case`pcm-s16`:return`sowt`;case`pcm-s16be`:return`twos`;case`pcm-s24`:return`in24`;case`pcm-s24be`:return`in24`;case`pcm-s32`:return`in32`;case`pcm-s32be`:return`in32`;case`pcm-f32`:return`fl32`;case`pcm-f32be`:return`fl32`;case`pcm-f64`:return`fl64`;case`pcm-f64be`:return`fl64`}else switch(e){case`pcm-s16`:return`ipcm`;case`pcm-s16be`:return`ipcm`;case`pcm-s24`:return`ipcm`;case`pcm-s24be`:return`ipcm`;case`pcm-s32`:return`ipcm`;case`pcm-s32be`:return`ipcm`;case`pcm-f32`:return`fpcm`;case`pcm-f32be`:return`fpcm`;case`pcm-f64`:return`fpcm`;case`pcm-f64be`:return`fpcm`}},$c=(e,t)=>{switch(e){case`aac`:return ac;case`mp3`:return ac;case`opus`:return lc;case`vorbis`:return ac;case`flac`:return uc;case`ac3`:return fc;case`eac3`:return pc;case`dts`:return mc;case`truehd`:return hc}if(t)switch(e){case`pcm-s24`:return oc;case`pcm-s24be`:return oc;case`pcm-s32`:return oc;case`pcm-s32be`:return oc;case`pcm-f32`:return oc;case`pcm-f32be`:return oc;case`pcm-f64`:return oc;case`pcm-f64be`:return oc}else switch(e){case`pcm-s16`:return dc;case`pcm-s16be`:return dc;case`pcm-s24`:return dc;case`pcm-s24be`:return dc;case`pcm-s32`:return dc;case`pcm-s32be`:return dc;case`pcm-f32`:return dc;case`pcm-f32be`:return dc;case`pcm-f64`:return dc;case`pcm-f64be`:return dc}return null},el={webvtt:`wvtt`},tl={webvtt:_c},nl=e=>{F(e.length===3);let t=0;for(let n=0;n<3;n++)t<<=5,t+=e.charCodeAt(n)-96;return t},rl=class{constructor(e,t){if(this.finalized=!1,this.started=!1,this.pos=0,this.trackedWrites=null,this.trackedStart=-1,this.trackedEnd=-1,e._writerAcquired)throw Error(`Can't have multiple Writers for the same Target.`);this.target=e,e._setMonotonicity(t),e._writerAcquired=!0}start(){F(!this.started),this.target._start(),this.started=!0}write(e){F(this.started&&!this.finalized),this.maybeTrackWrites(e),this.target._write(e,this.pos),this.pos+=e.byteLength}seek(e){this.pos=e}getPos(){return this.pos}async flush(){return F(this.started&&!this.finalized),this.target._flush()}async finalize(){F(this.started&&!this.finalized),await this.target._finalize(),this.finalized=!0}maybeTrackWrites(e){if(!this.trackedWrites)return;let t=this.getPos();if(t<this.trackedStart){if(t+e.byteLength<=this.trackedStart)return;e=e.subarray(this.trackedStart-t),t=0}let n=t+e.byteLength-this.trackedStart,r=this.trackedWrites.byteLength;for(;r<n;)r*=2;if(r!==this.trackedWrites.byteLength){let e=new Uint8Array(r);e.set(this.trackedWrites,0),this.trackedWrites=e}this.trackedWrites.set(e,t-this.trackedStart),this.trackedEnd=Math.max(this.trackedEnd,t+e.byteLength)}startTrackingWrites(){this.trackedWrites=new Uint8Array(1024),this.trackedStart=this.getPos(),this.trackedEnd=this.trackedStart}stopTrackingWrites(){if(!this.trackedWrites)throw Error(`Internal error: Can't get tracked writes since nothing was tracked.`);let e={data:this.trackedWrites.subarray(0,this.trackedEnd-this.trackedStart),start:this.trackedStart,end:this.trackedEnd};return this.trackedWrites=null,e}};go();var il=class extends zr{constructor(){super(...arguments),this._writerAcquired=!1,this._monotonicity=null,this.onwrite=null}_setMonotonicity(e){this._monotonicity!==!1&&(this._monotonicity=e)}_dispatchWrite(e,t){this.onwrite?.(e,t),this._emit(`write`,{start:e,end:t})}slice(e){if(!Number.isInteger(e)||e<0)throw TypeError(`offset must be a non-negative integer.`);return new cl(this,e)}},al=2**16,ol=2**32,sl=class extends il{constructor(e={}){if(super(),this.buffer=null,this._maxPos=0,!e||typeof e!=`object`)throw TypeError(`BufferTarget options, when provided, must be an object.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);if(this._options=e,this._supportsResize=`resize`in new ArrayBuffer(0),this._supportsResize)try{this._buffer=new ArrayBuffer(al,{maxByteLength:ol})}catch{this._buffer=new ArrayBuffer(al),this._supportsResize=!1}else this._buffer=new ArrayBuffer(al);this._bytes=new Uint8Array(this._buffer)}_ensureSize(e){F(this._buffer),F(this._bytes);let t=this._buffer.byteLength;for(;t<e;)t*=2;if(t!==this._buffer.byteLength){if(t>ol)throw Error(`ArrayBuffer exceeded maximum size of ${ol} bytes. Please consider using another target.`);if(this._supportsResize)this._buffer.resize(t);else{let e=new ArrayBuffer(t),n=new Uint8Array(e);n.set(this._bytes,0),this._buffer=e,this._bytes=n}}}_start(){}_write(e,t){F(this._bytes),this._ensureSize(t+e.byteLength),this._bytes.set(e,t),this._maxPos=Math.max(this._maxPos,t+e.byteLength),this._dispatchWrite(t,t+e.byteLength)}async _flush(){}async _finalize(){F(this._buffer),this.buffer=`transferToFixedLength`in this._buffer?this._buffer.transferToFixedLength(this._maxPos):this._buffer.slice(0,this._maxPos),this._buffer=null,this._bytes=null,this._options.onFinalize&&await this._options.onFinalize(this.buffer),this._emit(`finalized`)}async _close(){}_getSlice(e,t){return F(this._bytes),this._bytes.slice(e,t)}},cl=class extends il{constructor(e,t){super(),this._baseTarget=e,this._offset=t}_start(){}_write(e,t){this._baseTarget._write(e,this._offset+t),this._dispatchWrite(t,t+e.byteLength)}_flush(){return this._baseTarget._flush()}async _finalize(){this._emit(`finalized`)}async _close(){}_setMonotonicity(e){super._setMonotonicity(e),this._baseTarget._setMonotonicity(e)}},ll=class{constructor(e,t){if(this.rootPath=e,this.getTarget=t,typeof e!=`string`)throw TypeError(`rootPath must be a string.`);if(typeof t!=`function`)throw TypeError(`getTarget must be a function.`)}},ul=57600,dl=.5,fl=e=>{let t={},n=e.track;return n.metadata.name!==void 0&&(t.name=n.metadata.name),t},K=(e,t,n=!0)=>{let r=e*t;return n?Math.round(r):r},pl=e=>{if(e.samples.length===0)return 0;let t=1/0,n=-1/0;for(let r=0;r<e.samples.length;r++){let i=e.samples[r];i.timestamp<t&&(t=i.timestamp),i.timestamp+i.duration>n&&(n=i.timestamp+i.duration)}return t===1/0?0:n-t},ml=class extends ms{constructor(e,t){super(e),this.writer=null,this.boxWriter=null,this.initWriter=null,this.initBoxWriter=null,this.auxTarget=new sl,this.auxWriter=new rl(this.auxTarget,!1),this.auxBoxWriter=new hs(this.auxWriter),this.mdat=null,this.ftypSize=null,this.trackDatas=[],this.allTracksKnown=nr(),this.finalizedChunks=[],this.wroteFragmentedHeader=!1,this.nextFragmentNumber=1,this.maxWrittenTimestamp=-1/0,this.minWrittenTimestamp=1/0,this.maxWrittenEndTimestamp=-1/0,this.segmentHeaderSize=null,this.format=t,this.formatOptions={...t._options},this.isQuickTime=t instanceof Tl,this.isCmaf=t instanceof wl,this.minimumFragmentDuration=this.formatOptions.minimumFragmentDuration??(t instanceof wl?1/0:1),this.auxWriter.start()}async start(){let e=await this.mutex.acquire(),t=this.output._metadataTags.creationTime===void 0?new Date:this.output._metadataTags.creationTime;if(this.creationTime=t?Math.floor(t.getTime()/1e3)+Qa:0,t&&this.creationTime<=0)throw Error(`creationTime must be after 1904-01-01T00:00:00Z for MP4/QuickTime files.`);if(this.isCmaf?(this.fastStart=`fragmented`,this.isFragmented=!0):(this.writer=await this.output._getRootWriter(e=>this.formatOptions.fastStart===void 0?e instanceof sl:this.formatOptions.fastStart===`fragmented`),this.boxWriter=new hs(this.writer),this.fastStart=this.formatOptions.fastStart??(this.writer.target instanceof sl&&`in-memory`),this.isFragmented=this.fastStart===`fragmented`),this.isCmaf){if(!this.output._hasInitTarget())throw Error(`CMAF outputs require the initTarget field in OutputOptions to be set; the init segment will be written to it.`);let e=new rl(await this.output._getInitTarget(),!0);e.start(),this.initWriter=e,this.initBoxWriter=new hs(e)}let n=this.output.tracks.some(e=>e.isVideoTrack()&&e.source._codec===`avc`);{let e=this.initBoxWriter??this.boxWriter;if(F(e),this.formatOptions.onFtyp&&e.writer.startTrackingWrites(),e.writeBox(Os({isQuickTime:this.isQuickTime,holdsAvc:n,fragmented:this.isFragmented,cmaf:this.isCmaf})),this.formatOptions.onFtyp){let{data:t,start:n}=e.writer.stopTrackingWrites();this.formatOptions.onFtyp(t,n)}this.ftypSize=e.writer.getPos(),this.isCmaf&&await this.initWriter.flush()}if(this.fastStart!==`in-memory`){if(this.fastStart===`reserve`)for(let e of this.output.tracks){if(e.metadata.maximumPacketCount===void 0)throw Error(`All tracks must specify maximumPacketCount in their metadata when using fastStart: 'reserve'.`);if(e.metadata.maximumPacketCount>2**32-1)throw Error(`Track #${e.id} has a maximumPacketCount of ${e.metadata.maximumPacketCount}, which exceeds the maximum of ${2**32-1} packets per track that a non-fragmented file can hold.`)}else this.isFragmented||(F(this.writer),F(this.boxWriter),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=js(!0),this.boxWriter.writeBox(this.mdat))}await this.writer?.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return $a({isQuickTime:this.isQuickTime,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;us(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig};F(i.codedWidth!==void 0),F(i.codedHeight!==void 0);let a=!1;if(e.source._codec===`avc`&&!i.description){if(!t)throw Error(`No AVC description provided; you must therefore provide a priming packet.`);let e=hi(t.data);if(!e)throw Error(`Couldn't extract an AVCDecoderConfigurationRecord from the AVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.264) when not providing a description, or provide a description (must be an AVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in AVCC format.`);i.description=gi(e),a=!0}else if(e.source._codec===`hevc`&&!i.description){if(!t)throw Error(`No HEVC description provided; you must therefore provide a priming packet.`);let e=wi(t.data);if(!e)throw Error(`Couldn't extract an HEVCDecoderConfigurationRecord from the HEVC packet. Make sure the packets are in Annex B format (as specified in ITU-T-REC-H.265) when not providing a description, or provide a description (must be an HEVCDecoderConfigurationRecord as specified in ISO 14496-15) and ensure the packets are in HEVC format.`);i.description=Mi(e),a=!0}let o=hr(1/(e.metadata.frameRate??57600),1e6).den,s=i.displayAspectWidth,c=i.displayAspectHeight,l=s===void 0||c===void 0?{num:1,den:1}:Fr({num:s*i.codedHeight,den:c*i.codedWidth}),u=i.codec===`ap4h`||i.codec===`ap4x`,d={muxer:this,track:e,type:`video`,info:{width:i.codedWidth,height:i.codedHeight,pixelAspectRatio:l,decoderConfig:i,requiresAnnexBTransformation:a,hasAlphaChannel:u},timescale:o,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(d),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),d}getAudioTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;fs(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig},a=!1;if(e.source._codec===`aac`&&!i.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=ho(_o.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Jr[e.samplingFrequencyIndex],r=Yr[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);i.description=ei({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),a=!0}if(!t){if(e.source._codec===`ac3`||e.source._codec===`eac3`)throw Error(`AC-3/E-AC-3 require a priming packet.`);if(e.source._codec===`dts`)throw Error(`DTS requires a priming packet.`);if(e.source._codec===`truehd`)throw Error(`TrueHD requires a priming packet.`)}let o={muxer:this,track:e,type:`audio`,info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:i,requiresPcmTransformation:!this.isFragmented&&Io.includes(e.source._codec),expectedNextPcmPacketTimestamp:null,requiresAdtsStripping:a,primingPacket:t,preroll:{packetCount:0,accumulatedAudioSamples:0,audioSampleDurationHistory:[]}},timescale:i.sampleRate,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0};return this.trackDatas.push(o),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),o}getSubtitleTrackData(e,t){let n=this.trackDatas.find(t=>t.track===e);if(n)return n;ps(t),F(t),F(t.config);let r={muxer:this,track:e,type:`subtitle`,info:{config:t.config},timescale:1e3,samples:[],sampleQueue:[],timestampProcessingQueue:[],timeToSampleTable:[],compositionTimeOffsetTable:[],lastTimescaleUnits:null,lastSample:null,startTimestampOffset:null,finalizedChunks:[],currentChunk:null,compactlyCodedChunkTable:[],closed:!1,avgBitrate:e.source._nominalBitrate??e.metadata.averageBitrate??0,maxBitrate:e.source._nominalBitrate??e.metadata.bitrate??0,lastCueEndTimestamp:null,cueQueue:[],nextSourceId:0,cueToSourceId:new WeakMap};return this.trackDatas.push(r),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),r}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n),i=t.data;if(r.info.requiresAnnexBTransformation){let e=[...li(i)].map(e=>i.subarray(e.offset,e.offset+e.length));if(e.length===0)throw Error(`Failed to transform packet data. Make sure all packets are provided in Annex B format, as specified in ITU-T-REC-H.264 and ITU-T-REC-H.265.`);i=mi(e,4)}this.validateTimestamp(r.track,t.timestamp,t.type===`key`);let a=this.createSampleForTrack(r,i,t.timestamp,t.duration,t.type,0);await this.registerSample(r,a)}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=ho(_o.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}this.validateTimestamp(r.track,t.timestamp,t.type===`key`);let a=t.timestamp,o=t.duration;if(r.info.requiresPcmTransformation){let e=ns(r.info.decoderConfig.codec).sampleSize*r.info.numberOfChannels;if(o=i.byteLength/e/r.info.sampleRate,r.info.expectedNextPcmPacketTimestamp!==null){let e=a-r.info.expectedNextPcmPacketTimestamp;if(e<.01)a=r.info.expectedNextPcmPacketTimestamp;else{let t=await this.padWithSilence(r,r.info.expectedNextPcmPacketTimestamp,e);a=r.info.expectedNextPcmPacketTimestamp+t}}r.info.expectedNextPcmPacketTimestamp=a+o}let{preroll:s}=r.info,c=0;if(e.source._codec===`aac`||e.source._codec===`vorbis`)c=-Math.min(1,s.packetCount);else if(e.source._codec===`mp3`)c=-Math.min(2,s.packetCount);else if(e.source._codec===`opus`){let e=Math.round(es*$o);c=-s.audioSampleDurationHistory.length;let t=Vi(i);for(s.accumulatedAudioSamples+=t.durationInSamples,s.audioSampleDurationHistory.push(t.durationInSamples);s.accumulatedAudioSamples-s.audioSampleDurationHistory[0]>=e;)s.accumulatedAudioSamples-=s.audioSampleDurationHistory.shift(),F(s.audioSampleDurationHistory.length>0)}s.packetCount++;let l=this.createSampleForTrack(r,i,a,o,t.type,c);await this.registerSample(r,l)}finally{r()}}async padWithSilence(e,t,n){let r=K(n,e.timescale);if(n=r/e.timescale,r>0){let{sampleSize:i,silentValue:a}=ns(e.info.decoderConfig.codec),o=r*e.info.numberOfChannels,s=new Uint8Array(i*o).fill(a),c=this.createSampleForTrack(e,new Uint8Array(s.buffer),t,n,`key`,0);await this.registerSample(e,c)}return n}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0),e.source._codec===`webvtt`&&(r.cueQueue.push(t),await this.processWebVTTCues(r,t.timestamp))}finally{r()}}async processWebVTTCues(e,t){for(;e.cueQueue.length>0;){e.lastCueEndTimestamp??=Math.min(0,e.cueQueue[0].timestamp);let n=new Set([]);for(let r of e.cueQueue)F(r.timestamp<=t),F(e.lastCueEndTimestamp<=r.timestamp+r.duration),n.add(Math.max(r.timestamp,e.lastCueEndTimestamp)),n.add(r.timestamp+r.duration);let r=[...n].sort((e,t)=>e-t),i=r[0],a=r[1]??i;if(t<a)break;if(e.lastCueEndTimestamp<i){this.auxWriter.seek(0);let t=Rc();this.auxBoxWriter.writeBox(t);let n=this.auxTarget._getSlice(0,this.auxWriter.getPos()),r=this.createSampleForTrack(e,n,e.lastCueEndTimestamp,i-e.lastCueEndTimestamp,`key`,0);await this.registerSample(e,r),e.lastCueEndTimestamp=i}this.auxWriter.seek(0);for(let t=0;t<e.cueQueue.length;t++){let n=e.cueQueue[t];if(n.timestamp>=a)break;sa.lastIndex=0;let r=sa.test(n.text),o=n.timestamp+n.duration,s=e.cueToSourceId.get(n);if(s===void 0&&a<o&&(s=e.nextSourceId++,e.cueToSourceId.set(n,s)),n.notes){let e=Bc(n.notes);this.auxBoxWriter.writeBox(e)}let c=zc(n.text,r?i:null,n.identifier??null,n.settings??null,s??null);this.auxBoxWriter.writeBox(c),o===a&&e.cueQueue.splice(t--,1)}let o=this.auxTarget._getSlice(0,this.auxWriter.getPos()),s=this.createSampleForTrack(e,o,i,a-i,`key`,0);await this.registerSample(e,s),e.lastCueEndTimestamp=a}}createSampleForTrack(e,t,n,r,i,a){return{timestamp:n,decodeTimestamp:n,duration:r,data:t,size:t.byteLength,type:i,timescaleUnitsToNextSample:K(r,e.timescale),prerollSamples:a}}processTimestamps(e,t){if(e.timestampProcessingQueue.length===0)return;if(e.type===`audio`&&e.info.requiresPcmTransformation){F(!this.isFragmented),e.startTimestampOffset??=e.timestampProcessingQueue[0].timestamp;let t=0;for(let n=0;n<e.timestampProcessingQueue.length;n++){let r=e.timestampProcessingQueue[n],i=K(r.duration,e.timescale);t+=i}if(e.timeToSampleTable.length===0)e.timeToSampleTable.push({sampleCount:t,sampleDelta:1});else{let n=Rn(e.timeToSampleTable);n.sampleCount+=t}e.timestampProcessingQueue.length=0;return}let n=e.timestampProcessingQueue.map(e=>e.timestamp).sort((e,t)=>e-t);this.isFragmented?e.startTimestampOffset??=Math.min(n[0],0):e.startTimestampOffset??=n[0];for(let t=0;t<e.timestampProcessingQueue.length;t++){let r=e.timestampProcessingQueue[t];r.decodeTimestamp=n[t];let i=K(r.timestamp-r.decodeTimestamp,e.timescale),a=K(r.duration,e.timescale);if(e.lastTimescaleUnits!==null){F(e.lastSample);let t=K(r.decodeTimestamp,e.timescale,!1),n=Math.round(t-e.lastTimescaleUnits);if(F(n>=0),e.lastTimescaleUnits+=n,e.lastSample.timescaleUnitsToNextSample=n,!this.isFragmented){let t=Rn(e.timeToSampleTable);if(F(t),t.sampleCount===1){t.sampleDelta=n;let r=e.timeToSampleTable[e.timeToSampleTable.length-2];r&&r.sampleDelta===n&&(r.sampleCount++,e.timeToSampleTable.pop(),t=r)}else t.sampleDelta!==n&&(t.sampleCount--,e.timeToSampleTable.push(t={sampleCount:1,sampleDelta:n}));t.sampleDelta===a?t.sampleCount++:e.timeToSampleTable.push({sampleCount:1,sampleDelta:a});let r=Rn(e.compositionTimeOffsetTable);F(r),r.sampleCompositionTimeOffset===i?r.sampleCount++:e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:i})}}else e.lastTimescaleUnits=K(r.decodeTimestamp,e.timescale,!1),this.isFragmented||(e.timeToSampleTable.push({sampleCount:1,sampleDelta:a}),e.compositionTimeOffsetTable.push({sampleCount:1,sampleCompositionTimeOffset:i}));e.lastSample=r}if(e.timestampProcessingQueue.length=0,F(e.lastSample),F(e.lastTimescaleUnits!==null),t!==void 0&&e.lastSample.timescaleUnitsToNextSample===0){F(t.type===`key`);let n=K(t.timestamp,e.timescale,!1),r=Math.round(n-e.lastTimescaleUnits);e.lastSample.timescaleUnitsToNextSample=r}}async registerSample(e,t){t.type===`key`&&this.processTimestamps(e,t),e.timestampProcessingQueue.push(t),e.sampleQueue.push(t),await this.interleaveSamples()}async addSampleToTrack(e,t){if(!this.isFragmented&&(e.samples.push(t),this.fastStart===`reserve`)){let t=e.track.metadata.maximumPacketCount;if(F(t!==void 0),e.samples.length>t)throw Error(`Track #${e.track.id} has already reached the maximum packet count (${t}). Either add less packets or increase the maximum packet count.`)}let n=!1;if(!e.currentChunk)n=!0;else{e.currentChunk.startTimestamp=Math.min(e.currentChunk.startTimestamp,t.timestamp);let r=t.timestamp-e.currentChunk.startTimestamp;if(this.isFragmented){let i=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.sampleQueue[0];return r?r.type===`key`:n.closed});r>=this.minimumFragmentDuration&&i&&t.timestamp>this.maxWrittenTimestamp&&(n=!0,await this.finalizeFragment())}else n=r>=dl}if(n){if(!this.isFragmented){let e=this.trackDatas.filter(e=>e.currentChunk&&t.timestamp-e.currentChunk.startTimestamp>=dl).sort((e,t)=>e.currentChunk.startTimestamp-t.currentChunk.startTimestamp);for(let t of e)await this.finalizeCurrentChunk(t)}e.currentChunk={startTimestamp:t.timestamp,samples:[],offset:null,moofOffset:null,trafIndex:null}}F(e.currentChunk),e.currentChunk.samples.push(t),this.isFragmented&&(this.maxWrittenTimestamp=Math.max(this.maxWrittenTimestamp,t.timestamp),this.maxWrittenEndTimestamp=Math.max(this.maxWrittenEndTimestamp,t.timestamp+t.duration),this.minWrittenTimestamp=Math.min(this.minWrittenTimestamp,t.timestamp))}async finalizeCurrentChunk(e){F(!this.isFragmented),F(this.writer);let t=e.currentChunk;F(t),e.currentChunk=null,e.finalizedChunks.push(t),this.finalizedChunks.push(t);let n=t.samples.length;if(e.type===`audio`&&e.info.requiresPcmTransformation&&(n=t.samples.reduce((t,n)=>t+K(n.duration,e.timescale),0)),(e.compactlyCodedChunkTable.length===0||Rn(e.compactlyCodedChunkTable).samplesPerChunk!==n)&&e.compactlyCodedChunkTable.push({firstChunk:e.finalizedChunks.length,samplesPerChunk:n}),this.fastStart===`in-memory`)t.offset=0;else{t.offset=this.writer.getPos();for(let e of t.samples)F(e.data),this.writer.write(e.data),e.data=null;await this.writer.flush()}}async interleaveSamples(e=!1){if(e||this.allTracksAreKnown()){this.fastStart===`reserve`&&!this.mdat&&await this.createFastStartReserveMdat();outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.sampleQueue.length===0&&!r.closed)break outer;r.sampleQueue.length>0&&r.sampleQueue[0].timestamp<n&&(t=r,n=r.sampleQueue[0].timestamp)}if(!t)break;let r=t.sampleQueue.shift();await this.addSampleToTrack(t,r)}}}async finalizeFragment(e=!this.isCmaf){if(F(this.isFragmented),!this.wroteFragmentedHeader){this.wroteFragmentedHeader=!0;let e=this.initBoxWriter??this.boxWriter;F(e),this.formatOptions.onMoov&&e.writer.startTrackingWrites(),this.ensureOneEnabledTrack();let t=Ns(this);if(e.writeBox(t),this.formatOptions.onMoov){let{data:t,start:n}=e.writer.stopTrackingWrites();this.formatOptions.onMoov(t,n)}if(this.isCmaf){F(this.initWriter),await this.initWriter.flush(),await this.initWriter.finalize(),this.writer=await this.output._getRootWriter(!0),this.boxWriter=new hs(this.writer);let e=this.boxWriter.measureBox(ks()),t=this.boxWriter.measureBox(As(this,0));this.segmentHeaderSize=e+t,this.writer.seek(this.segmentHeaderSize)}}F(this.writer),F(this.boxWriter);let t=this.trackDatas.filter(e=>e.currentChunk);if(t.length===0){e&&await this.writer.flush();return}let n=this.nextFragmentNumber++,r=Oc(n,t),i=this.writer.getPos(),a=i+this.boxWriter.measureBox(r),o=a+8,s=1/0;for(let e=0;e<t.length;e++){let n=t[e];F(n.currentChunk),F(n.startTimestampOffset!==null),n.currentChunk.offset=o,n.currentChunk.moofOffset=i,n.currentChunk.trafIndex=e,n.currentChunk.startTimestamp-=n.startTimestampOffset;for(let e of n.currentChunk.samples)o+=e.size,e.timestamp-=n.startTimestampOffset,e.decodeTimestamp-=n.startTimestampOffset;s=Math.min(s,n.currentChunk.startTimestamp)}let c=o-a,l=c>=2**32;if(l)for(let e of t)e.currentChunk.offset+=8;this.formatOptions.onMoof&&this.writer.startTrackingWrites();let u=Oc(n,t);if(this.boxWriter.writeBox(u),this.formatOptions.onMoof){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoof(e,t,s)}F(this.writer.getPos()===a),this.formatOptions.onMdat&&this.writer.startTrackingWrites();let d=js(l);d.size=c,this.boxWriter.writeBox(d),this.writer.seek(a+(l?16:8));for(let e of t)for(let t of e.currentChunk.samples)this.writer.write(t.data),t.data=null;if(this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}for(let e of t)e.finalizedChunks.push(e.currentChunk),this.finalizedChunks.push(e.currentChunk),e.currentChunk=null;e&&await this.writer.flush()}async createFastStartReserveMdat(){F(this.writer),F(this.boxWriter),this.ensureOneEnabledTrack();let e=Ns(this),t=this.boxWriter.measureBox(e)+this.computeSampleTableSizeUpperBound()+4096;F(this.ftypSize!==null),this.writer.seek(this.ftypSize+t),this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat=js(!0),this.boxWriter.writeBox(this.mdat)}computeSampleTableSizeUpperBound(){F(this.fastStart===`reserve`);let e=0;for(let t of this.trackDatas){let n=t.track.metadata.maximumPacketCount;F(n!==void 0),e+=8*Math.ceil(2/3*n),e+=4*n,e+=8*Math.ceil(2/3*n),e+=12*Math.ceil(2/3*n),e+=4*n,e+=8*n,t.type===`audio`&&(e+=2*n,e+=8*n)}return e}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0,n.type===`subtitle`&&e.source._codec===`webvtt`&&await this.processWebVTTCues(n,1/0),this.processTimestamps(n)),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveSamples(),t()}ensureOneEnabledTrack(){for(let e of[`video`,`audio`,`subtitle`]){let t=this.trackDatas.filter(t=>t.type===e);if(t.length!==0&&!t.some(e=>e.track.metadata.disposition?.default!==!1)){let e=t[0];e.track.metadata.disposition={...e.track.metadata.disposition,default:!0}}}}async forceFragmentFinalization(){F(this.isFragmented);let e=await this.mutex.acquire();try{for(let e of this.trackDatas)e.type===`subtitle`&&e.track.source._codec===`webvtt`&&await this.processWebVTTCues(e,1/0),this.processTimestamps(e);await this.interleaveSamples(!0),await this.finalizeFragment()}finally{e()}}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve(),this.ensureOneEnabledTrack();for(let e of this.trackDatas)e.closed=!0,e.type===`subtitle`&&e.track.source._codec===`webvtt`&&await this.processWebVTTCues(e,1/0),this.processTimestamps(e);if(await this.interleaveSamples(!0),this.isFragmented)await this.finalizeFragment(!1);else{let e=this.trackDatas.filter(e=>e.currentChunk).sort((e,t)=>e.currentChunk.startTimestamp-t.currentChunk.startTimestamp);for(let t of e)await this.finalizeCurrentChunk(t);for(let e of this.trackDatas){let t=pl(e);if(t>0){let n=0;for(let t of e.samples)n+=t.size;e.avgBitrate=Math.round(8*n/t)}else e.avgBitrate=0;let n=0,r=0,i=0;for(let t=0;t<e.samples.length;t++){let a=e.samples[t];for(r+=a.size;a.decodeTimestamp-e.samples[n].decodeTimestamp>=1;)r-=e.samples[n].size,n++;i=Math.max(i,r)}if(e.maxBitrate=8*i,e.startTimestampOffset!==null)for(let t=0;t<e.samples.length;t++){let n=e.samples[t];n.timestamp-=e.startTimestampOffset,n.decodeTimestamp-=e.startTimestampOffset}}}if(F(this.writer),F(this.boxWriter),this.fastStart===`in-memory`){this.mdat=js(!1);let e;for(let t=0;t<2;t++){let t=Ns(this),n=this.boxWriter.measureBox(t);e=this.boxWriter.measureBox(this.mdat);let r=this.writer.getPos()+n+e;for(let t of this.finalizedChunks){t.offset=r;for(let{data:n}of t.samples)F(n),r+=n.byteLength,e+=n.byteLength}if(r<2**32)break;e>=2**32&&(this.mdat.largeSize=!0)}this.formatOptions.onMoov&&this.writer.startTrackingWrites();let t=Ns(this);if(this.boxWriter.writeBox(t),this.formatOptions.onMoov){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(e,t)}this.formatOptions.onMdat&&this.writer.startTrackingWrites(),this.mdat.size=e,this.boxWriter.writeBox(this.mdat);for(let e of this.finalizedChunks)for(let t of e.samples)F(t.data),this.writer.write(t.data),t.data=null;if(this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}}else if(this.isFragmented){if(this.isCmaf){let e=this.segmentHeaderSize===null?0:this.writer.getPos()-this.segmentHeaderSize;this.writer.seek(0),this.boxWriter.writeBox(ks()),this.boxWriter.writeBox(As(this,e))}else{let e=this.writer.getPos(),t=Fc(this.trackDatas);this.boxWriter.writeBox(t);let n=this.writer.getPos()-e;this.writer.seek(this.writer.getPos()-4),this.boxWriter.writeU32(n)}}else{F(this.mdat);let e=this.boxWriter.offsets.get(this.mdat);F(e!==void 0);let t=this.writer.getPos()-e;if(this.mdat.size=t,this.mdat.largeSize=t>=2**32,this.boxWriter.patchBox(this.mdat),this.formatOptions.onMdat){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMdat(e,t)}let n=Ns(this);if(this.fastStart===`reserve`){F(this.ftypSize!==null);let e=this.boxWriter.offsets.get(this.mdat)-this.ftypSize,t=this.boxWriter.measureBox(n);if(t+8>e)throw Error(`The moov box (${t} bytes) plus a free box (8 bytes) exceed the space reserved for them (${e} bytes) with fastStart: 'reserve'. This is a bug; please report it.`);this.writer.seek(this.ftypSize),this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(n),this.boxWriter.writeBox(Ms(e-t))}else this.formatOptions.onMoov&&this.writer.startTrackingWrites(),this.boxWriter.writeBox(n);if(this.formatOptions.onMoov){let{data:e,start:t}=this.writer.stopTrackingWrites();this.formatOptions.onMoov(e,t)}}e()}},hl=-(2**15),gl=2**15-1,_l=6,vl=5,yl={video:1,audio:2,subtitle:17},bl=class extends ms{constructor(e,t){super(e),this.trackDatas=[],this.allTracksKnown=nr(),this.segment=null,this.segmentInfo=null,this.seekHead=null,this.tracksElement=null,this.tagsElement=null,this.attachmentsElement=null,this.segmentDuration=null,this.cues=null,this.currentClusterBlocks=[],this.currentClusterStartMsTimestamp=null,this.currentClusterMaxMsTimestamp=null,this.startTimestamp=1/0,this.endTimestamp=-1/0,this.warnedAboutTooNegativeTimestamp=!1,this.format=t}async start(){let e=await this.mutex.acquire();this.writer=await this.output._getRootWriter(!!this.format._options.appendOnly),this.ebmlWriter=new uo(this.writer),this.writeEBMLHeader(),this.createSegmentInfo(),this.createCues(),await this.writer.flush();for(let e of this.output.tracks)e.isVideoTrack()&&e.metadata.decoderConfig?this.getVideoTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig}):e.isAudioTrack()&&e.metadata.decoderConfig&&this.getAudioTrackData(e,e.metadata.primingPacket??null,{decoderConfig:e.metadata.decoderConfig});e()}writeEBMLHeader(){this.format._options.onEbmlHeader&&this.writer.startTrackingWrites();let e={id:R.EBML,data:[{id:R.EBMLVersion,data:1},{id:R.EBMLReadVersion,data:1},{id:R.EBMLMaxIDLength,data:4},{id:R.EBMLMaxSizeLength,data:8},{id:R.DocType,data:this.format instanceof Dl?`webm`:`matroska`},{id:R.DocTypeVersion,data:4},{id:R.DocTypeReadVersion,data:2}]};if(this.ebmlWriter.writeEBML(e),this.format._options.onEbmlHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onEbmlHeader(e,t)}}maybeCreateSeekHead(e){if(this.format._options.appendOnly)return;let t=new Uint8Array([28,83,187,107]),n=new Uint8Array([21,73,169,102]),r=new Uint8Array([22,84,174,107]),i=new Uint8Array([25,65,164,105]),a=new Uint8Array([18,84,195,103]),o={id:R.SeekHead,data:[{id:R.Seek,data:[{id:R.SeekID,data:n},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.segmentInfo)-this.segmentDataOffset:0}]},{id:R.Seek,data:[{id:R.SeekID,data:r},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tracksElement)-this.segmentDataOffset:0}]},this.attachmentsElement?{id:R.Seek,data:[{id:R.SeekID,data:i},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.attachmentsElement)-this.segmentDataOffset:0}]}:null,this.tagsElement?{id:R.Seek,data:[{id:R.SeekID,data:a},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.tagsElement)-this.segmentDataOffset:0}]}:null,{id:R.Seek,data:[{id:R.SeekID,data:t},{id:R.SeekPosition,size:5,data:e?this.ebmlWriter.offsets.get(this.cues)-this.segmentDataOffset:0}]}]};this.seekHead=o}createSegmentInfo(){let e={id:R.Duration,data:new to(0)};this.segmentDuration=e;let t=this.output._metadataTags.creationTime===void 0?new Date:this.output._metadataTags.creationTime,n=null;if(t){let e=1000000n*BigInt(t.getTime()-fo);if(BigInt.asIntN(64,e)!==e)throw Error(`creationTime is out of the range representable by Matroska files.`);n={id:R.DateUTC,size:8,data:BigInt.asUintN(64,e)}}let r={id:R.Info,data:[{id:R.TimestampScale,data:1e6},this.format._options.appendOnly?null:e,n,{id:R.MuxingApp,data:oi},{id:R.WritingApp,data:oi}]};this.segmentInfo=r}createTracks(){let e={id:R.Tracks,data:[]};this.tracksElement=e;for(let t of this.trackDatas){let n=po[t.track.source._codec];F(n),t.type===`audio`&&t.track.source._codec===`dts`&&(t.info.decoderConfig.codec===`dtse`?n=`A_DTS/EXPRESS`:t.info.decoderConfig.codec===`dtsl`&&(n=`A_DTS/LOSSLESS`));let r=0;if(t.type===`audio`){let e=Qo(t.track.source._codec,t.info.decoderConfig);r=Math.round(1e9*e)}e.data.push({id:R.TrackEntry,data:[{id:R.TrackNumber,data:t.track.id},{id:R.TrackUID,data:t.track.id},{id:R.TrackType,data:yl[t.type]},t.track.metadata.disposition?.default===!1?{id:R.FlagDefault,data:0}:null,t.track.metadata.disposition?.forced?{id:R.FlagForced,data:1}:null,t.track.metadata.disposition?.hearingImpaired?{id:R.FlagHearingImpaired,data:1}:null,t.track.metadata.disposition?.visuallyImpaired?{id:R.FlagVisualImpaired,data:1}:null,t.track.metadata.disposition?.original?{id:R.FlagOriginal,data:1}:null,t.track.metadata.disposition?.commentary?{id:R.FlagCommentary,data:1}:null,{id:R.FlagLacing,data:0},{id:R.Language,data:t.track.metadata.languageCode??`und`},{id:R.CodecID,data:n},t.codecPrivate?{id:R.CodecPrivate,data:Un(t.codecPrivate)}:null,t.type===`audio`&&t.info.codecDelay?{id:R.CodecDelay,data:Math.round(1e9*t.info.codecDelay)}:null,r>0?{id:R.SeekPreRoll,data:r}:null,t.track.metadata.name===void 0?null:{id:R.Name,data:new ro(t.track.metadata.name)},t.type===`video`?this.videoSpecificTrackInfo(t):null,t.type===`audio`?this.audioSpecificTrackInfo(t):null,t.type===`subtitle`?this.subtitleSpecificTrackInfo(t):null]})}}videoSpecificTrackInfo(e){let{frameRate:t,transformationMatrix:n}=e.track.metadata,r=[t?{id:R.DefaultDuration,data:1e9/t}:null],i,a,o;if(n){i=jn(n);let e=In(Nn(-i),n);a=Math.sign(e[0]),o=Math.sign(e[4]),o===-1&&(o=1,a=-a,i=On(i+180))}else i=e.track.metadata.rotation??0,a=e.track.metadata.flip?-1:1,o=1;let s=i?On(a===-1?i:-i):0,c=Math.round(Math.acos(a)*Dn),l=Math.round(Math.acos(o)*Dn),u=!!e.info.aspectRatio&&e.info.aspectRatio.num*e.info.height!==e.info.aspectRatio.den*e.info.width,d=e.info.decoderConfig.colorSpace,f={id:R.Video,data:[{id:R.PixelWidth,data:e.info.width},{id:R.PixelHeight,data:e.info.height},u?{id:R.DisplayWidth,data:e.info.aspectRatio.num}:null,u?{id:R.DisplayHeight,data:e.info.aspectRatio.den}:null,u?{id:R.DisplayUnit,data:3}:null,e.info.alphaMode?{id:R.AlphaMode,data:1}:null,Xn(d)?null:{id:R.Colour,data:[{id:R.MatrixCoefficients,data:d?.matrix==null?2:Yn[d.matrix]},{id:R.TransferCharacteristics,data:d?.transfer==null?2:Jn[d.transfer]},{id:R.Primaries,data:d?.primaries==null?2:qn[d.primaries]},{id:R.Range,data:d?.fullRange==null?0:d.fullRange?2:1}]},s||c||l?{id:R.Projection,data:[{id:R.ProjectionType,data:0},c?{id:R.ProjectionPoseYaw,data:new eo(c)}:null,l?{id:R.ProjectionPosePitch,data:new eo(l)}:null,s?{id:R.ProjectionPoseRoll,data:new eo((s+180)%360-180)}:null]}:null]};return r.push(f),r}audioSpecificTrackInfo(e){let t=Io.includes(e.track.source._codec)?ns(e.track.source._codec):null;return[{id:R.Audio,data:[{id:R.SamplingFrequency,data:new eo(e.info.sampleRate)},{id:R.Channels,data:e.info.numberOfChannels},t?{id:R.BitDepth,data:8*t.sampleSize}:null]}]}subtitleSpecificTrackInfo(e){return[]}maybeCreateTags(){let e=[],t=(t,n)=>{e.push({id:R.SimpleTag,data:[{id:R.TagName,data:new ro(t)},typeof n==`string`?{id:R.TagString,data:new ro(n)}:{id:R.TagBinary,data:n}]})},n=this.output._metadataTags,r=new Set;for(let{key:e,value:i}of kr(n))switch(e){case`title`:t(`TITLE`,i),r.add(`TITLE`);break;case`description`:t(`DESCRIPTION`,i),r.add(`DESCRIPTION`);break;case`artist`:t(`ARTIST`,i),r.add(`ARTIST`);break;case`album`:t(`ALBUM`,i),r.add(`ALBUM`);break;case`albumArtist`:t(`ALBUM_ARTIST`,i),r.add(`ALBUM_ARTIST`);break;case`genre`:t(`GENRE`,i),r.add(`GENRE`);break;case`beatsPerMinute`:t(`BPM`,i.toString()),r.add(`BPM`);break;case`comment`:t(`COMMENT`,i),r.add(`COMMENT`);break;case`lyrics`:t(`LYRICS`,i),r.add(`LYRICS`);break;case`date`:t(`DATE`,i.toISOString().slice(0,10)),r.add(`DATE`);break;case`trackNumber`:t(`PART_NUMBER`,n.tracksTotal===void 0?i.toString():`${i}/${n.tracksTotal}`),r.add(`PART_NUMBER`);break;case`discNumber`:t(`DISC`,n.discsTotal===void 0?i.toString():`${i}/${n.discsTotal}`),r.add(`DISC`);break;case`tracksTotal`:case`discsTotal`:break;case`images`:case`raw`:case`creationTime`:break;default:rr(e)}if(n.raw)for(let e in n.raw){let i=n.raw[e];i==null||r.has(e)||(typeof i==`string`||i instanceof Uint8Array)&&t(e,i)}e.length!==0&&(this.tagsElement={id:R.Tags,data:[{id:R.Tag,data:[{id:R.Targets,data:[{id:R.TargetTypeValue,data:50},{id:R.TargetType,data:`MOVIE`}]},...e]}]})}maybeCreateAttachments(){let e=this.output._metadataTags,t=[],n=new Set,r=e.images??[];for(let e of r){let r=e.name;r===void 0&&(r=(e.kind===`coverFront`?`cover`:e.kind===`coverBack`?`back`:`image`)+(Ar(e.mimeType)??``));let i;for(;;){i=0n;for(let e=0;e<8;e++)i<<=8n,i|=BigInt(Math.floor(Math.random()*256));if(i!==0n&&!n.has(i))break}n.add(i),t.push({id:R.AttachedFile,data:[e.description===void 0?null:{id:R.FileDescription,data:new ro(e.description)},{id:R.FileName,data:new ro(r)},{id:R.FileMediaType,data:e.mimeType},{id:R.FileData,data:e.data},{id:R.FileUID,data:i}]})}for(let[n,i]of Object.entries(e.raw??{}))i instanceof Wr&&/^\d+$/.test(n)&&(r.find(e=>e.mimeType===i.mimeType&&jr(e.data,i.data))||t.push({id:R.AttachedFile,data:[i.description===void 0?null:{id:R.FileDescription,data:new ro(i.description)},{id:R.FileName,data:new ro(i.name??``)},{id:R.FileMediaType,data:i.mimeType??``},{id:R.FileData,data:i.data},{id:R.FileUID,data:BigInt(n)}]}));t.length!==0&&(this.attachmentsElement={id:R.Attachments,data:t})}createSegment(){this.createTracks(),this.maybeCreateTags(),this.maybeCreateAttachments(),this.maybeCreateSeekHead(!1);let e={id:R.Segment,size:this.format._options.appendOnly?-1:_l,data:[this.seekHead,this.segmentInfo,this.tracksElement,this.attachmentsElement,this.tagsElement]};if(this.segment=e,this.format._options.onSegmentHeader&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(e),this.format._options.onSegmentHeader){let{data:e,start:t}=this.writer.stopTrackingWrites();this.format._options.onSegmentHeader(e,t)}}createCues(){this.cues={id:R.Cues,data:[]}}get segmentDataOffset(){return F(this.segment),this.ebmlWriter.dataOffsets.get(this.segment)}allTracksAreKnown(){for(let e of this.output.tracks)if(!e.source._closed&&!this.trackDatas.some(t=>t.track===e))return!1;return!0}async getMimeType(){await this.allTracksKnown.promise;let e=this.trackDatas.map(e=>e.type===`video`||e.type===`audio`?e.info.decoderConfig.codec:{webvtt:`wvtt`}[e.track.source._codec]);return mo({isWebM:this.format instanceof Dl,hasVideo:this.trackDatas.some(e=>e.type===`video`),hasAudio:this.trackDatas.some(e=>e.type===`audio`),codecStrings:e})}getVideoTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;us(n,e.source._codec),F(n),F(n.decoderConfig),F(n.decoderConfig.codedWidth!==void 0),F(n.decoderConfig.codedHeight!==void 0);let i=n.decoderConfig.displayAspectWidth,a=n.decoderConfig.displayAspectHeight,o=i===void 0||a===void 0?null:Fr({num:i,den:a}),s={track:e,type:`video`,info:{width:n.decoderConfig.codedWidth,height:n.decoderConfig.codedHeight,aspectRatio:o,decoderConfig:n.decoderConfig,alphaMode:e.metadata.canBeTransparent||(t?!!t.sideData.alpha:null)},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:n.decoderConfig.description??null,closed:!1};return e.source._codec===`vp9`?s.codecPrivate=new Uint8Array(Yo(s.info.decoderConfig.codec)):e.source._codec===`av1`?s.codecPrivate=new Uint8Array(Xo(s.info.decoderConfig.codec)):e.source._codec===`prores`&&(s.codecPrivate=Kn.encode(n.decoderConfig.codec)),this.trackDatas.push(s),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),s}getAudioTrackData(e,t,n){let r=this.trackDatas.find(t=>t.track===e);if(r)return r;fs(n,e.source._codec),F(n),F(n.decoderConfig);let i={...n.decoderConfig},a=!1;if(e.source._codec===`aac`&&!i.description){if(!t)throw Error(`No AAC description provided; you must therefore provide a priming packet.`);let e=ho(_o.tempFromBytes(t.data));if(!e)throw Error(`Couldn't parse ADTS header from the AAC packet. Make sure the packets are in ADTS format (as specified in ISO 13818-7) when not providing a description, or provide a description (must be an AudioSpecificConfig as specified in ISO 14496-3) and ensure the packets are raw AAC data.`);let n=Jr[e.samplingFrequencyIndex],r=Yr[e.channelConfiguration];if(n===void 0||r===void 0)throw Error(`Invalid ADTS frame header.`);i.description=ei({objectType:e.objectType,outputSampleRate:n,outputNumberOfChannels:r}),a=!0}let o={track:e,type:`audio`,info:{numberOfChannels:n.decoderConfig.numberOfChannels,sampleRate:n.decoderConfig.sampleRate,decoderConfig:i,requiresAdtsStripping:a,codecDelay:null},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:i.description??null,closed:!1};return this.trackDatas.push(o),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),o}getSubtitleTrackData(e,t){let n=this.trackDatas.find(t=>t.track===e);if(n)return n;ps(t),F(t),F(t.config);let r={track:e,type:`subtitle`,info:{config:t.config},chunkQueue:[],lastWrittenMsTimestamp:null,codecPrivate:Kn.encode(t.config.description),closed:!1};return this.trackDatas.push(r),this.trackDatas.sort((e,t)=>e.track.id-t.track.id),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),r}async addEncodedVideoPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getVideoTrackData(e,t,n);r.info.alphaMode??=!!t.sideData.alpha;let i=t.data;if(e.source._codec===`prores`){if(i.byteLength<8)throw Error(`ProRes packet too small, expected at least 8 bytes.`);i=i.subarray(8)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a);let o=t.timestamp,s=t.duration;e.metadata.frameRate!==void 0&&(o=lr(o,e.metadata.frameRate),s=lr(s,e.metadata.frameRate));let c=r.info.alphaMode?t.sideData.alpha??null:null,l=this.createInternalChunk(i,o,s,t.type,c);e.source._codec===`vp9`&&this.fixVP9ColorSpace(r,l),r.chunkQueue.push(l),await this.interleaveChunks()}finally{r()}}async addEncodedAudioPacket(e,t,n){let r=await this.mutex.acquire();try{let r=this.getAudioTrackData(e,t,n),i=t.data;if(r.info.requiresAdtsStripping){let e=ho(_o.tempFromBytes(i));if(!e)throw Error(`Expected ADTS frame, didn't get one.`);let t=e.crcCheck===null?7:9;i=i.subarray(t)}let a=t.type===`key`;this.validateTimestamp(r.track,t.timestamp,a),r.info.codecDelay??=Math.max(-t.timestamp,0);let o=this.createInternalChunk(i,t.timestamp+r.info.codecDelay,t.duration,t.type);r.chunkQueue.push(o),await this.interleaveChunks()}finally{r()}}async addSubtitleCue(e,t,n){let r=await this.mutex.acquire();try{let r=this.getSubtitleTrackData(e,n);this.validateTimestamp(r.track,t.timestamp,!0);let i=t.text,a=Math.round(t.timestamp*1e3);sa.lastIndex=0,i=i.replace(sa,e=>`<${ua(la(e.slice(1,-1))-a)}>`);let o=Kn.encode(i),s=`${t.settings??``}\n${t.identifier??``}\n${t.notes??``}`,c=this.createInternalChunk(o,t.timestamp,t.duration,`key`,s.trim()?Kn.encode(s):null);r.chunkQueue.push(c),await this.interleaveChunks()}finally{r()}}async interleaveChunks(e=!1){if(e||this.allTracksAreKnown()){outer:for(;;){let t=null,n=1/0;for(let r of this.trackDatas){if(!e&&r.chunkQueue.length===0&&!r.closed)break outer;r.chunkQueue.length>0&&r.chunkQueue[0].timestamp<n&&(t=r,n=r.chunkQueue[0].timestamp)}if(!t)break;let r=t.chunkQueue.shift();this.addBlock(t,r)}e||await this.writer.flush()}}fixVP9ColorSpace(e,t){if(t.type!==`key`||!e.info.decoderConfig.colorSpace||!e.info.decoderConfig.colorSpace.matrix)return;let n=new qr(t.data);n.skipBits(2);let r=n.readBits(1),i=(n.readBits(1)<<1)+r;if(i===3&&n.skipBits(1),n.readBits(1)||n.readBits(1)!==0||(n.skipBits(2),n.readBits(24)!==4817730))return;i>=2&&n.skipBits(1);let a={rgb:7,bt709:2,bt470bg:1,smpte170m:3}[e.info.decoderConfig.colorSpace.matrix];Hn(t.data,n.pos,n.pos+3,a)}createInternalChunk(e,t,n,r,i=null){return{data:e,type:r,timestamp:t,duration:n,additions:i}}addBlock(e,t){this.segment||this.createSegment();let n=Math.round(1e3*t.timestamp),r=this.trackDatas.every(n=>{if(e===n)return t.type===`key`;let r=n.chunkQueue[0];return r?r.type===`key`:n.closed}),i=!1;if(this.currentClusterStartMsTimestamp===null)i=!0;else{F(this.currentClusterMaxMsTimestamp!==null);let e=n-this.currentClusterStartMsTimestamp;i=r&&n>this.currentClusterMaxMsTimestamp&&e>=1e3*(this.format._options.minimumClusterDuration??1)||e>gl}if(i&&this.startNewCluster(n),n-this.currentClusterStartMsTimestamp<hl){if(!this.warnedAboutTooNegativeTimestamp){let e=this.format instanceof Dl?`WebM`:`Matroska`;Hr._warn(`Packets had to be discarded because their timestamp is too negative to represent in ${e}.`),this.warnedAboutTooNegativeTimestamp=!0}}else this.currentClusterBlocks.push({trackData:e,chunk:t,msTimestamp:n,previousMsTimestamp:e.lastWrittenMsTimestamp}),this.startTimestamp=Math.min(this.startTimestamp,n),this.endTimestamp=Math.max(this.endTimestamp,n+Math.round(1e3*t.duration)),e.lastWrittenMsTimestamp=n,this.currentClusterMaxMsTimestamp=Math.max(this.currentClusterMaxMsTimestamp,n)}startNewCluster(e){this.currentClusterStartMsTimestamp!==null&&this.writeCurrentCluster();let t=Math.max(0,e);this.currentClusterStartMsTimestamp=t,this.currentClusterMaxMsTimestamp=t}writeCurrentCluster(){F(this.currentClusterStartMsTimestamp!==null);let e=this.currentClusterStartMsTimestamp,t=new Map,n=new Map;for(let e of this.currentClusterBlocks)e.chunk.type===`key`&&!t.has(e.trackData)&&t.set(e.trackData,e),n.set(e.trackData,e);let r=new Map;for(let t of this.currentClusterBlocks)r.set(t,this.createBlockElement(t,e,n.get(t.trackData)===t));let i={id:R.Cluster,size:this.format._options.appendOnly?-1:vl,data:[{id:R.Timestamp,data:e},...r.values()]};if(this.format._options.onCluster&&this.writer.startTrackingWrites(),this.ebmlWriter.writeEBML(i),this.currentClusterBlocks=[],this.format._options.onCluster){let{data:t,start:n}=this.writer.stopTrackingWrites();this.format._options.onCluster(t,n,e/1e3)}let a=this.ebmlWriter.offsets.get(i)-this.segmentDataOffset,o=this.ebmlWriter.dataOffsets.get(i),s=new Map;for(let e of t.values())s.has(e.msTimestamp)||s.set(e.msTimestamp,[]),s.get(e.msTimestamp).push(e);let c=[...s.entries()].sort((e,t)=>e[0]-t[0]);for(let[e,t]of c)F(this.cues),this.cues.data.push({id:R.CuePoint,data:[{id:R.CueTime,data:Math.max(0,e)},...t.map(e=>{let t=this.ebmlWriter.offsets.get(r.get(e));return{id:R.CueTrackPositions,data:[{id:R.CueTrack,data:e.trackData.track.id},{id:R.CueClusterPosition,data:a},{id:R.CueRelativePosition,data:t-o}]}})]})}createBlockElement(e,t,n){let{trackData:r,chunk:i,msTimestamp:a}=e,o=new Uint8Array(4),s=new DataView(o.buffer);s.setUint8(0,128|r.track.id),s.setInt16(1,a-t,!1);let c=Math.round(1e3*i.duration);return i.additions||r.type===`subtitle`||n&&c>0?{id:R.BlockGroup,data:[{id:R.Block,data:[o,i.data]},i.type===`delta`?{id:R.ReferenceBlock,data:new no(e.previousMsTimestamp-a)}:null,i.additions?{id:R.BlockAdditions,data:[{id:R.BlockMore,data:[{id:R.BlockAddID,data:1},{id:R.BlockAdditional,data:i.additions}]}]}:null,c>0?{id:R.BlockDuration,data:c}:null]}:(s.setUint8(3,Number(i.type===`key`)<<7),{id:R.SimpleBlock,data:[o,i.data]})}async onTrackClose(e){let t=await this.mutex.acquire(),n=this.trackDatas.find(t=>t.track===e);n&&(n.closed=!0),this.allTracksAreKnown()&&this.allTracksKnown.resolve(),await this.interleaveChunks(),t()}async finalize(){let e=await this.mutex.acquire();this.allTracksKnown.resolve();for(let e of this.trackDatas)e.closed=!0;if(this.segment||this.createSegment(),await this.interleaveChunks(!0),this.currentClusterStartMsTimestamp!==null&&this.writeCurrentCluster(),F(this.cues),this.ebmlWriter.writeEBML(this.cues),!this.format._options.appendOnly){let e=this.writer.getPos()-this.segmentDataOffset;this.writer.seek(this.ebmlWriter.offsets.get(this.segment)+4),this.ebmlWriter.writeVarInt(e,_l);let t=this.startTimestamp===1/0?0:this.endTimestamp;this.segmentDuration.data=new to(t),this.writer.seek(this.ebmlWriter.offsets.get(this.segmentDuration)),this.ebmlWriter.writeEBML(this.segmentDuration),F(this.seekHead),this.writer.seek(this.ebmlWriter.offsets.get(this.seekHead)),this.maybeCreateSeekHead(!0),this.ebmlWriter.writeEBML(this.seekHead)}e()}},xl=class{get supportsVideoRotationMetadata(){return this.supportsVideoTransformationMetadata}get requiresMaximumPacketCount(){return!1}getSupportedVideoCodecs(){return this.getSupportedCodecs().filter(e=>Fo.includes(e))}getSupportedAudioCodecs(){return this.getSupportedCodecs().filter(e=>Ro.includes(e))}getSupportedSubtitleCodecs(){return this.getSupportedCodecs().filter(e=>zo.includes(e))}_codecUnsupportedHint(e){return``}_isFragmentedIsobmff(){return!1}},Sl=class extends xl{constructor(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.fastStart!==void 0&&![!1,`in-memory`,`reserve`,`fragmented`].includes(e.fastStart))throw TypeError(`options.fastStart, when provided, must be false, 'in-memory', 'reserve', or 'fragmented'.`);if(e.minimumFragmentDuration!==void 0&&(!Nr(e.minimumFragmentDuration)||e.minimumFragmentDuration<0))throw TypeError(`options.minimumFragmentDuration, when provided, must be a non-negative number.`);if(e.onFtyp!==void 0&&typeof e.onFtyp!=`function`)throw TypeError(`options.onFtyp, when provided, must be a function.`);if(e.onMoov!==void 0&&typeof e.onMoov!=`function`)throw TypeError(`options.onMoov, when provided, must be a function.`);if(e.onMdat!==void 0&&typeof e.onMdat!=`function`)throw TypeError(`options.onMdat, when provided, must be a function.`);if(e.onMoof!==void 0&&typeof e.onMoof!=`function`)throw TypeError(`options.onMoof, when provided, must be a function.`);if(e.metadataFormat!==void 0&&![`mdir`,`mdta`,`udta`,`auto`].includes(e.metadataFormat))throw TypeError(`options.metadataFormat, when provided, must be either 'auto', 'mdir', 'mdta', or 'udta'.`);super(),this._options=e}getSupportedTrackCounts(){let e=2**32-1;return{video:{min:0,max:e},audio:{min:0,max:e},subtitle:{min:0,max:e},total:{min:0,max:e}}}get supportsVideoTransformationMetadata(){return!0}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return`full`}get requiresMaximumPacketCount(){return this._options.fastStart===`reserve`}_createMuxer(e){return new ml(e,this)}_isFragmentedIsobmff(){return this._options.fastStart===`fragmented`}},Cl=class extends Sl{constructor(e){super(e)}get _name(){return`MP4`}get fileExtension(){return`.mp4`}get mimeType(){return`video/mp4`}getSupportedCodecs(){return[...Fo,...Lo,`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,...zo]}_codecUnsupportedHint(e){return new Tl().getSupportedCodecs().includes(e)?` Switching to MOV will grant support for this codec.`:``}},wl=class extends Sl{constructor(e){super(e)}get _name(){return`CMAF`}get fileExtension(){return`.m4s`}get mimeType(){return`video/mp4`}getSupportedCodecs(){return[...Fo,...Lo,`pcm-s16`,`pcm-s16be`,`pcm-s24`,`pcm-s24be`,`pcm-s32`,`pcm-s32be`,`pcm-f32`,`pcm-f32be`,`pcm-f64`,`pcm-f64be`,...zo]}},Tl=class extends Sl{constructor(e){super(e)}get _name(){return`MOV`}get fileExtension(){return`.mov`}get mimeType(){return`video/quicktime`}getSupportedCodecs(){return[...Fo,...Ro]}_codecUnsupportedHint(e){return new Cl().getSupportedCodecs().includes(e)?` Switching to MP4 will grant support for this codec.`:``}},El=class extends xl{constructor(e={}){if(!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(e.appendOnly!==void 0&&typeof e.appendOnly!=`boolean`)throw TypeError(`options.appendOnly, when provided, must be a boolean.`);if(e.minimumClusterDuration!==void 0&&(!Nr(e.minimumClusterDuration)||e.minimumClusterDuration<0))throw TypeError(`options.minimumClusterDuration, when provided, must be a non-negative number.`);if(e.onEbmlHeader!==void 0&&typeof e.onEbmlHeader!=`function`)throw TypeError(`options.onEbmlHeader, when provided, must be a function.`);if(e.onSegmentHeader!==void 0&&typeof e.onSegmentHeader!=`function`)throw TypeError(`options.onHeader, when provided, must be a function.`);if(e.onCluster!==void 0&&typeof e.onCluster!=`function`)throw TypeError(`options.onCluster, when provided, must be a function.`);super(),this._options=e}_createMuxer(e){return new bl(e,this)}get _name(){return`Matroska`}getSupportedTrackCounts(){return{video:{min:0,max:127},audio:{min:0,max:127},subtitle:{min:0,max:127},total:{min:0,max:127}}}get fileExtension(){return`.mkv`}get mimeType(){return`video/x-matroska`}getSupportedCodecs(){return[...Fo,...Lo,...Io.filter(e=>![`pcm-s8`,`pcm-f32be`,`pcm-f64be`,`ulaw`,`alaw`].includes(e)),...zo]}get supportsVideoTransformationMetadata(){return!1}get supportsTimestampedMediaData(){return!0}get negativeTimestampSupport(){return`prefer-non-negative`}},Dl=class extends El{constructor(e){super(e)}getSupportedCodecs(){return[...Fo.filter(e=>[`vp8`,`vp9`,`av1`].includes(e)),...Ro.filter(e=>[`opus`,`vorbis`].includes(e)),...zo]}get _name(){return`WebM`}get fileExtension(){return`.webm`}get mimeType(){return`video/webm`}_codecUnsupportedHint(e){return new El().getSupportedCodecs().includes(e)?` Switching to MKV will grant support for this codec.`:``}},Ol=[`video`,`audio`,`subtitle`],kl=class e{constructor(e,t,n,r,i){this.id=e,this.output=t,this.type=n,this.source=r,this.metadata=i}isVideoTrack(){return this.type===`video`}isAudioTrack(){return this.type===`audio`}isSubtitleTrack(){return this.type===`subtitle`}canBePairedWith(t){if(!(t instanceof e))throw TypeError(`other must be an OutputTrack.`);if(this===t)return!1;let n=Rr(this.metadata.group),r=Rr(t.metadata.group);for(let e of n)if(this.type!==t.type&&r.some(t=>e===t)||r.some(t=>e._pairedGroups.has(t)))return!0;return!1}},Al=class extends kl{constructor(e,t,n,r){super(e,t,`video`,n,r)}},jl=class extends kl{constructor(e,t,n,r){super(e,t,`audio`,n,r)}},Ml=class extends kl{constructor(e,t,n,r){super(e,t,`subtitle`,n,r)}},Nl=class e{constructor(){this._pairedGroups=new Set}pairWith(t){if(!(t instanceof e))throw TypeError(`other must be an OutputTrackGroup.`);if(this===t)throw TypeError(`Cannot pair a group with itself.`);this._pairedGroups.add(t),t._pairedGroups.add(this)}},Pl=e=>{if(!e||typeof e!=`object`)throw TypeError(`metadata must be an object.`);if(e.languageCode!==void 0&&!pr(e.languageCode))throw TypeError(`metadata.languageCode, when provided, must be a three-letter, ISO 639-2/T language code.`);if(e.name!==void 0&&typeof e.name!=`string`)throw TypeError(`metadata.name, when provided, must be a string.`);if(e.disposition!==void 0&&Kr(e.disposition),e.maximumPacketCount!==void 0&&(!Number.isInteger(e.maximumPacketCount)||e.maximumPacketCount<0))throw TypeError(`metadata.maximumPacketCount, when provided, must be a non-negative integer.`);if(e.bitrate!==void 0&&(!Number.isFinite(e.bitrate)||e.bitrate<0))throw TypeError(`metadata.bitrate, when provided, must be a non-negative number.`);if(e.averageBitrate!==void 0&&(!Number.isFinite(e.averageBitrate)||e.averageBitrate<0))throw TypeError(`metadata.averageBitrate, when provided, must be a non-negative number.`);if(e.group!==void 0&&!(e.group instanceof Nl)&&(!Array.isArray(e.group)||e.group.some(e=>!(e instanceof Nl))))throw TypeError(`metadata.group, when provided, must be an OutputTrackGroup instance or an array of OutputTrackGroup instances.`)},Fl=class extends zr{get target(){let e=`Output.target cannot be used when using PathedTarget with an async callback. Use the 'target' event instead.`;if(this._rootTargetPromise)throw TypeError(e);let t=this._getRootTarget();if(Or(t))throw TypeError(e);return t}constructor(e){if(super(),this.state=`pending`,this.defaultTrackGroup=new Nl,this.tracks=[],this._onFinalize=null,this._unfinalizedTargets=new Set,this._rootWriterPromise=null,this._startPromise=null,this._cancelPromise=null,this._finalizePromise=null,this._mutex=new Qn,this._metadataTags={},this._rootTarget=null,this._rootTargetPromise=null,this._firstMediaStreamTimestamp=null,!e||typeof e!=`object`)throw TypeError(`options must be an object.`);if(!(e.format instanceof xl))throw TypeError(`options.format must be an OutputFormat.`);if(!(e.target instanceof il||e.target instanceof ll))throw TypeError(`options.target must be a Target or a PathedTarget.`);if(e.target instanceof il&&this._rememberTarget(e.target),e.initTarget!==void 0&&!(e.initTarget instanceof il)&&typeof e.initTarget!=`function`)throw Error(`options.initTarget, when provided, must be a Target or a function that returns or resolves to a Target.`);if(e.onFinalize!==void 0&&typeof e.onFinalize!=`function`)throw TypeError(`options.onFinalize, when provided, must be a function.`);this.format=e.format,this._target=e.target,this._onFinalize=e.onFinalize??null,this._initTarget=e.initTarget??null,this._initTarget instanceof il&&this._rememberTarget(this._initTarget),this._muxer=e.format._createMuxer(this)}_getTargetValidated(e){F(this._target instanceof ll);let t=this._target.getTarget(e),n=e=>{if(!(e instanceof il))throw TypeError(`getTarget must return a Target.`);return e};return Or(t)?t.then(n):n(t)}async _getTarget(e){F(this._target instanceof ll);let t=await this._getTargetValidated(e);return this._emit(`target`,{target:t,request:e,isRoot:e.isRoot}),this.state===`canceled`?await t._close():this._rememberTarget(t),t}_rememberTarget(e){this._unfinalizedTargets.add(e),e.on(`finalized`,()=>this._unfinalizedTargets.delete(e),{once:!0})}async _getInitTarget(){if(F(this._initTarget!==null),this._initTarget instanceof il)return this._initTarget;let e=await this._initTarget();return this.state===`canceled`?await e._close():this._rememberTarget(e),e}_hasInitTarget(){return this._initTarget!==null}_getRootTarget(){if(this._rootTarget)return this._rootTarget;if(this._rootTargetPromise)return this._rootTargetPromise;if(this._target instanceof il)return this._emit(`target`,{target:this._target,request:null,isRoot:!0}),this._rootTarget=this._target,this._target;let e={path:this._target.rootPath,isRoot:!0,mimeType:this.format.mimeType},t=this._getTargetValidated(e),n=t=>(this.state===`canceled`?t._close():this._rememberTarget(t),this._emit(`target`,{target:t,request:e,isRoot:!0}),this._rootTarget=t,t);return Or(t)?this._rootTargetPromise=t.then(n):n(t)}_getRootWriter(e){return this._rootWriterPromise??=(async()=>{let t=await this._getRootTarget(),n=new rl(t,typeof e==`boolean`?e:e(t));return n.start(),n})()}addVideoTrack(e,t={}){if(!(e instanceof wo))throw TypeError(`source must be a VideoSource.`);if(Pl(t),t.rotation!==void 0&&![0,90,180,270].includes(t.rotation))throw TypeError(`Invalid video rotation: ${t.rotation}. Has to be 0, 90, 180 or 270.`);if(t.flip!==void 0&&typeof t.flip!=`boolean`)throw TypeError(`metadata.flip, when provided, must be a boolean.`);if(t.transformationMatrix!==void 0&&(!Array.isArray(t.transformationMatrix)||t.transformationMatrix.length!==9||!t.transformationMatrix.every(e=>Number.isFinite(e))))throw TypeError(`metadata.transformationMatrix, when provided, must be an array of 9 finite numbers.`);if(t.frameRate!==void 0&&(!Number.isFinite(t.frameRate)||t.frameRate<=0))throw TypeError(`Invalid video frame rate: ${t.frameRate}. Must be a positive number.`);if(t.hasOnlyKeyPackets!==void 0&&typeof t.hasOnlyKeyPackets!=`boolean`)throw TypeError(`metadata.hasOnlyKeyPackets, when provided, must be a boolean.`);if(t.canBeTransparent!==void 0&&typeof t.canBeTransparent!=`boolean`)throw TypeError(`metadata.canBeTransparent, when provided, must be a boolean.`);if(t.decoderConfig!==void 0&&us({decoderConfig:t.decoderConfig},e._codec),t.primingPacket!==void 0){if(!(t.primingPacket instanceof Za))throw TypeError(`metadata.primingPacket, when provided, must be an EncodedPacket.`);if(t.decoderConfig===void 0)throw TypeError(`metadata.primingPacket can only be provided alongside metadata.decoderConfig.`)}let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new Al(this.tracks.length+1,this,e,n))}addAudioTrack(e,t={}){if(!(e instanceof No))throw TypeError(`source must be an AudioSource.`);if(Pl(t),t.decoderConfig!==void 0&&fs({decoderConfig:t.decoderConfig},e._codec),t.primingPacket!==void 0){if(!(t.primingPacket instanceof Za))throw TypeError(`metadata.primingPacket, when provided, must be an EncodedPacket.`);if(t.decoderConfig===void 0)throw TypeError(`metadata.primingPacket can only be provided alongside metadata.decoderConfig.`)}let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new jl(this.tracks.length+1,this,e,n))}addSubtitleTrack(e,t={}){if(!(e instanceof Po))throw TypeError(`source must be a SubtitleSource.`);Pl(t);let n={...t};return n.group??=this.defaultTrackGroup,this._addTrack(new Ml(this.tracks.length+1,this,e,n))}setMetadataTags(e){if(Gr(e),this.state!==`pending`)throw Error(`Cannot set metadata tags after output has been started or canceled.`);this._metadataTags=e}_addTrack(e){if(this.state!==`pending`)throw Error(`Cannot add track after output has been started or canceled.`);if(e.source._connectedTrack)throw Error(`Source is already used for a track.`);let t=this.format.getSupportedTrackCounts(),n=this.tracks.reduce((t,n)=>t+ +(n.type===e.type),0),r=t[e.type].max;if(n===r)throw Error(r===0?`${this.format._name} does not support ${e.type} tracks.`:`${this.format._name} does not support more than ${r} ${e.type} track${r===1?``:`s`}.`);let i=t.total.max;if(this.tracks.length===i)throw Error(`${this.format._name} does not support more than ${i} tracks${i===1?``:`s`} in total.`);if(e.isVideoTrack()){let t=this.format.getSupportedVideoCodecs();if(t.length===0)throw Error(`${this.format._name} does not support video tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported video codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isAudioTrack()){let t=this.format.getSupportedAudioCodecs();if(t.length===0)throw Error(`${this.format._name} does not support audio tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported audio codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}else if(e.isSubtitleTrack()){let t=this.format.getSupportedSubtitleCodecs();if(t.length===0)throw Error(`${this.format._name} does not support subtitle tracks.`+this.format._codecUnsupportedHint(e.source._codec));if(!t.includes(e.source._codec))throw Error(`Codec '${e.source._codec}' cannot be contained within ${this.format._name}. Supported subtitle codecs are: ${t.map(e=>`'${e}'`).join(`, `)}.`+this.format._codecUnsupportedHint(e.source._codec))}return this.tracks.push(e),e.source._connectedTrack=e,e}hasEnoughTracks(){let e=this.format.getSupportedTrackCounts();for(let t of Ol)if(this.tracks.reduce((e,n)=>e+ +(n.type===t),0)<e[t].min)return!1;let t=e.total.min;return!(this.tracks.length<t)}async start(){let e=this.format.getSupportedTrackCounts();for(let t of Ol){let n=this.tracks.reduce((e,n)=>e+ +(n.type===t),0),r=e[t].min;if(n<r)throw Error(r===e[t].max?`${this.format._name} requires exactly ${r} ${t} track${r===1?``:`s`}.`:`${this.format._name} requires at least ${r} ${t} track${r===1?``:`s`}.`)}let t=e.total.min;if(this.tracks.length<t)throw Error(t===e.total.max?`${this.format._name} requires exactly ${t} track${t===1?``:`s`}.`:`${this.format._name} requires at least ${t} track${t===1?``:`s`}.`);if(this.state===`canceled`)throw Error(`Output has been canceled.`);return this._startPromise?(Hr._warn(`Output has already been started.`),this._startPromise):this._startPromise=(async()=>{this.state=`started`;let e=this._mutex.acquire();try{await this._muxer.start();let e=this.tracks.map(e=>e.source._start());await Promise.all(e)}finally{(await e)()}})()}getMimeType(){return this._muxer.getMimeType()}async cancel(){if(this.state===`canceled`)return this._cancelPromise??void 0;if(this.state===`finalizing`||this.state===`finalized`)this.state===`finalized`&&Hr._warn(`Output has already been finalized.`);else return this._cancelPromise=(async()=>{this.state=`canceled`;let e=await this._mutex.acquire();try{let e=this.tracks.map(e=>e.source._flushOrWaitForOngoingClose(!0));await Promise.all(e),await Promise.all([...this._unfinalizedTargets].map(e=>e._close())),this._unfinalizedTargets.clear()}finally{e()}})()}async finalize(){if(this.state===`pending`)throw Error(`Cannot finalize before starting.`);if(this.state===`canceled`)throw Error(`Cannot finalize after canceling.`);return this._finalizePromise?(Hr._warn(`Output has already been finalized.`),this._finalizePromise):this._finalizePromise=(async()=>{this.state=`finalizing`;let e=await this._mutex.acquire();try{let e=this.tracks.map(e=>e.source._flushOrWaitForOngoingClose(!1));if(await Promise.all(e),await this._muxer.finalize(),this._rootWriterPromise){let e=await this._rootWriterPromise;e.finalized||(await e.flush(),await e.finalize())}this._onFinalize&&await this._onFinalize(),this.state=`finalized`}catch(e){throw this.state=`canceled`,e}finally{await Promise.all([...this._unfinalizedTargets].map(e=>e._close().catch(()=>{}))),this._unfinalizedTargets.clear(),e()}})()}},Il=Tn(),Ll=e=>e===!0?{}:e||null;function Rl(e){let t=Math.max(1,e/900);return{u:t,top:Math.round(44*t),bottom:Math.round(84*t)}}function zl(e){let t=getComputedStyle(e),n=(e,n)=>t.getPropertyValue(`--lm-${e}`).trim()||n;return{font:t.fontFamily||`sans-serif`,mono:n(`mono`,`monospace`),bg:n(`bg`,`#eef2f5`),surface:n(`surface`,`#ffffff`),fg:n(`fg`,`#17212b`),accent:n(`accent`,`#0b6b8f`),muted:n(`muted`,`#5d6d7c`),line:n(`line`,`#c6d0da`),ok:n(`ok`,`#2a7f5a`),warn:n(`warn`,`#b86e00`),drop:n(`drop`,`#b7392e`),series:[1,2,3,4].map(e=>n(`s${e}`,`#5d6d7c`))}}var Bl=(e,t)=>t===`over`?e.drop:t===`warn`?e.warn:e.ok;function Vl(e,t){let{model:n,ev:r}=e.engine,i=n.scenarioOf(r.values);return{title:t.title??n.title??``,where:[t.step,i?.label,`${s(r.values.load)}× today`].filter(Boolean).join(` · `),verdict:t.text??r.verdict.text,tier:r.verdict.tier}}function Hl(e,t,n,r=1/0){let i=[],a=``;for(let r of t.split(/\s+/).filter(Boolean)){let t=a?`${a} ${r}`:r;!a||e(t)<=n?a=t:(i.push(a),a=r)}if(a&&i.push(a),i.length<=r)return i;let o=i.slice(0,r),s=o[r-1];for(;s&&e(`${s}…`)>n;)s=s.slice(0,-1);return o[r-1]=`${s.trimEnd()}…`,o}function Ul(e,t,n,r,i){let a=zl(t.board().svg),{u:o,top:s,bottom:c}=Rl(r),l=Vl(t,n),u=14*o;e.save(),e.setTransform(1,0,0,1,0,0),e.fillStyle=a.line,e.fillRect(0,s-o,r,o),e.fillRect(0,i-c,r,o),e.textBaseline=`middle`,e.font=`500 ${13*o}px ${a.font}`,e.fillStyle=a.muted,e.textAlign=`right`,e.fillText(l.where,r-u,s/2);let d=e.measureText(l.where).width;e.font=`600 ${16*o}px ${a.font}`,e.fillStyle=a.fg,e.textAlign=`left`,e.fillText(l.title,u,s/2,Math.max(0,r-3*u-d)),e.fillStyle=Bl(a,l.tier),e.fillRect(u,i-c+12*o,4*o,c-24*o),e.font=`400 ${14*o}px ${a.font}`,e.fillStyle=a.fg,e.textBaseline=`top`,Hl(t=>e.measureText(t).width,l.verdict,r-2*u-14*o,3).forEach((t,n)=>{e.fillText(t,u+14*o,i-c+(14+n*20)*o)}),e.restore()}function Wl(e,t,n,r,i){let a=t.board(),o=zl(a.svg),s=Math.max(.75,r/a.scene.width),c=r/s<=520,l=12*s;e.save(),e.textBaseline=`top`,e.textAlign=`left`;let u=`600 ${(c?11.5:13.5)*s}px ${o.font}`,d=`500 ${11.5*s}px ${o.mono}`;e.font=u;let f=c?r-16*s:Math.min(476*s,r-2*l)-28*s,p=Hl(t=>e.measureText(t).width,n.title,f,c?1:2);e.font=d;let m=c||!n.detail?[]:Hl(t=>e.measureText(t).width,n.detail,f,1),h=18*s,g=(c?6:15)*s+p.length*h+m.length*16*s;e.font=u;let _=Math.max(...p.map(t=>e.measureText(t).width),...m.map(t=>(e.font=d,e.measureText(t).width))),v=c?r:_+28*s,y=c?0:l,b=c?0:n.top?l:i-l-g;e.globalAlpha=.94,e.fillStyle=o.surface,e.fillRect(y,b,v,g),e.globalAlpha=1,c||(e.fillStyle=o.accent,e.fillRect(y,b,4*s,g));let x=y+(c?8:16)*s,S=b+(c?3:7)*s;e.font=u,e.fillStyle=o.fg;for(let t of p)e.fillText(t,x,S),S+=h;e.font=d,e.fillStyle=o.muted;for(let t of m)e.fillText(t,x,S);e.restore()}var Gl=[`fill`,`stroke`,`color`];function Kl(e,t,n){let r=e.cloneNode(!0),i=[e,...e.querySelectorAll(`*`)],a=[r,...r.querySelectorAll(`*`)];i.forEach((e,t)=>{let n=getComputedStyle(e),r=a[t];for(let e of Gl){let t=r.getAttribute(e);t&&(t.includes(`var(`)||t===`currentColor`)&&r.setAttribute(e,n.getPropertyValue(e))}r.style?.color&&(r.style.color=n.color);for(let e of[`tabindex`,`aria-describedby`,`class`])r.removeAttribute(e)});let o=getComputedStyle(e);return r.setAttribute(`font-family`,o.fontFamily),r.setAttribute(`color`,o.color),r.setAttribute(`width`,String(t)),r.setAttribute(`height`,String(n)),r.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),r}var ql=`http://www.w3.org/2000/svg`;function Jl(e,t,n){let r=document.createElementNS(ql,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,String(n));return n!=null&&(r.textContent=n),r}async function Yl(e,t={}){await e.ready();let n=e.board(),{width:r,height:i}=n.scene,a=Kl(n.svg,r,i),o=Jl(`g`,{});for(let t of e.engine.dots())o.appendChild(Jl(`circle`,t.ring?{cx:t.x.toFixed(2),cy:t.y.toFixed(2),r:t.r-t.ring/2,fill:`none`,stroke:t.color,"stroke-width":t.ring,...t.alpha<1?{"stroke-opacity":t.alpha.toFixed(3)}:{}}:{cx:t.x.toFixed(2),cy:t.y.toFixed(2),r:t.r,fill:t.color,...t.alpha<1?{"fill-opacity":t.alpha.toFixed(3)}:{}}));a.appendChild(o);let s=Ll(t.caption);if(!s)return new XMLSerializer().serializeToString(a);let c=zl(n.svg),{top:l,bottom:u}=Rl(r),d=i+l+u,f=Vl(e,s),p=Jl(`svg`,{xmlns:ql,width:r,height:d,viewBox:`0 0 ${r} ${d}`,"font-family":c.font});p.appendChild(Jl(`rect`,{width:r,height:d,fill:c.surface})),p.appendChild(Jl(`text`,{x:14,y:l/2+5,"font-size":16,"font-weight":600,fill:c.fg},f.title)),p.appendChild(Jl(`text`,{x:r-14,y:l/2+5,"font-size":13,"text-anchor":`end`,fill:c.muted},f.where)),p.appendChild(Jl(`rect`,{x:0,y:l-1,width:r,height:1,fill:c.line})),a.setAttribute(`y`,String(l)),p.appendChild(a),p.appendChild(Jl(`rect`,{x:0,y:l+i,width:r,height:1,fill:c.line})),p.appendChild(Jl(`rect`,{x:14,y:l+i+12,width:4,height:u-24,fill:Bl(c,f.tier)}));let m=document.createElement(`canvas`).getContext(`2d`);return m.font=`400 14px ${c.font}`,Hl(e=>m.measureText(e).width,f.verdict,r-42,3).forEach((e,t)=>{p.appendChild(Jl(`text`,{x:28,y:l+i+28+t*20,"font-size":14,fill:c.fg},e))}),new XMLSerializer().serializeToString(p)}function Xl(e){let t=Math.max(720,Math.min(1400,e.width+48)),n=t-48;return{W:t,pad:24,inner:n,boardH:e.height*n/e.width}}async function Zl(e,t,n=2){let r=e.board(),{model:i,ev:a}=e.engine,o=zl(r.svg),{W:c,pad:d,inner:p,boardH:m}=Xl(r.scene),h=e=>{let t=i.dateAt(e);return t?` (${_(t,!0)})`:``},g=(e,t)=>e?`${u(e,i.searchMax,!0)}${h(e.low)}`:`${l(t,i.searchMax)}${h(t)}`,v=Vl(e,{}),y=i.growth,x=[v.where,y&&`load grows ${s(y.rate*100)} % a ${y.per} from ${_(b(y.asOf))}`].filter(Boolean).join(` · `),S=i.scenarios.length>1?xe(i,a.values.load):null,C=a.assumptions.flatMap(e=>e.kind===`capacity`&&e.capacity.provenance===`estimated`?[e.name]:[]),w=document.createElement(`canvas`).getContext(`2d`),T=(e,t,n=!1)=>`${e} ${t}px ${n?o.mono:o.font}`,E=(e,t,n)=>(w.font=t,Hl(e=>w.measureText(e).width,e,n)),D=E(v.verdict,T(400,15),p-20),O=a.measure?E(a.measure.text,T(400,13),p-20):[],ee=S?E(S.text,T(400,14),p):[],k=[],A=(e,t,n,r,i,a,o=`left`)=>{e.font=i,e.fillStyle=a,e.textAlign=o,e.fillText(t,n,r)},te=e=>k.push([30,(t,n)=>A(t,e.toUpperCase(),d,n+20,T(600,11),o.muted)]);k.push([34,(e,t)=>A(e,v.title,d,t+26,T(600,22),o.fg)]),k.push([26,(e,t)=>A(e,x,d,t+16,T(400,13),o.muted)]),k.push([m+16,(e,n)=>{e.fillStyle=o.line,e.fillRect(d-1,n+7,p+2,m+2),e.drawImage(t,d,n+8,p,m)}]),k.push([D.length*22+20,(e,t)=>{e.fillStyle=Bl(o,v.tier),e.fillRect(d,t+6,4,D.length*22+8),D.forEach((n,r)=>{A(e,n,d+16,t+24+r*22,T(400,15),o.fg)})}]),O.length&&k.push([O.length*18+6,(e,t)=>{O.forEach((n,r)=>{A(e,n,d+16,t+14+r*18,T(400,13),o.muted)})}]),te(`Where it runs out, in order`);let ne=Math.max(1.5,i.thresholds.full*1.5);k.push([16,(e,t)=>{let n=i.thresholds;A(e,`0`,d,t+10,T(400,11,!0),o.muted),A(e,`${f(n.target)} target`,d+p*n.target/ne,t+10,T(400,11,!0),o.muted,`center`),A(e,f(n.full),d+p*n.full/ne,t+10,T(400,11,!0),o.muted,`center`),A(e,f(ne),c-d,t+10,T(400,11,!0),o.muted,`right`)}]);for(let e of a.ranked)k.push([46,(t,n)=>{let r=e===a.firstLimit?` · limit`:``;A(t,`${e.name}${r}`,d,n+16,T(600,14),o.fg);let s=e.util==null?`switched off`:`${f(e.util)} now · ${f(i.thresholds.target)} at ${g(e.targetRange,e.target)} · ${f(i.thresholds.full)} at ${g(e.fullRange,e.full)}`;A(t,s,c-d,n+16,T(400,12,!0),o.muted,`right`),t.fillStyle=o.bg,t.fillRect(d,n+24,p,10),t.fillStyle=e.state===`over`?o.drop:e.state===`warn`?o.warn:o.ok,t.fillRect(d,n+24,p*Math.min(ne,e.util??0)/ne,10),t.fillStyle=o.fg;for(let e of[i.thresholds.target,i.thresholds.full])t.fillRect(d+p*e/ne,n+22,1,14)}]);S&&(te(`Scenarios compared`),k.push([ee.length*20+6,(e,t)=>{ee.forEach((n,r)=>{A(e,n,d,t+15+r*20,T(400,14),o.fg)})}]),S.rows.forEach((e,t)=>{k.push([26,(n,r)=>{n.fillStyle=o.series[t]??o.muted,n.beginPath(),n.arc(d+5,r+13,5,0,Math.PI*2),n.fill(),A(n,e.label,d+18,r+18,T(600,14),o.fg);let a=`limited by ${e.firstLimit?.name??`—`} · ${f(i.thresholds.target)} at ${g(e.targetRange,e.target)} · runs out at ${g(e.fullRange,e.full)}`;A(n,a,c-d,r+18,T(400,12,!0),o.muted,`right`)}])})),C.length&&k.push([30,(e,t)=>A(e,`Estimated capacities: ${C.join(`, `)}.`,d,t+22,T(400,12),o.muted)]);let re=Math.ceil(k.reduce((e,[t])=>e+t,0)+2*d),ie=document.createElement(`canvas`);ie.width=Math.round(c*n),ie.height=Math.round(re*n);let ae=ie.getContext(`2d`);ae.scale(n,n),ae.fillStyle=o.surface,ae.fillRect(0,0,c,re),ae.textBaseline=`alphabetic`;let j=d;for(let[e,t]of k)t(ae,j),j+=e;return ie}function Ql(e,t){if(t.step==null)return e.setValues($l(e,t));if(!e.engine.model.story[t.step])throw Error(`loadmap: the story has no step ${t.step+1}`);e.setStoryStep(t.step)}function $l(e,t){if(t.scenario==null)return{...t.set};let n=e.engine.model,r=n.scenarios.find(e=>e.label===t.scenario);if(!r){let e=n.scenarios.map(e=>`"${e.label}"`).join(`, `);throw Error(`loadmap: no scenario "${t.scenario}"; ${e?`the model has ${e}`:`the model has none`}`)}return{...r.values,...t.set}}async function q(e,t={},n){await e.ready();let r=e.board(),i=Ll(t.caption),a=t.size?.width??du(r.scene.width*(t.scale??2)),o=i?Rl(a):{top:0,bottom:0},s=t.size?.height??du(r.scene.height*(t.scale??2)+o.top+o.bottom),c=s-o.top-o.bottom,l=Math.min(a/r.scene.width,c/r.scene.height),u=r.scene.width*l,d=r.scene.height*l,f=n??document.createElement(`canvas`);(f.width!==a||f.height!==s)&&(f.width=a,f.height=s);let p=f.getContext(`2d`);p.setTransform(1,0,0,1,0,0),p.fillStyle=getComputedStyle(r.svg).getPropertyValue(`--lm-surface`).trim()||`#fff`,p.fillRect(0,0,a,s);let m=await pu(r.svg,Math.round(u),Math.round(d));return p.translate((a-u)/2,o.top+(c-d)/2),p.drawImage(m,0,0,u,d),e.engine.paintParticles(p,l),e.engine.cue&&Wl(p,e,e.engine.cue,u,d),p.setTransform(1,0,0,1,0,0),i&&Ul(p,e,i,a,s),f}async function eu(e,t={}){return au(await q(e,t))}async function tu(e,t){let n=t.format??`webm`,r=t.fps??(n===`gif`?15:30),i=t.story?e.engine.model.story:null;if(i&&!i.length)throw Error(`loadmap: the model has no story`);if(!(r>0)||!(i||t.seconds!=null&&t.seconds>0))throw Error(`loadmap: seconds and fps must be positive`);if(n===`gif`&&r>50)throw Error(`loadmap: a GIF plays at most 50 frames a second`);let a=i?[]:[...t.script??[]].sort((e,t)=>e.at-t.at),o=Ll(t.caption),s=()=>{let n=e.engine.cue?.step??e.storyStep(),r=i&&n!=null?i[n]:void 0;return o&&r?{...o,text:r.text,step:`${n+1} of ${i.length}`}:t.caption};await e.ready();let c=e.values(),l=e.storyStep();e.pause(),e.engine.stopStory({cut:!0});try{i&&(e.setStoryStep(null),e.setValues(e.engine.model.defaults()));for(let t of a.filter(e=>e.at<=0))Ql(e,t);await su(e,t.seed??1,t.warmup??2,r);let o=i?e.playStory():t.seconds,c=document.createElement(`canvas`);n===`gif`&&c.getContext(`2d`,{willReadFrequently:!0}),await q(e,{scale:t.scale??1,caption:s()},c);let l=n===`gif`?lu(c,r):await cu(c,n,r),u=Math.round(o*r),d=a.findIndex(e=>e.at>0);for(let n=0;n<u;n++){let i=n/r;for(;d>=0&&d<a.length&&a[d].at<=i;)Ql(e,a[d]),d++;await e.ready(),e.step(1/r),await q(e,{size:{width:c.width,height:c.height},caption:s()},c),await t.onFrame?.(n,c),await l.add(i)}return await l.finish()}finally{(i||e.storyStep()!==l)&&e.setStoryStep(l),e.setValues(c),e.resume()}}async function nu(e,t={}){return iu(e,t,()=>eu(e,t))}async function ru(e,t={}){return iu(e,t,async()=>{let n=t.scale??2,{inner:r,boardH:i}=Xl(e.board().scene);return au(await Zl(e,await q(e,{size:{width:du(r*n),height:du(i*n)}}),n))})}async function iu(e,t,n){await e.ready();let r=e.values();e.pause(),e.engine.stopStory({cut:!0});try{return(t.set||t.scenario!=null)&&e.setValues($l(e,t)),await su(e,t.seed??1,t.warmup??4,30),await n()}finally{e.setValues(r),e.resume()}}function au(e){return new Promise((t,n)=>e.toBlob(e=>e?t(e):n(Error(`loadmap: PNG failed`)),`image/png`))}function ou(e,t=`default`){let n={record:async t=>uu(await tu(e,t)),still:async t=>uu(await nu(e,t)),poster:async t=>uu(await ru(e,t)),svg:t=>iu(e,t,()=>Yl(e,t))};return globalThis.__loadmap??={},globalThis.__loadmap[t]=n,()=>{globalThis.__loadmap?.[t]===n&&delete globalThis.__loadmap[t]}}async function su(e,t,n,r){await e.ready(),e.reset(t);for(let t=0,i=Math.round(n*r);t<i;t++)e.step(1/r)}async function cu(e,t,n){let r=await fu(t,e.width,e.height),i=new Fl({format:t===`mp4`?new Cl({fastStart:`in-memory`}):new Dl,target:new sl}),a=new Mo(e,{codec:r,bitrate:Ka,keyFrameInterval:2});return i.addVideoTrack(a,{frameRate:n}),await i.start(),{add:e=>a.add(e,1/n),finish:async()=>{a.close(),await i.finalize();let e=i.target.buffer;return new Blob([e],{type:t===`mp4`?`video/mp4`:`video/webm`})}}}function lu(e,t){let n=(0,Il.GIFEncoder)(),r=e.getContext(`2d`),i=e=>Math.round(100*e/t),a=0;return{add:async()=>{let{data:t,width:o,height:s}=r.getImageData(0,0,e.width,e.height),c=(0,Il.quantize)(t,256),l=10*(i(a+1)-i(a));a++,n.writeFrame((0,Il.applyPalette)(t,c),o,s,{palette:c,delay:l,repeat:0})},finish:async()=>(n.finish(),new Blob([n.bytes()],{type:`image/gif`}))}}async function uu(e){let t=new Uint8Array(await e.arrayBuffer()),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(n)}var du=e=>Math.max(2,Math.round(e/2)*2);async function fu(e,t,n){let r=e===`mp4`?[`avc`,`vp9`,`av1`]:[`vp9`,`vp8`,`av1`];for(let e of r)if(await qa(e,{width:t,height:n}))return e;throw Error(`loadmap: this browser cannot encode ${e} video`)}async function pu(e,t,n){let r=Kl(e,t,n),i=URL.createObjectURL(new Blob([new XMLSerializer().serializeToString(r)],{type:`image/svg+xml`}));try{let e=new Image;return e.src=i,await e.decode(),e}finally{URL.revokeObjectURL(i)}}var mu=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.for(`react.view_transition`),m=Symbol.iterator;function h(e){return typeof e!=`object`||!e?null:(e=m&&e[m]||e[`@@iterator`],typeof e==`function`?e:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function b(){}b.prototype=y.prototype;function x(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}var S=x.prototype=new b;S.constructor=x,_(S,y.prototype),S.isPureReactComponent=!0;var C=Array.isArray;function w(){}var T={H:null,A:null,T:null,S:null},E=Object.prototype.hasOwnProperty;function D(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function O(e,t){return D(e.type,t,e.props)}function ee(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function te(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function ne(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(w,w):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function re(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,re(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+te(e,0):a,C(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),re(o,r,i,``,function(e){return e})):o!=null&&(ee(o)&&(o=O(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(C(e))for(var u=0;u<e.length;u++)a=e[u],s=l+te(a,u),c+=re(a,r,i,s,o);else if(u=h(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+te(a,u++),c+=re(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return re(ne(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function ie(e,t,n){if(e==null)return e;var r=[],i=0;return re(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function ae(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var j=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function oe(e){var t=T.T,n={};n.types=t===null?null:t.types,T.T=n;try{var r=e(),i=T.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(w,j)}catch(e){j(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),T.T=t}}function se(e){var t=T.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else oe(se.bind(null,e))}var ce={map:ie,forEach:function(e,t,n){ie(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return ie(e,function(){t++}),t},toArray:function(e){return ie(e,function(e){return e})||[]},only:function(e){if(!ee(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=f,e.Children=ce,e.Component=y,e.Fragment=r,e.Profiler=a,e.PureComponent=x,e.StrictMode=i,e.Suspense=l,e.ViewTransition=p,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},e.addTransitionType=se,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=_({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!E.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return D(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)E.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return D(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=ee,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:ae}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=oe,e.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},e.use=function(e){return T.H.use(e)},e.useActionState=function(e,t,n){return T.H.useActionState(e,t,n)},e.useCallback=function(e,t){return T.H.useCallback(e,t)},e.useContext=function(e){return T.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return T.H.useEffect(e,t)},e.useEffectEvent=function(e){return T.H.useEffectEvent(e)},e.useId=function(){return T.H.useId()},e.useImperativeHandle=function(e,t,n){return T.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return T.H.useMemo(e,t)},e.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return T.H.useReducer(e,t,n)},e.useRef=function(e){return T.H.useRef(e)},e.useState=function(e){return T.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return T.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return T.H.useTransition()},e.version=`19.3.1`})),hu=t(((e,t)=>{t.exports=mu()})),gu=2,_u=[``,`limit`,`2nd`,`3rd`],vu=e=>e.targetRange?.low??e.target;function yu(e,t){let n=new Map,r=e.firstLimit;if(!r)return n;let i=e=>l(vu(e),t.searchMax);return n.set(r.id,{rank:1,text:`LIMIT · ${i(r)}`,word:`limit`}),e.ranked.filter(e=>e!==r&&e.util!=null).slice(0,gu).forEach((e,r)=>{let a=vu(e);if(a==null||!Number.isFinite(a)||a>t.load.max)return;let o=r+2;n.set(e.id,{rank:o,text:`${_u[o]} · ${i(e)}`,word:_u[o]})}),n}var bu=e=>e.charAt(0).toUpperCase()+e.slice(1),xu=(e,t)=>!!e.firstLimit&&!!t.firstLimit&&e.firstLimit.id!==t.firstLimit.id;function Su(e,t,n){let r=e.firstLimit,i=t.firstLimit;if(!r||!i||!xu(e,t))return null;let a=l(vu(i),n.searchMax),o=vu(r),s=t.components[r.id]?vu(t.components[r.id]):null;return o!=null&&(s==null||s>o)?`${r.name} fixed: ${i.short} ${i.plural?`are`:`is`} next, at ${a}`:`${bu(i.short)} ${i.plural?`overtake`:`overtakes`} ${r.short}: the limit is ${a} now`}var Cu={establish:1.2,in:1,close:.5,hand:1.8,out:1,back:.4},wu=e=>Math.max(1.6,e+.7),Tu=(e,t,n=!1)=>Cu.in+Cu.close+wu(t)+(n?Cu.hand:0)+Cu.out+e.seconds;function Eu(e,t,n){let r=t,i=Cu.establish;for(let t of e.story){let a=e.evaluate(t.values);i+=Tu(t,n,xu(r,a)),r=a}return i}var Du=e=>({x:0,y:0,w:e.width,h:e.height});function Ou(e,t){return t.stages.map(t=>e.stages[t]?.component).find(Boolean)??t.component??void 0}function ku(e,t,n,r,i){let a=new Set(e.nodes.map(e=>e.id)),o=new Set;for(let e of a)r.a.nodes[e]!==r.b.nodes[e]&&o.add(e);let s=new Set(r.a.edges.map(e=>e.id)),c=new Set(r.b.edges.map(e=>e.id));for(let e of[...r.a.edges,...r.b.edges])if(s.has(e.id)!==c.has(e.id))for(let t of[e.from,e.to])a.has(t)&&o.add(t);let l=t=>e.nodes.filter(e=>t&&Ou(n,e)===t).map(e=>e.id),u=t=>e.nodes.filter(e=>t.has(e.id)).map(e=>e.id);if(i)return u(new Set([...l(i),...o]));if(o.size)return u(o);let d=e.nodes.filter(e=>{let r=Ou(n,e);return r&&t.components[r]?.state!==n.components[r]?.state});return d.length?d.map(e=>e.id):l(n.firstLimit?.id)}var Au=2.5,ju=.8;function Mu(e,t,n={}){let r=Du(e),i=e.nodes.filter(e=>t.includes(e.id));if(!i.length||!(e.width>0&&e.height>0))return r;let a=Math.min(...i.map(e=>e.x)),o=Math.min(...i.map(e=>e.y)),s=Math.max(...i.map(e=>e.x+e.w)),c=Math.max(...i.map(e=>e.y+e.h)),l=e.width/e.height,u=Math.max(s-a+60,(c-o+60)*l,e.width/Au);if(u>ju*e.width&&!n.hold)return r;u=Math.min(u,e.width);let d=u/l,f=(e,t)=>Math.max(0,Math.min(t,e));return{x:f((a+s-u)/2,e.width-u),y:f((o+c-d)/2,e.height-d),w:u,h:d}}var Nu=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;function Pu(e,t,n){let r=Nu(Math.max(0,Math.min(1,n))),i=e.w*(t.w/e.w)**r,a=e.h*(t.h/e.h)**r,o=e.x+e.w/2+(t.x+t.w/2-e.x-e.w/2)*r,s=e.y+e.h/2+(t.y+t.h/2-e.y-e.h/2)*r;return{x:o-i/2,y:s-a/2,w:i,h:a}}var Fu=e=>e.split(`,`)[0].trim(),Iu=2;function Lu(e,t,n,r){if(n.title)return`${r+1} · ${n.title}`;let i=(t,n)=>{if(t===`load`)return`${s(n)}×`;let r=e.params.find(e=>e.id===t)?.def;return typeof n==`boolean`?n?`on`:`off`:r&&r.kind!==`load`&&`format`in r&&r.format?r.format(n):typeof n==`number`?s(n):String(n)},a=Object.keys(n.values).filter(e=>t[e]!==n.values[e]),o=a.slice(0,Iu).map(r=>{let a=r===`load`?e.load.label:e.params.find(e=>e.id===r)?.def.label??r,o=n.values[r],s=t[r];return typeof o==`boolean`?`${Fu(a)} ${i(r,o)}`:`${Fu(a)} ${i(r,s)} → ${i(r,o)}`});a.length>Iu&&o.push(`${a.length-Iu} more`);let c=o.join(`, `)||`Nothing changes`;return`${r+1} · ${n.scenario&&a.length?`${n.scenario}: ${c}`:c}`}function Ru(e,t,n){return n.slice(0,2).map(n=>{let r=e.components[n],i=t?.components[n];if(!r)return``;let a=e=>e==null?`off`:f(e);return i?`${r.name} ${a(r.util)} → ${a(i.util)}`:`${r.name} ${a(r.util)}`}).filter(Boolean).join(` · `)}var zu=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Bu=t(((e,t)=>{t.exports=zu()})),J=hu(),Y=Bu(),Vu=[`var(--lm-s1)`,`var(--lm-s2)`,`var(--lm-s3)`,`var(--lm-s4)`];function Hu(e,t){return t==null?`var(--lm-fg)`:Vu[e.scenarios.findIndex(e=>e.label===t)]??`var(--lm-muted)`}var Uu=e=>e.label??`These values`;function Wu(e,t){let n=e.dateAt(t);return n?_(n,!0):t!=null&&t<=1&&e.growth?`now`:``}function Gu(e,t){if(!t)return``;let[n,r]=[Wu(e,t.low),Wu(e,t.high)];return!r||n===r?n:`${n}–${r}`}function Ku(e){return(0,J.useMemo)(()=>xe(e.model,e.values.load),[e.model,e.values.load])}function qu({lm:e}){let{model:t}=e;return t.scenarios.length?(0,Y.jsxs)(`fieldset`,{className:`lm-scenarios`,children:[(0,Y.jsx)(`legend`,{children:`Scenario`}),t.scenarios.map(n=>(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":e.scenario?.label===n.label,onClick:()=>e.setScenario(n.label),children:[(0,Y.jsx)(`i`,{style:{background:Hu(t,n.label)}}),n.label]},n.label)),!e.scenario&&(0,Y.jsx)(`span`,{className:`lm-own`,children:`your own values`})]}):null}function X(e){return e==null||!Number.isFinite(e)||e===0?``:Math.abs(e-1)<.005?`same`:`${e>1?`+`:`−`}${f(Math.abs(e-1))}`}function Ju({lm:e,title:t=`Scenarios compared`}){let{model:n}=e,r=Ku(e);if(r.rows.length<2)return null;let i=`${f(n.thresholds.target)} target`,a=e=>(0,Y.jsxs)(Y.Fragment,{children:[e?u(e,n.searchMax,!0):l(null),Gu(n,e)&&(0,Y.jsx)(`small`,{children:Gu(n,e)})]});return(0,Y.jsxs)(`div`,{className:`lm-card lm-compare`,children:[(0,Y.jsx)(`h3`,{children:t}),(0,Y.jsx)(`p`,{className:`lm-compare-text`,children:r.text}),(0,Y.jsx)(`div`,{className:`lm-table-wrap`,children:(0,Y.jsxs)(`table`,{className:`lm-table`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{scope:`col`,children:`Scenario`}),(0,Y.jsx)(`th`,{scope:`col`,children:`Limited by`}),(0,Y.jsx)(`th`,{scope:`col`,children:i}),(0,Y.jsx)(`th`,{scope:`col`,children:`Runs out`})]})}),(0,Y.jsx)(`tbody`,{children:r.rows.map(t=>(0,Y.jsxs)(`tr`,{"data-scenario":t.label,"aria-current":e.scenario?.label===t.label||void 0,children:[(0,Y.jsxs)(`th`,{scope:`row`,children:[(0,Y.jsx)(`i`,{style:{background:Hu(n,t.label)}}),t.label]}),(0,Y.jsx)(`td`,{className:`lm-text`,children:t.firstLimit?.name??`—`}),(0,Y.jsx)(`td`,{"data-multiple":t.target??``,"data-high":t.targetRange?.high??``,children:a(t.targetRange)}),(0,Y.jsx)(`td`,{"data-multiple":t.full??``,"data-high":t.fullRange?.high??``,children:a(t.fullRange)})]},t.label))})]})}),(0,Y.jsxs)(`h3`,{children:[i,`, by component`]}),(0,Y.jsx)(`div`,{className:`lm-table-wrap`,children:(0,Y.jsxs)(`table`,{className:`lm-table`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{scope:`col`,children:`Component`}),r.rows.map(e=>(0,Y.jsx)(`th`,{scope:`col`,children:e.label},e.label))]})}),(0,Y.jsx)(`tbody`,{children:n.componentIds.map((e,t)=>(0,Y.jsxs)(`tr`,{"data-component":e,children:[(0,Y.jsx)(`th`,{scope:`row`,children:r.rows[0].components[t].name}),r.rows.map((e,r)=>{let i=e.components[t];return(0,Y.jsxs)(`td`,{"data-multiple":i.target??``,children:[i.targetRange==null?`off`:u(i.targetRange,n.searchMax,!0),r>0&&X(i.change)&&(0,Y.jsx)(`small`,{children:X(i.change)})]},e.label)})]},e))})]})})]})}function Z(e){let t=(0,J.useRef)(null),[n,r]=(0,J.useState)({width:e,height:0});return(0,J.useEffect)(()=>{let e=t.current;if(!e)return;let n=new ResizeObserver(([t])=>{let n=Math.round(t?.contentRect.width??e.clientWidth),i=Math.round(t?.contentRect.height??e.clientHeight);n>0&&r(e=>e.width===n&&e.height===i?e:{width:n,height:i})});return n.observe(e),()=>n.disconnect()},[]),[t,n]}function Q(e){let{model:t,values:n}=e,r=JSON.stringify({...n,load:null});return(0,J.useMemo)(()=>Ce(t,{...n,load:t.load.default}),[t,r])}function Yu(e){let[t,n]=(0,J.useState)(()=>(e,t)=>e.length*6.7);return(0,J.useLayoutEffect)(()=>{let t=e.current&&document.createElement(`canvas`).getContext(`2d`);if(!t)return;let r=getComputedStyle(e.current).getPropertyValue(`--lm-mono`).trim()||`monospace`;n(()=>(e,n=400)=>(t.font=`${n} 11px ${r}`,t.measureText(e).width))},[e]),t}function Xu(e,t,n){let r=[];for(let i=Math.floor(Math.log10(e));i<=Math.ceil(Math.log10(t));i++)for(let a of n?[1,2,5]:[1]){let n=a*10**i;n>=e*.999&&n<=t*1.001&&r.push(Number(n.toPrecision(6)))}return r}function Zu({lm:e,title:t=`Headroom`}){let{model:n,values:r}=e,i=Q(e),[a,{width:o}]=Z(640),[c,d]=(0,J.useState)(null),p=(0,J.useId)().replace(/:/g,``),m=Yu(a),h=(0,J.useRef)(null);(0,J.useLayoutEffect)(()=>{let e=h.current;e&&c!=null&&(e.style.left=`${Math.max(0,Math.min(C(E[c])+10,v-e.offsetWidth))}px`)});let g=!!n.growth,_={l:44,r:14,t:14,b:g?40:26},v=o,y=Math.round(Math.min(300,Math.max(200,v*.45))),b=v-_.l-_.r,x=y-_.t-_.b,S=Math.max(1.5,n.thresholds.full*1.5),C=e=>_.l+b*Math.log(e/i.from)/Math.log(i.to/i.from),w=e=>_.t+x*(1-Math.min(e,S*1.2)/S),T=e=>{let t=``,n=!1;for(let[r,i]of e)i==null?n=!1:(t+=`${n?`L`:`M`}${C(r).toFixed(1)} ${w(i).toFixed(1)}`,n=!0);return t},E=i.lines[0]?.envelope.map(([e])=>e)??[],D=i.lines.find(e=>e.selected),O=v>=480,ee=Xu(i.from,i.to,O),k=e=>O||Number.isInteger(Math.log10(e)),A=e=>{let t=0;for(let n=1;n<E.length;n++)Math.abs(C(E[n])-e)<Math.abs(C(E[t])-e)&&(t=n);return t},te=e=>{let t=e.currentTarget.ownerSVGElement.getBoundingClientRect();d(A(e.clientX-t.left))},ne=e=>{let t=c??A(C(Math.min(i.to,Math.max(i.from,r.load))));e.key===`ArrowRight`||e.key===`ArrowLeft`?(e.preventDefault(),d(Math.max(0,Math.min(E.length-1,t+(e.key===`ArrowRight`?1:-1))))):e.key===`Escape`&&d(null)},re=e=>{let t=e.upper.flatMap(([t,n],r)=>{let i=e.lower[r][1];return n==null||i==null?[]:[[t,n,i]]});if(t.length<2)return``;let n=t.map(([e,t])=>`${C(e).toFixed(1)} ${w(t).toFixed(1)}`),r=t.map(([e,,t])=>`${C(e).toFixed(1)} ${w(t).toFixed(1)}`).reverse();return`M${n.join(`L`)}L${r.join(`L`)}Z`},ie=(e,t)=>e&&ae(e)?u(e,n.searchMax):l(t,n.searchMax),ae=e=>l(e.low,n.searchMax)!==l(e.high,n.searchMax),j=i.lines.map(e=>`${Uu(e)} reaches the ${f(n.thresholds.target)} target at ${ie(e.targetRange,e.target)} and ${f(n.thresholds.full)} at ${ie(e.fullRange,e.full)}`).join(`; `),oe=C(Math.min(i.to,Math.max(i.from,r.load))),se=c==null?null:E[c],ce={x:0,textAnchor:`start`},le={x:v,textAnchor:`end`},ue=(e,t,n,r=4)=>{let i={x:e+r,textAnchor:`start`},a={x:e-r,textAnchor:`end`},o=e+r+t<=v,s=e-r-t>=0;return(n===`right`||!s)&&o?i:s?a:e<v/2?ce:le},de=(e,t)=>e-t/2<0?ce:e+t/2>v?le:{x:e,textAnchor:`middle`},fe=`shown: ${s(r.load)}×`,pe=(e,t,n)=>(0,Y.jsx)(`text`,{...ue(t,m(e,600),`left`,6),y:n,className:`lm-mark`,children:e});return(0,Y.jsxs)(`div`,{className:`lm-card lm-headroom`,children:[(0,Y.jsx)(`h3`,{children:t}),i.lines.length>1&&(0,Y.jsxs)(`div`,{className:`lm-legend`,children:[i.lines.map(e=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(n,e.label)}}),Uu(e)]},Uu(e))),D&&(0,Y.jsxs)(`span`,{children:[`thin lines: each component of `,Uu(D)]})]}),(0,Y.jsxs)(`div`,{className:`lm-chart`,ref:a,role:`slider`,"aria-label":`Utilization over the load multiple. ${j}.`,"aria-valuemin":i.from,"aria-valuemax":i.to,"aria-valuenow":se??r.load,"aria-valuetext":se==null?`${s(r.load)}×`:`${s(se)}×: ${i.lines.map(e=>`${Uu(e)} ${e.envelope[c][1]==null?`off`:f(e.envelope[c][1])}`).join(`, `)}`,tabIndex:0,onKeyDown:ne,onBlur:()=>d(null),children:[(0,Y.jsxs)(`svg`,{width:v,height:y,viewBox:`0 0 ${v} ${y}`,"aria-hidden":`true`,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`clipPath`,{id:p,children:(0,Y.jsx)(`rect`,{x:_.l,y:_.t,width:b,height:x+2})})}),[0,n.thresholds.target,n.thresholds.full].map(e=>(0,Y.jsxs)(`g`,{children:[(0,Y.jsx)(`line`,{x1:_.l,x2:v-_.r,y1:w(e),y2:w(e),stroke:`var(--lm-line)`}),(0,Y.jsx)(`text`,{x:_.l-6,y:w(e)+4,textAnchor:`end`,className:`lm-axis`,children:f(e)})]},e)),(0,Y.jsx)(`text`,{x:v-_.r,y:w(n.thresholds.target)-5,textAnchor:`end`,className:`lm-axis`,children:`target`}),ee.map(e=>{let t=`${s(e)}×`,r=g&&e>1?Wu(n,e):``;return(0,Y.jsxs)(`g`,{className:`lm-axis`,children:[(0,Y.jsx)(`line`,{x1:C(e),x2:C(e),y1:_.t+x,y2:_.t+x+4,stroke:`var(--lm-line)`}),k(e)&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`text`,{...de(C(e),m(t)),y:_.t+x+16,children:t}),r&&(0,Y.jsx)(`text`,{...de(C(e),m(r)),y:_.t+x+30,children:r})]})]},e)}),(0,Y.jsxs)(`g`,{clipPath:`url(#${p})`,children:[[...i.lines].sort((e,t)=>Number(e.selected)-Number(t.selected)).map(e=>e.band?(0,Y.jsx)(`path`,{"data-band":Uu(e),d:re(e.band),fill:Hu(n,e.label),fillOpacity:e.selected?.2:.08},Uu(e)):null),D?.components.map(e=>(0,Y.jsx)(`path`,{d:T(e.points),fill:`none`,stroke:`var(--lm-muted)`,strokeOpacity:`.55`,strokeWidth:`1`},e.id)),[...i.lines].sort((e,t)=>Number(e.selected)-Number(t.selected)).map(e=>(0,Y.jsx)(`path`,{"data-line":Uu(e),d:T(e.envelope),fill:`none`,stroke:Hu(n,e.label),strokeWidth:`2`,strokeLinejoin:`round`,strokeLinecap:`round`},Uu(e)))]}),(0,Y.jsx)(`line`,{x1:oe,x2:oe,y1:_.t,y2:_.t+x,stroke:`var(--lm-fg)`,strokeOpacity:`.45`}),(0,Y.jsx)(`text`,{...ue(oe,m(fe),`right`),y:_.t+10,className:`lm-axis`,children:fe}),i.lines.flatMap(e=>[[`target`,e.targetRange,n.thresholds.target],[`full`,e.fullRange,n.thresholds.full]].map(([t,r,a])=>{if(!e.band||!r||!Number.isFinite(r.low)||r.low>i.to)return null;let[o,s]=[C(Math.max(i.from,r.low)),C(Math.min(i.to,r.high))],c=w(a);return(0,Y.jsxs)(`g`,{"data-range":t,"data-scenario":Uu(e),"data-low":r.low,"data-high":r.high,stroke:Hu(n,e.label),strokeWidth:e.selected?3:2,strokeOpacity:e.selected?1:.6,children:[(0,Y.jsx)(`line`,{x1:o,x2:s,y1:c,y2:c}),(0,Y.jsx)(`line`,{x1:o,x2:o,y1:c-5,y2:c+5}),Number.isFinite(r.high)&&r.high<=i.to&&(0,Y.jsx)(`line`,{x1:s,x2:s,y1:c-5,y2:c+5})]},`${Uu(e)}/${t}/range`)})),i.lines.flatMap(e=>[[`target`,e.target,e.targetRange,n.thresholds.target],[`full`,e.full,e.fullRange,n.thresholds.full]].map(([t,r,a,o])=>r!=null&&Number.isFinite(r)&&r>=i.from&&r<=i.to?(0,Y.jsxs)(`g`,{children:[(0,Y.jsx)(`circle`,{"data-crossing":t,"data-scenario":Uu(e),"data-multiple":r,cx:C(r),cy:w(o),r:`4`,fill:Hu(n,e.label),stroke:`var(--lm-surface)`,strokeWidth:`2`}),e.selected&&pe(a&&ae(a)?u(a,n.searchMax,!0):l(r,n.searchMax),C(a&&ae(a)?Math.max(i.from,a.low):r),w(o)-8)]},`${Uu(e)}/${t}`):null)),se!=null&&(0,Y.jsx)(`line`,{x1:C(se),x2:C(se),y1:_.t,y2:_.t+x,stroke:`var(--lm-fg)`,strokeOpacity:`.8`}),(0,Y.jsx)(`rect`,{x:_.l,y:_.t,width:b,height:x,fill:`transparent`,onPointerMove:te,onPointerDown:te,onPointerLeave:()=>d(null)})]}),c!=null&&se!=null&&(0,Y.jsxs)(`div`,{className:`lm-tip`,role:`status`,ref:h,style:{left:C(se)+10,top:_.t},children:[(0,Y.jsxs)(`b`,{children:[s(se),`×`,Wu(n,se)&&` · ${Wu(n,se)}`]}),i.lines.map(e=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(n,e.label)}}),(0,Y.jsx)(`strong`,{children:e.envelope[c][1]==null?`off`:f(e.envelope[c][1])}),` `,Uu(e)]},Uu(e))),D?.components.map(e=>(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[(0,Y.jsx)(`strong`,{children:e.points[c][1]==null?`off`:f(e.points[c][1])}),` `,e.name]},e.id))]})]})]})}var Qu={off:`var(--lm-line)`,ok:`var(--lm-ok)`,warn:`var(--lm-warn)`,over:`var(--lm-drop)`},$u=e=>[`accent`,`alt`,`ok`,`warn`,`drop`,`muted`].includes(e)?`var(--lm-${e})`:e;function ed({lm:e,legend:t=!0,onNodeClick:n,selected:r=null}){let{scene:i,engine:a,reducedMotion:o}=e,s=(0,J.useRef)(n);s.current=n;let[c]=(0,J.useState)(()=>e=>s.current?.(e)),l=(0,J.useRef)(null),u=(0,J.useRef)(null),d=(0,J.useRef)(null),f=(0,J.useRef)(null),p=(0,J.useRef)(null),m=(0,J.useRef)(null),h=(0,J.useRef)(null),g=e.fullScreen,[_,v]=(0,J.useState)(null),y=(0,J.useId)();(0,J.useLayoutEffect)(()=>{i&&a.setScene(i,{cut:o})},[a,i,o]);let b=(0,J.useSyncExternalStore)(a.subscribe,()=>a.frameId),x=a.frame,S=(0,J.useSyncExternalStore)(a.subscribe,()=>a.handover);(0,J.useEffect)(()=>{a.bind(l.current,u.current)},[a,x,o]),(0,J.useLayoutEffect)(()=>{a.applyCamera(),a.drawHalos()}),(0,J.useEffect)(()=>{e.root&&a.readColors(e.root)},[a,i,e.root]),(0,J.useEffect)(()=>{a.drawnValues=JSON.stringify(e.values),a.drawnFocus=e.focus,a.drawnFrame=b}),(0,J.useEffect)(()=>{let e=p.current;if(!e)return;let t=new ResizeObserver(()=>a.resize());return t.observe(e),()=>t.disconnect()},[a]);let C=()=>{let e=d.current,t=p.current,n=a.camera,r=h.current;if(!n&&!a.cue)return;if(!e||!t||!a.frame||e.scrollHeight<=e.clientHeight){r?.style.removeProperty(`top`),r?.style.removeProperty(`bottom`);return}let i=t.clientHeight/a.frame.height;n&&(e.scrollTop=t.offsetTop+(n.y+n.h/2)*i-e.clientHeight/2),r&&(r.style.top=`${Math.max(0,e.scrollTop-t.offsetTop+(f.current?.offsetHeight??0))}px`,r.style.bottom=`auto`)};(0,J.useEffect)(()=>{let e=0,t=0,n=r=>{let i=t?Math.min(.05,(r-t)/1e3):0;t=r,!a.paused&&a.scene&&(a.step(i,{particles:!o}),a.draw({particles:!o}),C()),e=requestAnimationFrame(n)};return e=requestAnimationFrame(n),()=>cancelAnimationFrame(e)},[a,o]);let w=(0,J.useRef)(!1);(0,J.useEffect)(()=>{w.current&&!g&&m.current?.focus(),w.current=g},[g]),(0,J.useEffect)(()=>{let t=d.current,n=f.current,r=e.root;if(!g||!i||!t||!n||!r)return;let a=e=>Number.parseFloat(e)||0,o=()=>{let e=getComputedStyle(r),o=a(e.paddingTop)+a(e.paddingBottom),s=t=>{let n=getComputedStyle(t);n.display!==`none`&&n.position!==`absolute`&&n.position!==`fixed`&&(o+=a(e.rowGap)+(a(n.flexGrow)>0?a(n.minHeight):t.offsetHeight))};for(let e of r.children)e!==t&&s(e);getComputedStyle(r,`::after`).content!==`none`&&(o+=a(e.rowGap));let c=r.clientHeight-o-n.offsetHeight-a(getComputedStyle(t).rowGap),l=Math.min(t.clientWidth,c*i.width/i.height);t.style.setProperty(`--lm-fit`,`${Math.max(0,Math.floor(l))}px`)},s=new ResizeObserver(o),c=()=>{s.disconnect(),s.observe(n),s.observe(r);for(let e of r.children)s.observe(e)};c();let l=new MutationObserver(()=>{c(),o()});return l.observe(r,{childList:!0,attributeFilter:[`data-mode`]}),()=>{s.disconnect(),l.disconnect(),t.style.removeProperty(`--lm-fit`)}},[g,i,e.root]);let{setFullScreenMode:T,fullScreenMode:E}=e,D=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let t=e.root;if(!g||!t||e.fill)return;let n=e=>{if(e.key!==`f`&&e.key!==`F`||e.ctrlKey||e.metaKey||e.altKey||td(e.composedPath()[0]??null)||t.querySelector(`:scope > [data-drawer]`)||(e.preventDefault(),e.repeat))return;let n=E===`focus`?`panels`:`focus`;document.activeElement?.closest(`.lm-dock, .lm-line`)&&D.current?.querySelector(`[data-mode="${n}"]`)?.focus(),T(n)};return document.addEventListener(`keydown`,n),()=>document.removeEventListener(`keydown`,n)},[g,E,T,e.root,e.fill]),(0,Y.jsxs)(`div`,{className:`lm-wrap`,ref:d,children:[(0,Y.jsxs)(`div`,{className:`lm-bar`,ref:f,children:[t?(0,Y.jsx)(nd,{lm:e}):(0,Y.jsx)(`span`,{}),(0,Y.jsxs)(`span`,{className:`lm-tools`,children:[g&&!e.fill&&(0,Y.jsx)(`fieldset`,{className:`lm-modes`,"aria-label":`Full screen shows (F)`,ref:D,children:[`panels`,`focus`].map(e=>(0,Y.jsx)(`button`,{type:`button`,"data-mode":e,"aria-pressed":E===e,"aria-keyshortcuts":`F`,onClick:()=>T(e),children:e===`panels`?`Panels`:`Focus`},e))}),!e.fill&&(0,Y.jsx)(`button`,{type:`button`,className:`lm-btn`,onClick:e.toggleFullScreen,"aria-pressed":g,ref:m,children:g?`✕ Close`:`⤢ Full screen`})]})]}),(0,Y.jsxs)(`div`,{className:`lm-board`,ref:p,style:x?{aspectRatio:`${x.width} / ${x.height}`}:{minHeight:240},children:[x&&(0,Y.jsx)(id,{lm:e,scene:x,hand:S,svgRef:l,rates:o,setTip:v,onClick:n?c:void 0,selected:r}),(0,Y.jsx)(`canvas`,{ref:u,hidden:o}),e.cue&&(0,Y.jsxs)(`div`,{className:`lm-title`,"data-top":e.cue.top||void 0,"aria-hidden":`true`,ref:h,children:[(0,Y.jsx)(`b`,{children:e.cue.title}),e.cue.detail&&(0,Y.jsx)(`span`,{children:e.cue.detail})]})]}),x&&_&&!e.storyPlaying&&(0,Y.jsx)(pd,{lm:e,scene:x,id:_.id,board:p.current,detailId:y})]})}function td(e){return e instanceof HTMLElement?e.isContentEditable||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement?!0:e instanceof HTMLInputElement&&![`range`,`checkbox`,`radio`,`button`,`submit`,`reset`,`image`,`file`,`color`].includes(e.type):!1}function nd({lm:e}){let t=e.view.def.flows,n=Object.values(e.ev.overload).some(e=>e.merge)||Object.values(e.ev.stages).some(e=>e.kind===`fanout`);return(0,Y.jsxs)(`div`,{className:`lm-legend`,children:[Object.entries(t).map(([e,t])=>(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:$u(t.color)}}),t.label??e]},e)),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-ok)`}}),`done`]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-drop)`}}),`dropped or rejected`]}),n&&(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`i`,{style:{background:`var(--lm-muted)`}}),`superseded or unread`]}),(0,Y.jsx)(`span`,{children:e.reducedMotion?`line width: rate`:`one dot ≈ ${e.engine.sim.dotScale.toLocaleString(`en-US`)} a second · ${e.engine.sim.speed}× speed`})]})}var rd=(e,t)=>Ou(e.ev,t),id=(0,J.memo)(function({lm:e,scene:t,hand:n,svgRef:r,rates:i,setTip:a,onClick:o,selected:s}){let c=(0,J.useId)().replace(/:/g,``),{labels:u,ev:d}=e,p=t=>{let n=rd(e,t);return n?d.components[n]?.state??null:null},m=t=>{let n=rd(e,t),r=n?d.components[n]:void 0,i=u.nodes[t.id]?.title;if(!r)return o?{tabIndex:0,role:`button`,className:`lm-node`,"aria-label":i??t.id,"aria-pressed":s===t.id,onClick:()=>o(t.id),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),o(t.id))}}:{};let c=()=>{a(e=>e?.pinned&&e.id===t.id?null:{id:t.id,pinned:!0}),o?.(t.id)};return{tabIndex:0,role:`button`,className:`lm-node`,"aria-label":`${i&&i!==r.name?`${i}, `:``}${r.name}: ${r.util==null?`switched off`:f(r.util)}`,...o?{"aria-pressed":s===t.id}:{},onPointerEnter:e=>e.pointerType===`mouse`&&a(e=>e?.pinned?e:{id:t.id,pinned:!1}),onPointerLeave:e=>e.pointerType===`mouse`&&a(e=>e?.pinned?e:null),onFocus:()=>a(e=>e?.pinned?e:{id:t.id,pinned:!1}),onBlur:()=>a(e=>e?.pinned?e:null),onClick:c,onKeyDown:e=>{e.key===`Escape`&&a(null),(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),c())}}},h=t.nodes.map(e=>u.nodes[e.id]?.title).join(`, `),g=yu(d,e.model),_=e.scene&&new Set(e.scene.nodes.map(e=>e.id)),v=n=>t.nodes.filter(t=>rd(e,t)===n&&(!_||_.has(t.id))),y=d.firstLimit,b=n&&n.from!==y?.id&&d.components[n.from]?d.components[n.from]:null,x=b?v(b.id):[],S=b&&g.get(b.id),C=b&&(S?S.text:`now ${l(vu(b),e.model.searchMax)}`);return(0,Y.jsxs)(`svg`,{ref:r,viewBox:`0 0 ${t.width} ${t.height}`,role:`group`,"aria-label":`Diagram: ${h}`,children:[(0,Y.jsx)(`defs`,{children:(0,Y.jsx)(`marker`,{id:c,viewBox:`0 0 10 10`,refX:`9`,refY:`5`,markerWidth:`7`,markerHeight:`7`,orient:`auto-start-reverse`,children:(0,Y.jsx)(`path`,{d:`M0 0 L10 5 L0 10 z`,fill:`var(--lm-muted)`})})}),i&&(0,Y.jsx)(sd,{lm:e,scene:t}),t.edges.map(e=>(0,Y.jsx)(od,{e,text:u.edges[e.id],marker:c},e.id)),t.nodes.map(t=>(0,Y.jsx)(ld,{n:t,state:p(t),title:u.nodes[t.id]?.title,sub:u.nodes[t.id]?.sub,lm:e,focused:!!e.focus&&rd(e,t)===e.focus,selected:s===t.id,handlers:m(t)},t.id)),b&&x.map(e=>(0,Y.jsx)(dd,{n:e,kind:`was`,component:b.id},`was-${e.id}`)),y&&v(y.id).map((e,t)=>(0,Y.jsx)(dd,{n:e,kind:`limit`,component:y.id,tag:t?void 0:g.get(y.id)?.text},e.id)),[...g].map(([e,t])=>{let n=t.rank>1&&e!==b?.id?v(e)[0]:void 0;return n&&(0,Y.jsx)(fd,{n,text:t.text},e)}),C&&x[0]&&(0,Y.jsx)(fd,{n:x[0],text:C,was:!S})]})}),ad=e=>e.map(([e,t],n)=>`${n?`L`:`M`}${e} ${t}`).join(` `);function od({e,text:t,marker:n}){let r=e.draw!=null&&e.draw<1;return(0,Y.jsxs)(`g`,{opacity:e.fade,children:[(0,Y.jsx)(`path`,{d:ad(e.points),fill:`none`,stroke:`var(--lm-muted)`,strokeOpacity:`.7`,markerEnd:r?void 0:`url(#${n})`,...r?{pathLength:1,strokeDasharray:1,strokeDashoffset:1-e.draw}:{}}),e.label&&t&&(0,Y.jsx)(`text`,{x:e.label.x+e.label.w/2,y:e.label.y+e.label.h/2+4,textAnchor:`middle`,fontSize:`11`,fill:`var(--lm-muted)`,children:t})]})}function sd({lm:e,scene:t}){let{ev:n}=e,r=e.view.def.flows,i=Math.max(1e-9,...Object.values(n.flows)),a=[];for(let e of Object.keys(r)){let o=[t.flowFrom[e],...(n.routes[e]??[]).map(e=>t.stageNode[e])].filter((e,t,n)=>e&&e!==n[t-1]),s=n.flows[e]??0,c=o.slice(1).map((e,t)=>[o[t],e,s]),l=(n.routes[e]??[]).at(-1),u=l?n.stages[l]:void 0;if(u?.kind===`fanout`)for(let n of u.to[e]??[])c.push([t.stageNode[l],t.stageNode[n.stage],s*n.share]);for(let[n,o,s]of c){let c=t.edges.find(e=>e.from===n&&e.to===o);c&&a.push((0,Y.jsx)(`path`,{d:ad(c.points),fill:`none`,stroke:$u(r[e].color),strokeOpacity:`.45`,strokeWidth:1.5+6*Math.min(s,i)/i},`${e}:${c.id}`))}}return(0,Y.jsx)(`g`,{children:a})}function cd({s:e,children:t,anchor:n=`middle`,fill:r=`currentColor`,opacity:i}){return(0,Y.jsx)(`text`,{x:e.x,y:e.y,fontSize:e.size,fontWeight:e.weight,textAnchor:n,fill:r,opacity:i,children:t})}function ld({n:e,state:t,title:n,sub:r,lm:i,focused:a,selected:o,handlers:s}){let c=t?Qu[t]:`var(--lm-line)`,l=i.view.def.flows,u=e.kind===`pool`?i.ev.stages[e.stages[0]??``]:void 0,d=u?.kind===`workers`?u.running:e.members.length,f=t=>t>=d&&t<(u?.kind===`workers`?u.pods:e.members.length),p=e.fade==null?void 0:`translate(${e.x+e.w/2} ${e.y+e.h/2}) scale(${.92+.08*e.fade}) translate(${-e.x-e.w/2} ${-e.y-e.h/2})`;return(0,Y.jsxs)(`g`,{style:{color:`var(--lm-fg)`},opacity:e.fade,transform:p,"data-node":e.id,"data-focus":a||void 0,"data-selected":o||void 0,...s,children:[e.shape===`cylinder`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`path`,{d:`M${e.x} ${e.y+6} A${e.w/2} 6 0 0 1 ${e.x+e.w} ${e.y+6} V${e.y+e.h-6} A${e.w/2} 6 0 0 1 ${e.x} ${e.y+e.h-6} Z`,fill:`var(--lm-surface)`,stroke:c,strokeWidth:`1.5`}),(0,Y.jsx)(`path`,{d:`M${e.x} ${e.y+6} A${e.w/2} 6 0 0 0 ${e.x+e.w} ${e.y+6}`,fill:`none`,stroke:c,strokeWidth:`1.5`})]}):(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`6`,fill:`var(--lm-surface)`,stroke:c,strokeWidth:`1.5`}),(0,Y.jsx)(cd,{s:e.title,children:n}),e.sub&&r&&(0,Y.jsx)(cd,{s:e.sub,fill:`var(--lm-muted)`,children:r}),e.members.map((e,t)=>(0,Y.jsxs)(`g`,{"data-idle":f(t)||void 0,opacity:f(t)?.45*(e.fade??1):e.fade,children:[(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`4`,fill:`none`,stroke:`var(--lm-line)`,strokeDasharray:f(t)?`3 3`:void 0}),(0,Y.jsx)(cd,{s:e.spot,anchor:`start`,fill:`var(--lm-muted)`,children:e.label})]},e.label)),e.groups.map((e,t)=>(0,Y.jsx)(cd,{s:e.spot,anchor:`start`,fill:$u(l[e.flow]?.color??`muted`),opacity:e.fade,children:e.text},`${e.flow}#${t}`)),e.cells.map(e=>(0,Y.jsx)(`rect`,{x:e.x,y:e.y,width:e.w,height:e.h,rx:`1.5`,opacity:e.fade,fill:`var(--lm-lane)`,stroke:$u(l[e.flow]?.color??`muted`),strokeOpacity:`.6`},`${e.stage}/${e.flow}/${e.index}`)),e.slots.map(t=>(0,Y.jsxs)(`g`,{opacity:t.fade,children:[(0,Y.jsx)(`rect`,{x:t.x,y:t.y,width:t.w,height:t.h,rx:`2`,fill:`var(--lm-surface)`,stroke:`currentColor`,strokeOpacity:`.45`}),(0,Y.jsx)(`rect`,{"data-slot":t.index,"data-stage":e.stages[0],"data-y":t.y,"data-s":t.w,x:t.x+1,y:t.y+t.h-1,width:t.w-2,height:0,rx:`1`,fill:`var(--lm-accent)`})]},t.index)),o&&(0,Y.jsx)(`rect`,{className:`lm-selected`,x:e.x-3,y:e.y-3,width:e.w+6,height:e.h+6,rx:`8`,fill:`none`,stroke:`var(--lm-accent)`,strokeWidth:`2.5`}),a&&(0,Y.jsx)(`rect`,{className:`lm-focus`,x:e.x-5,y:e.y-5,width:e.w+10,height:e.h+10,rx:`9`,fill:`none`,stroke:`var(--lm-accent)`,strokeWidth:`2`,strokeDasharray:`5 4`})]})}var ud=(e,t)=>Math.ceil(12+e.length*t);function dd({n:e,kind:t,component:n,tag:r}){let i={x:e.x-7,y:e.y-7,width:e.w+14,height:e.h+14,rx:10},a=r?ud(r,5.6):0,o=e.x+e.w+7-a-8;return(0,Y.jsxs)(`g`,{className:`lm-halo`,"data-halo":t,"data-component":n,"data-fade":e.fade??1,pointerEvents:`none`,children:[(0,Y.jsxs)(`g`,{"data-ring":``,"data-cx":e.x+e.w/2,"data-cy":e.y+e.h/2,children:[(0,Y.jsx)(`rect`,{...i,"data-glow":``,fill:`none`,stroke:`var(--lm-drop)`,strokeWidth:`10`,strokeOpacity:`.22`}),(0,Y.jsx)(`rect`,{...i,fill:`none`,stroke:`var(--lm-drop)`,strokeWidth:`2.5`})]}),r&&(0,Y.jsxs)(`g`,{"data-tag":r,children:[(0,Y.jsx)(`rect`,{x:o,y:i.y-7.5,width:a,height:`15`,rx:`3`,fill:`var(--lm-drop)`}),(0,Y.jsx)(`text`,{x:o+a/2,y:i.y+3.5,textAnchor:`middle`,fontSize:`9.5`,fontWeight:`600`,letterSpacing:`.06em`,fill:`var(--lm-surface)`,children:r})]})]})}function fd({n:e,text:t,was:n}){let r=ud(t,4.9),i=e.x+e.w-r-6;return(0,Y.jsx)(`g`,{className:`lm-badge`,"data-badge":t,"data-was":n||void 0,opacity:e.fade,pointerEvents:`none`,children:(0,Y.jsxs)(`g`,{"data-show":``,children:[(0,Y.jsx)(`rect`,{x:i,y:e.y-7,width:r,height:`14`,rx:`7`,fill:`var(--lm-surface)`,stroke:`var(--lm-muted)`}),(0,Y.jsx)(`text`,{x:i+r/2,y:e.y+3,textAnchor:`middle`,fontSize:`8.5`,fontWeight:`600`,fill:`var(--lm-muted)`,children:t})]})})}function pd({lm:e,scene:t,id:n,board:r,detailId:i}){let{model:a,ev:o}=e,d=t.nodes.find(e=>e.id===n),p=d&&rd(e,d),m=Ku(e),h=a.scenarios.length>1?m.rows:[];(0,J.useEffect)(()=>{let e=r?.querySelector(`[data-node="${CSS.escape(n)}"]`);return e?.setAttribute(`aria-describedby`,i),()=>e?.removeAttribute(`aria-describedby`)},[r,n,i]);let g=p?o.components[p]:void 0,_=(0,J.useRef)(null),v=d&&`${d.x} ${d.y} ${d.w} ${d.h}`;if((0,J.useLayoutEffect)(()=>{let e=_.current,n=e?.offsetParent;if(!e||!d||!r||!(n instanceof HTMLElement))return;let i=()=>{let i=r.clientWidth/t.width,a=n.getBoundingClientRect(),o=e=>e-a.top-n.clientTop+n.scrollTop,s=0,c=innerHeight;for(let e=n;e;e=e.parentElement){if(getComputedStyle(e).overflowY===`visible`)continue;let t=e.getBoundingClientRect();s=Math.max(s,t.top),c=Math.min(c,t.bottom)}let[l,u]=[o(s)+4,o(c)-4],f=e.offsetHeight,p=r.offsetTop+d.y*i,m=r.offsetTop+(d.y+d.h)*i,h=m+6,g=p-6-f,_=(d.y+d.h/2<t.height/2?[h,g]:[g,h]).find(e=>e>=l&&e+f<=u),v=u-m>=p-l?h:g;e.style.top=`${Math.max(l,Math.min(_??v,u-f))}px`,e.style.left=`${Math.max(0,Math.min(r.offsetLeft+d.x*i,n.clientWidth-e.offsetWidth))}px`};i();let a=new ResizeObserver(i);return a.observe(e),a.observe(r),document.addEventListener(`scroll`,i,{capture:!0,passive:!0}),addEventListener(`resize`,i),()=>{a.disconnect(),document.removeEventListener(`scroll`,i,{capture:!0}),removeEventListener(`resize`,i)}},[v,r,t]),!d||!g||!r)return null;let y=(e,t)=>e?N(e,a.searchMax,a.dateAt):l(t,a.searchMax),b=e=>Math.abs(e)>=1e3?c(e):s(e),x=g.capacity,S=yu(o,a).get(g.id);return(0,Y.jsxs)(`div`,{id:i,className:`lm-tip lm-detail`,role:`tooltip`,ref:_,children:[(0,Y.jsxs)(`b`,{children:[g.name,S&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":S.rank===1?`first`:`rank`,children:S.word})]}),g.util==null||!x?(0,Y.jsx)(`span`,{children:`switched off`}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`strong`,{children:f(g.util)}),` · `,b(g.demand??0),` of `,s(x.value),` `,x.unit,x.within?` ±${f(x.within)}`:``]}),(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[`capacity`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":x.provenance,children:x.provenance}),x.source?`, ${x.source}`:``]}),(0,Y.jsxs)(`span`,{children:[f(a.thresholds.target),` at `,y(g.targetRange,g.target)]}),(0,Y.jsxs)(`span`,{children:[f(a.thresholds.full),` at `,y(g.fullRange,g.full)]}),md(e,d).map(e=>(0,Y.jsx)(`span`,{children:e},e)),g.over&&(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[`Past `,f(a.thresholds.full),`: `,g.over,`.`]})]}),h.length>0&&(0,Y.jsxs)(`span`,{className:`lm-sub`,children:[f(a.thresholds.target),` by scenario:`,` `,h.map((e,t)=>{let n=e.components.find(e=>e.id===p);return(0,Y.jsxs)(`span`,{className:`lm-nowrap`,children:[t>0&&` · `,(0,Y.jsx)(`b`,{className:`lm-key`,style:{background:Hu(a,e.label)}}),e.label,` `,n?.targetRange==null?`off`:u(n.targetRange,a.searchMax,!0)]},e.label)})]})]})}function md(e,t){let n=[];for(let r of t.stages){let t=e.ev.stages[r];t?.kind===`workers`&&t.autoscale&&n.push(`${t.running} of ${t.pods} pods running, each held near ${f(t.autoscale.target)}`),t?.kind===`cache`&&n.push(`${f(t.hit)} answered here`),(t?.kind===`pass`||t?.kind===`limit`||t?.kind===`cache`)&&t.shed>0&&n.push(`${f(t.shed)} of what reaches it turned away`)}return n}var hd=null;function gd(){return hd??=_d(()=>new Worker(new URL(new URL(`elk.worker-4x4hA5S2.js`,import.meta.url).href,``+import.meta.url),{type:`module`,name:`loadmap-elk`})),hd}function _d(e){let t=null,n=typeof Worker>`u`,r=!1,i=0,a=new Map,o=e=>{r||typeof Worker>`u`||(r=!0,console.info(`loadmap: the layout runs on the main thread, slower to start: the ELK worker did not start (${e}). A page can hand one in, <Loadmap elk={workerElk(() => new Worker(…))}>; a Content-Security-Policy must allow it (worker-src).`))},s=e=>{o(e),n=!0,t?.terminate(),t=null;for(let[e,t]of a)a.delete(e),Ve().then(e=>e.layout(t.graph)).then(t.resolve,t.reject)},c=()=>{if(t||n)return t;try{t=e()}catch(e){return s(e instanceof Error?e.message:String(e)),null}return t.onmessage=({data:e})=>{let t=a.get(e.id);t&&(a.delete(e.id),e.error==null?t.resolve(e.graph):t.reject(Error(e.error)))},t.onerror=e=>{e.preventDefault(),s(e.message||`it failed to load or to run`)},t};return{layout(e){let t=c();return t?new Promise((n,r)=>{let o=i++;a.set(o,{graph:e,resolve:n,reject:r}),t.postMessage({id:o,graph:e})}):(o(`no Worker here`),Ve().then(t=>t.layout(e)))}}}function vd({lm:e}){let{measure:t}=e.ev;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`p`,{className:`lm-verdict`,"data-tier":e.ev.verdict.tier,"aria-live":`polite`,children:e.ev.verdict.text}),t&&(0,Y.jsx)(`p`,{className:`lm-measure`,"data-component":t.component,children:t.text})]})}var yd=e=>e?.within?`±${f(e.within)}`:``;function bd({lm:e,title:t=`Where it runs out, in order`}){let{ev:n,model:r}=e,i=Math.max(1.5,r.thresholds.full*1.5),a=e=>`${e/i*100}%`,o=(e,t)=>e?u(e,r.searchMax,!0):l(t,r.searchMax);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:t}),(0,Y.jsxs)(`div`,{className:`lm-scale`,"aria-hidden":`true`,children:[(0,Y.jsx)(`span`,{}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`span`,{style:{left:0,transform:`none`},children:`0`}),(0,Y.jsxs)(`span`,{style:{left:a(r.thresholds.target)},children:[f(r.thresholds.target),` target`]}),(0,Y.jsx)(`span`,{style:{left:a(r.thresholds.full)},children:f(r.thresholds.full)}),(0,Y.jsx)(`span`,{style:{left:`100%`,transform:`translateX(-100%)`},children:f(i)})]}),(0,Y.jsx)(`span`,{})]}),(0,Y.jsx)(`div`,{className:`lm-limits`,children:n.ranked.map(e=>(0,Y.jsxs)(`div`,{className:`lm-lim`,"data-component":e.id,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`b`,{children:[e.name,e===n.firstLimit&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`first`,children:`limit`}),e.capacity?.provenance===`estimated`?(0,Y.jsxs)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:[`estimate`,e.capacity.within?` ${yd(e.capacity)}`:``]}):!!e.capacity?.within&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`range`,children:yd(e.capacity)})]}),(0,Y.jsx)(`span`,{className:`lm-sub`,children:e.describe??(e.capacity?`${s(e.capacity.value)} ${e.capacity.unit}`:`switched off`)})]}),(0,Y.jsxs)(`div`,{className:`lm-track`,role:`img`,"aria-label":`${e.name} at ${e.util==null?`off`:f(e.util)}`,children:[(0,Y.jsx)(`div`,{className:`lm-fill`,"data-state":e.state,style:{width:`${Math.min(100,(e.util??0)/i*100)}%`}}),(0,Y.jsx)(`div`,{className:`lm-tick`,style:{left:a(r.thresholds.target)}}),(0,Y.jsx)(`div`,{className:`lm-tick`,style:{left:a(r.thresholds.full)}})]}),(0,Y.jsxs)(`div`,{className:`lm-val`,children:[e.util==null?`—`:`${f(e.util)} · ${Ed(e.demand??0)} ${e.capacity?.unit??``}`,(0,Y.jsx)(`small`,{children:e.util==null?`switched off`:`${f(r.thresholds.target)} at ${o(e.targetRange,e.target)} · full at ${o(e.fullRange,e.full)}`})]})]},e.id))})]})}function xd({lm:e}){let[,t]=(0,J.useState)(0);(0,J.useEffect)(()=>{let e=setInterval(()=>t(e=>e+1),250);return()=>clearInterval(e)},[]);let{ev:n,engine:r,model:i}=e,a=r.sim,o=e=>i.def.flows[e]?.label??e,l=[];for(let e of Object.values(n.stages)){if(e.kind===`queue`)for(let t of i.flowIds.filter(t=>n.routes[t]?.includes(e.id))){let r=a.queue(e.id,t),i=n.overload[t]??{};l.push({key:`${e.id}/${t}/lag`,value:p(r.lag),label:`${o(t)} lag in ${e.label}`,state:r.lag>60?`over`:r.lag>5?`warn`:`ok`}),i.merge&&l.push({key:`${e.id}/${t}/merge`,value:c(r.merged),label:`${o(t)} superseded /s (${i.merge.reason??`newest kept`})`,state:r.merged>.5?`warn`:`ok`}),i.drop&&l.push({key:`${e.id}/${t}/drop`,value:c(r.dropped),label:`${o(t)} dropped /s (${i.drop.reason??`too old`})`,state:r.dropped>.5?`over`:`ok`})}if(e.kind===`workers`){let t=a.busy(e.id);l.push({key:`${e.id}/busy`,value:f(t),label:`${e.label} busy`,state:t>.95?`over`:t>.5?`warn`:`ok`}),e.autoscale&&l.push({key:`${e.id}/pods`,value:`${e.running} of ${e.pods}`,label:`${e.label} pods running`,state:e.running<e.pods?`ok`:(n.components[e.component]?.util??0)>i.thresholds.full?`over`:`warn`})}e.kind===`cache`&&l.push({key:`${e.id}/hits`,value:c(a.arriving(e.id)*(1-a.shed(e.id))*e.hit),label:`answered at ${e.label} /s (${f(e.hit)} hits)`,state:`ok`}),(e.kind===`pass`||e.kind===`limit`||e.kind===`cache`)&&a.shed(e.id)>0&&l.push({key:`${e.id}/shed`,value:f(a.shed(e.id)),label:`rejected at ${e.label}`,state:`over`})}for(let e of i.flowIds){let t=n.retry[e];if(!t||!(t.rate>0))continue;let r=t.attempts/t.rate;l.push({key:`${e}/attempts`,value:`${s(r)}×`,label:`${o(e)} attempts per ${i.def.flows[e]?.unit??`unit`}`,state:r>1.05?`warn`:`ok`}),l.push({key:`${e}/failed`,value:f(t.failed),label:`${o(e)} failing after ${t.times} ${t.times===1?`retry`:`retries`}`,state:t.failed>.005?`over`:`ok`})}return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Live`}),(0,Y.jsx)(`div`,{className:`lm-meters`,children:l.map(e=>(0,Y.jsxs)(`div`,{className:`lm-meter`,"data-state":e.state,children:[(0,Y.jsx)(`b`,{children:e.value}),(0,Y.jsx)(`span`,{title:e.label,children:e.label})]},e.key))})]})}function Sd({lm:e}){let t=e.model.load,n=e.values.load;return(0,Y.jsxs)(`label`,{className:`lm-range`,children:[(0,Y.jsxs)(`span`,{children:[t.label,` `,(0,Y.jsxs)(`output`,{children:[s(n),`×`]})]}),(0,Y.jsx)(`input`,{type:`range`,min:t.min,max:t.max,step:t.step,value:n,onChange:t=>e.setValues({load:Number(t.target.value)})})]})}function Cd({lm:e}){let{model:t,values:n,setValues:r,ev:i}=e,a=n;return(0,Y.jsxs)(`div`,{className:`lm-card lm-controls`,children:[(0,Y.jsx)(`h3`,{children:`Load`}),(0,Y.jsx)(Sd,{lm:e}),(0,Y.jsx)(`div`,{className:`lm-presets`,children:i.presets.map(e=>{let t=Object.entries(e.values).every(([e,t])=>a[e]===t);return(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>r(e.values),children:e.label},e.label)})}),t.params.length>1&&(0,Y.jsx)(`h3`,{children:`Design`}),t.params.map(({id:e,def:n})=>{if(n.kind===`load`)return null;let i=t.isEnabled(e,a),o=n.tag&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:n.tag});return n.kind===`switch`?(0,Y.jsxs)(`label`,{className:`lm-switch${i?``:` lm-off`}`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:!!a[e],disabled:!i,onChange:t=>r({[e]:t.target.checked})}),(0,Y.jsxs)(`span`,{children:[n.label,o]}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e):n.kind===`select`?(0,Y.jsxs)(`label`,{className:`lm-select${i?``:` lm-off`}`,children:[(0,Y.jsxs)(`span`,{children:[n.label,o]}),(0,Y.jsx)(`select`,{value:String(a[e]),disabled:!i,onChange:t=>{let i=n.options.find(e=>String(e)===t.target.value);r({[e]:i})},children:n.options.map(e=>(0,Y.jsx)(`option`,{value:String(e),children:n.format?n.format(e):String(e)},String(e)))}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e):(0,Y.jsxs)(`label`,{className:`lm-range${i?``:` lm-off`}`,children:[(0,Y.jsxs)(`span`,{children:[n.label,o,` `,(0,Y.jsx)(`output`,{children:n.format?n.format(a[e]):s(a[e])})]}),(0,Y.jsx)(`input`,{type:`range`,min:n.min,max:n.max,step:n.step,value:a[e],disabled:!i,onChange:t=>r({[e]:Number(t.target.value)})}),n.hint&&(0,Y.jsx)(`small`,{children:n.hint})]},e)})]})}function wd({lm:e,extra:t=[]}){return(0,Y.jsxs)(`div`,{className:`lm-card`,children:[(0,Y.jsx)(`h3`,{children:`What this assumes`}),(0,Y.jsxs)(`ul`,{className:`lm-facts`,children:[t.map((e,t)=>(0,Y.jsx)(`li`,{children:e},t)),e.ev.assumptions.map(e=>(0,Y.jsx)(`li`,{children:Td(e)},e.kind===`capacity`?`c:${e.component}`:`f:${e.name}`))]})]})}function Td(e){if(e.kind===`capacity`){let t=e.capacity;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{children:[e.name,`:`]}),` `,s(t.value),` `,t.unit,t.within?` ${yd(t)}`:``,`,`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":t.provenance,children:t.provenance}),t.source?` (${t.source})`:``,`.`]})}let t=e.fit;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{children:[e.name,`:`]}),` `,t.y,` = `,Dd(t.a),` + `,Dd(t.b),` × `,t.x,`, r² `,t.r2.toFixed(3),` over `,t.n,` points,`,` `,(0,Y.jsx)(`span`,{className:`lm-prov`,"data-kind":`measured`,children:`measured`}),t.source?` (${t.source})`:``,`.`]})}var Ed=e=>Math.abs(e)>=1e3?c(e):s(e),Dd=e=>Number(e.toPrecision(3)).toString(),Od={verdict:`Verdict`,live:`Live`,limits:`Limits`,controls:`Load`,headroom:`Headroom`,compare:`Compare`,assumptions:`Assumptions`};function kd({lm:e,verdict:t=!0,extra:n=0,open:r,assumptions:i}){let{ev:a,model:o,values:c}=e,d=a.firstLimit,p=a.target,m=`${f(o.thresholds.target)} target`,h=d?.capacity,g=h?h.provenance===`estimated`?`est${h.within?` ${yd(h)}`:``}`:yd(h):``,_=a.ranked.filter(e=>(e.util??0)>o.thresholds.full),v=p?Gu(o,p):``,y=a.assumptions.filter(e=>e.kind===`capacity`&&e.capacity.provenance===`estimated`).length;return(0,Y.jsxs)(Y.Fragment,{children:[t&&(0,Y.jsx)(`p`,{className:`lm-headline`,title:a.verdict.text,"aria-live":`polite`,children:!d||!p?a.verdict.text:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`b`,{className:`lm-num`,children:[s(c.load),`×`]}),` ·`,` `,c.load<p.low?(0,Y.jsxs)(Y.Fragment,{children:[`the `,m,` holds to `,(0,Y.jsx)(`b`,{className:`lm-num`,children:u(p,o.searchMax,!0)}),v&&` (${v})`]}):(0,Y.jsxs)(Y.Fragment,{children:[`past the `,m,` from `,(0,Y.jsx)(`b`,{className:`lm-num`,children:l(p.low,o.searchMax)})]}),` `,`· limited by `,(0,Y.jsx)(`b`,{children:d.name}),g&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":h?.provenance===`estimated`?`estimated`:`range`,children:g}),_.length>0&&(0,Y.jsxs)(Y.Fragment,{children:[` `,`· `,(0,Y.jsx)(`b`,{children:_.map(e=>e.name).join(`, `)}),` past capacity`]})]})}),r&&t&&(0,Y.jsx)(`button`,{type:`button`,className:`lm-link`,onClick:e=>r(`verdict`,e.currentTarget),children:`Why ›`}),r&&i&&(0,Y.jsxs)(`button`,{type:`button`,className:`lm-link`,onClick:e=>r(`assumptions`,e.currentTarget),children:[`What this assumes · `,a.assumptions.length+n,y>0&&` (${y} estimated)`,` ›`]})]})}var Ad=[`controls`,`live`,`limits`,`headroom`,`compare`];function jd({lm:e,panels:t,open:n}){let r=Ad.filter(e=>t.includes(e)),[i,a]=(0,J.useState)(null);if(!r.length)return null;let o=i&&r.includes(i)?i:r[0];return(0,Y.jsxs)(`div`,{className:`lm-dock`,children:[(0,Y.jsx)(`fieldset`,{className:`lm-tabs`,"aria-label":`Panels`,children:r.map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":e===o,onClick:()=>a(e),children:Od[e]},e))}),r.map(t=>(0,Y.jsx)(Md,{lm:e,panel:t,open:n,active:t===o},t))]})}function Md({lm:e,panel:t,open:n,active:r}){let i=(0,J.useRef)(null),a=(0,J.useRef)(null);return Pd(i,a),(0,Y.jsxs)(`div`,{className:`lm-mini`,"data-mini":t,"data-active":r||void 0,ref:i,children:[t===`controls`?(0,Y.jsx)(Cd,{lm:e}):t===`compare`?(0,Y.jsx)(Ju,{lm:e}):(0,Y.jsx)(`div`,{className:`lm-card`,children:t===`live`?(0,Y.jsx)(xd,{lm:e}):t===`limits`?(0,Y.jsx)(Fd,{lm:e}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Headroom`}),(0,Y.jsx)(Id,{lm:e})]})}),(0,Y.jsx)(`button`,{type:`button`,className:`lm-more`,ref:a,"aria-label":`${Od[t]}, all of it`,onClick:e=>n(t,e.currentTarget),children:`›`})]})}var Nd=`.lm-meter, .lm-mini-lim, .lm-controls > *, .lm-table tbody tr`;function Pd(e,t){(0,J.useEffect)(()=>{let n=e.current?.querySelector(`.lm-card`);if(!n)return;let r=()=>{let e=n.getBoundingClientRect(),r=e.bottom-Number.parseFloat(getComputedStyle(n).paddingBottom||`0`),i=0;for(let t of n.querySelectorAll(Nd)){let n=e.height>0&&t.getBoundingClientRect().bottom>r+.5;t.toggleAttribute(`data-clip`,n),n&&!t.matches(`h3`)&&i++}t.current&&(t.current.dataset.more=i?`+${i}`:``)},i=new ResizeObserver(r);i.observe(n);let a=new MutationObserver(r);return a.observe(n,{childList:!0,subtree:!0}),r(),()=>{i.disconnect(),a.disconnect()}},[e,t])}function Fd({lm:e}){let{ev:t,model:n}=e,r=Math.max(1.5,n.thresholds.full*1.5),i=e=>`${e/r*100}%`;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`h3`,{children:`Where it runs out`}),(0,Y.jsx)(`div`,{className:`lm-mini-limits`,children:t.ranked.map(e=>(0,Y.jsxs)(`div`,{className:`lm-mini-lim`,"data-component":e.id,children:[(0,Y.jsxs)(`span`,{className:`lm-name`,title:e.name,children:[e.name,e.capacity?.provenance===`estimated`?(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`estimated`,children:`est`}):!!e.capacity?.within&&(0,Y.jsx)(`span`,{className:`lm-tag`,"data-kind":`range`,children:`±`})]}),(0,Y.jsxs)(`span`,{className:`lm-track`,role:`img`,"aria-label":`${e.name} at ${e.util==null?`off`:f(e.util)}`,children:[(0,Y.jsx)(`span`,{className:`lm-fill`,"data-state":e.state,style:{width:`${Math.min(100,(e.util??0)/r*100)}%`}}),(0,Y.jsx)(`span`,{className:`lm-tick`,style:{left:i(n.thresholds.target)}}),(0,Y.jsx)(`span`,{className:`lm-tick`,style:{left:i(n.thresholds.full)}})]}),(0,Y.jsx)(`span`,{className:`lm-val`,children:e.util==null?`—`:f(e.util)}),(0,Y.jsx)(`span`,{className:`lm-val lm-sub`,children:e.util==null?`off`:e.full!=null&&!Number.isFinite(e.full)?`full > ${s(n.searchMax)}×`:`full ${e.fullRange?u(e.fullRange,n.searchMax,!0):l(e.full,n.searchMax)}`})]},e.id))})]})}function Id({lm:e}){let{model:t,values:n}=e,r=Q(e),[i,{width:a,height:o}]=Z(240),s=Math.max(1.5,t.thresholds.full*1.5),c=e=>a*Math.log(e/r.from)/Math.log(r.to/r.from),d=e=>8+(o-10)*(1-Math.min(e,s*1.2)/s),p=e=>{let t=``,n=!1;for(let[r,i]of e)i==null?n=!1:(t+=`${n?`L`:`M`}${c(r).toFixed(1)} ${d(i).toFixed(1)}`,n=!0);return t},m=r.lines.find(e=>e.selected)??r.lines[0],h=f(t.thresholds.target),g=m?`${m.targetRange?u(m.targetRange,t.searchMax,!0):l(m.target,t.searchMax)}`:``,_=m?Gu(t,m.targetRange):``,v=c(Math.min(r.to,Math.max(r.from,n.load)));return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`lm-spark`,ref:i,children:o>0&&(0,Y.jsxs)(`svg`,{width:a,height:o,"aria-hidden":`true`,children:[(0,Y.jsx)(`line`,{className:`lm-spark-th`,x1:0,x2:a,y1:d(t.thresholds.target),y2:d(t.thresholds.target)}),r.lines.map(e=>(0,Y.jsx)(`path`,{d:p(e.envelope),fill:`none`,stroke:Hu(t,e.label),strokeWidth:e.selected?2:1.25},e.label??``)),(0,Y.jsx)(`line`,{className:`lm-spark-load`,x1:v,x2:v,y1:0,y2:o})]})}),m&&(0,Y.jsxs)(`p`,{className:`lm-spark-text`,title:`${m.label??`It`} reaches the ${h} target at ${g}`,children:[m.label??`It`,` reaches the `,h,` target at `,g,_&&` (${_})`,`.`]})]})}function Ld({lm:e}){let t=(0,J.useRef)(null),{story:n}=e.model;if(!n.length)return null;let r=e.cue?.step??e.step,i=n.length-1,a=t=>{let n=Math.max(0,Math.min(i,t));(n!==r||e.storyPlaying)&&e.setStep(n)},o=e=>{if(e.key===`ArrowRight`)a(r==null?0:r+1);else if(e.key===`ArrowLeft`&&r!=null)a(r-1);else return;e.preventDefault()},s=e.storyPlaying;return(0,Y.jsxs)(`fieldset`,{className:`lm-story`,onKeyDown:o,ref:t,tabIndex:-1,"data-playing":s||void 0,children:[(0,Y.jsx)(`legend`,{children:`Story`}),(0,Y.jsx)(`span`,{className:`lm-sr`,"aria-live":`polite`,children:r==null?`A walk through this model in ${n.length} steps.`:`${r+1} of ${n.length}. ${n[r].text}${e.stepChanged?` You changed the values since.`:``}`}),(0,Y.jsxs)(`p`,{"aria-hidden":`true`,children:[(0,Y.jsxs)(`span`,{"data-shown":r==null||void 0,children:[`A walk through this model in `,n.length,` steps.`]}),n.map((t,i)=>(0,Y.jsxs)(`span`,{"data-shown":i===r||void 0,children:[(0,Y.jsxs)(`b`,{children:[i+1,` of `,n.length]}),` `,t.text,(0,Y.jsx)(`em`,{"data-shown":i===r&&e.stepChanged||void 0,children:` You changed the values since.`})]},i))]}),r!=null&&(0,Y.jsx)(`span`,{className:`lm-story-progress`,"aria-hidden":`true`,children:n.map((t,n)=>(0,Y.jsx)(`i`,{"data-state":n<r?`done`:n===r?`now`:void 0,style:n===r?{"--lm-step":`${e.cue?.seconds??Tu(t,e.engine.transition)}s`}:void 0},n===r?`${n}-${s}`:n))}),(0,Y.jsxs)(`span`,{className:`lm-story-nav`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>e.setStoryPlaying(!s),"aria-pressed":s,children:s?`❚❚ Pause`:`▶ Play`}),r!=null&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(r-1),"aria-disabled":r===0,children:`Back`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>a(r==null?0:r+1),"aria-disabled":r===i,children:r==null?`Start`:`Next`}),r!=null&&e.stepChanged&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{e.setStep(r),t.current?.focus()},children:`Show again`}),r!=null&&(0,Y.jsx)(`button`,{type:`button`,onClick:()=>e.setStep(null),"aria-label":`Leave the story`,children:`Done`})]})]})}var Rd=`
17
17
  --lm-bg: #eef2f5; --lm-surface: #ffffff; --lm-fg: #17212b; --lm-muted: #5d6d7c; --lm-line: #c6d0da;
18
18
  --lm-accent: #0b6b8f; --lm-accent-soft: #d6e9f0; --lm-alt: #7a4f9a; --lm-alt-soft: #efe5f6;
19
19
  --lm-ok: #2a7f5a; --lm-warn: #b86e00; --lm-drop: #b7392e; --lm-lane: #e3e9ee;
@@ -63,6 +63,7 @@ import{r as e,t}from"./rolldown-runtime-pP25SEvz.js";(function(){let e=document.
63
63
  .lm-side, .lm-card > .lm-panel { display: contents; }
64
64
  .lm-panel { display: grid; gap: 14px; min-width: 0; }
65
65
  .lm[data-full] { height: 100vh; height: 100dvh; padding: 16px; background: var(--lm-bg); overflow: hidden; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 10px; position: relative; }
66
+ .lm[data-full="fill"] { height: 100%; padding: 10px; }
66
67
  .lm[data-full="overlay"] { position: fixed; inset: 0; z-index: 2147483000; width: auto; max-width: none; max-height: none; margin: 0; border: 0; }
67
68
  .lm[data-full] > * { flex: none; }
68
69
  /* a page of its own keeps the rest outside full screen, as <Loadmap> does */
@@ -288,7 +289,7 @@ import{r as e,t}from"./rolldown-runtime-pP25SEvz.js";(function(){let e=document.
288
289
  .lm-fill { transition: none; }
289
290
  .lm-story[data-playing] .lm-story-progress i[data-state="now"]::before { animation: none; transform: none; }
290
291
  }
291
- `;function Vd(e=document){if(e.getElementById(`loadmap-css`))return;let t=e.createElement(`style`);t.id=`loadmap-css`,t.textContent=Bd,e.head.appendChild(t)}var Hd=[0,.3],Ud=[.15,.8],Wd=[.6,1],Gd=[.7,1],Kd=24,qd=(e,[t,n])=>Math.min(1,Math.max(0,(e-t)/(n-t))),Jd=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,Yd=(e,t,n)=>e+(t-e)*n,Xd=(e,t,n)=>({...t,x:Yd(e.x,t.x,n),y:Yd(e.y,t.y,n),w:Yd(e.w,t.w,n),h:Yd(e.h,t.h,n)}),Zd=(e,t,n)=>({...t,x:Yd(e.x,t.x,n),y:Yd(e.y,t.y,n)}),Qd=(e,t)=>e.fade==null?{}:{fade:Yd(e.fade,1,t.enter)},$d=(e,t)=>({...e,fade:(e.fade??1)*t.out});function ef(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Set(t.nodes.map(e=>e.id)),i=new Map(e.edges.map(e=>[e.id,e])),a=new Set(t.edges.map(e=>e.id)),o=new Map;for(let e of t.edges){let t=i.get(e.id)?.points;t?.length&&e.points.length&&o.set(e.id,nf(t,e.points)?[t,e.points]:[af(t,Kd),af(e.points,Kd)])}return s=>{if(s>=1)return t;let c=Jd(qd(s,Ud)),l={out:1-qd(s,Hd),enter:qd(s,Wd)},u=qd(s,Gd),d=t.edges.map(e=>{let t=i.get(e.id),n=o.get(e.id);if(!t||!n)return{...e,fade:l.enter,draw:u};let[r,a]=n,s=r.map((e,t)=>[Yd(e[0],a[t][0],c),Yd(e[1],a[t][1],c)]),d=e.label&&(t.label?Xd(t.label,e.label,c):e.label);return{...e,points:s,label:d,...Qd(t,l),...t.draw==null?{}:{draw:Yd(t.draw,1,u)}}});for(let t of e.edges)a.has(t.id)||d.push($d(t,l));let f=t.nodes.map(e=>{let t=n.get(e.id);return t?tf(t,e,c,l):{...e,fade:l.enter}});for(let t of e.nodes)r.has(t.id)||f.push($d(t,l));return{...t,width:Yd(e.width,t.width,c),height:Yd(e.height,t.height,c),nodes:f,edges:d}}}function tf(e,t,n,r){let i=t.members.map((t,i)=>{let a=e.members[i];return a?{...Xd(a,t,n),spot:Zd(a.spot,t.spot,n),...Qd(a,r)}:{...t,fade:r.enter}});for(let n of e.members.slice(t.members.length))i.push($d(n,r));let a=e=>{let t=new Map;return e.map(e=>{let n=`${e.flow}|${e.text}`,r=t.get(n)??0;return t.set(n,r+1),`${n}|${r}`})},o=a(e.groups),s=new Map(e.groups.map((e,t)=>[o[t],e])),c=a(t.groups),l=t.groups.map((e,t)=>{let i=s.get(c[t]);return i?{...e,spot:Zd(i.spot,e.spot,n),...Qd(i,r)}:{...e,fade:r.enter}}),u=new Set(c);e.groups.forEach((e,t)=>{u.has(o[t])||l.push($d(e,r))});let d=e=>`${e.stage}/${e.flow}/${e.index}`,f=new Map(e.cells.map(e=>[d(e),e])),p=new Set(t.cells.map(d)),m=t.cells.map(e=>{let t=f.get(d(e));return t?{...Xd(t,e,n),...Qd(t,r)}:{...e,fade:r.enter}});for(let t of e.cells)p.has(d(t))||m.push($d(t,r));let h=new Map(e.slots.map(e=>[e.index,e])),g=new Set(t.slots.map(e=>e.index)),_=t.slots.map(e=>{let t=h.get(e.index);return t?{...Xd(t,e,n),...Qd(t,r)}:{...e,fade:r.enter}});for(let t of e.slots)g.has(t.index)||_.push($d(t,r));return{...Xd(e,t,n),...Qd(e,r),title:Zd(e.title,t.title,n),sub:t.sub&&(e.sub?Zd(e.sub,t.sub,n):t.sub),members:i,groups:l,cells:m,slots:_}}function nf(e,t){return e.length===t.length&&e.every((n,r)=>r===0||rf(e[r-1],n)===rf(t[r-1],t[r]))}var rf=(e,t)=>Math.abs(t[0]-e[0])>=Math.abs(t[1]-e[1])?`h`:`v`;function af(e,t){if(e.length<2)return Array.from({length:t},()=>e[0]??[0,0]);let n=[0];for(let t=1;t<e.length;t++)n.push(n[t-1]+Math.hypot(e[t][0]-e[t-1][0],e[t][1]-e[t-1][1]));let r=n.at(-1),i=[],a=1;for(let o=0;o<t;o++){let s=r*o/(t-1);for(;a<n.length-1&&n[a]<s;)a++;let c=n[a]-n[a-1],l=c>0?(s-n[a-1])/c:1,u=e[a-1],d=e[a];i.push([Yd(u[0],d[0],l),Yd(u[1],d[1],l)])}return i}function of(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var sf=.7;function cf(e,t,n,r=1){let i=e*t,a=Array(i),o=of(r);for(let r=0;r<e;r++){let i=Array.from({length:t},(e,t)=>t);for(let e=t-1;e>0;e--){let t=Math.floor(o()*(e+1));[i[e],i[t]]=[i[t],i[e]]}i.forEach((i,o)=>{a[r*t+i]=n===`round-robin`?o*e+r:r*t+o})}let s=Array.from({length:i},()=>.92+o()*.16),c=s.reduce((e,t)=>e+t,0)/(i||1);return{rank:a,jitter:s.map(e=>e/c)}}function lf(e,t,n){let r=t.rank.length,i=Math.min(1,Math.max(0,n))*r,a=t.rank[e],o;if(i<=sf*r){let e=Math.floor(i/sf);o=a<e?sf:a===e?i-e*sf:0}else o=sf+(i-sf*r)/r;return Math.min(1,Math.max(0,o*(t.jitter[e]??1)))}var uf=()=>({backlog:0,lag:0,arriving:0,served:0,dropped:0,merged:0,merging:!1}),df=1,ff=2e3,pf=3,mf=class{speed;time=0;particles=[];dotScale=1;#e;#t;#n;#r;#i=``;#a=new Map;#o=new Map;#s=new Map;#c=new Map;#l=new Map;#u=new Map;#d=new Map;#f=1;constructor(e,t,n={}){this.#e={seed:1,speed:10,dotTarget:28,minDots:1,maxDots:40,legSeconds:.45,maxParticles:800,...n},this.speed=this.#e.speed,this.#t=of(this.#e.seed),this.#n=e,this.update(t);for(let e of Object.values(t.stages))e.kind===`workers`&&this.#o.set(e.id,this.#m(e.id))}update(e){this.#r=e;let t=JSON.stringify(Object.values(e.stages).map(e=>e.kind===`queue`?[e.id,e.partitions]:e.kind===`workers`?[e.id,e.pods,e.perPod,e.fill]:[e.id,e.kind]));if(t!==this.#i){this.#i=t;let n=(t,n)=>{if(t.stage==null)return!0;let r=e.stages[t.stage];return r?t.cell==null?!0:r.kind===`queue`?t.cell<(r.partitions[n]??0):r.kind===`workers`&&t.cell<r.pods*r.perPod:!1};this.particles=this.particles.filter(e=>n(e.from,e.flow)&&n(e.to,e.flow)),this.#s.clear()}let n=this.#n.thresholds.full,r=Object.values(e.stages);this.#c.clear();for(let e of r)this.#c.set(e.id,`shed`in e?e.shed:0);this.#l.clear();for(let t of this.#n.flowIds){let n=e.flows[t]??0;for(let r of e.routes[t]??[]){this.#l.set(`${r}/${t}`,n);let i=e.stages[r];i.kind!==`fanout`&&(n*=1-(this.#c.get(r)??0)),i.kind===`cache`&&(n*=1-i.hit)}}this.#u.clear();let i=new Map;for(let t of r){let r=t.component?e.components[t.component]:void 0,a=1/0;if(r&&r.util!=null&&r.full!=null&&Number.isFinite(r.full)){if(r.full>0){let n=i.get(r.full);n||(n=this.#n.evaluate({...e.values,load:r.full}),i.set(r.full,n)),a=this.#n.flowIds.reduce((e,r)=>e+(n.at[t.id]?.[r]??0),0)}else{let i=this.#n.flowIds.reduce((n,r)=>n+(e.at[t.id]?.[r]??0),0);a=r.util>0?i*n/r.util:0}}this.#u.set(t.id,a)}let a=this.#n.flowIds.reduce((t,n)=>t+(e.flows[n]??0),0);this.dotScale=Math.max(1,m(a/this.#e.dotTarget))}step(e,t={}){if(!(e>0))return;let n=e*this.speed;this.time+=n,this.#g(n),t.particles!==!1&&(this.#_(e),this.#y(e))}queue(e,t){return this.#a.get(e)?.get(t)?.s??uf()}busy(e){return this.#o.get(e)??this.#m(e)}shed(e){return this.#c.get(e)??0}slotBusy(e,t){let n=this.#r.stages[e];if(n?.kind!==`workers`||t>=n.running*n.perPod)return 0;let r=`${e}/${n.running}`,i=this.#s.get(r);return i||(i=cf(n.running,n.perPod,n.fill,this.#e.seed),this.#s.set(r,i)),lf(t,i,this.busy(e))}arriving(e){return this.#n.flowIds.reduce((t,n)=>t+(this.#l.get(`${e}/${n}`)??0),0)}running(e){let t=this.#r.stages[e];return t?.kind===`workers`?t.running:0}#p(e){return this.#r.components[e]?.util??null}#m(e){let t=this.#r.stages[e],n=t?.component?this.#p(t.component):null;return Math.min(1,(n??0)/this.#n.thresholds.full*this.#h(e))}#h(e){let t=this.#r.stages[e];return t?.kind===`workers`&&t.running>0?t.pods/t.running:1}#g(e){let t=this.#r,n=[];for(let r of Object.values(t.stages)){if(r.kind!==`queue`)continue;let i=this.#a.get(r.id)??new Map;this.#a.set(r.id,i);for(let a of this.#n.flowIds){let o=t.routes[a]??[];if(!o.includes(r.id))continue;let s=i.get(a)??{cohorts:[],s:uf()};i.set(a,s);let c=this.#l.get(`${r.id}/${a}`)??0,l=Math.min(.95,Math.max(0,t.overload[a]?.merge?.share??0));s.s.merging=l>0&&gf(s.cohorts)>c*1;let u=c*e,d=s.cohorts.at(-1);d&&this.time-d.t<df?d.n+=u:u>0&&s.cohorts.push({t:this.time,n:u}),s.cohorts.length>ff&&(s.cohorts=vf(s.cohorts));let f=o[o.indexOf(r.id)+1]??`∞`,p=s.s.merging?1/(1-l):1;n.push({q:r.id,f:a,fq:s,drainer:f,prio:this.#n.def.flows[a]?.priority??1,k:p})}}let r=new Map;for(let t of new Set(n.map(e=>e.drainer))){let i=n.filter(e=>e.drainer===t),a=t===`∞`?1/0:(this.#u.get(t)??1/0)*e;for(let n of[...new Set(i.map(e=>e.prio))].sort((e,t)=>e-t)){let o=i.filter(e=>e.prio===n),s=o.reduce((e,t)=>e+gf(t.fq.cohorts)/t.k,0),c=0;for(let t of o){let n=gf(t.fq.cohorts),r=Number.isFinite(a)?s>0?Math.min(n,a*n/s):0:n,i=r/t.k;_f(t.fq.cohorts,r),c+=i,t.fq.s.served=yf(t.fq.s.served,i/e,e),t.fq.s.merged=yf(t.fq.s.merged,(r-i)/e,e)}a=Math.max(0,a-c),r.set(t,(r.get(t)??0)+c)}}for(let{q:r,f:i,fq:a}of n){let n=0,o=t.overload[i]?.drop;if(o)for(;a.cohorts.length&&this.time-a.cohorts[0].t>o.olderThan;)n+=a.cohorts.shift().n;let s=this.#l.get(`${r}/${i}`)??0;gf(a.cohorts)<1e-9*Math.max(1,s)&&(a.cohorts=[]),a.s.backlog=gf(a.cohorts),a.s.lag=a.cohorts.length?this.time-a.cohorts[0].t:0,a.s.arriving=yf(a.s.arriving,s,e),a.s.dropped=yf(a.s.dropped,n/e,e)}for(let n of Object.values(t.stages)){if(n.kind!==`workers`)continue;let t=this.#u.get(n.id)??1/0,i=r.has(n.id)&&Number.isFinite(t)&&t>0?r.get(n.id)/(t*e)*this.#h(n.id):this.#m(n.id);this.#o.set(n.id,yf(this.#o.get(n.id)??i,Math.min(1,i),e))}}#_(e){let{minDots:t,maxDots:n,legSeconds:r,maxParticles:i}=this.#e;for(let a of this.#n.flowIds){let o=this.#r.retry[a]?.rate??this.#r.flows[a]??0;if(o<=0)continue;let s=Math.min(n,Math.max(t,o/this.dotScale)),c=(this.#d.get(a)??0)+s*e;for(;c>=1;){if(--c,this.particles.length>=i)continue;let e=this.#r.routes[a][0];this.particles.push({id:this.#f++,flow:a,leg:0,phase:`move`,t:0,dur:r,from:{stage:null},to:this.#b(e,a)})}this.#d.set(a,c)}}#v(e){let t=this.#r.retry[e.flow],n=(e.attempt??0)+1;return!t||n>t.times||this.#t()>=t.retried?null:{id:this.#f++,flow:e.flow,leg:0,phase:`move`,t:0,dur:this.#e.legSeconds,from:{stage:null},to:this.#b(this.#r.routes[e.flow][0],e.flow),attempt:n}}#y(e){let t=this.#r,n=(e,t,n)=>{e.phase=`fade`,e.outcome=t,e.t=0,e.dur=n,e.from=e.to},r=e=>{let r=t.routes[e.flow];if(e.leg+1>=r.length)return n(e,`delivered`,.35);e.leg++,e.phase=`move`,e.t=0,e.dur=this.#e.legSeconds,e.from=e.to,e.to=this.#b(r[e.leg],e.flow)},i=[],a=e=>{n(e,`rejected`,.6);let t=this.particles.length+i.length<this.#e.maxParticles?this.#v(e):null;t&&i.push(t)};for(let o of this.particles){if(o.t+=e,o.t<o.dur)continue;if(o.phase===`move`&&o.back){n(o,`answered`,.35);continue}let s=t.stages[o.to.stage??``];if(o.phase===`fade`||!s)o.phase=`fade`,o.outcome??=`delivered`;else if(o.phase===`move`&&o.branch)n(o,this.#t()<this.shed(o.from.stage??``)||s.kind===`pass`&&this.#t()<this.shed(s.id)?`rejected`:`delivered`,.35);else if(o.phase===`move`&&s.kind===`fanout`){let e=0;for(let t of s.to[o.flow]??[]){let n=Math.floor(t.share)+ +(this.#t()<t.share%1);for(let r=0;r<n;r++,e++)this.particles.length+i.length<this.#e.maxParticles&&i.push({id:this.#f++,flow:o.flow,leg:o.leg,phase:`move`,t:0,dur:this.#e.legSeconds,from:o.to,to:{stage:t.stage},branch:t.stage})}e?n(o,`delivered`,0):n(o,`unread`,.6)}else if(o.phase===`move`){if((s.kind===`pass`||s.kind===`limit`||s.kind===`cache`)&&this.#t()<this.shed(s.id))a(o);else if(s.kind===`cache`&&this.#t()<s.hit){let e=o.from;o.from=o.to,o.to=e,o.t=0,o.dur=this.#e.legSeconds,o.back=!0}else if(s.kind===`queue`){let e=this.queue(s.id,o.flow).lag;o.phase=`hold`,o.t=0,o.dur=.12+Math.min(e,120)/120*2.6}else s.kind===`workers`?(o.phase=`hold`,o.t=0,o.dur=.15):r(o)}else if(o.phase===`hold`){let e=s.kind===`queue`?this.queue(s.id,o.flow):null,i=e&&e.arriving>0?Math.min(1,e.dropped/e.arriving):0,a=e?.merging?t.overload[o.flow]?.merge?.share??0:0;this.#t()<a?n(o,`superseded`,.6):this.#t()<i?n(o,`dropped`,.6):r(o)}}this.particles=this.particles.filter(e=>!(e.phase===`fade`&&e.t>=e.dur)).concat(i)}#b(e,t){let n=this.#r.stages[e];if(n?.kind===`queue`){let r=n.partitions[t]??0;return r>0?{stage:e,cell:Math.floor(this.#t()*r)}:{stage:e}}return n?.kind===`workers`?{stage:e,cell:this.#x(n.id,n.running*n.perPod)}:{stage:e}}#x(e,t){let n=0;for(let r=0;r<t;r++)n+=this.slotBusy(e,r);if(n<=.001)return Math.floor(this.#t()*t);let r=this.#t()*n;for(let n=0;n<t;n++)if(r-=this.slotBusy(e,n),r<=0)return n;return t-1}};function hf(e,t,n){return new mf(e,t,n)}var gf=e=>e.reduce((e,t)=>e+t.n,0);function _f(e,t){let n=t;for(;n>0&&e.length;){let t=e[0];t.n<=n?(n-=t.n,e.shift()):(t.n-=n,n=0)}}function vf(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];t.push(i?{t:r.t,n:r.n+i.n}:r)}return t}function yf(e,t,n){return e+(t-e)*Math.min(1,n/pf)}var bf=[`accent`,`alt`,`ok`,`warn`,`drop`,`muted`,`fg`,`surface`,`line`],xf=1.4,Sf=2.5,Cf=2.4;function wf(e,t,n){e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Tf(e,t){t>=1?e.removeAttribute(`opacity`):wf(e,`opacity`,t.toFixed(3))}var Ef=class{model;view;sim;ev;scene=null;frame=null;frameId=0;drawnFrame=-1;transition=.8;wantKey=``;drawnValues=``;wantFocus=null;storyStep=null;drawnFocus=null;paused=!1;reducedMotion=!1;camera=null;cue=null;host=null;colors={};svg=null;canvas=null;#e;#t=[];#n=new Map;#r=null;#i=new Set;#a=!1;#o={frame:-1,paths:new Map};#s=0;#c=null;#l=null;constructor(e,t,n,r={}){this.model=e,this.view=t,this.ev=n,this.#e=r,this.sim=hf(e,n,r)}setEvaluation(e){if(e===this.ev)return;let t=JSON.stringify(e.values)===JSON.stringify(this.ev.values),n=this.ev.firstLimit?.id,r=e.firstLimit?.id;if(this.ev=e,t||this.sim.update(e),n===r)return;let i=this.#c?.shot===`change`,a=this.paused&&!this.#a;this.#d(n&&r&&this.frame&&!a?{from:n,to:r,t:0,fade:this.#l?.to===n?this.#u(this.#l,!1):1,...i?{out:.5,in:.6,inAt:1/0}:{out:.3,in:.3,inAt:this.reducedMotion?0:.3},story:i}:null)}#u(e,t){let n=(e,t)=>this.reducedMotion?+(e>=0):Nu(Math.max(0,Math.min(1,e/t)));return t?e.fade*(1-n(e.t,e.out)):n(e.t-e.inAt,e.in)}get handover(){return this.#l}#d(e){if(e!==this.#l){this.#l=e;for(let e of this.#i)e()}}setScene(e,t={}){if(e===this.scene)return;let n=this.frame,r=this.transition;this.scene=e,this.#n.clear();let i=n&&!t.cut&&r>0&&Number.isFinite(r)&&(!this.paused||this.#a)&&n.direction===e.direction&&n.key!==e.key;this.#r=i?{at:ef(n,e),t:0,seconds:r}:null,this.#f(i?this.#r.at(0):e)}subscribe=e=>(this.#i.add(e),()=>this.#i.delete(e));#f(e){this.frame=e,this.frameId++;for(let e of this.#i)e()}reset(e){this.sim=hf(this.model,this.ev,{...this.#e,seed:e??this.#e.seed}),this.#n.clear(),this.#s=0,this.#d(null),this.#r&&this.scene&&(this.#r=null,this.#f(this.scene))}bind(e,t){let n=t!==this.canvas;if(this.svg=e,this.canvas=t,this.#t=[],e){for(let t of e.querySelectorAll(`rect[data-slot]`))this.#t.push({el:t,stage:t.dataset.stage,index:Number(t.dataset.slot),y:Number(t.dataset.y),s:Number(t.dataset.s)});n&&this.resize(),this.drawFills(),this.applyCamera()}}readColors(e){let t=getComputedStyle(e);for(let e of bf)this.colors[e]=t.getPropertyValue(`--lm-${e}`).trim()}flowColor(e){let t=this.view.def.flows[e]?.color??`accent`;return this.colors[t]||t}outcomeColor(e){return e===`dropped`||e===`rejected`?this.colors.drop||`#b7392e`:e===`superseded`||e===`unread`?this.colors.muted||`#5d6d7c`:this.colors.ok||`#2a7f5a`}resize(){let e=this.canvas;if(!e||!this.scene)return;let t=e.getBoundingClientRect();if(!t.width)return;let n=Math.min(2,globalThis.devicePixelRatio||1),r=Math.round(t.width*n),i=Math.round(t.height*n);(e.width!==r||e.height!==i)&&(e.width=r,e.height=i,this.draw())}step(e,t={}){this.#a=this.paused,this.sim.step(e,t),e>0&&(this.#s+=e);let n=this.#l;n&&e>0&&this.#p()&&(n.t+=e,!n.story&&n.t>=Sf&&this.#d(null));let r=this.#r;r&&e>0&&(r.t+=e/r.seconds,r.t>=1&&(this.#r=null),this.#f(r.at(r.t))),this.#c&&this.#h(e)}get playing(){return!!this.#c&&this.#c.shot!==`back`}playStory(e){return!this.frame||!this.model.story[e]?!1:(this.#c={i:e-1,shot:`establish`,t:0,from:Du(this.frame),close:Du(this.frame),zoom:!1,targets:[],components:[],before:this.ev,waiting:!1,hand:null},this.#y(null),this.host?.playing(!0),!0)}stopStory(e={}){let t=this.#c;t&&(this.cue=null,this.host?.cue(null),this.#l?.story&&this.#d(null),t.shot!==`back`&&this.host?.playing(!1),e.cut||!this.camera||this.reducedMotion?(this.#c=null,this.#y(null)):this.#c={...t,shot:`back`,t:0,from:this.camera})}#p(){return!!this.scene&&this.scene.key===this.wantKey&&this.drawnValues===JSON.stringify(this.ev.values)}#m(e){return e.shot===`change`?wu(this.transition):e.shot===`hand`?Cu.hand:e.shot===`wide`?this.model.story[e.i]?.seconds??0:Cu[e.shot]}get story(){let e=this.#c;return e&&{i:e.i,shot:e.shot,t:e.t}}#h(e){let t=this.#c,n=this.frame;if(!n)return;if(t.waiting){if(!this.#p())return;t.waiting=!1}for(t.t+=e;this.#c===t&&t.t>=this.#m(t)&&!t.waiting;)t.t-=this.#m(t),this.#_(t);if(this.#c!==t)return;let r=this.#m(t)>0?t.t/this.#m(t):1,i=this.reducedMotion,a=Du(n),o;if(t.shot===`in`)o=i?t.close:Pu(a,t.close,r);else if(t.shot===`close`)o=t.close;else if(t.shot===`change`)o=t.zoom?Mu(n,t.targets,{hold:!0}):a;else if(t.shot===`hand`){let e=Mu(n,this.#g(t.hand?.to));o=i?e:Pu(t.from,e,t.t/1)}else o=t.shot===`out`||t.shot===`back`?i?a:Pu(t.from,a,r):a;this.#y(o);let s=this.#l;t.hand&&s?.story&&(i||s.t>=s.out)&&this.cue&&this.cue.detail!==t.hand.text&&this.#v({...this.cue,detail:t.hand.text})}#g(e){return(this.frame?.nodes??[]).filter(t=>e&&Ou(this.ev,t)===e).map(e=>e.id)}#_(e){let t=this.frame,n=this.model.story;if(e.shot===`back`)this.#c=null,this.#y(null);else if(e.shot===`establish`||e.shot===`wide`){if(this.#l?.story&&this.#d(null),e.i+1>=n.length){this.#c=null,this.#y(null),this.cue=null,this.host?.cue(null),this.host?.playing(!1);return}let r=e.i+1,i=n[r],a=this.model.evaluate(i.values),o=this.host,s=o?ku(t,this.ev,a,{a:o.shapes(this.ev),b:o.shapes(a)},i.focus):[],c=t.nodes.filter(e=>s.includes(e.id)),l=[...new Set(c.map(e=>Ou(a,e)).filter(e=>e!=null))],u=Mu(t,s),d=u.w<t.width-1e-6,f=Su(this.ev,a,this.model),p=f?{text:f,to:a.firstLimit.id}:null;Object.assign(e,{i:r,shot:`in`,from:Du(t),close:u,zoom:d,targets:s,components:l,before:this.ev,hand:p}),this.#v({step:r,title:Lu(this.model,this.ev.values,i,r),detail:Ru(this.ev,null,l),after:!1,top:u.y+u.h/2>t.height*.55,seconds:Tu(i,this.transition,!!p)})}else if(e.shot===`in`)e.shot=`close`;else if(e.shot===`close`)e.shot=`change`,e.waiting=!0,this.host?.show(e.i),this.#v({...this.cue,detail:Ru(e.before,this.ev,e.components),after:!0});else if(e.shot===`change`&&e.hand){e.shot=`hand`,e.from=this.camera??Du(t);let n=e.from,r=this.#g(e.hand.to),i=t.nodes.filter(e=>r.includes(e.id)).every(e=>e.x>=n.x&&e.y>=n.y&&e.x+e.w<=n.x+n.w&&e.y+e.h<=n.y+n.h);this.#l?.story&&(this.#l.inAt=this.#l.t+(this.reducedMotion||i?0:1))}else if(e.shot===`change`||e.shot===`hand`){e.shot=`out`,e.from=this.camera??Du(t);let n=this.#l;n?.story&&!Number.isFinite(n.inAt)&&(n.inAt=n.t)}else e.shot===`out`&&(e.shot=`wide`)}#v(e){this.cue=e,this.host?.cue(e)}#y(e){let t=this.frame,n=t&&e&&Math.abs(e.x)<1e-6&&Math.abs(e.y)<1e-6&&Math.abs(e.w-t.width)<1e-6;this.camera=!e||n?null:e,this.applyCamera()}applyCamera(){let e=this.frame;if(!this.svg||!e)return;let t=this.camera??Du(e),n=`${t.x} ${t.y} ${t.w} ${t.h}`;this.svg.getAttribute(`viewBox`)!==n&&this.svg.setAttribute(`viewBox`,n)}draw(e={}){this.drawFills();let t=this.canvas,n=t?.getContext(`2d`);t&&n&&this.frame&&(n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.width,t.height),e.particles!==!1&&this.paintParticles(n,t.width/this.frame.width))}drawFills(){this.drawHalos();for(let e of this.#t){let t=this.sim.slotBusy(e.stage,e.index),n=t<.02?0:(e.s-2)*t;e.el.setAttribute(`y`,(e.y+e.s-1-n).toFixed(2)),e.el.setAttribute(`height`,n.toFixed(2))}}drawHalos(){let e=this.ev.firstLimit,t=!this.reducedMotion&&(this.playing||e?.state===`warn`||e?.state===`over`),n=t?.5-.5*Math.cos(2*Math.PI*this.#s/Cf):.5,r=this.#l;for(let e of this.svg?.querySelectorAll(`g[data-halo]`)??[]){let i=e.dataset.halo===`was`,a=!i&&r?.to===e.dataset.component,o=i?r?this.#u(r,!0):0:a?this.#u(r,!1):1;Tf(e,Number(e.dataset.fade??1)*o);let s=e.querySelector(`[data-ring]`);if(!s)continue;let[c,l]=[Number(s.dataset.cx),Number(s.dataset.cy)],u=(1+.08*(1-o))*(i||!t?1:1+.035*n);wf(s,`transform`,u===1?``:`translate(${c} ${l}) scale(${u.toFixed(4)}) translate(${-c} ${-l})`);let d=s.querySelector(`[data-glow]`);d&&wf(d,`stroke-opacity`,(.1+.25*n).toFixed(3))}if(!r)return;let i=(e,t)=>this.reducedMotion?+(e>=0):Nu(Math.max(0,Math.min(1,e/t)));for(let e of this.svg?.querySelectorAll(`g[data-badge][data-was] [data-show]`)??[])Tf(e,i(r.t,r.out)*(r.story?1:1-i(r.t-2.1,.4)))}dots(){let e=this.frame;if(!e)return[];let t=[],n=new Set;for(let r of this.sim.particles){n.add(r.id);let[i,a]=this.#b(e,r),o=r.to.cell!=null&&r.phase!==`move`,s=r.outcome===`delivered`||r.outcome===`answered`;t.push({x:i,y:a-(r.phase===`fade`&&!s?r.t/r.dur*8:0),r:o?3:3.4,color:r.phase===`fade`?this.outcomeColor(r.outcome):this.flowColor(r.flow),alpha:r.phase===`fade`?Math.max(0,1-r.t/r.dur):1,...r.attempt?{ring:xf}:{}})}for(let e of this.#n.keys())n.has(e)||this.#n.delete(e);return t}paintParticles(e,t){let n=this.frame;if(!n)return;let r=this.camera??Du(n),[i,a]=[n.width*t,n.height*t],o=Math.min(i/r.w,a/r.h);e.save(),e.transform(o,0,0,o,(i-r.w*o)/2-r.x*o,(a-r.h*o)/2-r.y*o);for(let t of this.dots())e.globalAlpha=t.alpha,e.beginPath(),t.ring?(e.strokeStyle=t.color,e.lineWidth=t.ring,e.arc(t.x,t.y,t.r-t.ring/2,0,Math.PI*2),e.stroke()):(e.fillStyle=t.color,e.arc(t.x,t.y,t.r,0,Math.PI*2),e.fill());e.restore()}#b(e,t){if(t.phase!==`move`)return De(e,t.to,t.flow);let n=`${t.leg}|${t.from.stage}|${t.from.cell}|${t.to.stage}|${t.to.cell}`;if(this.#r){let r=this.#o;r.frame!==this.frameId&&(r.frame=this.frameId,r.paths.clear());let i=`${t.flow}|${n}`,a=r.paths.get(i);return a||(a=Oe(e,t.from,t.to,t.flow),r.paths.set(i,a)),ke(a,t.t/t.dur)}let r=this.#n.get(t.id);return r&&r.key===n||(r={key:n,points:Oe(e,t.from,t.to,t.flow)},this.#n.set(t.id,r)),ke(r.points,t.t/t.dur)}};function Df(e,t,n={}){let r=()=>({...e.defaults(),...n.initial}),[i,a]=(0,J.useState)(()=>({model:e,values:r()})),o=(0,J.useRef)(null),s=i.values;i.model!==e&&(s=r(),o.current=null,a({model:e,values:s}));let c=!o.current||o.current.values===s,l=(0,J.useMemo)(()=>o.current?.values===s?o.current.ev:e.evaluate(s),[e,s]),u=(0,J.useRef)(null);u.current&&u.current.model===e&&u.current.view===t||(u.current=new Ef(e,t,l,n));let d=u.current;d.transition=n.transition??.8;let[f,p]=(0,J.useState)(null),m=n.direction??`RIGHT`,[h,g]=(0,J.useState)(m),[_,v]=(0,J.useState)(null),[y,b]=(0,J.useState)(null),x=y?.view===t?y.scene:null,S=Of(`(prefers-reduced-motion: reduce)`);d.reducedMotion=S;let C=n.narrowBelow??640;(0,J.useEffect)(()=>{o.current&&o.current.values!==s||d.setEvaluation(l)},[d,l,s]),(0,J.useEffect)(()=>{if(!f)return;v(()=>kf(getComputedStyle(f).fontFamily));let e=new ResizeObserver(([e])=>{let t=e?.contentRect.width??f.clientWidth;g(t>0&&t<C?`DOWN`:m)});return e.observe(f),()=>e.disconnect()},[f,C,m]);let w=(0,J.useMemo)(()=>_?nt(t,l,{direction:h,measure:_}):``,[t,l,h,_]);c&&(d.wantKey=w);let T=n.elk;(0,J.useEffect)(()=>{if(!_||!w)return;let e=!0;return tt(t,d.ev,{direction:h,measure:_,elk:T??gd()}).then(n=>{e&&b({view:t,scene:n})},e=>console.error(`loadmap: layout failed`,e)),()=>{e=!1}},[w,t,d,h,_,T]);let E=(0,J.useMemo)(()=>et(t,l),[t,l]),D=(0,J.useRef)(s);c&&(D.current=s);let O=(0,J.useCallback)(t=>{let n={...D.current,...t};D.current=n;let r=e.evaluate(n);o.current={values:n,ev:r},d.setEvaluation(r),a({model:e,values:n})},[d,e]),[ee,k]=(0,J.useState)({engine:d,on:!1,cue:null}),A=ee.engine===d&&ee.on,te=ee.engine===d?ee.cue:null,ne=(0,J.useCallback)(()=>d.stopStory(),[d]),re=(0,J.useCallback)(e=>{ne(),O(e)},[ne,O]),ie=(0,J.useMemo)(()=>e.scenarioOf(s),[e,s]),ae=(0,J.useCallback)(t=>{let n=e.scenarios.find(e=>e.label===t);n&&re(n.values)},[e,re]),[j,oe]=(0,J.useState)({model:e,i:null}),se=j.model===e&&j.i!=null&&j.i<e.story.length?j.i:null,ce=(0,J.useCallback)(t=>{let n=t==null?void 0:e.story[t];n&&O(n.values),d.wantFocus=n?.focus??null,d.storyStep=n?t:null,oe({model:e,i:n?t:null})},[e,O,d]),le=(0,J.useCallback)(e=>{ne(),ce(e)},[ne,ce]),ue=se==null?void 0:e.story[se],de=!!ue&&Object.entries(ue.values).some(([e,t])=>s[e]!==t),fe=ue&&!de?ue.focus??null:null;d.wantFocus=fe,d.storyStep=se;let pe=(0,J.useRef)(_);pe.current=_,d.host={playing:e=>k(t=>({engine:d,on:e,cue:e&&t.engine===d?t.cue:null})),show:ce,cue:e=>k(t=>({engine:d,on:t.engine===d&&t.on,cue:e})),shapes:e=>rt(t,e,{direction:h,measure:pe.current??void 0})},(0,J.useEffect)(()=>{A&&de&&ne()},[A,de,ne]);let me=A&&e.story.length>0,he=(0,J.useCallback)(t=>{if(!t)return ne();let n=e.story.length-1;if(n<0)return;let r=se==null||se===n?0:de?se:se+1;de&&ce(null),d.playStory(r),!document.fullscreenElement&&!f?.hasAttribute(`data-full`)&&f?.querySelector(`.lm-board`)?.scrollIntoView({block:`nearest`})},[se,de,e,d,ne,ce,f]),[M,N]=(0,J.useState)(!1),[ge,_e]=(0,J.useState)(!1),ve=M||ge;(0,J.useEffect)(()=>{let e=()=>N(!!f&&document.fullscreenElement===f);return document.addEventListener(`fullscreenchange`,e),()=>document.removeEventListener(`fullscreenchange`,e)},[f]);let ye=n.fullScreenMode??`panels`,[be,xe]=(0,J.useState)({start:ye,mode:ye}),Se=be.start===ye?be.mode:ye,Ce=(0,J.useCallback)(e=>xe({start:ye,mode:e}),[ye]);(0,J.useEffect)(()=>{if(!f||!ve)return;f.setAttribute(`data-full`,ge?`overlay`:`screen`);let e=ge&&typeof f.showPopover==`function`;return e&&(f.popover=`manual`,f.showPopover()),()=>{f.removeAttribute(`data-full`),e&&(f.hidePopover(),f.removeAttribute(`popover`))}},[f,ve,ge]),(0,J.useEffect)(()=>{if(f&&ve)return f.setAttribute(`data-mode`,Se),()=>f.removeAttribute(`data-mode`)},[f,ve,Se]),(0,J.useEffect)(()=>{if(!ge)return;let e=e=>e.key===`Escape`&&_e(!1);return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[ge]);let we=(0,J.useCallback)(()=>{f&&(ge?_e(!1):document.fullscreenElement?document.exitFullscreen().catch(()=>{}):f.requestFullscreen?f.requestFullscreen().catch(()=>_e(!0)):_e(!0))},[f,ge]);return{model:e,view:t,values:s,setValues:re,scenario:ie,setScenario:ae,step:se,stepChanged:de,setStep:le,focus:fe,storyPlaying:me,setStoryPlaying:he,cue:me?te:null,fullScreen:ve,toggleFullScreen:we,fullScreenMode:Se,setFullScreenMode:Ce,ev:l,scene:x,labels:E,direction:h,reducedMotion:S,engine:d,rootRef:p,root:f}}function Of(e){let[t,n]=(0,J.useState)(()=>typeof matchMedia==`function`&&matchMedia(e).matches);return(0,J.useEffect)(()=>{if(typeof matchMedia!=`function`)return;let t=matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function kf(e){let t=document.createElement(`canvas`).getContext(`2d`);return t?(n,r,i=400)=>(t.font=`${i} ${r}px ${e}`,Math.ceil(t.measureText(n).width)):(e,t)=>e.length*t*.6}function Af(){if(typeof document>`u`)return null;let e=document.documentElement,t=e.dataset.theme;return t===`dark`||t===`light`?t:e.classList.contains(`dark`)?`dark`:e.classList.contains(`light`)?`light`:null}var jf=new Set,Mf=null;function Nf(e){return jf.add(e),!Mf&&typeof MutationObserver<`u`&&(Mf=new MutationObserver(()=>{for(let e of jf)e()}),Mf.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`,`class`]})),()=>{jf.delete(e),jf.size||(Mf?.disconnect(),Mf=null)}}var Pf=()=>()=>{};function Ff(e=`auto`){let t=(0,J.useSyncExternalStore)(e===`inherit`?Nf:Pf,Af,()=>null);return e===`inherit`?t??`auto`:e}function If({lm:e,theme:t=`auto`,children:n}){(0,J.useEffect)(()=>Vd(),[]);let r=Ff(t);return(0,J.useEffect)(()=>{if(!e.root)return;e.engine.readColors(e.root);let t=matchMedia(`(prefers-color-scheme: dark)`),n=()=>e.root&&e.engine.readColors(e.root);return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)},[e.root,e.engine,r]),(0,Y.jsx)(`div`,{className:`lm`,"data-theme":r===`auto`?void 0:r,ref:e.rootRef,children:n})}var Lf=[`verdict`,`live`,`limits`,`controls`,`headroom`,`compare`,`assumptions`];function Rf({model:e,view:t,theme:n,title:r,assumptions:i,headroom:a=!0,compare:o=!0,fullScreen:s=Lf,onNodeClick:c,selected:l,ref:u,...d}){let f=Df(e,t,d);(0,J.useImperativeHandle)(u,()=>$(f),[f]);let p=o&&e.scenarios.length>1,m=[];a&&m.push(`headroom`),p&&m.push(`compare`);let h=(...e)=>e.some(e=>s.includes(e))?void 0:``,g=e=>s.includes(e)&&(e===`headroom`?a:e!==`compare`||p),_=f.fullScreen,v=_&&f.fullScreenMode===`focus`,[y,b]=(0,J.useState)(null);y&&!_&&b(null);let x=(0,J.useRef)(null);(0,J.useEffect)(()=>{y&&x.current?.focus()},[y]);let S=(e,t)=>b({panel:e,from:t}),C=()=>{y?.from.focus(),b(null)};(0,J.useEffect)(()=>{if(!y)return;let e=e=>{e.key===`Escape`&&(e.stopPropagation(),y.from.focus(),b(null))};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)},[y]);let w=(...e)=>y&&e.includes(y.panel)?``:void 0,T=(e,t)=>(0,Y.jsx)(`div`,{className:`lm-panel`,"data-panel":e,"data-out":h(e),"data-drawn":w(e),children:(!_||y?.panel===e)&&t}),E=r!==!1&&(0,Y.jsx)(`h2`,{children:r??e.title}),D=g(`verdict`),O=v?D||g(`controls`):D||g(`assumptions`);return(0,Y.jsxs)(If,{lm:f,theme:n,children:[_?(0,Y.jsxs)(`div`,{className:`lm-head`,children:[E,(0,Y.jsx)(qu,{lm:f})]}):(0,Y.jsxs)(Y.Fragment,{children:[E,(0,Y.jsx)(qu,{lm:f})]}),(0,Y.jsx)(Ld,{lm:f}),(0,Y.jsx)(ed,{lm:f,onNodeClick:c,selected:l}),_&&O&&(0,Y.jsxs)(`div`,{className:`lm-line`,"data-tier":f.ev.verdict.tier,children:[(0,Y.jsx)(kd,{lm:f,verdict:D,extra:i?.length,open:S,assumptions:!v&&g(`assumptions`)}),v&&g(`controls`)&&(0,Y.jsx)(Sd,{lm:f})]}),_&&!v&&(0,Y.jsx)(jd,{lm:f,panels:Lf.filter(g),open:S}),(0,Y.jsxs)(`div`,{className:`lm-side lm-drawer`,"data-out":h(`verdict`,`live`,`limits`,`controls`,...m,`assumptions`),"data-drawer":y?.panel,...y&&{role:`dialog`,"aria-label":`The whole panel`},children:[y&&(0,Y.jsx)(`div`,{className:`lm-drawer-bar`,"data-drawn":``,children:(0,Y.jsx)(`button`,{type:`button`,className:`lm-btn`,onClick:C,ref:x,children:`✕ Back to full screen`})}),T(`verdict`,(0,Y.jsx)(vd,{lm:f})),m.length>0&&(0,Y.jsxs)(`div`,{className:m.length>1?`lm-charts lm-strip`:`lm-charts`,"data-out":h(...m),"data-drawn":w(...m),children:[a&&T(`headroom`,(0,Y.jsx)(Zu,{lm:f})),p&&T(`compare`,(0,Y.jsx)(Ju,{lm:f}))]}),(0,Y.jsxs)(`div`,{className:`lm-strip lm-live`,"data-out":h(`live`,`limits`,`controls`),"data-drawn":w(`live`,`limits`,`controls`),children:[(0,Y.jsxs)(`div`,{className:`lm-card`,"data-out":h(`live`,`limits`),"data-drawn":w(`live`,`limits`),children:[T(`live`,(0,Y.jsx)(xd,{lm:f})),T(`limits`,(0,Y.jsx)(bd,{lm:f}))]}),T(`controls`,(0,Y.jsx)(Cd,{lm:f}))]}),T(`assumptions`,(0,Y.jsx)(wd,{lm:f,extra:i}))]})]})}function $(e){let{engine:t}=e;return{engine:t,async ready(e=1e4){let n=performance.now(),r=()=>t.scene&&t.scene.key===t.wantKey&&t.svg&&t.drawnValues===JSON.stringify(t.ev.values)&&t.drawnFocus===t.wantFocus&&t.drawnFrame===t.frameId;for(;!r();){if(performance.now()-n>e)throw Error(`loadmap: layout not ready`);await new Promise(e=>requestAnimationFrame(e))}},pause:()=>{t.paused=!0},resume:()=>{t.paused=!1},values:()=>t.ev.values,setValues:t=>e.setValues(t),setStoryStep:t=>e.setStep(t),storyStep:()=>t.storyStep,playStory:()=>{let e=t.ev;if(!t.playStory(0))throw Error(`loadmap: the story cannot play: nothing is drawn yet, or there is none`);return Eu(t.model,e,t.transition)},reset:e=>t.reset(e),step:e=>{t.step(e,{particles:!0}),t.draw({particles:!0})},board:()=>t.svg&&t.canvas&&t.frame?{svg:t.svg,canvas:t.canvas,scene:t.frame}:null}}var zf=t((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var ee=new MessageChannel,k=ee.port2;ee.port1.onmessage=D,O=function(){k.postMessage(null)}}else O=function(){_(D,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),Bf=t(((e,t)=>{t.exports=zf()})),Vf=t((e=>{var t=hu();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.1`})),Hf=t(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Vf()})),Uf=t((e=>{var t=Bf(),n=hu(),r=Hf();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}function f(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&f(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function p(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function m(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function h(e){var t=[null,null],n=p(e);return n===null||g(t,e,n.child,{foundSelf:!1}),t}function g(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&g(e,t,n.child,r))return!0;n=n.sibling}return!1}function _(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var v=null,y=null;function b(e,t,n){return e===n||e===t&&(v=e,!0)}function x(e,t,n){return e===n?(y=e,!1):e===t&&(y!==null&&(v=e),!0)}function S(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function C(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var w=Object.assign,T=Symbol.for(`react.element`),E=Symbol.for(`react.transitional.element`),D=Symbol.for(`react.portal`),O=Symbol.for(`react.fragment`),ee=Symbol.for(`react.strict_mode`),k=Symbol.for(`react.profiler`),A=Symbol.for(`react.consumer`),te=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),re=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),ae=Symbol.for(`react.memo`),j=Symbol.for(`react.lazy`),oe=Symbol.for(`react.activity`),se=Symbol.for(`react.legacy_hidden`),ce=Symbol.for(`react.memo_cache_sentinel`),le=Symbol.for(`react.view_transition`),ue=Symbol.for(`react.recoverable`),de=Symbol.iterator;function fe(e){return typeof e!=`object`||!e?null:(e=de&&e[de]||e[`@@iterator`],typeof e==`function`?e:null)}var pe=Symbol.for(`react.client.reference`);function me(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===pe?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case O:return`Fragment`;case k:return`Profiler`;case ee:return`StrictMode`;case re:return`Suspense`;case ie:return`SuspenseList`;case oe:return`Activity`;case le:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case D:return`Portal`;case te:return e.displayName||`Context`;case A:return(e._context.displayName||`Context`)+`.Consumer`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ae:return t=e.displayName||null,t===null?me(e.type)||`Memo`:t;case j:t=e._payload,e=e._init;try{return me(e(t))}catch{}}return null}var he=Array.isArray,M=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ge={pending:!1,data:null,method:null,action:null},_e=[],ve=-1;function ye(e){return{current:e}}function be(e){0>ve||(e.current=_e[ve],_e[ve]=null,ve--)}function xe(e,t){ve++,_e[ve]=e.current,e.current=t}var Se=ye(null),Ce=ye(null),we=ye(null),Te=ye(null);function Ee(e,t){switch(xe(we,t),xe(Ce,e),xe(Se,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}be(Se),xe(Se,e)}function De(){be(Se),be(Ce),be(we)}function Oe(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,xe(Te,e)),t=Se.current;var n=dp(t,e.type);t!==n&&(xe(Ce,e),xe(Se,n))}function ke(e){Ce.current===e&&(be(Se),be(Ce)),Te.current===e&&(be(Te),sh._currentValue=ge)}var Ae,je;function Me(e){if(Ae===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ae=t&&t[1]||``,je=-1<e.stack.indexOf(`
292
+ `;function Vd(e=document){if(e.getElementById(`loadmap-css`))return;let t=e.createElement(`style`);t.id=`loadmap-css`,t.textContent=Bd,e.head.appendChild(t)}var Hd=[0,.3],Ud=[.15,.8],Wd=[.6,1],Gd=[.7,1],Kd=24,qd=(e,[t,n])=>Math.min(1,Math.max(0,(e-t)/(n-t))),Jd=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2,Yd=(e,t,n)=>e+(t-e)*n,Xd=(e,t,n)=>({...t,x:Yd(e.x,t.x,n),y:Yd(e.y,t.y,n),w:Yd(e.w,t.w,n),h:Yd(e.h,t.h,n)}),Zd=(e,t,n)=>({...t,x:Yd(e.x,t.x,n),y:Yd(e.y,t.y,n)}),Qd=(e,t)=>e.fade==null?{}:{fade:Yd(e.fade,1,t.enter)},$d=(e,t)=>({...e,fade:(e.fade??1)*t.out});function ef(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Set(t.nodes.map(e=>e.id)),i=new Map(e.edges.map(e=>[e.id,e])),a=new Set(t.edges.map(e=>e.id)),o=new Map;for(let e of t.edges){let t=i.get(e.id)?.points;t?.length&&e.points.length&&o.set(e.id,nf(t,e.points)?[t,e.points]:[af(t,Kd),af(e.points,Kd)])}return s=>{if(s>=1)return t;let c=Jd(qd(s,Ud)),l={out:1-qd(s,Hd),enter:qd(s,Wd)},u=qd(s,Gd),d=t.edges.map(e=>{let t=i.get(e.id),n=o.get(e.id);if(!t||!n)return{...e,fade:l.enter,draw:u};let[r,a]=n,s=r.map((e,t)=>[Yd(e[0],a[t][0],c),Yd(e[1],a[t][1],c)]),d=e.label&&(t.label?Xd(t.label,e.label,c):e.label);return{...e,points:s,label:d,...Qd(t,l),...t.draw==null?{}:{draw:Yd(t.draw,1,u)}}});for(let t of e.edges)a.has(t.id)||d.push($d(t,l));let f=t.nodes.map(e=>{let t=n.get(e.id);return t?tf(t,e,c,l):{...e,fade:l.enter}});for(let t of e.nodes)r.has(t.id)||f.push($d(t,l));return{...t,width:Yd(e.width,t.width,c),height:Yd(e.height,t.height,c),nodes:f,edges:d}}}function tf(e,t,n,r){let i=t.members.map((t,i)=>{let a=e.members[i];return a?{...Xd(a,t,n),spot:Zd(a.spot,t.spot,n),...Qd(a,r)}:{...t,fade:r.enter}});for(let n of e.members.slice(t.members.length))i.push($d(n,r));let a=e=>{let t=new Map;return e.map(e=>{let n=`${e.flow}|${e.text}`,r=t.get(n)??0;return t.set(n,r+1),`${n}|${r}`})},o=a(e.groups),s=new Map(e.groups.map((e,t)=>[o[t],e])),c=a(t.groups),l=t.groups.map((e,t)=>{let i=s.get(c[t]);return i?{...e,spot:Zd(i.spot,e.spot,n),...Qd(i,r)}:{...e,fade:r.enter}}),u=new Set(c);e.groups.forEach((e,t)=>{u.has(o[t])||l.push($d(e,r))});let d=e=>`${e.stage}/${e.flow}/${e.index}`,f=new Map(e.cells.map(e=>[d(e),e])),p=new Set(t.cells.map(d)),m=t.cells.map(e=>{let t=f.get(d(e));return t?{...Xd(t,e,n),...Qd(t,r)}:{...e,fade:r.enter}});for(let t of e.cells)p.has(d(t))||m.push($d(t,r));let h=new Map(e.slots.map(e=>[e.index,e])),g=new Set(t.slots.map(e=>e.index)),_=t.slots.map(e=>{let t=h.get(e.index);return t?{...Xd(t,e,n),...Qd(t,r)}:{...e,fade:r.enter}});for(let t of e.slots)g.has(t.index)||_.push($d(t,r));return{...Xd(e,t,n),...Qd(e,r),title:Zd(e.title,t.title,n),sub:t.sub&&(e.sub?Zd(e.sub,t.sub,n):t.sub),members:i,groups:l,cells:m,slots:_}}function nf(e,t){return e.length===t.length&&e.every((n,r)=>r===0||rf(e[r-1],n)===rf(t[r-1],t[r]))}var rf=(e,t)=>Math.abs(t[0]-e[0])>=Math.abs(t[1]-e[1])?`h`:`v`;function af(e,t){if(e.length<2)return Array.from({length:t},()=>e[0]??[0,0]);let n=[0];for(let t=1;t<e.length;t++)n.push(n[t-1]+Math.hypot(e[t][0]-e[t-1][0],e[t][1]-e[t-1][1]));let r=n.at(-1),i=[],a=1;for(let o=0;o<t;o++){let s=r*o/(t-1);for(;a<n.length-1&&n[a]<s;)a++;let c=n[a]-n[a-1],l=c>0?(s-n[a-1])/c:1,u=e[a-1],d=e[a];i.push([Yd(u[0],d[0],l),Yd(u[1],d[1],l)])}return i}function of(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var sf=.7;function cf(e,t,n,r=1){let i=e*t,a=Array(i),o=of(r);for(let r=0;r<e;r++){let i=Array.from({length:t},(e,t)=>t);for(let e=t-1;e>0;e--){let t=Math.floor(o()*(e+1));[i[e],i[t]]=[i[t],i[e]]}i.forEach((i,o)=>{a[r*t+i]=n===`round-robin`?o*e+r:r*t+o})}let s=Array.from({length:i},()=>.92+o()*.16),c=s.reduce((e,t)=>e+t,0)/(i||1);return{rank:a,jitter:s.map(e=>e/c)}}function lf(e,t,n){let r=t.rank.length,i=Math.min(1,Math.max(0,n))*r,a=t.rank[e],o;if(i<=sf*r){let e=Math.floor(i/sf);o=a<e?sf:a===e?i-e*sf:0}else o=sf+(i-sf*r)/r;return Math.min(1,Math.max(0,o*(t.jitter[e]??1)))}var uf=()=>({backlog:0,lag:0,arriving:0,served:0,dropped:0,merged:0,merging:!1}),df=1,ff=2e3,pf=3,mf=class{speed;time=0;particles=[];dotScale=1;#e;#t;#n;#r;#i=``;#a=new Map;#o=new Map;#s=new Map;#c=new Map;#l=new Map;#u=new Map;#d=new Map;#f=1;constructor(e,t,n={}){this.#e={seed:1,speed:10,dotTarget:28,minDots:1,maxDots:40,legSeconds:.45,maxParticles:800,...n},this.speed=this.#e.speed,this.#t=of(this.#e.seed),this.#n=e,this.update(t);for(let e of Object.values(t.stages))e.kind===`workers`&&this.#o.set(e.id,this.#m(e.id))}update(e){this.#r=e;let t=JSON.stringify(Object.values(e.stages).map(e=>e.kind===`queue`?[e.id,e.partitions]:e.kind===`workers`?[e.id,e.pods,e.perPod,e.fill]:[e.id,e.kind]));if(t!==this.#i){this.#i=t;let n=(t,n)=>{if(t.stage==null)return!0;let r=e.stages[t.stage];return r?t.cell==null?!0:r.kind===`queue`?t.cell<(r.partitions[n]??0):r.kind===`workers`&&t.cell<r.pods*r.perPod:!1};this.particles=this.particles.filter(e=>n(e.from,e.flow)&&n(e.to,e.flow)),this.#s.clear()}let n=this.#n.thresholds.full,r=Object.values(e.stages);this.#c.clear();for(let e of r)this.#c.set(e.id,`shed`in e?e.shed:0);this.#l.clear();for(let t of this.#n.flowIds){let n=e.flows[t]??0;for(let r of e.routes[t]??[]){this.#l.set(`${r}/${t}`,n);let i=e.stages[r];i.kind!==`fanout`&&(n*=1-(this.#c.get(r)??0)),i.kind===`cache`&&(n*=1-i.hit)}}this.#u.clear();let i=new Map;for(let t of r){let r=t.component?e.components[t.component]:void 0,a=1/0;if(r&&r.util!=null&&r.full!=null&&Number.isFinite(r.full)){if(r.full>0){let n=i.get(r.full);n||(n=this.#n.evaluate({...e.values,load:r.full}),i.set(r.full,n)),a=this.#n.flowIds.reduce((e,r)=>e+(n.at[t.id]?.[r]??0),0)}else{let i=this.#n.flowIds.reduce((n,r)=>n+(e.at[t.id]?.[r]??0),0);a=r.util>0?i*n/r.util:0}}this.#u.set(t.id,a)}let a=this.#n.flowIds.reduce((t,n)=>t+(e.flows[n]??0),0);this.dotScale=Math.max(1,m(a/this.#e.dotTarget))}step(e,t={}){if(!(e>0))return;let n=e*this.speed;this.time+=n,this.#g(n),t.particles!==!1&&(this.#_(e),this.#y(e))}queue(e,t){return this.#a.get(e)?.get(t)?.s??uf()}busy(e){return this.#o.get(e)??this.#m(e)}shed(e){return this.#c.get(e)??0}slotBusy(e,t){let n=this.#r.stages[e];if(n?.kind!==`workers`||t>=n.running*n.perPod)return 0;let r=`${e}/${n.running}`,i=this.#s.get(r);return i||(i=cf(n.running,n.perPod,n.fill,this.#e.seed),this.#s.set(r,i)),lf(t,i,this.busy(e))}arriving(e){return this.#n.flowIds.reduce((t,n)=>t+(this.#l.get(`${e}/${n}`)??0),0)}running(e){let t=this.#r.stages[e];return t?.kind===`workers`?t.running:0}#p(e){return this.#r.components[e]?.util??null}#m(e){let t=this.#r.stages[e],n=t?.component?this.#p(t.component):null;return Math.min(1,(n??0)/this.#n.thresholds.full*this.#h(e))}#h(e){let t=this.#r.stages[e];return t?.kind===`workers`&&t.running>0?t.pods/t.running:1}#g(e){let t=this.#r,n=[];for(let r of Object.values(t.stages)){if(r.kind!==`queue`)continue;let i=this.#a.get(r.id)??new Map;this.#a.set(r.id,i);for(let a of this.#n.flowIds){let o=t.routes[a]??[];if(!o.includes(r.id))continue;let s=i.get(a)??{cohorts:[],s:uf()};i.set(a,s);let c=this.#l.get(`${r.id}/${a}`)??0,l=Math.min(.95,Math.max(0,t.overload[a]?.merge?.share??0));s.s.merging=l>0&&gf(s.cohorts)>c*1;let u=c*e,d=s.cohorts.at(-1);d&&this.time-d.t<df?d.n+=u:u>0&&s.cohorts.push({t:this.time,n:u}),s.cohorts.length>ff&&(s.cohorts=vf(s.cohorts));let f=o[o.indexOf(r.id)+1]??`∞`,p=s.s.merging?1/(1-l):1;n.push({q:r.id,f:a,fq:s,drainer:f,prio:this.#n.def.flows[a]?.priority??1,k:p})}}let r=new Map;for(let t of new Set(n.map(e=>e.drainer))){let i=n.filter(e=>e.drainer===t),a=t===`∞`?1/0:(this.#u.get(t)??1/0)*e;for(let n of[...new Set(i.map(e=>e.prio))].sort((e,t)=>e-t)){let o=i.filter(e=>e.prio===n),s=o.reduce((e,t)=>e+gf(t.fq.cohorts)/t.k,0),c=0;for(let t of o){let n=gf(t.fq.cohorts),r=Number.isFinite(a)?s>0?Math.min(n,a*n/s):0:n,i=r/t.k;_f(t.fq.cohorts,r),c+=i,t.fq.s.served=yf(t.fq.s.served,i/e,e),t.fq.s.merged=yf(t.fq.s.merged,(r-i)/e,e)}a=Math.max(0,a-c),r.set(t,(r.get(t)??0)+c)}}for(let{q:r,f:i,fq:a}of n){let n=0,o=t.overload[i]?.drop;if(o)for(;a.cohorts.length&&this.time-a.cohorts[0].t>o.olderThan;)n+=a.cohorts.shift().n;let s=this.#l.get(`${r}/${i}`)??0;gf(a.cohorts)<1e-9*Math.max(1,s)&&(a.cohorts=[]),a.s.backlog=gf(a.cohorts),a.s.lag=a.cohorts.length?this.time-a.cohorts[0].t:0,a.s.arriving=yf(a.s.arriving,s,e),a.s.dropped=yf(a.s.dropped,n/e,e)}for(let n of Object.values(t.stages)){if(n.kind!==`workers`)continue;let t=this.#u.get(n.id)??1/0,i=r.has(n.id)&&Number.isFinite(t)&&t>0?r.get(n.id)/(t*e)*this.#h(n.id):this.#m(n.id);this.#o.set(n.id,yf(this.#o.get(n.id)??i,Math.min(1,i),e))}}#_(e){let{minDots:t,maxDots:n,legSeconds:r,maxParticles:i}=this.#e;for(let a of this.#n.flowIds){let o=this.#r.retry[a]?.rate??this.#r.flows[a]??0;if(o<=0)continue;let s=Math.min(n,Math.max(t,o/this.dotScale)),c=(this.#d.get(a)??0)+s*e;for(;c>=1;){if(--c,this.particles.length>=i)continue;let e=this.#r.routes[a][0];this.particles.push({id:this.#f++,flow:a,leg:0,phase:`move`,t:0,dur:r,from:{stage:null},to:this.#b(e,a)})}this.#d.set(a,c)}}#v(e){let t=this.#r.retry[e.flow],n=(e.attempt??0)+1;return!t||n>t.times||this.#t()>=t.retried?null:{id:this.#f++,flow:e.flow,leg:0,phase:`move`,t:0,dur:this.#e.legSeconds,from:{stage:null},to:this.#b(this.#r.routes[e.flow][0],e.flow),attempt:n}}#y(e){let t=this.#r,n=(e,t,n)=>{e.phase=`fade`,e.outcome=t,e.t=0,e.dur=n,e.from=e.to},r=e=>{let r=t.routes[e.flow];if(e.leg+1>=r.length)return n(e,`delivered`,.35);e.leg++,e.phase=`move`,e.t=0,e.dur=this.#e.legSeconds,e.from=e.to,e.to=this.#b(r[e.leg],e.flow)},i=[],a=e=>{n(e,`rejected`,.6);let t=this.particles.length+i.length<this.#e.maxParticles?this.#v(e):null;t&&i.push(t)};for(let o of this.particles){if(o.t+=e,o.t<o.dur)continue;if(o.phase===`move`&&o.back){n(o,`answered`,.35);continue}let s=t.stages[o.to.stage??``];if(o.phase===`fade`||!s)o.phase=`fade`,o.outcome??=`delivered`;else if(o.phase===`move`&&o.branch)n(o,this.#t()<this.shed(o.from.stage??``)||s.kind===`pass`&&this.#t()<this.shed(s.id)?`rejected`:`delivered`,.35);else if(o.phase===`move`&&s.kind===`fanout`){let e=0;for(let t of s.to[o.flow]??[]){let n=Math.floor(t.share)+ +(this.#t()<t.share%1);for(let r=0;r<n;r++,e++)this.particles.length+i.length<this.#e.maxParticles&&i.push({id:this.#f++,flow:o.flow,leg:o.leg,phase:`move`,t:0,dur:this.#e.legSeconds,from:o.to,to:{stage:t.stage},branch:t.stage})}e?n(o,`delivered`,0):n(o,`unread`,.6)}else if(o.phase===`move`){if((s.kind===`pass`||s.kind===`limit`||s.kind===`cache`)&&this.#t()<this.shed(s.id))a(o);else if(s.kind===`cache`&&this.#t()<s.hit){let e=o.from;o.from=o.to,o.to=e,o.t=0,o.dur=this.#e.legSeconds,o.back=!0}else if(s.kind===`queue`){let e=this.queue(s.id,o.flow).lag;o.phase=`hold`,o.t=0,o.dur=.12+Math.min(e,120)/120*2.6}else s.kind===`workers`?(o.phase=`hold`,o.t=0,o.dur=.15):r(o)}else if(o.phase===`hold`){let e=s.kind===`queue`?this.queue(s.id,o.flow):null,i=e&&e.arriving>0?Math.min(1,e.dropped/e.arriving):0,a=e?.merging?t.overload[o.flow]?.merge?.share??0:0;this.#t()<a?n(o,`superseded`,.6):this.#t()<i?n(o,`dropped`,.6):r(o)}}this.particles=this.particles.filter(e=>!(e.phase===`fade`&&e.t>=e.dur)).concat(i)}#b(e,t){let n=this.#r.stages[e];if(n?.kind===`queue`){let r=n.partitions[t]??0;return r>0?{stage:e,cell:Math.floor(this.#t()*r)}:{stage:e}}return n?.kind===`workers`?{stage:e,cell:this.#x(n.id,n.running*n.perPod)}:{stage:e}}#x(e,t){let n=0;for(let r=0;r<t;r++)n+=this.slotBusy(e,r);if(n<=.001)return Math.floor(this.#t()*t);let r=this.#t()*n;for(let n=0;n<t;n++)if(r-=this.slotBusy(e,n),r<=0)return n;return t-1}};function hf(e,t,n){return new mf(e,t,n)}var gf=e=>e.reduce((e,t)=>e+t.n,0);function _f(e,t){let n=t;for(;n>0&&e.length;){let t=e[0];t.n<=n?(n-=t.n,e.shift()):(t.n-=n,n=0)}}function vf(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];t.push(i?{t:r.t,n:r.n+i.n}:r)}return t}function yf(e,t,n){return e+(t-e)*Math.min(1,n/pf)}var bf=[`accent`,`alt`,`ok`,`warn`,`drop`,`muted`,`fg`,`surface`,`line`],xf=1.4,Sf=2.5,Cf=2.4;function wf(e,t,n){e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Tf(e,t){t>=1?e.removeAttribute(`opacity`):wf(e,`opacity`,t.toFixed(3))}var Ef=class{model;view;sim;ev;scene=null;frame=null;frameId=0;drawnFrame=-1;transition=.8;wantKey=``;drawnValues=``;wantFocus=null;storyStep=null;drawnFocus=null;paused=!1;reducedMotion=!1;camera=null;cue=null;host=null;colors={};svg=null;canvas=null;#e;#t=[];#n=new Map;#r=null;#i=new Set;#a=!1;#o={frame:-1,paths:new Map};#s=0;#c=null;#l=null;constructor(e,t,n,r={}){this.model=e,this.view=t,this.ev=n,this.#e=r,this.sim=hf(e,n,r)}setEvaluation(e){if(e===this.ev)return;let t=JSON.stringify(e.values)===JSON.stringify(this.ev.values),n=this.ev.firstLimit?.id,r=e.firstLimit?.id;if(this.ev=e,t||this.sim.update(e),n===r)return;let i=this.#c?.shot===`change`,a=this.paused&&!this.#a;this.#d(n&&r&&this.frame&&!a?{from:n,to:r,t:0,fade:this.#l?.to===n?this.#u(this.#l,!1):1,...i?{out:.5,in:.6,inAt:1/0}:{out:.3,in:.3,inAt:this.reducedMotion?0:.3},story:i}:null)}#u(e,t){let n=(e,t)=>this.reducedMotion?+(e>=0):Nu(Math.max(0,Math.min(1,e/t)));return t?e.fade*(1-n(e.t,e.out)):n(e.t-e.inAt,e.in)}get handover(){return this.#l}#d(e){if(e!==this.#l){this.#l=e;for(let e of this.#i)e()}}setScene(e,t={}){if(e===this.scene)return;let n=this.frame,r=this.transition;this.scene=e,this.#n.clear();let i=n&&!t.cut&&r>0&&Number.isFinite(r)&&(!this.paused||this.#a)&&n.direction===e.direction&&n.key!==e.key;this.#r=i?{at:ef(n,e),t:0,seconds:r}:null,this.#f(i?this.#r.at(0):e)}subscribe=e=>(this.#i.add(e),()=>this.#i.delete(e));#f(e){this.frame=e,this.frameId++;for(let e of this.#i)e()}reset(e){this.sim=hf(this.model,this.ev,{...this.#e,seed:e??this.#e.seed}),this.#n.clear(),this.#s=0,this.#d(null),this.#r&&this.scene&&(this.#r=null,this.#f(this.scene))}bind(e,t){let n=t!==this.canvas;if(this.svg=e,this.canvas=t,this.#t=[],e){for(let t of e.querySelectorAll(`rect[data-slot]`))this.#t.push({el:t,stage:t.dataset.stage,index:Number(t.dataset.slot),y:Number(t.dataset.y),s:Number(t.dataset.s)});n&&this.resize(),this.drawFills(),this.applyCamera()}}readColors(e){let t=getComputedStyle(e);for(let e of bf)this.colors[e]=t.getPropertyValue(`--lm-${e}`).trim()}flowColor(e){let t=this.view.def.flows[e]?.color??`accent`;return this.colors[t]||t}outcomeColor(e){return e===`dropped`||e===`rejected`?this.colors.drop||`#b7392e`:e===`superseded`||e===`unread`?this.colors.muted||`#5d6d7c`:this.colors.ok||`#2a7f5a`}resize(){let e=this.canvas;if(!e||!this.scene)return;let t=e.getBoundingClientRect();if(!t.width)return;let n=Math.min(2,globalThis.devicePixelRatio||1),r=Math.round(t.width*n),i=Math.round(t.height*n);(e.width!==r||e.height!==i)&&(e.width=r,e.height=i,this.draw())}step(e,t={}){this.#a=this.paused,this.sim.step(e,t),e>0&&(this.#s+=e);let n=this.#l;n&&e>0&&this.#p()&&(n.t+=e,!n.story&&n.t>=Sf&&this.#d(null));let r=this.#r;r&&e>0&&(r.t+=e/r.seconds,r.t>=1&&(this.#r=null),this.#f(r.at(r.t))),this.#c&&this.#h(e)}get playing(){return!!this.#c&&this.#c.shot!==`back`}playStory(e){return!this.frame||!this.model.story[e]?!1:(this.#c={i:e-1,shot:`establish`,t:0,from:Du(this.frame),close:Du(this.frame),zoom:!1,targets:[],components:[],before:this.ev,waiting:!1,hand:null},this.#y(null),this.host?.playing(!0),!0)}stopStory(e={}){let t=this.#c;t&&(this.cue=null,this.host?.cue(null),this.#l?.story&&this.#d(null),t.shot!==`back`&&this.host?.playing(!1),e.cut||!this.camera||this.reducedMotion?(this.#c=null,this.#y(null)):this.#c={...t,shot:`back`,t:0,from:this.camera})}#p(){return!!this.scene&&this.scene.key===this.wantKey&&this.drawnValues===JSON.stringify(this.ev.values)}#m(e){return e.shot===`change`?wu(this.transition):e.shot===`hand`?Cu.hand:e.shot===`wide`?this.model.story[e.i]?.seconds??0:Cu[e.shot]}get story(){let e=this.#c;return e&&{i:e.i,shot:e.shot,t:e.t}}#h(e){let t=this.#c,n=this.frame;if(!n)return;if(t.waiting){if(!this.#p())return;t.waiting=!1}for(t.t+=e;this.#c===t&&t.t>=this.#m(t)&&!t.waiting;)t.t-=this.#m(t),this.#_(t);if(this.#c!==t)return;let r=this.#m(t)>0?t.t/this.#m(t):1,i=this.reducedMotion,a=Du(n),o;if(t.shot===`in`)o=i?t.close:Pu(a,t.close,r);else if(t.shot===`close`)o=t.close;else if(t.shot===`change`)o=t.zoom?Mu(n,t.targets,{hold:!0}):a;else if(t.shot===`hand`){let e=Mu(n,this.#g(t.hand?.to));o=i?e:Pu(t.from,e,t.t/1)}else o=t.shot===`out`||t.shot===`back`?i?a:Pu(t.from,a,r):a;this.#y(o);let s=this.#l;t.hand&&s?.story&&(i||s.t>=s.out)&&this.cue&&this.cue.detail!==t.hand.text&&this.#v({...this.cue,detail:t.hand.text})}#g(e){return(this.frame?.nodes??[]).filter(t=>e&&Ou(this.ev,t)===e).map(e=>e.id)}#_(e){let t=this.frame,n=this.model.story;if(e.shot===`back`)this.#c=null,this.#y(null);else if(e.shot===`establish`||e.shot===`wide`){if(this.#l?.story&&this.#d(null),e.i+1>=n.length){this.#c=null,this.#y(null),this.cue=null,this.host?.cue(null),this.host?.playing(!1);return}let r=e.i+1,i=n[r],a=this.model.evaluate(i.values),o=this.host,s=o?ku(t,this.ev,a,{a:o.shapes(this.ev),b:o.shapes(a)},i.focus):[],c=t.nodes.filter(e=>s.includes(e.id)),l=[...new Set(c.map(e=>Ou(a,e)).filter(e=>e!=null))],u=Mu(t,s),d=u.w<t.width-1e-6,f=Su(this.ev,a,this.model),p=f?{text:f,to:a.firstLimit.id}:null;Object.assign(e,{i:r,shot:`in`,from:Du(t),close:u,zoom:d,targets:s,components:l,before:this.ev,hand:p}),this.#v({step:r,title:Lu(this.model,this.ev.values,i,r),detail:Ru(this.ev,null,l),after:!1,top:u.y+u.h/2>t.height*.55,seconds:Tu(i,this.transition,!!p)})}else if(e.shot===`in`)e.shot=`close`;else if(e.shot===`close`)e.shot=`change`,e.waiting=!0,this.host?.show(e.i),this.#v({...this.cue,detail:Ru(e.before,this.ev,e.components),after:!0});else if(e.shot===`change`&&e.hand){e.shot=`hand`,e.from=this.camera??Du(t);let n=e.from,r=this.#g(e.hand.to),i=t.nodes.filter(e=>r.includes(e.id)).every(e=>e.x>=n.x&&e.y>=n.y&&e.x+e.w<=n.x+n.w&&e.y+e.h<=n.y+n.h);this.#l?.story&&(this.#l.inAt=this.#l.t+(this.reducedMotion||i?0:1))}else if(e.shot===`change`||e.shot===`hand`){e.shot=`out`,e.from=this.camera??Du(t);let n=this.#l;n?.story&&!Number.isFinite(n.inAt)&&(n.inAt=n.t)}else e.shot===`out`&&(e.shot=`wide`)}#v(e){this.cue=e,this.host?.cue(e)}#y(e){let t=this.frame,n=t&&e&&Math.abs(e.x)<1e-6&&Math.abs(e.y)<1e-6&&Math.abs(e.w-t.width)<1e-6;this.camera=!e||n?null:e,this.applyCamera()}applyCamera(){let e=this.frame;if(!this.svg||!e)return;let t=this.camera??Du(e),n=`${t.x} ${t.y} ${t.w} ${t.h}`;this.svg.getAttribute(`viewBox`)!==n&&this.svg.setAttribute(`viewBox`,n)}draw(e={}){this.drawFills();let t=this.canvas,n=t?.getContext(`2d`);t&&n&&this.frame&&(n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,t.width,t.height),e.particles!==!1&&this.paintParticles(n,t.width/this.frame.width))}drawFills(){this.drawHalos();for(let e of this.#t){let t=this.sim.slotBusy(e.stage,e.index),n=t<.02?0:(e.s-2)*t;e.el.setAttribute(`y`,(e.y+e.s-1-n).toFixed(2)),e.el.setAttribute(`height`,n.toFixed(2))}}drawHalos(){let e=this.ev.firstLimit,t=!this.reducedMotion&&(this.playing||e?.state===`warn`||e?.state===`over`),n=t?.5-.5*Math.cos(2*Math.PI*this.#s/Cf):.5,r=this.#l;for(let e of this.svg?.querySelectorAll(`g[data-halo]`)??[]){let i=e.dataset.halo===`was`,a=!i&&r?.to===e.dataset.component,o=i?r?this.#u(r,!0):0:a?this.#u(r,!1):1;Tf(e,Number(e.dataset.fade??1)*o);let s=e.querySelector(`[data-ring]`);if(!s)continue;let[c,l]=[Number(s.dataset.cx),Number(s.dataset.cy)],u=i?1:(1+.08*(1-o))*(t?1+.035*n:1);wf(s,`transform`,u===1?``:`translate(${c} ${l}) scale(${u.toFixed(4)}) translate(${-c} ${-l})`);let d=s.querySelector(`[data-glow]`);d&&wf(d,`stroke-opacity`,(.1+.25*n).toFixed(3))}if(!r)return;let i=(e,t)=>this.reducedMotion?+(e>=0):Nu(Math.max(0,Math.min(1,e/t)));for(let e of this.svg?.querySelectorAll(`g[data-badge][data-was] [data-show]`)??[])Tf(e,i(r.t,r.out)*(r.story?1:1-i(r.t-2.1,.4)))}dots(){let e=this.frame;if(!e)return[];let t=[],n=new Set;for(let r of this.sim.particles){n.add(r.id);let[i,a]=this.#b(e,r),o=r.to.cell!=null&&r.phase!==`move`,s=r.outcome===`delivered`||r.outcome===`answered`;t.push({x:i,y:a-(r.phase===`fade`&&!s?r.t/r.dur*8:0),r:o?3:3.4,color:r.phase===`fade`?this.outcomeColor(r.outcome):this.flowColor(r.flow),alpha:r.phase===`fade`?Math.max(0,1-r.t/r.dur):1,...r.attempt?{ring:xf}:{}})}for(let e of this.#n.keys())n.has(e)||this.#n.delete(e);return t}paintParticles(e,t){let n=this.frame;if(!n)return;let r=this.camera??Du(n),[i,a]=[n.width*t,n.height*t],o=Math.min(i/r.w,a/r.h);e.save(),e.transform(o,0,0,o,(i-r.w*o)/2-r.x*o,(a-r.h*o)/2-r.y*o);for(let t of this.dots())e.globalAlpha=t.alpha,e.beginPath(),t.ring?(e.strokeStyle=t.color,e.lineWidth=t.ring,e.arc(t.x,t.y,t.r-t.ring/2,0,Math.PI*2),e.stroke()):(e.fillStyle=t.color,e.arc(t.x,t.y,t.r,0,Math.PI*2),e.fill());e.restore()}#b(e,t){if(t.phase!==`move`)return De(e,t.to,t.flow);let n=`${t.leg}|${t.from.stage}|${t.from.cell}|${t.to.stage}|${t.to.cell}`;if(this.#r){let r=this.#o;r.frame!==this.frameId&&(r.frame=this.frameId,r.paths.clear());let i=`${t.flow}|${n}`,a=r.paths.get(i);return a||(a=Oe(e,t.from,t.to,t.flow),r.paths.set(i,a)),ke(a,t.t/t.dur)}let r=this.#n.get(t.id);return r&&r.key===n||(r={key:n,points:Oe(e,t.from,t.to,t.flow)},this.#n.set(t.id,r)),ke(r.points,t.t/t.dur)}};function Df(e,t,n={}){let r=()=>({...e.defaults(),...n.initial}),[i,a]=(0,J.useState)(()=>({model:e,values:r()})),o=(0,J.useRef)(null),s=i.values;i.model!==e&&(s=r(),o.current=null,a({model:e,values:s}));let c=!o.current||o.current.values===s,l=(0,J.useMemo)(()=>o.current?.values===s?o.current.ev:e.evaluate(s),[e,s]),u=(0,J.useRef)(null);u.current&&u.current.model===e&&u.current.view===t||(u.current=new Ef(e,t,l,n));let d=u.current;d.transition=n.transition??.8;let[f,p]=(0,J.useState)(null),m=n.direction??`RIGHT`,[h,g]=(0,J.useState)(m),[_,v]=(0,J.useState)(null),[y,b]=(0,J.useState)(null),x=y?.view===t?y.scene:null,S=Of(`(prefers-reduced-motion: reduce)`);d.reducedMotion=S;let C=n.narrowBelow??640;(0,J.useEffect)(()=>{o.current&&o.current.values!==s||d.setEvaluation(l)},[d,l,s]),(0,J.useEffect)(()=>{if(!f)return;v(()=>kf(getComputedStyle(f).fontFamily));let e=new ResizeObserver(([e])=>{let t=e?.contentRect.width??f.clientWidth;g(t>0&&t<C?`DOWN`:m)});return e.observe(f),()=>e.disconnect()},[f,C,m]);let w=(0,J.useMemo)(()=>_?nt(t,l,{direction:h,measure:_}):``,[t,l,h,_]);c&&(d.wantKey=w);let T=n.elk;(0,J.useEffect)(()=>{if(!_||!w)return;let e=!0;return tt(t,d.ev,{direction:h,measure:_,elk:T??gd()}).then(n=>{e&&b({view:t,scene:n})},e=>console.error(`loadmap: layout failed`,e)),()=>{e=!1}},[w,t,d,h,_,T]);let E=(0,J.useMemo)(()=>et(t,l),[t,l]),D=(0,J.useRef)(s);c&&(D.current=s);let O=(0,J.useCallback)(t=>{let n={...D.current,...t};D.current=n;let r=e.evaluate(n);o.current={values:n,ev:r},d.setEvaluation(r),a({model:e,values:n})},[d,e]),[ee,k]=(0,J.useState)({engine:d,on:!1,cue:null}),A=ee.engine===d&&ee.on,te=ee.engine===d?ee.cue:null,ne=(0,J.useCallback)(()=>d.stopStory(),[d]),re=(0,J.useCallback)(e=>{ne(),O(e)},[ne,O]),ie=(0,J.useMemo)(()=>e.scenarioOf(s),[e,s]),ae=(0,J.useCallback)(t=>{let n=e.scenarios.find(e=>e.label===t);n&&re(n.values)},[e,re]),[j,oe]=(0,J.useState)({model:e,i:null}),se=j.model===e&&j.i!=null&&j.i<e.story.length?j.i:null,ce=(0,J.useCallback)(t=>{let n=t==null?void 0:e.story[t];n&&O(n.values),d.wantFocus=n?.focus??null,d.storyStep=n?t:null,oe({model:e,i:n?t:null})},[e,O,d]),le=(0,J.useCallback)(e=>{ne(),ce(e)},[ne,ce]),ue=se==null?void 0:e.story[se],de=!!ue&&Object.entries(ue.values).some(([e,t])=>s[e]!==t),fe=ue&&!de?ue.focus??null:null;d.wantFocus=fe,d.storyStep=se;let pe=(0,J.useRef)(_);pe.current=_,d.host={playing:e=>k(t=>({engine:d,on:e,cue:e&&t.engine===d?t.cue:null})),show:ce,cue:e=>k(t=>({engine:d,on:t.engine===d&&t.on,cue:e})),shapes:e=>rt(t,e,{direction:h,measure:pe.current??void 0})},(0,J.useEffect)(()=>{A&&de&&ne()},[A,de,ne]);let me=A&&e.story.length>0,he=(0,J.useCallback)(t=>{if(!t)return ne();let n=e.story.length-1;if(n<0)return;let r=se==null||se===n?0:de?se:se+1;de&&ce(null),d.playStory(r),!document.fullscreenElement&&!f?.hasAttribute(`data-full`)&&f?.querySelector(`.lm-board`)?.scrollIntoView({block:`nearest`})},[se,de,e,d,ne,ce,f]),[M,N]=(0,J.useState)(!1),[ge,_e]=(0,J.useState)(!1),ve=!!n.fill,ye=ve||M||ge;(0,J.useEffect)(()=>{let e=()=>N(!!f&&document.fullscreenElement===f);return document.addEventListener(`fullscreenchange`,e),()=>document.removeEventListener(`fullscreenchange`,e)},[f]);let be=n.fullScreenMode??`panels`,[xe,Se]=(0,J.useState)({start:be,mode:be}),Ce=xe.start===be?xe.mode:be,we=(0,J.useCallback)(e=>Se({start:be,mode:e}),[be]);(0,J.useEffect)(()=>{if(!f||!ye||ve)return;f.setAttribute(`data-full`,ge?`overlay`:`screen`);let e=ge&&typeof f.showPopover==`function`;return e&&(f.popover=`manual`,f.showPopover()),()=>{f.removeAttribute(`data-full`),e&&(f.hidePopover(),f.removeAttribute(`popover`))}},[f,ye,ge,ve]),(0,J.useEffect)(()=>{if(f&&ye&&!ve)return f.setAttribute(`data-mode`,Ce),()=>f.removeAttribute(`data-mode`)},[f,ye,Ce,ve]),(0,J.useEffect)(()=>{if(!ge)return;let e=e=>e.key===`Escape`&&_e(!1);return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[ge]);let Te=(0,J.useCallback)(()=>{f&&!ve&&(ge?_e(!1):document.fullscreenElement?document.exitFullscreen().catch(()=>{}):f.requestFullscreen?f.requestFullscreen().catch(()=>_e(!0)):_e(!0))},[f,ge,ve]);return{model:e,view:t,values:s,setValues:re,scenario:ie,setScenario:ae,step:se,stepChanged:de,setStep:le,focus:fe,storyPlaying:me,setStoryPlaying:he,cue:me?te:null,fullScreen:ye,fill:ve,toggleFullScreen:Te,fullScreenMode:Ce,setFullScreenMode:we,ev:l,scene:x,labels:E,direction:h,reducedMotion:S,engine:d,rootRef:p,root:f}}function Of(e){let[t,n]=(0,J.useState)(()=>typeof matchMedia==`function`&&matchMedia(e).matches);return(0,J.useEffect)(()=>{if(typeof matchMedia!=`function`)return;let t=matchMedia(e),r=()=>n(t.matches);return r(),t.addEventListener(`change`,r),()=>t.removeEventListener(`change`,r)},[e]),t}function kf(e){let t=document.createElement(`canvas`).getContext(`2d`);return t?(n,r,i=400)=>(t.font=`${i} ${r}px ${e}`,Math.ceil(t.measureText(n).width)):(e,t)=>e.length*t*.6}function Af(){if(typeof document>`u`)return null;let e=document.documentElement,t=e.dataset.theme;return t===`dark`||t===`light`?t:e.classList.contains(`dark`)?`dark`:e.classList.contains(`light`)?`light`:null}var jf=new Set,Mf=null;function Nf(e){return jf.add(e),!Mf&&typeof MutationObserver<`u`&&(Mf=new MutationObserver(()=>{for(let e of jf)e()}),Mf.observe(document.documentElement,{attributes:!0,attributeFilter:[`data-theme`,`class`]})),()=>{jf.delete(e),jf.size||(Mf?.disconnect(),Mf=null)}}var Pf=()=>()=>{};function Ff(e=`auto`){let t=(0,J.useSyncExternalStore)(e===`inherit`?Nf:Pf,Af,()=>null);return e===`inherit`?t??`auto`:e}function If({lm:e,theme:t=`auto`,children:n}){(0,J.useEffect)(()=>Vd(),[]);let r=Ff(t);return(0,J.useEffect)(()=>{if(!e.root)return;e.engine.readColors(e.root);let t=matchMedia(`(prefers-color-scheme: dark)`),n=()=>e.root&&e.engine.readColors(e.root);return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)},[e.root,e.engine,r]),(0,Y.jsx)(`div`,{className:`lm`,"data-theme":r===`auto`?void 0:r,"data-full":e.fill?`fill`:void 0,"data-mode":e.fill?e.fullScreenMode:void 0,ref:e.rootRef,children:n})}var Lf=[`verdict`,`live`,`limits`,`controls`,`headroom`,`compare`,`assumptions`];function Rf({model:e,view:t,theme:n,title:r,assumptions:i,headroom:a=!0,compare:o=!0,fullScreen:s=Lf,onNodeClick:c,selected:l,ref:u,...d}){let f=Df(e,t,d);(0,J.useImperativeHandle)(u,()=>$(f),[f]);let p=o&&e.scenarios.length>1,m=[];a&&m.push(`headroom`),p&&m.push(`compare`);let h=(...e)=>e.some(e=>s.includes(e))?void 0:``,g=e=>s.includes(e)&&(e===`headroom`?a:e!==`compare`||p),_=f.fullScreen,v=_&&f.fullScreenMode===`focus`,[y,b]=(0,J.useState)(null);y&&!_&&b(null);let x=(0,J.useRef)(null);(0,J.useEffect)(()=>{y&&x.current?.focus()},[y]);let S=(e,t)=>b({panel:e,from:t}),C=()=>{y?.from.focus(),b(null)};(0,J.useEffect)(()=>{if(!y)return;let e=e=>{e.key===`Escape`&&(e.stopPropagation(),y.from.focus(),b(null))};return document.addEventListener(`keydown`,e,!0),()=>document.removeEventListener(`keydown`,e,!0)},[y]);let w=(...e)=>y&&e.includes(y.panel)?``:void 0,T=(e,t)=>(0,Y.jsx)(`div`,{className:`lm-panel`,"data-panel":e,"data-out":h(e),"data-drawn":w(e),children:(!_||y?.panel===e)&&t}),E=r!==!1&&(0,Y.jsx)(`h2`,{children:r??e.title}),D=g(`verdict`),O=v?D||g(`controls`):D||g(`assumptions`);return(0,Y.jsxs)(If,{lm:f,theme:n,children:[_?(0,Y.jsxs)(`div`,{className:`lm-head`,children:[E,(0,Y.jsx)(qu,{lm:f})]}):(0,Y.jsxs)(Y.Fragment,{children:[E,(0,Y.jsx)(qu,{lm:f})]}),(0,Y.jsx)(Ld,{lm:f}),(0,Y.jsx)(ed,{lm:f,onNodeClick:c,selected:l}),_&&O&&(0,Y.jsxs)(`div`,{className:`lm-line`,"data-tier":f.ev.verdict.tier,children:[(0,Y.jsx)(kd,{lm:f,verdict:D,extra:i?.length,open:S,assumptions:!v&&g(`assumptions`)}),v&&g(`controls`)&&(0,Y.jsx)(Sd,{lm:f})]}),_&&!v&&(0,Y.jsx)(jd,{lm:f,panels:Lf.filter(g),open:S}),(0,Y.jsxs)(`div`,{className:`lm-side lm-drawer`,"data-out":h(`verdict`,`live`,`limits`,`controls`,...m,`assumptions`),"data-drawer":y?.panel,...y&&{role:`dialog`,"aria-label":`The whole panel`},children:[y&&(0,Y.jsx)(`div`,{className:`lm-drawer-bar`,"data-drawn":``,children:(0,Y.jsx)(`button`,{type:`button`,className:`lm-btn`,onClick:C,ref:x,children:`✕ Back to full screen`})}),T(`verdict`,(0,Y.jsx)(vd,{lm:f})),m.length>0&&(0,Y.jsxs)(`div`,{className:m.length>1?`lm-charts lm-strip`:`lm-charts`,"data-out":h(...m),"data-drawn":w(...m),children:[a&&T(`headroom`,(0,Y.jsx)(Zu,{lm:f})),p&&T(`compare`,(0,Y.jsx)(Ju,{lm:f}))]}),(0,Y.jsxs)(`div`,{className:`lm-strip lm-live`,"data-out":h(`live`,`limits`,`controls`),"data-drawn":w(`live`,`limits`,`controls`),children:[(0,Y.jsxs)(`div`,{className:`lm-card`,"data-out":h(`live`,`limits`),"data-drawn":w(`live`,`limits`),children:[T(`live`,(0,Y.jsx)(xd,{lm:f})),T(`limits`,(0,Y.jsx)(bd,{lm:f}))]}),T(`controls`,(0,Y.jsx)(Cd,{lm:f}))]}),T(`assumptions`,(0,Y.jsx)(wd,{lm:f,extra:i}))]})]})}function $(e){let{engine:t}=e;return{engine:t,async ready(e=1e4){let n=performance.now(),r=()=>t.scene&&t.scene.key===t.wantKey&&t.svg&&t.drawnValues===JSON.stringify(t.ev.values)&&t.drawnFocus===t.wantFocus&&t.drawnFrame===t.frameId;for(;!r();){if(performance.now()-n>e)throw Error(`loadmap: layout not ready`);await new Promise(e=>requestAnimationFrame(e))}},pause:()=>{t.paused=!0},resume:()=>{t.paused=!1},values:()=>t.ev.values,setValues:t=>e.setValues(t),setStoryStep:t=>e.setStep(t),storyStep:()=>t.storyStep,playStory:()=>{let e=t.ev;if(!t.playStory(0))throw Error(`loadmap: the story cannot play: nothing is drawn yet, or there is none`);return Eu(t.model,e,t.transition)},reset:e=>t.reset(e),step:e=>{t.step(e,{particles:!0}),t.draw({particles:!0})},board:()=>t.svg&&t.canvas&&t.frame?{svg:t.svg,canvas:t.canvas,scene:t.frame}:null}}var zf=t((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&A(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-T<w)}function D(){if(g=!1,S){var t=e.unstable_now();T=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(C),C=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&A(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var ee=new MessageChannel,k=ee.port2;ee.port1.onmessage=D,O=function(){k.postMessage(null)}}else O=function(){_(D,0)};function A(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):w=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,A(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),Bf=t(((e,t)=>{t.exports=zf()})),Vf=t((e=>{var t=hu();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.1`})),Hf=t(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Vf()})),Uf=t((e=>{var t=Bf(),n=hu(),r=Hf();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}function f(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&f(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function p(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function m(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function h(e){var t=[null,null],n=p(e);return n===null||g(t,e,n.child,{foundSelf:!1}),t}function g(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&g(e,t,n.child,r))return!0;n=n.sibling}return!1}function _(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var v=null,y=null;function b(e,t,n){return e===n||e===t&&(v=e,!0)}function x(e,t,n){return e===n?(y=e,!1):e===t&&(y!==null&&(v=e),!0)}function S(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function C(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var w=Object.assign,T=Symbol.for(`react.element`),E=Symbol.for(`react.transitional.element`),D=Symbol.for(`react.portal`),O=Symbol.for(`react.fragment`),ee=Symbol.for(`react.strict_mode`),k=Symbol.for(`react.profiler`),A=Symbol.for(`react.consumer`),te=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),re=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),ae=Symbol.for(`react.memo`),j=Symbol.for(`react.lazy`),oe=Symbol.for(`react.activity`),se=Symbol.for(`react.legacy_hidden`),ce=Symbol.for(`react.memo_cache_sentinel`),le=Symbol.for(`react.view_transition`),ue=Symbol.for(`react.recoverable`),de=Symbol.iterator;function fe(e){return typeof e!=`object`||!e?null:(e=de&&e[de]||e[`@@iterator`],typeof e==`function`?e:null)}var pe=Symbol.for(`react.client.reference`);function me(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===pe?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case O:return`Fragment`;case k:return`Profiler`;case ee:return`StrictMode`;case re:return`Suspense`;case ie:return`SuspenseList`;case oe:return`Activity`;case le:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case D:return`Portal`;case te:return e.displayName||`Context`;case A:return(e._context.displayName||`Context`)+`.Consumer`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ae:return t=e.displayName||null,t===null?me(e.type)||`Memo`:t;case j:t=e._payload,e=e._init;try{return me(e(t))}catch{}}return null}var he=Array.isArray,M=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,N=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ge={pending:!1,data:null,method:null,action:null},_e=[],ve=-1;function ye(e){return{current:e}}function be(e){0>ve||(e.current=_e[ve],_e[ve]=null,ve--)}function xe(e,t){ve++,_e[ve]=e.current,e.current=t}var Se=ye(null),Ce=ye(null),we=ye(null),Te=ye(null);function Ee(e,t){switch(xe(we,t),xe(Ce,e),xe(Se,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}be(Se),xe(Se,e)}function De(){be(Se),be(Ce),be(we)}function Oe(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,xe(Te,e)),t=Se.current;var n=dp(t,e.type);t!==n&&(xe(Ce,e),xe(Se,n))}function ke(e){Ce.current===e&&(be(Se),be(Ce)),Te.current===e&&(be(Te),sh._currentValue=ge)}var Ae,je;function Me(e){if(Ae===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ae=t&&t[1]||``,je=-1<e.stack.indexOf(`
292
293
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
293
294
  `+Ae+e+je}var Ne=!1;function Pe(e,t){if(!e||Ne)return``;Ne=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}n=!1;try{var i=Object.getOwnPropertyDescriptor(e.prototype,`props`);Object.defineProperty(e.prototype,"props",{configurable:!0,set:function(){throw Error()}}),n=!0,new e}finally{n&&(i===void 0?delete e.prototype.props:Object.defineProperty(e.prototype,"props",i))}}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
294
295
  `),l=s.split(`