route-graphics 1.29.0 → 1.30.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.
- package/README.md +4 -1
- package/dist/RouteGraphics.js +2 -2
- package/package.json +1 -1
- package/src/cli/renderConfig.js +15 -9
package/README.md
CHANGED
|
@@ -205,6 +205,9 @@ assets:
|
|
|
205
205
|
uiFont:
|
|
206
206
|
path: ./assets/fonts/NotoSans-Regular.ttf
|
|
207
207
|
type: font/ttf
|
|
208
|
+
fallbackFont:
|
|
209
|
+
path: ./assets/fonts/Fallback-Regular.ttf
|
|
210
|
+
type: font/ttf
|
|
208
211
|
elements:
|
|
209
212
|
- id: title
|
|
210
213
|
type: text
|
|
@@ -214,7 +217,7 @@ elements:
|
|
|
214
217
|
textStyle:
|
|
215
218
|
fill: "#ffffff"
|
|
216
219
|
fontSize: 42
|
|
217
|
-
fontFamily: uiFont
|
|
220
|
+
fontFamily: [uiFont, fallbackFont]
|
|
218
221
|
- id: avatar
|
|
219
222
|
type: sprite
|
|
220
223
|
x: 60
|
package/dist/RouteGraphics.js
CHANGED
|
@@ -1629,7 +1629,7 @@ A§²Âp[ôsFû .oCtï@ÝÚý#£=MÖ#wìîxýß½G
|
|
|
1629
1629
|
ã/¸Äyf"5TàyÊ0îEê²Þm6ëÞè6ðÏâ§9¬k=}¼àt<¦Mdç6"p_î3,oO3p"pw÷´/(1ñøs.íA/&ÏUÃ_XÍpÕ1hÌ80EQö
|
|
1630
1630
|
ow÷!x.AÜ"¢j+惡¦¶®äRow÷!xêpn
â#ðù
|
|
1631
1631
|
z AÍp\0NHJê´ªØ^U
|
|
1632
|
-
Iwu¸öôú!3å6³âVq£³¹´RN£%y10º:p#\:J:b9Hµ7h_:¢I9 _¼µV,þ<`});var te={a:U};this.setModule=W=>{t.setModule(ko,W)},this.getModule=()=>t.getModule(ko),this.instantiate=()=>(this.getModule().then(W=>WebAssembly.instantiate(W,te)).then(W=>{let ne=W.exports;F(ne),p=ne.g,m(),J(ne),r()}),this.ready=new Promise(W=>{r=W}).then(()=>{this.HEAP=p.buffer,this.malloc=z,this.free=I,this.opus_frame_decoder_create=V,this.opus_frame_decode_float_deinterleaved=H,this.opus_frame_decoder_destroy=Q}),this)}function li(t={}){li.errors||Object.defineProperties(li,{errors:{value:new Map([[-1,"OPUS_BAD_ARG: One or more invalid/out of range arguments"],[-2,"OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer"],[-3,"OPUS_INTERNAL_ERROR: An internal error was detected"],[-4,"OPUS_INVALID_PACKET: The compressed data passed is corrupted"],[-5,"OPUS_UNIMPLEMENTED: Invalid/unsupported request number"],[-6,"OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed"],[-7,"OPUS_ALLOC_FAIL: Memory allocation has failed"]])}}),this._init=()=>new this._WASMAudioDecoderCommon(this).instantiate(this._EmscriptenWASM,this._module).then(h=>{this._common=h,this._inputBytes=0,this._outputSamples=0,this._frameNumber=0,this._input=this._common.allocateTypedArray(this._inputSize,Uint8Array),this._output=this._common.allocateTypedArray(this._outputChannels*this._outputChannelSize,Float32Array);let u=this._common.allocateTypedArray(this._channels,Uint8Array);u.buf.set(this._channelMappingTable),this._decoder=this._common.wasm.opus_frame_decoder_create(this._sampleRate,this._channels,this._streamCount,this._coupledStreamCount,u.ptr,this._preSkip,this._forceStereo)}),Object.defineProperty(this,"ready",{enumerable:!0,get:()=>this._ready}),this.reset=()=>(this.free(),this._init()),this.free=()=>{this._common.free(),this._common.wasm.opus_frame_decoder_destroy(this._decoder),this._common.wasm.free(this._decoder)},this._decode=h=>{if(!(h instanceof Uint8Array))throw Error("Data to decode must be Uint8Array. Instead got "+typeof h);this._input.buf.set(h);let u=this._common.wasm.opus_frame_decode_float_deinterleaved(this._decoder,this._input.ptr,h.length,this._output.ptr),d;return u<0&&(d="libopus "+u+" "+(li.errors.get(u)||"Unknown Error"),console.error(d),u=0),{outputBuffer:this._common.getOutputChannels(this._output.buf,this._outputChannels,u),samplesDecoded:u,error:d}},this.decodeFrame=h=>{let u=[],d=this._decode(h);return d.error&&this._common.addError(u,d.error,h.length,this._frameNumber,this._inputBytes,this._outputSamples),this._frameNumber++,this._inputBytes+=h.length,this._outputSamples+=d.samplesDecoded,this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(u,[d.outputBuffer],this._outputChannels,d.samplesDecoded,this._sampleRate)},this.decodeFrames=h=>{let u=[],d=[],f=0,p=0;for(;p<h.length;){let m=h[p++],g=this._decode(m);u.push(g.outputBuffer),f+=g.samplesDecoded,g.error&&this._common.addError(d,g.error,m.length,this._frameNumber,this._inputBytes,this._outputSamples),this._frameNumber++,this._inputBytes+=m.length,this._outputSamples+=g.samplesDecoded}return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(d,u,this._outputChannels,f,this._sampleRate)},this._isWebWorker=li.isWebWorker,this._WASMAudioDecoderCommon=li.WASMAudioDecoderCommon||st,this._EmscriptenWASM=li.EmscriptenWASM||ko,this._module=li.module;let e=8,r=h=>typeof h=="number",i=t.sampleRate,s=t.channels,o=t.streamCount,n=t.coupledStreamCount,a=t.channelMappingTable,c=t.preSkip,l=t.forceStereo?1:0;if(s>2&&(!r(o)||!r(n)||!Array.isArray(a)))throw new Error("Invalid Opus Decoder Options for multichannel decoding.");return this._sampleRate=[8e3,12e3,16e3,24e3,48e3].includes(i)?i:48e3,this._channels=r(s)?s:2,this._streamCount=r(o)?o:1,this._coupledStreamCount=r(n)?n:this._channels-1,this._channelMappingTable=a||(this._channels===2?[0,1]:[0]),this._preSkip=c||0,this._forceStereo=s<=e&&s!=2?l:0,this._inputSize=32e3*.12*this._channels,this._outputChannelSize=120*48,this._outputChannels=this._forceStereo?2:this._channels,this._ready=this._init(),this}var Ya=class extends yn{constructor(e){super(e,"opus-decoder",li,ko)}async decodeFrame(e){return this.postToDecoder("decodeFrame",e)}async decodeFrames(e){return this.postToDecoder("decodeFrames",e)}};zs(li,"OpusDecoder");zs(Ya,"OpusDecoderWebWorker");var a5=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),Uo=class{constructor(e={}){this._sampleRate=e.sampleRate||48e3,this._speechQualityEnhancement=e.speechQualityEnhancement,this._forceStereo=e.forceStereo!==void 0?e.forceStereo:!1,this._onCodec=r=>{if(r!=="opus")throw new Error("ogg-opus-decoder does not support this codec "+r)},new st,this._useMLDecoder=["lace","nolace"].includes(this._speechQualityEnhancement),this._decoderLibraryLoaded=this._loadDecoderLibrary(),this._ready=this._init()}_initDecoderClass(){this._decoderClass=this._useMLDecoder?this.OpusMLDecoder:this.OpusDecoder}async _loadDecoderLibrary(){if(this._useMLDecoder)if(await a5()){let{OpusMLDecoder:r,OpusMLDecoderWebWorker:i}=await Promise.resolve().then(()=>(QU(),KU));this.OpusMLDecoder=r,this.OpusMLDecoderWebWorker=i}else console.warn(`ogg-opus-decoder: This platform does not support WebAssembly SIMD; { speechQualityEnhancements: '${this._speechQualityEnhancement}' } has been disabled`),this._useMLDecoder=!1;this.OpusDecoder=li,this.OpusDecoderWebWorker=Ya,this._initDecoderClass()}async _init(){this._decoder&&await this._decoder.free(),this._decoder=null,this._decoderReady=null,this._codecParser=new ny("application/ogg",{onCodec:this._onCodec,enableFrameCRC32:!1})}async _instantiateDecoder(e){return this._totalSamplesDecoded=0,this._preSkip=e[XU],this._channels=this._forceStereo?2:e[CT],await this._decoderLibraryLoaded,this._decoder=new this._decoderClass({channels:e[CT],streamCount:e[qU],coupledStreamCount:e[$U],channelMappingTable:e[jU],preSkip:Math.round(this._preSkip/48e3*this._sampleRate),sampleRate:this._sampleRate,speechQualityEnhancement:this._speechQualityEnhancement,forceStereo:this._forceStereo}),this._decoder.ready}get ready(){return this._ready}async reset(){this._ready=this._init(),await this._ready}free(){this._decoder&&this._decoder.free()}async _decode(e){let r=[],i=[],s=[],o=0,n=async()=>{if(r.length){await this._decoderReady;let{channelData:a,samplesDecoded:c,errors:l}=await this._decoder.decodeFrames(r);s.push(a),i.push(...l),o+=c,this._totalSamplesDecoded+=c,r=[]}};for(let a=0;a<e.length;a++){let c=e[a],l=c[$a].map(h=>h[eu]);if(l.length&&(r.push(...l),this._decoderReady||(this._decoderReady=this._instantiateDecoder(c[$a][0][ay]))),c[cy]){if(await n(),c[zU]!==void 0&&s.length){let h=this._totalSamplesDecoded/this._sampleRate*48e3,u=Math.round((h-c[ly])/48e3*this._sampleRate),d=s[s.length-1];if(u>0)for(let f=0;f<d.length;f++)d[f]=d[f].subarray(0,d[f].length-u);o-=u,this._totalSamplesDecoded-=u}await this.reset()}}return await n(),[i,s,this._channels,o,this._sampleRate,16]}async decode(e){let r=await this._decode([...this._codecParser.parseChunk(e)]);return st.getDecodedAudioMultiChannel(...r)}async decodeFile(e){let r=await this._decode([...this._codecParser.parseAll(e)]);return await this.reset(),st.getDecodedAudioMultiChannel(...r)}async flush(){let e=await this._decode([...this._codecParser.flush()]);return await this.reset(),st.getDecodedAudioMultiChannel(...e)}};var Zf=class extends Uo{constructor(e){super(e)}_initDecoderClass(){this._decoderClass=this._useMLDecoder?this.OpusMLDecoderWebWorker:this.OpusDecoderWebWorker}async free(){this._decoder&&await this._decoder.free()}};zs(Uo,"OggOpusDecoder");zs(Zf,"OggOpusDecoderWebWorker");var c5=new Set(["audio/ogg","application/ogg"]),ja={opus:{decoderPromise:null,queue:Promise.resolve()},vorbis:{decoderPromise:null,queue:Promise.resolve()}},IT=new Map,ZU=t=>t instanceof Uint8Array?t:new Uint8Array(t??new ArrayBuffer(0)),JU=(t,e)=>{let r=Array.from(e,s=>s.charCodeAt(0)),i=t.length-r.length;for(let s=0;s<=i;s+=1){let o=!0;for(let n=0;n<r.length;n+=1)if(t[s+n]!==r[n]){o=!1;break}if(o)return!0}return!1},ep=t=>{if(IT.has(t))return IT.get(t);let e=!1;try{let r=globalThis.document?.createElement?.("audio");e=typeof r?.canPlayType=="function"&&r.canPlayType(t)!==""}catch{e=!1}return IT.set(t,e),e},l5=t=>typeof t!="string"?"":t.split(";")[0].trim().toLowerCase(),BT=t=>c5.has(l5(t)),eL=t=>{let e=ZU(t);return JU(e,"OpusHead")?"opus":JU(e,"vorbis")?"vorbis":"unknown"},u5=t=>t==="opus"?ep('audio/ogg; codecs="opus"')||ep("audio/ogg"):t==="vorbis"&&ep('audio/ogg; codecs="vorbis"')||ep("audio/ogg"),h5=({audioContext:t,channelData:e,sampleRate:r,samplesDecoded:i})=>{let s=e.length;if(s===0)throw new Error("Ogg decoder returned no audio channels.");let o=Math.max(0,i??Math.max(...e.map(a=>a.length)));if(o===0)throw new Error("Ogg decoder returned an empty audio buffer.");let n=t.createBuffer(s,o,r);for(let a=0;a<s;a+=1){let c=e[a];n.getChannelData(a).set(c.subarray(0,o))}return n},d5=async()=>(ja.opus.decoderPromise||(ja.opus.decoderPromise=(async()=>{let t=new Uo;return await t.ready,t})()),ja.opus.decoderPromise),f5=async()=>(ja.vorbis.decoderPromise||(ja.vorbis.decoderPromise=(async()=>{let t=new Fo;return await t.ready,t})()),ja.vorbis.decoderPromise),tL=t=>{if(t==="opus")return d5();if(t==="vorbis")return f5();throw new Error(`Unsupported Ogg codec "${t}".`)},p5=async({codec:t,bytes:e})=>{let r=ja[t];if(!r)throw new Error(`Unsupported Ogg codec "${t}".`);let i=async()=>{let o=await tL(t);try{return await o.decodeFile(e)}finally{await o.reset?.()}},s=r.queue.then(i,i);return r.queue=s.catch(()=>{}),s},rL=async(t={})=>{let e=new Set;for(let r of Object.values(t)){if(!BT(r?.type)||!r?.buffer)continue;let i=eL(r.buffer);i==="unknown"||u5(i)||e.add(i)}await Promise.all([...e].map(r=>tL(r)))},iL=async({arrayBuffer:t,audioContext:e})=>{let r=eL(t),i=ZU(t),s=await p5({codec:r,bytes:i});return h5({audioContext:e,channelData:s.channelData??[],sampleRate:s.sampleRate,samplesDecoded:s.samplesDecoded})};var tp,m5=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,g5=(t,e={})=>{m5()&&console.log(`[AudioContext] ${t}`,e)},_r=()=>{if(tp)return tp;let t=globalThis.window?.AudioContext??globalThis.window?.webkitAudioContext;if(!t)throw new Error("AudioContext is not available in this environment.");return tp=new t,g5("context created",{state:tp.state}),tp};var tu={},On={},x5=async t=>{await rL(t)},y5=t=>t?typeof t=="string"?t:t.message||String(t):"Unknown error",sL=(t,e)=>{let r="Unsupported or damaged audio file.",i=`Could not load audio "${t}". ${r}`,s=new Error(i,{cause:e});return s.userMessage=i,s.rootCauseMessage=r,s.details={assetKey:t,assetKind:"audio",phase:"decode",cause:y5(e)},s},_5=async({key:t,arrayBuffer:e,type:r,audioContext:i})=>{try{return await i.decodeAudioData(e.slice(0))}catch(s){if(!BT(r))throw sL(t,s);try{return await iL({arrayBuffer:e,audioContext:i})}catch(o){throw sL(t,o)}}},b5=(t,e,r)=>{if(tu[t])return tu[t];if(On[t])return On[t];if(!e||e.byteLength===0)return;let i=_r(),s=_5({key:t,arrayBuffer:e,type:r,audioContext:i}).then(o=>(On[t]===s&&(tu[t]=o),o)).finally(()=>{On[t]===s&&delete On[t]});return On[t]=s,s},v5=t=>tu[t],S5=t=>{let e=!!tu[t]||!!On[t];return delete tu[t],delete On[t],e},Mi={prepareDecoders:x5,load:b5,getAsset:v5,unload:S5};var Yt=({type:t,add:e,update:r,delete:i,parse:s,shouldUpdateUnchanged:o})=>({type:t,add:e,update:r,delete:i,parse:s,shouldUpdateUnchanged:o});var FT=({type:t})=>({type:t});var kT=({type:t,add:e,update:r,delete:i})=>({type:t,add:e,update:r,delete:i});var hy={alpha:"alpha",x:"x",y:"y",translateX:"translateX",translateY:"translateY",scaleX:"scaleX",scaleY:"scaleY",rotation:"rotation",blurX:"blurX",blurY:"blurY",uProgress:"uProgress"};var dy={scaleX:["scale","x"],scaleY:["scale","y"],x:["x"],y:["y"],alpha:["alpha"],rotation:["rotation"],blurX:["_routeGraphicsBlur","x"],blurY:["_routeGraphicsBlur","y"],uProgress:["uProgress"]};var Pi={RECT:"rect",TEXT:"text",INPUT:"input",CONTAINER:"container",SPRITE:"sprite",TEXT_REVEALING:"text-revealing",SLIDER:"slider",PARTICLES:"particles",SPRITESHEET_ANIMATION:"spritesheet-animation",VIDEO:"video"};var dt={fill:"black",fontFamily:"Arial",fontSize:16,align:"left",lineHeight:1.2,wordWrap:!1,breakWords:!1,strokeColor:"transparent",strokeWidth:0,wordWrapWidth:0};var oL={color:"black",alpha:1,blur:0,offsetX:2,offsetY:2},T5=.4,w5=t=>{if(typeof t=="number"&&Number.isFinite(t))return Math.max(0,t);if(typeof t=="string"){let e=Number.parseFloat(t);if(Number.isFinite(e))return Math.max(0,e)}return dt.fontSize},E5=t=>typeof t=="number"&&Number.isFinite(t)?t:0,A5=(t={})=>Math.ceil(w5(t.fontSize)*T5),M5=(t={})=>{let e=typeof t.stroke=="object"&&t.stroke!==null?t.stroke:{};return{...e,color:t.strokeColor??e.color??dt.strokeColor,width:t.strokeWidth??e.width??dt.strokeWidth}},P5=t=>{if(t===void 0)return;if(t===null||t===!1)return null;let e=typeof t=="object"&&t!==null?{...oL,...t}:oL,r=e.offsetX,i=e.offsetY,s=Math.hypot(r,i);return{alpha:e.alpha,angle:s===0?0:Math.atan2(i,r),blur:e.blur,color:e.color,distance:s}},C5=t=>t?Math.ceil(Math.max(0,t.blur)+t.distance):0,br=(t={},e={})=>{let r=e.includeShadow!==!1,{strokeColor:i,strokeWidth:s,stroke:o,shadow:n,...a}=t;delete a.dropShadow;let c={...a,stroke:M5({strokeColor:i,strokeWidth:s,stroke:o})};if(r){let l=P5(n),h=C5(l),u=Math.max(E5(a.padding),h,A5(a));n!==void 0&&(c.dropShadow=l),u>0&&(c.padding=u)}return c};var Js=(t,e)=>{let r={fill:e?.fill??dt.fill,fontFamily:e?.fontFamily??dt.fontFamily,fontSize:e?.fontSize??dt.fontSize,...e?.fontWeight!==void 0?{fontWeight:e.fontWeight}:{},...e?.fontStyle!==void 0?{fontStyle:e.fontStyle}:{},align:e?.align??dt.align,lineHeight:e?.lineHeight??dt.lineHeight,wordWrap:e?.wordWrap??dt.wordWrap,breakWords:e?.breakWords??dt.breakWords,strokeColor:e?.strokeColor??dt.strokeColor,strokeWidth:e?.strokeWidth??dt.strokeWidth,wordWrapWidth:e?.wordWrapWidth??dt.wordWrapWidth,...e?.padding!==void 0?{padding:e.padding}:{},...Object.prototype.hasOwnProperty.call(e??{},"shadow")?{shadow:e.shadow}:{}};t.style=br(r)};var qa=(t=0)=>t*Math.PI/180,UT=(t=0)=>t*180/Math.PI,nL=t=>typeof t=="number"&&Number.isFinite(t)&&t!==0?t:1,fy=t=>({x:Math.round((t.x??0)+(t.originX??0)),y:Math.round((t.y??0)+(t.originY??0))}),Qi=(t,e)=>{let r=e.originX??0,i=e.originY??0,s=nL(t.scale?.x),o=nL(t.scale?.y),n=fy(e);t.pivot?.set?.(r/s,i/o),t.x=n.x,t.y=n.y,t.rotation=qa(e.rotation??0)},Ji=(t,e={})=>{let r=fy(t),i={x:r.x,y:r.y,...e};return t.rotation!==void 0&&(i.rotation=t.rotation),i};var Dn=t=>t==="translateX"||t==="translateY",lL=(t,e)=>typeof e!="string"?e:t[e]??e,R5=(t,e,r,i)=>{let s=lL(r,e);if(typeof s=="string"){let n=t[s];return n===void 0?i:e==="rotation"?UT(n):n}let o=t;for(let n of s){if(o==null)return i;o=o[n]}return o===void 0?i:e==="rotation"?UT(o):o},I5=(t,e,r,i)=>{let s=lL(r,e),o=e==="rotation"?qa(i):i;if(typeof s=="string")return t[s]=o,t;let n=t;for(let a=0;a<s.length-1;a++){let c=s[a];c in n||(n[c]={}),n=n[c]}return n[s[s.length-1]]=o,t},aL=t=>typeof t=="number"&&Number.isFinite(t),B5=t=>{let e=t?.getLocalBounds?.();return e?.rectangle??e??null},cL=(t,e)=>{let r=e==="x"?t?.width:t?.height;if(aL(r)&&r>0)return r;let i=B5(t),s=e==="x"?i?.width:i?.height,o=e==="x"?t?.scale?.x:t?.scale?.y;return aL(s)&&s>0?Math.abs(s*(o??1)):0},Gn=t=>({x:t?.x??0,y:t?.y??0,width:cL(t,"x"),height:cL(t,"y")}),uL=({object:t,property:e,propertyPathMap:r,subjectState:i,defaultValue:s=0})=>e==="translateX"||e==="translateY"?s:R5(t,e,r,s),rp=({object:t,property:e,propertyPathMap:r,subjectState:i,value:s})=>e==="translateX"?(t.x=i.x+s*i.width,t):e==="translateY"?(t.y=i.y+s*i.height,t):I5(t,e,r,s);var hL=(t,e,r=dy,i)=>{let s=i;for(let o of e)for(let[n,a]of Object.entries(o.tween)){if(!hy[n])throw new Error(`${n} is not a supported property for animation.`);a.initialValue!==void 0&&(!s&&Dn(n)&&(s=Gn(t)),rp({object:t,property:n,propertyPathMap:r,subjectState:s,value:a.initialValue}))}},py=({animations:t,animationBus:e,completionTracker:r,element:i,targetState:s,onComplete:o,animationBaseState:n})=>{for(let a of t){if(typeof e?.hasContext=="function"&&e.hasContext(a.id))continue;for(let[h,u]of Object.entries(a.tween))if(u.auto&&(!s||!Object.prototype.hasOwnProperty.call(s,h)))throw new Error(`Animation "${a.id}" cannot auto-resolve property "${h}" from targetState.`);let c=a.playback?.continuity!=="persistent",l=c?r.getVersion():null;c&&r.track(l),e.dispatch({type:"START",payload:{id:a.id,animationType:a.type,targetId:a.targetId,continuity:a.playback?.continuity??"render",playbackSpeed:a.playback?.speed,signature:a.signature??JSON.stringify({type:a.type,tween:a.tween,playback:a.playback??null}),element:i,properties:a.tween,targetState:s,animationBaseState:n,onComplete:()=>{c&&r.complete(l),o?.(a)}}})}};var F5=t=>{if(!t?.dropShadow||typeof t.clone!="function")return t;let e=t.clone();return e.dropShadow=null,e};function my(t,e){let r=t.text.substring(0,e),s=_t.measureText(r,F5(t.style)).width;return t.x+s}var k5=async(t,e)=>new Promise((r,i)=>{if(e?.aborted)return i(new DOMException("The operation was aborted.","AbortError"));let s,o=()=>{s&&e?.removeEventListener("abort",s)},n=setTimeout(()=>{o(),r()},t);s=()=>{clearTimeout(n),o(),i(e.reason)},e?.addEventListener("abort",s,{once:!0})}),gy=k5;var U5=(t,e)=>{let r=Number(t);if(Number.isFinite(r))return r;let i=Number(e);return Number.isFinite(i)?i:100},Ve=(t,e=100)=>{let r=U5(t??e,e);return Math.min(Math.max(r,0),100)/100};var ip={softness:1.25,easing:"linear",lineOverlap:0,lineDelay:0},L5=18,O5=64,OT={linear:t=>t,easeOutCubic:t=>1-(1-t)**3},D5=(t,e,r)=>Math.max(e,Math.min(r,t)),LT=(t,e)=>typeof t=="number"&&Number.isFinite(t)?t:e,Ka=(t={})=>{let e=t&&typeof t=="object"?t:{};return{softness:Math.max(0,LT(e.softness,ip.softness)),easing:Object.prototype.hasOwnProperty.call(OT,e.easing)?e.easing:ip.easing,lineOverlap:D5(LT(e.lineOverlap,ip.lineOverlap),0,.95),lineDelay:Math.max(0,LT(e.lineDelay,ip.lineDelay))}},DT=t=>OT[t]??OT[ip.easing],GT=({maxLineHeight:t,softWipe:e})=>Math.max(L5,Math.min(O5,Math.round(t*e.softness)));var ru=(t,e,r,i)=>{if(!r)return;let s=o=>{let n=Number(o?.detail?.frameIndex);o?.detail?.elementId===e&&Number.isInteger(n)&&(t.gotoAndStop(n),i?.())};window.addEventListener("snapShotAnimatedSpriteFrame",s),t._snapShotKeyFrameHandler=s},Qa=t=>{t._snapShotKeyFrameHandler&&(window.removeEventListener("snapShotAnimatedSpriteFrame",t._snapShotKeyFrameHandler),delete t._snapShotKeyFrameHandler)};var dL=(t={})=>{if(t.frame){let n=t.frame.w??0,a=t.frame.h??0,c=t.sourceSize?.w??n,l=t.sourceSize?.h??a,h={frame:{x:t.frame.x??0,y:t.frame.y??0,w:n,h:a},rotated:t.rotated??!1,trimmed:t.trimmed??!1,spriteSourceSize:{x:t.spriteSourceSize?.x??0,y:t.spriteSourceSize?.y??0,w:t.spriteSourceSize?.w??n,h:t.spriteSourceSize?.h??a},sourceSize:{w:c,h:l}};return t.anchor?h.anchor={x:t.anchor.x??0,y:t.anchor.y??0}:t.pivot&&(h.anchor={x:t.pivot.x??0,y:t.pivot.y??0}),t.borders&&(h.borders={...t.borders}),h}let e=t.width??t.w??0,r=t.height??t.h??0,i=t.sourceWidth??e,s=t.sourceHeight??r,o={frame:{x:t.x??0,y:t.y??0,w:e,h:r},rotated:t.rotated??!1,trimmed:t.trimmed??!1,spriteSourceSize:{x:t.offsetX??0,y:t.offsetY??0,w:e,h:r},sourceSize:{w:i,h:s}};return t.anchor?o.anchor={x:t.anchor.x??0,y:t.anchor.y??0}:t.pivot&&(o.anchor={x:t.pivot.x??0,y:t.pivot.y??0}),t.borders&&(o.borders={...t.borders}),o},NT=(t={})=>!t||typeof t!="object"?{}:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Array.isArray(r)?r.map(i=>String(i)):[]])),G5=(t,e={})=>{let r=Math.max(0,Number(e.from??0)),i=Math.min(t.length-1,Number(e.to??r));if(!Number.isFinite(r)||!Number.isFinite(i)||i<r)return[];let s=t.slice(r,i+1),o=String(e.direction??"forward").toLowerCase();if(o==="reverse"||o==="backward")return[...s].reverse();if(o==="pingpong")return[...s,...s.slice(1,-1).reverse()];if(o==="pingpong_reverse"){let n=[...s].reverse();return[...n,...n.slice(1,-1).reverse()]}return s},N5=(t=[],e=[])=>!Array.isArray(t)||e.length===0?{}:Object.fromEntries(t.map(r=>{let i=typeof r?.name=="string"?r.name:"";return i?[i,G5(e,r)]:null}).filter(Boolean)),ys=(t={})=>{let e=t??{},r=NT(e.animations);return{frames:Array.isArray(e.frames)?Object.fromEntries(e.frames.map(s=>{let o=s?.filename??s?.name;return typeof o!="string"||o.length===0?null:[o,dL(s)]}).filter(Boolean)):Object.fromEntries(Object.entries(e.frames??{}).map(([s,o])=>[s,dL(o)])),...Object.keys(r).length>0?{animations:r}:{},meta:{...e.meta??{},scale:String(e.scale??e.meta?.scale??1),...e.width!=null||e.height!=null?{size:{w:e.width??e.meta?.size?.w??0,h:e.height??e.meta?.size?.h??0}}:{}}}},_s=(t={},e={},r={},i=[])=>({...N5(r?.frameTags,i),...NT(e),...NT(t)}),H5=(t,e)=>{if(!Array.isArray(e?.frames))return[];let r=Object.keys(t.frames??{});return e.frames.map(i=>typeof i=="number"?r[i]:String(i)).filter(Boolean)},Zi=({atlas:t={frames:{}},clips:e={},playback:r,legacyAnimation:i})=>{let s=r??i??{},o={fps:s.fps??null,loop:s.loop??!0,autoplay:s.autoplay??!0};return typeof s.clip=="string"&&s.clip.length>0&&(o.clip=s.clip),Array.isArray(s.frames)?o.frames=s.frames.map(n=>typeof n=="number"?Object.keys(t.frames??{})[n]:String(n)).filter(Boolean):o.clip||(o.frames=H5(t,i)),o.fps==null&&(typeof s.animationSpeed=="number"?o.fps=s.animationSpeed*60:o.fps=30),o.clip&&(!Array.isArray(o.frames)||o.frames.length===0)&&(o.frames=Array.isArray(e[o.clip])?[...e[o.clip]]:[]),Array.isArray(o.frames)||(o.frames=[]),o},iu=({spritesheet:t,atlas:e,clips:r={},playback:i,legacyAnimation:s})=>{let o=Zi({atlas:e,clips:r,playback:i,legacyAnimation:s});return{frameTextures:o.frames.map(a=>t.textures[a]),playback:o}},su=t=>typeof t=="number"?t/60:.5;var Lo=Symbol("textRevealRuntime"),yy=Symbol("textRevealSnapshot"),ou=Symbol("textRevealIndicator"),xL=Symbol("textRevealIndicatorPlayback"),V5="__route_graphics_text_reveal_sound__",WT=50,W5=0,XT=100,HT=XT-1,fL=10,yL=120,z5=.9,$5=360,X5=1.2,VT=20,Y5=16,j5=0,q5=(t,e,r)=>Math.max(e,Math.min(r,t)),_L=(t=WT)=>typeof t!="number"||!Number.isFinite(t)?WT:Math.max(W5,Math.min(XT,t)),K5=t=>_L(t)>=XT,YT=(t,{maxRate:e=yL,curve:r=z5}={})=>{let i=Math.min(_L(t),HT),o=(HT>0?i/HT:0)**r;return fL*(e/fL)**o},Q5=t=>YT(t,{maxRate:$5,curve:X5}),J5=t=>{let e=1e3/t;return e>=VT||t<=yL?{stepDelay:Math.max(1,Math.floor(e)),charactersPerStep:1}:{stepDelay:VT,charactersPerStep:Math.max(2,Math.round(t*VT/1e3))}},Z5=t=>t?.revealEffect==="softWipe"?"softWipe":"typewriter",jT=t=>{let e=t?.initialRevealedCharacters;return typeof e!="number"||!Number.isFinite(e)?0:Math.max(0,Math.floor(e))},bL=t=>(t?.content??[]).reduce((e,r)=>e+(r.lineParts??[]).reduce((i,s)=>i+(s.text?.length??0),0),0),e8=t=>`${V5}:${t.id}`,t8=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,xy=(t,e={})=>{t8()&&console.log(`[TextRevealSound] ${t}`,e)},vL=({app:t,element:e})=>{let r=e?.revealSound;if(!r?.src)return()=>{};if(!t?.audioStage)return xy("skipped: audioStage unavailable",{elementId:e?.id,src:r.src}),()=>{};let i=e8(e),s=Ve(r.volume,100),o="active";return xy("start",{elementId:e.id,soundId:i,src:r.src,loop:r.loop??!0,configuredVolume:r.volume,normalizedVolume:s}),t.audioStage.add({id:i,url:r.src,loop:r.loop??!0,volume:s}),t.audioStage.tick?.(),xy("registered",{elementId:e.id,soundId:i,directAudio:t.audioStage.getById?.(i)??null}),({completed:n=!1}={})=>{if(o==="stopped")return!1;if(o==="finishing"&&n)return!0;let a=o==="active"&&n&&(r.stopTiming??"loopEnd")==="loopEnd";return xy("stop",{elementId:e.id,soundId:i,src:r.src,finishPlayback:a}),a&&typeof t.audioStage.finish=="function"?(o="finishing",t.audioStage.finish(i),!0):(o="stopped",t.audioStage.remove(i),t.audioStage.tick?.(),!1)}},SL=(t,e)=>{t?.[Lo]===e&&delete t[Lo]},nu=t=>t?.revealEffect==="none"||K5(t?.speed??WT),zT=t=>t!==null&&typeof t=="object"&&typeof t.then=="function",qT=(t={})=>t.kind??(t.atlas!==void 0||t.clips!==void 0||t.playback!==void 0?"spritesheet":"image"),r8=t=>["revealing","complete"].some(e=>qT(t?.indicator?.[e])==="spritesheet"&&!!t?.indicator?.[e]?.src),TL=t=>`${t.id}-indicator`,wL=(t,e,r)=>{typeof e?.width=="number"?t.width=e.width:r?.width&&(t.width=r.width),typeof e?.height=="number"?t.height=e.height:r?.height&&(t.height=r.height)},EL=(t={})=>{let e=t?.src?G.from(t.src):G.EMPTY,r=new Ke(e);return wL(r,t,e),r},i8=(t={},{app:e,element:r})=>{if(!t?.src)return EL(t);let i=ys(t.atlas),s=_s(t.clips,t.atlas?.animations,t.atlas?.meta,Object.keys(i.frames??{})),o=Zi({atlas:i,clips:s,playback:t.playback});return(async()=>{let n=new Fs(G.from(t.src),i);await n.parse();let{frameTextures:a}=iu({spritesheet:n,atlas:i,clips:s,playback:o}),c=new Ws(a.length>0?a:[G.EMPTY]);return c.animationSpeed=su(o.fps),c.loop=o.loop,c[xL]=o,wL(c,t,a[0]),e?.debug&&ru(c,TL(r),e.debug,()=>{typeof e.render=="function"&&e.render()}),c})()},pL=(t,e)=>qT(t)==="spritesheet"?i8(t,e):EL(t),mL=(t,e)=>{t instanceof Ws&&!e?.debug&&t[xL]?.autoplay!==!1&&t.play()},AL=t=>{!t||t.destroyed||(Qa(t),typeof t.stop=="function"&&t.stop(),t.destroy({children:!0}))},$T=t=>{let e=t?.[ou];if(e){for(let r of e.displays)Qa(r);for(let r of e.displays)r?.parent!==t&&AL(r);delete t[ou]}t.destroy({children:!0})},s8=({element:t,app:e,revealingDisplay:r,completeDisplay:i})=>{let s=new he({label:TL(t)}),o=new Set([r]);return i&&o.add(i),s.addChild(r),s[ou]={displays:o,currentDisplay:r,completeDisplay:i,start(){mL(this.currentDisplay,e)},showComplete(){if(!this.completeDisplay||this.currentDisplay===this.completeDisplay)return;let n=this.currentDisplay;n?.parent===s&&s.removeChild(n),AL(n),o.delete(n),this.currentDisplay=this.completeDisplay,s.addChild(this.completeDisplay),mL(this.completeDisplay,e)}},s},o8=(t,{app:e}={})=>{let r=t?.indicator?.revealing??{},i=t?.indicator?.complete,s=pL(r,{app:e,element:t}),o=i?.src||qT(i)==="spritesheet"?pL(i,{app:e,element:t}):null,n=(a,c)=>s8({element:t,app:e,revealingDisplay:a,completeDisplay:c});return zT(s)||zT(o)?Promise.all([s,o]).then(([a,c])=>n(a,c)):n(s,o)},n8=t=>{t?.[ou]?.showComplete()},au=(t,e="revealing")=>{let r=t?.indicator?.[e]??{};return{x:r.offsetX??t?.indicator?.offsetX??Y5,y:r.offsetY??t?.indicator?.offsetY??j5}},a8=(t,e)=>{if(!e)return 0;let r=Math.max(0,e.lineMaxHeight??0),i=Math.max(0,t?.height??0);return e.y+Math.max(0,r-i)},Oo=(t,e,r)=>{t.x=r.x,t.y=a8(t,e)+r.y},ML=(t,e,r)=>{if(!e||e.text.length===0){t.x=r.x;return}t.x=my(e,e.text.length-1)+r.x},Nn=(t,e,r,i)=>{n8(t);let s=au(i,"complete");Oo(t,e,s),ML(t,r,s)},PL=(t,e)=>{if(t[Lo]){let r=t[Lo];delete t[Lo],r()}t[Lo]=e},c8=t=>t?.[yy]??null,sp=(t,e)=>t?e?(t[yy]=e,e):(delete t[yy],null):null,CL=t=>{let e=c8(t);return!e||e.mode!=="typewriter"||e.completed===!0?null:e},RL=t=>!!CL(t),KT=t=>{if(t[Lo]){let r=t[Lo];delete t[Lo],r()}delete t[yy],t.onRender=void 0,t.removeChildren().forEach(r=>{if(r?.[ou]){$T(r);return}r.destroy({children:!0})})},QT=(t,e="",r="")=>{let i=new at(br(t.textStyle)),s=new vi({text:e,style:i,x:Math.round(t.x),y:Math.round(t.y)}),o=null;if(t.furigana){let n=new at(br(t.furigana.textStyle));o=new vi({text:r,style:n,x:Math.round(t.furigana.x),y:Math.round(t.furigana.y)})}return{text:s,furiganaText:o}},JT=(t,e)=>{let r=null,i=null,s=0,o=0,n=[];for(let a=0;a<e.content.length;a++){let c=e.content[a],l=new he({label:`${e.id}-line-${a}`}),h=[],u=null,d=0;t.addChild(l),i=c,o=Math.max(o,c.lineMaxHeight??0);for(let f=0;f<c.lineParts.length;f++){let p=c.lineParts[f],{text:m,furiganaText:g}=QT(p,p.text,p.furigana?.text||"");g&&(l.addChild(g),h.push(g)),l.addChild(m),h.push(m),r=m,u=m,s+=p.text.length,d+=p.text.length}if(h.length>0){let f=l.getLocalBounds();n.push({chunk:c,container:l,lastTextObject:u,totalCharacters:d,bounds:{x:f.x,y:f.y,width:f.width,height:f.height}})}else l.destroy()}return{lines:n,lastTextObject:r,lastChunk:i,totalCharacters:s,maxLineHeight:o,bounds:t.getLocalBounds()}},gL=({contentContainer:t,indicatorSprite:e,element:r})=>{let{lastTextObject:i,lastChunk:s}=JT(t,r);Nn(e,s,i,r)},l8=({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})=>{let s=au(r),o=r.content[0]??null,n=bL(r),a=Math.min(i,Math.max(0,n)),c=null,l=null;if(a<=0){Oo(e,o,s);return}e:for(let h=0;h<r.content.length;h++){let u=r.content[h];for(let d=0;d<u.lineParts.length;d++){let f=u.lineParts[d],p=Math.min(f.text.length,a);if(p<=0)break e;let m=f.furigana?.text||"",g=m.length,_=f.text.length>0?Math.round(p/f.text.length*g):0,{text:y,furiganaText:x}=QT(f,f.text.substring(0,p),m.substring(0,_));if(x&&t.addChild(x),t.addChild(y),c=y,l=u,a-=p,p<f.text.length)break e}}l?(Oo(e,l,s),ML(e,c,s)):Oo(e,o,s),i>=n&&Nn(e,l??o,c,r)},u8=({contentContainer:t,indicatorSprite:e,element:r})=>{let i=jT(r);if(i<=0){let s=au(r),o=r.content[0]??null;Oo(e,o,s);return}r.revealEffect==="softWipe"?m8({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i}):l8({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})},h8=async({contentContainer:t,indicatorSprite:e,element:r,signal:i,startAtCharacter:s=0,snapshot:o=null})=>{let n=Q5(r.speed??50),a=au(r),{stepDelay:c,charactersPerStep:l}=J5(n),h=Math.max(c,Math.floor(4e3/n)),u=Math.max(0,Math.floor(s)),d=!1,f=null,p=null;o&&(o.revealedCharacters=u,o.completed=!1);for(let m=0;m<r.content.length;m++){if(i?.aborted||t.destroyed)return!1;let g=r.content[m],_=!1;Oo(e,g,a);for(let y=0;y<g.lineParts.length;y++){if(i?.aborted||t.destroyed)return!1;let x=g.lineParts[y],{text:S,furiganaText:v}=QT(x);v&&t.addChild(v),t.addChild(S);let b=x.text,w=x.furigana?.text||"";b.length>0&&(f=S,p=g);let A=w.length,C=Math.min(b.length,u),R=b.length>0?Math.round(C/b.length*A):0;S.text=b.substring(0,C),v&&(v.text=w.substring(0,R)),u-=C,C>0&&(e.x=my(S,C-1)+a.x);let P=C;for(;P<b.length;){if(i?.aborted||t.destroyed)return!1;let U=Math.min(b.length,P+l),F=U-1;if(S.text=b.substring(0,U),e.x=my(S,F)+a.x,_=!0,d=!0,o&&(o.revealedCharacters+=U-P),v){let V=Math.round(U/b.length*A);v.text=w.substring(0,V)}P=U,P<b.length&&await gy(c,i)}}m<r.content.length-1&&_&&await gy(h,i)}return d&&(await gy(c,i),i?.aborted||t.destroyed)?!1:(Nn(e,p,f,r),o&&(o.completed=!0),!0)},IL=({lines:t,edgeWidth:e,baseDuration:r,softWipe:i})=>{let s=t.map(l=>{let h=Math.max(1,l.totalCharacters),u=1+e/Math.max(1,l.bounds.width);return h*u}),o=s.reduce((l,h)=>l+h,0),n=[],a=0,c=0;for(let l=0;l<t.length;l++){let h=s[l],u=o>0?Math.max(1,r*h/o):r,d=Math.max(0,a),f=d+u;n.push({...t[l],startTime:d,endTime:f,duration:u}),c=Math.max(c,f),a=f-u*i.lineOverlap+i.lineDelay}return{timedLines:n,duration:Math.max(1,Math.ceil(c))}},d8=({currentTime:t,line:e,easing:r})=>{let i=e.duration>0?(t-e.startTime)/e.duration:1;return r(Math.max(0,Math.min(i,1)))},f8=({progress:t,easingName:e})=>{let r=q5(t,0,1);return e==="easeOutCubic"?1-Math.cbrt(1-r):r},BL=({timedLines:t,initialRevealedCharacters:e,softWipe:r,easingName:i})=>{let s=Math.max(0,Math.floor(e)),o=s<=0,n=0,a=0;return{timedLines:t.map(l=>{let h=Math.max(0,l.totalCharacters??0),u=0,d=!1;if(!o&&s>0)if(h<=0||s>=h)s-=h,u=1,d=!0;else{let m=s/h;u=f8({progress:m,easingName:i}),s=0,o=!0}if(d)return{...l,startTime:-l.duration,endTime:0};o=!0;let f=u>0?-u*l.duration:Math.max(0,n),p=f+l.duration;return a=Math.max(a,p),n=p-l.duration*r.lineOverlap+r.lineDelay,{...l,startTime:f,endTime:p}}),duration:Math.max(1,Math.ceil(a))}},p8=t=>{t.forEach(e=>{e&&(e.line.container.mask===e.sprite&&(e.line.container.mask=null),e.sprite.parent&&e.sprite.parent.removeChild(e.sprite),e.sprite.destroy(),e.texture.destroy(!0))})},FL=({contentContainer:t,timedLines:e,edgeWidth:r})=>{let i=e.map(s=>{let o=document.createElement("canvas");o.width=Math.max(1,Math.ceil(s.bounds.width+r)),o.height=Math.max(1,Math.ceil(s.bounds.height));let n=o.getContext("2d");if(!n)return null;let a=Fa(o),c=new Ke(a);return c.x=Math.floor(s.bounds.x-r),c.y=Math.floor(s.bounds.y),s.container.mask=c,t.addChild(c),{canvas:o,context:n,texture:a,sprite:c,line:s,edgeWidth:r}});return i.some(s=>s===null)?(p8(i),null):i},kL=({timedLines:t,lineMasks:e,easing:r,indicatorSprite:i,indicatorOffsets:s,currentTime:o})=>{let n=t[0],a=n.bounds.x;for(let c=0;c<t.length;c++){let l=t[c],h=e[c],u=d8({currentTime:o,line:l,easing:r}),{context:d,canvas:f,texture:p}=h;if(d.clearRect(0,0,f.width,f.height),u<=0){p.source.update();continue}let m=0,g=l.bounds.width+h.edgeWidth,_=h.edgeWidth,y=_+u*g,x=Math.max(_,y-h.edgeWidth);x>_&&(d.fillStyle="#ffffff",d.fillRect(_,m,Math.min(x-_,l.bounds.width),l.bounds.height));let S=Math.max(_,y-h.edgeWidth),v=Math.min(_+l.bounds.width,y);if(v>S){let b=d.createLinearGradient(S,0,v,0);b.addColorStop(0,"rgba(255, 255, 255, 1)"),b.addColorStop(1,"rgba(255, 255, 255, 0)"),d.fillStyle=b,d.fillRect(S,m,v-S,l.bounds.height)}p.source.update(),n=l,a=l.bounds.x+Math.min(g,Math.max(0,y-_))}Oo(i,n.chunk,s),i.x=a+s.x},m8=({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})=>{let s=au(r),{lines:o,lastTextObject:n,lastChunk:a,totalCharacters:c,maxLineHeight:l}=JT(t,r);if(Oo(e,a,s),o.length===0||c===0||i>=c||!o.some(y=>y.bounds.width>0&&y.bounds.height>0)||!globalThis.document){Nn(e,a,n,r);return}let h=Ka(r.softWipe),u=DT(h.easing),d=GT({maxLineHeight:l,softWipe:h}),f=YT(r.speed??50),p=Math.max(1,Math.round(c/f*1e3)),m=IL({lines:o,edgeWidth:d,baseDuration:p,softWipe:h}),{timedLines:g}=BL({timedLines:m.timedLines,initialRevealedCharacters:i,softWipe:h,easingName:h.easing}),_=FL({contentContainer:t,timedLines:g,edgeWidth:d});if(!_){Nn(e,a,n,r);return}kL({timedLines:g,lineMasks:_,easing:u,indicatorSprite:e,indicatorOffsets:s,currentTime:0})},g8=({container:t,contentContainer:e,indicatorSprite:r,element:i,animationBus:s,completionTracker:o,app:n})=>{let a=au(i),c=YT(i.speed??50),{lines:l,lastTextObject:h,lastChunk:u,totalCharacters:d,maxLineHeight:f}=JT(e,i),p=jT(i);if(Oo(r,u,a),l.length===0||d===0||p>=d||!l.some(F=>F.bounds.width>0&&F.bounds.height>0)||!globalThis.document||!s)return Nn(r,u,h,i),!1;let m=Ka(i.softWipe),g=DT(m.easing),_=GT({maxLineHeight:f,softWipe:m}),y=Math.max(1,Math.round(d/c*1e3)),x=IL({lines:l,edgeWidth:_,baseDuration:y,softWipe:m}),{timedLines:S,duration:v}=BL({timedLines:x.timedLines,initialRevealedCharacters:p,softWipe:m,easingName:m.easing}),b=o.getVersion(),w=`${i.id}-soft-wipe`,A=FL({contentContainer:e,timedLines:S,edgeWidth:_});if(!A)return Nn(r,u,h,i),!1;let C=!1,R=vL({app:n,element:i}),P=F=>{if(C)return;C=!0,R({completed:F})||SL(t,U),A.forEach(z=>{z.line.container.mask===z.sprite&&(z.line.container.mask=null),z.sprite.parent&&z.sprite.parent.removeChild(z.sprite),z.sprite.destroy(),z.texture.destroy(!0)}),F&&Nn(r,u,h,i)},U=()=>{if(C){R();return}s.dispatch({type:"CANCEL",id:w}),P(!1)};return PL(t,U),o.track(b),s.dispatch({type:"START",payload:{id:w,driver:"custom",duration:v,applyFrame:F=>{kL({timedLines:S,lineMasks:A,easing:g,indicatorSprite:r,indicatorOffsets:a,currentTime:Math.min(v,F)})},applyTargetState:()=>{P(!1)},onComplete:()=>{o.complete(b),P(!0)},onCancel:()=>{o.complete(b),P(!1)},isValid:()=>!!t&&!t.destroyed&&!e.destroyed&&!r.destroyed}}),!0},Do=async({container:t,element:e,completionTracker:r,animationBus:i,zIndex:s,signal:o,app:n,playback:a="autoplay",onLayoutMounted:c})=>{if(o?.aborted||t.destroyed)return;let l=nu(e),h=a==="resume"?CL(t):null,u=jT(e);if(a==="resume"&&!h)return;let d=r?.getVersion?.(),f=r8(e),p=!1,m=()=>{!f||p||(r?.track?.(d),p=!0)},g=()=>{p&&(p=!1,r?.complete?.(d))};m(),KT(t),t.zIndex=s;let _=new he({label:`${e.id}-content`}),y;try{let x=o8(e,{app:n});if(y=zT(x)?await x:x,o?.aborted||t.destroyed){$T(y),g();return}if(t.addChild(_),t.addChild(y),y?.[ou]?.start(),a==="paused-initial"){l||sp(t,{mode:Z5(e),revealedCharacters:u,completed:!1}),l?(sp(t,{mode:"none",completed:!0}),gL({contentContainer:_,indicatorSprite:y,element:e})):u8({contentContainer:_,indicatorSprite:y,element:e}),c?.(),g();return}let S=r.getVersion(),v=!1;if(l)r.track(S),g(),sp(t,{mode:"none",completed:!0}),gL({contentContainer:_,indicatorSprite:y,element:e}),c?.(),v=!0;else if(e.revealEffect==="softWipe"){sp(t,{mode:"softWipe",revealedCharacters:u,completed:!1});let b=g8({container:t,contentContainer:_,indicatorSprite:y,element:e,animationBus:i,completionTracker:r,app:n});if(c?.(),!b&&!o?.aborted&&!t.destroyed)r.track(S),g(),v=!0;else{g();return}}else{r.track(S),g();let b=h?.revealedCharacters??u,w=bL(e),A=sp(t,{mode:"typewriter",revealedCharacters:b,completed:!1}),C=b<w,R=C?vL({app:n,element:e}):()=>{},P=({completed:U=!1}={})=>R({completed:U});C&&PL(t,P);try{let U=h8({contentContainer:_,indicatorSprite:y,element:e,signal:o,startAtCharacter:b,snapshot:A});c?.(),v=await U}finally{P({completed:v&&!o?.aborted&&!t.destroyed})||SL(t,P)}}v&&!o?.aborted&&!t.destroyed&&r.complete(S)}catch(x){if(g(),y&&!y.destroyed&&!y.parent&&$T(y),x?.name!=="AbortError"&&!o?.aborted)throw x}};var _y=({suppressAnimations:t=!1,deferredMountOperations:e=[]}={})=>({suppressAnimations:t,deferredMountOperations:e}),UL=t=>{switch(t?.type){case"play-animated-sprite":t.animatedSprite?.destroyed||t.animatedSprite?.play();return;case"play-video":t.video?.play();return;case"start-particles":if(t.app?.debug){let e=r=>{if(t.emitter.destroyed){window.removeEventListener("snapShotKeyFrame",e);return}r?.detail?.deltaMS&&(t.emitter.update(Number(r.detail.deltaMS)/1e3),typeof t.app?.render=="function"&&t.app.render())};window.addEventListener("snapShotKeyFrame",e),t.container.customTickerHandler=e;return}t.app.ticker.add(t.tickerCallback);return;case"autoplay-text-reveal":Do({container:t.container,element:t.element,completionTracker:t.completionTracker,animationBus:t.animationBus,zIndex:t.zIndex,signal:t.signal,app:t.app,playback:"autoplay",onLayoutMounted:t.onLayoutMounted});return;case"start-update-animations":if(!t.element||t.element.destroyed)return;py({animations:t.animations,animationBus:t.animationBus,completionTracker:t.completionTracker,element:t.element,targetState:t.targetState,animationBaseState:t.animationBaseState});return}},op=(t,e)=>{if(e?.type){if(!t?.suppressAnimations){UL(e);return}t.deferredMountOperations.push(e)}},cu=t=>{t?.deferredMountOperations&&(t.deferredMountOperations.length=0)},LL=(t,e)=>op(t,{type:"play-animated-sprite",animatedSprite:e}),OL=(t,e)=>op(t,{type:"play-video",video:e}),DL=(t,{app:e,emitter:r,container:i,tickerCallback:s})=>op(t,{type:"start-particles",app:e,emitter:r,container:i,tickerCallback:s}),by=(t,{app:e,container:r,element:i,completionTracker:s,animationBus:o,zIndex:n,signal:a,onLayoutMounted:c})=>op(t,{type:"autoplay-text-reveal",app:e,container:r,element:i,completionTracker:s,animationBus:o,zIndex:n,signal:a,onLayoutMounted:c}),GL=(t,{animations:e,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:n})=>op(t,{type:"start-update-animations",animations:e,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:n}),ZT=(t,e=()=>!0)=>{if(!t?.deferredMountOperations?.length)return;let r=t.deferredMountOperations.splice(0),i=[];for(let s of r)e(s)?UL(s):i.push(s);i.length>0&&t.deferredMountOperations.push(...i)};var x8=Object.prototype.hasOwnProperty,Me=(t,e)=>{if(Object.is(t,e))return!0;if(t===null||e===null||typeof t!="object"||typeof e!="object")return!1;let r=Array.isArray(t),i=Array.isArray(e);if(r!==i)return!1;if(r&&i){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(!Me(t[n],e[n]))return!1;return!0}let s=Object.keys(t),o=Object.keys(e);if(s.length!==o.length)return!1;for(let n of s)if(!x8.call(e,n)||!Me(t[n],e[n]))return!1;return!0};var Ja=t=>{let e=new Set;if(t.id&&e.add(t.id),t.children&&Array.isArray(t.children))for(let r of t.children)for(let i of Ja(r))e.add(i);return e};var HL=(t=[])=>{if(t instanceof Map)return t;let e=new Map;for(let r of t)e.has(r.targetId)||e.set(r.targetId,[]),e.get(r.targetId).push(r);return e},vy=(t,e)=>t?t instanceof Map?t.get(e)??[]:t.filter(r=>r.targetId===e):[],VL=(t,e)=>vy(t,e).filter(r=>r.type==="update"),Sy=(t,e)=>vy(t,e).find(r=>r.type==="transition")??null,NL=(t=[])=>t.some(e=>Object.keys(e.tween??{}).some(Dn)),np=(t=[],e,r=[])=>{for(let i of t){if(i?.id===e)return{element:i,ancestorIds:r};if(Array.isArray(i?.children)){let s=np(i.children,e,[...r,i.id]);if(s)return s}}return null},WL=(t,e)=>Me(t?.ancestorIds??null,e?.ancestorIds??null),y8=({subtreeRoot:t,nextAnimations:e,continuingAnimationId:r})=>{if(!t)return!1;let i=Ja(t);for(let s of e??[])if(!(!s||s.id===r)&&i.has(s.targetId))return!0;return!1},ew=(t={})=>t.type==="update"?JSON.stringify({type:t.type,tween:t.tween,playback:t.playback??null}):JSON.stringify({type:t.type,prev:t.prev??null,next:t.next??null,mask:t.mask??null,compositor:t.compositor??null,tween:t.tween??null,playback:t.playback??null}),_8=({prevState:t,nextState:e,animation:r})=>{let i=np(t?.elements,r.targetId),s=np(e?.elements,r.targetId);return i!==null&&s!==null&&WL(i,s)&&Me(i.element,s.element)},b8=({prevState:t,nextState:e,animation:r})=>{let i=np(t?.elements,r.targetId),s=np(e?.elements,r.targetId);return i===null&&s===null?!0:i===null||s===null||!WL(i,s)||!Me(i.element,s.element)?!1:!y8({subtreeRoot:s.element,nextAnimations:e?.animations,continuingAnimationId:r.id})},zL=({prevState:t,nextState:e,activeAnimations:r})=>{let i=new Set,s=r instanceof Map?r:new Map(r?.map(o=>[o.id,o])??[]);for(let o of e?.animations??[]){if(o?.playback?.continuity!=="persistent")continue;let n=s.get(o.id);if(n&&!(n.type!==o.type||n.targetId!==o.targetId||n.signature!==ew(o))){if(o.type==="update"){_8({prevState:t,nextState:e,animation:o})&&i.add(o.id);continue}b8({prevState:t,nextState:e,animation:o})&&i.add(o.id)}}return{continuedAnimationIds:i}},v8=({animations:t,targetId:e,animationBus:r,completionTracker:i,element:s,targetState:o,onComplete:n,renderContext:a})=>{let c=VL(t,e),l=c.filter(u=>typeof r?.hasContext=="function"?r.hasContext(u.id):!1),h=c.filter(u=>!l.includes(u));if(c.length===0)return!1;if(h.length===0)return!0;if(a?.suppressAnimations){if(n)throw new Error("Deferred update animations do not support onComplete hooks.");let u=NL(h)?Gn(s):void 0;return hL(s,h,void 0,u),GL(a,{animations:h,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:u}),!0}return py({animations:h,animationBus:r,completionTracker:i,element:s,targetState:o,onComplete:n,animationBaseState:NL(h)?Gn(s):void 0}),!0},lu=VL;var pe=v8;var $L=t=>!!t&&typeof t=="object"&&!Array.isArray(t),S8=(t,e)=>e===void 0?t:e===null||e===!1?null:$L(e)?{...$L(t)?t:{},...e}:e,Hn=(t={},e={})=>{if(!e)return{...t};let r={...t,...e};return Object.prototype.hasOwnProperty.call(e,"shadow")&&(r.shadow=S8(t?.shadow,e.shadow)),r};var KL=Symbol("routeGraphicsElementRenderState"),QL=Symbol("routeGraphicsElementHitTestBounds"),JL=Symbol("routeGraphicsDeferredRenderStateCommit"),tw=Symbol("routeGraphicsParentRenderState"),rw=Symbol("routeGraphicsElementRenderLifecycle"),ow=t=>t&&typeof t.then=="function",uu=(t,e)=>JSON.stringify([t,e]),Za=t=>t?.[KL]??null,rt=(t,e)=>{t&&e&&(t[KL]=e)},hu=(t,e)=>{t&&typeof e=="function"&&(t[QL]=e)},ZL=t=>t?.[QL]?.(t)??null,eO=t=>(t[tw]||(t[tw]={lifecycle:null,managed:!1}),t[tw]),Ty=(t,e)=>{for(let r=t.children.length-1;r>=0;r--){let i=t.children[r];if(!i.destroyed&&i.label===e)return i}},XL=(t,e,r)=>{for(let i=t.children.length-1;i>=0;i--){let s=t.children[i];if(!s.destroyed&&s.label===e.id&&!r.has(s)){let o=Za(s);if(!o||o.type===e.type)return s}}return null},iw=(t,e)=>{t&&rt(t,e)},tO=({plugin:t,...e})=>{let r=new Set(e.parent.children),i=t.add(e),{parent:s,element:o}=e,n=XL(s,o,r);return iw(n,o),ow(i)?i.then(()=>{(!n||n.destroyed)&&(n=XL(s,o,r)),iw(n,o)}):i},rO=({plugin:t,...e})=>{let{parent:r,prevElement:i,nextElement:s,signal:o}=e,n=!1,a=null,c=()=>{if(a)return;let d,f=new Promise(g=>{d=g}),p=!1,m=()=>{p||(p=!0,o?.removeEventListener?.("abort",m),d())};a={result:{[JL]:f},settle:m},n||o?.aborted||r.destroyed?m():o?.addEventListener?.("abort",m,{once:!0})},l=d=>{if(n=!0,!o?.aborted&&!r.destroyed){let f=d??Ty(r,s.id)??Ty(r,i.id);iw(f,s)}a?.settle()},h;try{h=t.update({...e,commitRenderState:l,deferRenderStateCommit:c})}catch(d){throw a?.settle(),d}let u=d=>a?a.result:(l(),d);return ow(h)?h.then(u,d=>{throw a?.settle(),d}):u(h)},nw=t=>{let e=t;for(;e;){let r=Za(e);if(r)return r.id;e=e.parent}return null},iO=(t,e,r=new Map)=>{for(let i=0;i<t.length;i++){let s=t[i];r.set(uu(e,s.id),{element:s,ownerElementId:e,zIndex:i}),Array.isArray(s.children)&&iO(s.children,s.id,r)}return r},T8=t=>({currentRender:null,desiredElements:new Map,pendingReplacements:new Map,renderParents:new Map,rootOwnerElementId:nw(t),rootParent:t}),w8=(t,e)=>{if(e[rw])return{lifecycle:e[rw],isRootRender:!1};let r=eO(t),i=r.lifecycle??T8(t);return r.lifecycle=i,e[rw]=i,{lifecycle:i,isRootRender:!0}},sO=(t,e)=>{let r=e?.completionTracker;if(!r?.getVersion||!r?.track)return;let i=r.getVersion(),s=t.completionReservation;s?.tracker===r&&s.version===i||(r.track(i),t.completionReservation={tracker:r,version:i},s?.tracker.complete?.(s.version))},YL=t=>{let e=t.completionReservation;t.completionReservation=null,e?.tracker.complete?.(e.version)},E8=(t,{nextComputedTree:e,parent:r,renderSnapshot:i})=>{t.rootParent=r,t.rootOwnerElementId=nw(r),t.currentRender=i,t.desiredElements=iO(e,t.rootOwnerElementId);for(let s of t.pendingReplacements.values())sO(s,i)},A8=(t,e)=>{let r=eO(t),i=new Map(e.map(o=>[o.id,o])),s=new Map;for(let o of t.children){if(o.destroyed)continue;let n=i.get(o.label),a=Za(o);!a&&n&&(a=n,rt(o,n)),a&&s.set(a.id,n?.type===a.type?n:a)}if(!r.managed)for(let o of e)s.has(o.id)||s.set(o.id,o);return r.managed=!0,Array.from(s.values())},oO=({nextComputedTree:t,parent:e,prevComputedTree:r,renderContext:i,renderSnapshot:s})=>{let{lifecycle:o,isRootRender:n}=w8(e,i);n&&E8(o,{nextComputedTree:t,parent:e,renderSnapshot:s});let a=nw(e),c=A8(e,r);for(let h of[...c,...t])o.renderParents.set(uu(a,h.id),e);let l=new Set;for(let h of o.pendingReplacements.values())h.ownerElementId===a&&l.add(h.id);return{lifecycle:o,ownerElementId:a,pendingReplacementIds:l,renderedPrevComputedTree:c,resolveRenderParent:h=>sw(o,a,h)}},nO=(t,e)=>{for(let r of t.children??[]){if(r.destroyed)continue;if(r.label===e)return r;let i=nO(r,e);if(i)return i}return null},jL=(t,e)=>{let r=t;for(;r;){if(r===e)return!0;r=r.parent}return!1},aO=(t,e)=>{for(let r of t.children??[]){if(r.destroyed)continue;let i=Za(r);if(r.label===e&&i?.id===e)return r.parent;let s=aO(r,e);if(s)return s}return null},sw=(t,e,r)=>{let{rootOwnerElementId:i,rootParent:s}=t;if(!s||s.destroyed)return null;let o=uu(e,r),n=t.renderParents.get(o),a=n&&!n.destroyed&&jL(n,s),c=e===i?s:s.getChildByLabel?.(e,!0)??nO(s,e);if(!c)return null;let l=aO(c,r);if(a&&(!l||jL(l,n)))return n;if(l)return t.renderParents.set(o,l),l;let u=c.children?.find(d=>!d.destroyed&&d.label===`${e}-content`)??c;return t.renderParents.set(o,u),u},M8=(t,e)=>t.desiredElements.get(uu(e.ownerElementId,e.id)),ap=(t,e)=>t.currentRender===e&&!e?.signal?.aborted&&!t.rootParent?.destroyed,P8=async(t,e)=>{let r=null;for(;;){let i=t.currentRender;if(!ap(t,i))return!1;let s=sw(t,e.ownerElementId,e.id);if(!s||s.destroyed)return!1;let o=M8(t,e),n=Ty(s,e.id),a=n?Za(n)??r?.element??e.prevElement:null;if(n&&o&&a.type===o.element.type){if(!Me(a,o.element)&&(await(await i.updateElement({parent:s,prevElement:a,nextElement:o.element,zIndex:o.zIndex}))?.[JL],!ap(t,i)))continue;return!n.destroyed&&n.parent===s&&rt(n,o.element),!0}if(n){if(await i.deleteElement({parent:s,element:a}),ap(t,i)&&sw(t,e.ownerElementId,e.id)===s&&Ty(s,e.id)===n)throw new Error(`Element plugin cleanup did not remove "${e.id}".`);continue}if(!o)return!0;r=o;let c=i.mountElement({parent:s,element:o.element,zIndex:o.zIndex});if(!ow(c)||(await c,ap(t,i)))return!0}},qL=(t,e)=>t.pendingReplacements.delete(uu(e.ownerElementId,e.id)),C8=t=>{let e=t.currentRender;ap(t,e)&&e.requestFrame?.()},aw=({lifecycle:t,operation:e,replacement:r})=>{let i=uu(r.ownerElementId,r.id);return t.pendingReplacements.set(i,r),sO(r,t.currentRender),e.then(()=>P8(t,r)).then(s=>{t.pendingReplacements.get(i)===r&&(qL(t,r),s&&C8(t),YL(r))},s=>{throw t.pendingReplacements.get(i)===r&&(qL(t,r),YL(r)),s})};var lO=Symbol("routeGraphicsTextAnchorRatios"),Vn=Symbol("routeGraphicsTextLayoutState"),cO=(t,e)=>typeof t!="number"||t===0?0:e/t,wy=t=>t?.align??dt.align,uO=t=>{let e=t[Vn];return e?.fixedWidth&&typeof e.layoutWidth=="number"?e.layoutWidth:typeof e?.measuredWidth=="number"?e.measuredWidth:t.width},R8=(t,e)=>{let r=_t.measureText(String(t??""),new at(br(e,{includeShadow:!1})));return{width:r.width,height:r.height}},hO=t=>t?.shadow!==void 0&&t.shadow!==null&&t.shadow!==!1,cw=(t,e)=>hO(e)?R8(t.text,e):{width:t.width,height:t.height},Ey=t=>{let e=t[Vn];return typeof e?.measuredWidth=="number"?e.measuredWidth:t.width},dO=t=>{let e=t[Vn];return typeof e?.measuredHeight=="number"?e.measuredHeight:t.height},fO=(t,e,r)=>{let i=!!e.__fixedWidth,s=r??cw(t,e.textStyle),o=s.width??e.measuredWidth??e.width,n=s.height??e.height??t.height;t[Vn]={fixedWidth:i,layoutWidth:i?e.width:o,measuredWidth:o,measuredHeight:n}},Ay=(t,e,r)=>{let i=Math.max(0,t-e);return r==="center"?i/2:r==="right"?i:0},I8=t=>{if(!t[Vn])return null;let r=uO(t),i=Ey(t);return{x:-Ay(r,i,wy(t.style)),y:0,width:r,height:dO(t)}},lw=t=>{let e=t.measuredWidth??t.width,r=Ay(t.width,e,wy(t.textStyle));return{x:t.x+r,y:t.y}},My=(t,e)=>{let r=cw(t,e.textStyle),i=e.__fixedWidth&&typeof e.width=="number"?e.width:r.width,s=r.height,o=typeof e.__anchorXRatio=="number"?e.__anchorXRatio:cO(i,e.originX),n=typeof e.__anchorYRatio=="number"?e.__anchorYRatio:cO(s,e.originY);t[lO]={x:o,y:n},fO(t,e,r),hu(t,I8)},B8=t=>typeof t?.fontSize!="number"||t.fontSize===0||typeof t?.lineHeight!="number"?dt.lineHeight:t.lineHeight/t.fontSize,uw=(t,e)=>{if(!e)return t;let r=Hn(t,e);if(e.fontSize!==void 0||e.lineHeight!==void 0){let i=e.lineHeight??B8(t);r.lineHeight=Math.round(r.fontSize*i)}return r},pO=(t,e,r)=>{let i=t[lO],s=uO(t),o=uw(e,r);if(!i){Js(t,o);return}let n=Ay(s,Ey(t),wy(t.style)),c=t.x-n+s*i.x,l=t.y+dO(t)*i.y;Js(t,o);let h=cw(t,o),d=t[Vn]?.fixedWidth===!0?s:h.width,f=Ay(d,h.width,wy(o));t.x=c-d*i.x+f,t.y=l-h.height*i.y,t[Vn]={...t[Vn]??{},layoutWidth:d,measuredWidth:h.width,measuredHeight:h.height}},Py=(t,e)=>{fO(t,e);let r=hO(e.textStyle)?e.measuredWidth??Ey(t):Ey(t),i=lw({...e,measuredWidth:r,width:e.__fixedWidth&&typeof e.width=="number"?e.width:r});t.x=i.x,t.y=i.y};var mO=t=>{if(!(!t||typeof t!="object")){if(typeof t.button=="number")return t.button;if(typeof t.data?.button=="number")return t.data.button;if(typeof t.nativeEvent?.button=="number")return t.nativeEvent.button}},vr=t=>{let e=mO(t);return e===void 0||e===0},gO=t=>mO(t)===2;var hw=Symbol.for("routeGraphics.setInheritedHover"),xO=Symbol.for("routeGraphics.treeInheritedHoverActive"),dw=Symbol.for("routeGraphics.setInheritedPress"),yO=Symbol.for("routeGraphics.treeInheritedPressActive"),fw=Symbol.for("routeGraphics.setInheritedRightPress"),_O=Symbol.for("routeGraphics.treeInheritedRightPressActive"),du=t=>Array.isArray(t?.children)?t.children:[],pw=({displayObject:t,symbol:e,source:r,isActive:i})=>{let s=t?.[e];typeof s=="function"&&s(r,i)},Cy=({displayObject:t,symbol:e})=>{t&&e in t&&delete t[e]},mw=({displayObject:t,symbol:e,onStateChange:r})=>{let i=!1,s=new Set,o=({nextDirectActive:n=i,onInheritedChange:a})=>{let c=i||s.size>0;i=n,a?.(s);let l=i||s.size>0;return c!==l&&r(l),l};return t[e]=(n,a)=>o({onInheritedChange:c=>{if(n){if(a){c.add(n);return}c.delete(n)}}}),{setDirectState:n=>o({nextDirectActive:n}),isActive:()=>i||s.size>0,destroy:()=>{Cy({displayObject:t,symbol:e})}}},fu=t=>Cy({displayObject:t,symbol:hw}),Ry=t=>Cy({displayObject:t,symbol:dw}),Iy=t=>Cy({displayObject:t,symbol:fw}),Wn=({displayObject:t,onHoverChange:e})=>{let r=mw({displayObject:t,symbol:hw,onStateChange:e});return{setDirectHover:r.setDirectState,isHovering:r.isActive,destroy:r.destroy}},pu=({displayObject:t,onPressChange:e})=>{let r=mw({displayObject:t,symbol:dw,onStateChange:e});return{setDirectPress:r.setDirectState,isPressed:r.isActive,destroy:r.destroy}},mu=({displayObject:t,onPressChange:e})=>{let r=mw({displayObject:t,symbol:fw,onStateChange:e});return{setDirectPress:r.setDirectState,isPressed:r.isActive,destroy:r.destroy}},gw=t=>t?.[xO]===!0,xw=t=>t?.[yO]===!0,yw=t=>t?.[_O]===!0,gu=({root:t,isHovered:e})=>{if(!t)return;t[xO]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:hw,source:t,isActive:e}),r.push(...du(i))}},ec=({root:t,isPressed:e})=>{if(!t)return;t[yO]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:dw,source:t,isActive:e}),r.push(...du(i))}},Go=({root:t,isPressed:e})=>{if(!t)return;t[_O]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:fw,source:t,isActive:e}),r.push(...du(i))}};var bO="__rtglScrollHandled",vO=t=>t?.payload&&typeof t.payload=="object"?t.payload:{},es=({canvas:t,displayObject:e,width:r,height:i,scrollUpEvent:s,scrollDownEvent:o,eventHandler:n})=>{if(!s&&!o)return;let a=!1,c=Number.isFinite(r)&&Number.isFinite(i)&&r>0&&i>0;e.eventMode="static",c&&(e.hitArea=new ue(0,0,Math.round(r),Math.round(i)));let l=(p,m)=>{m?.[bO]||(m&&(m[bO]=!0),p<0&&s&&n?n("scrollUp",{_event:{id:e.label},...vO(s)}):p>0&&o&&n&&n("scrollDown",{_event:{id:e.label},...vO(o)}))},h=()=>{a=!0},u=()=>{a=!1},d=p=>{p.preventDefault?.(),l(p.deltaY,p.nativeEvent)},f=p=>{a&&(p.preventDefault(),l(p.deltaY,p))};e.on("pointerover",h),e.on("pointerout",u),e.on("wheel",d),t?.addEventListener("wheel",f,{passive:!1}),e._cleanupScrollInteraction=()=>{a=!1,e.off("pointerover",h),e.off("pointerout",u),e.off("wheel",d),t?.removeEventListener("wheel",f),c&&(e.hitArea=null),delete e._cleanupScrollInteraction}},_w=({root:t})=>{t?._cleanupScrollInteraction?.(),t?.children?.forEach(e=>{_w({root:e})})};var xu=t=>{t._cleanupScrollInteraction?.(),t.removeAllListeners("pointerover"),t.removeAllListeners("pointerout"),t.removeAllListeners("pointerdown"),t.removeAllListeners("pointerupoutside"),t.removeAllListeners("pointerup"),t.removeAllListeners("rightdown"),t.removeAllListeners("rightclick"),t.removeAllListeners("rightup"),t.removeAllListeners("rightupoutside"),t.removeAllListeners("wheel"),fu(t),Ry(t),Iy(t),t.cursor="auto",t.eventMode="auto"},cp=({app:t,displayObject:e,textComputedNode:r,eventHandler:i,applyStyle:s})=>{let o=r?.hover,n=r?.click,a=r?.rightClick,c=r?.scrollUp,l=r?.scrollDown,h=null,u=null,d=null,f=()=>{let p=h?.isHovering()??!1,m=u?.isPressed()??!1;(d?.isPressed()??!1)&&a?.textStyle?s(a.textStyle):m&&n?.textStyle?s(n.textStyle):p&&o?.textStyle?s(o.textStyle):s()};if(o){let{cursor:p,soundSrc:m,soundVolume:g,payload:_}=o;e.eventMode="static",h=Wn({displayObject:e,onHoverChange:f});let y=()=>{h.setDirectHover(!0),_&&i&&i("hover",{_event:{id:e.label},..._}),p&&(e.cursor=p),m&&t.audioStage.add({id:`hover-${Date.now()}`,url:m,loop:!1,volume:Ve(g)})},x=()=>{h.setDirectHover(!1),e.cursor="auto"};e.on("pointerover",y),e.on("pointerout",x)}if(n){let{soundSrc:p,soundVolume:m,payload:g}=n;e.eventMode="static",u=pu({displayObject:e,onPressChange:f});let _=S=>{vr(S)&&u.setDirectPress(!0)},y=S=>{vr(S)&&(u.setDirectPress(!1),g&&i&&i("click",{_event:{id:e.label},...g}),p&&t.audioStage.add({id:`click-${Date.now()}`,url:p,loop:!1,volume:Ve(m)}))},x=()=>{u.setDirectPress(!1)};e.on("pointerdown",_),e.on("pointerup",y),e.on("pointerupoutside",x)}if(a){let{soundSrc:p,payload:m}=a;e.eventMode="static",d=mu({displayObject:e,onPressChange:f});let g=()=>{d.setDirectPress(!0)},_=()=>{d.setDirectPress(!1)},y=()=>{d.setDirectPress(!1),m&&i&&i("rightClick",{_event:{id:e.label},...m}),p&&t.audioStage.add({id:`rightClick-${Date.now()}`,url:p,loop:!1})},x=()=>{d.setDirectPress(!1)};e.on("rightdown",g),e.on("rightup",_),e.on("rightclick",y),e.on("rightupoutside",x)}(c||l)&&es({canvas:t.canvas,displayObject:e,scrollUpEvent:c,scrollDownEvent:l,eventHandler:i})};var wO=Symbol("routeGraphicsRichTextDisplay"),F8=t=>t?.align??dt.align,k8=(t,e,r)=>{let i=Math.max(0,t-e.width),s=0;return r==="center"?s=i/2:r==="right"&&(s=i),s-e.x},U8=t=>{t.removeChildren().forEach(r=>{r.destroy({children:!0})})},SO=({text:t,style:e,x:r,y:i})=>new vi({text:t,style:new at(br(e)),x:Math.round(r),y:Math.round(i)}),TO=(t,e)=>e?uw(t,e):t,L8=(t,e,r)=>{let i=t.getLocalBounds(),s=Math.min(0,i.x),o=Math.min(0,i.y),n=Math.max(e,i.x+i.width),a=Math.max(r,i.y+i.height);return new ue(s,o,n-s,a-o)},tc=t=>Array.isArray(t?.content),EO=t=>!!t?.[wO],AO=t=>({x:t.x,y:t.y}),lp=(t,e,r)=>{U8(t),t.label=e.id,t.x=Math.round(e.x??0),t.y=Math.round(e.y??0),t.alpha=e.alpha??1;let i=e.width??e.measuredWidth??0;for(let n=0;n<e.content.length;n++){let a=e.content[n],c=new he({label:`${e.id}-line-${n}`});for(let h of a.lineParts??[])h.furigana&&c.addChild(SO({text:h.furigana.text,style:TO(h.furigana.textStyle,r),x:h.furigana.x,y:h.furigana.y})),c.addChild(SO({text:h.text,style:TO(h.textStyle,r),x:h.x,y:h.y}));let l=c.getLocalBounds();c.x=k8(i,l,F8(e.textStyle)),t.addChild(c)}let s=Math.max(0,i),o=Math.max(0,e.height??0);t.hitArea=new ue(0,0,s,o),hu(t,n=>L8(n,s,o))},MO=(t,e)=>{let r=new he({label:t.id});return r[wO]=!0,r.zIndex=e,lp(r,t),r};var bw="__routeGraphicsManagedFilters",O8=["shadow","blur","shader"],D8=t=>(t[bw]||Object.defineProperty(t,bw,{value:new Map,enumerable:!1,configurable:!0}),t[bw]),G8=t=>t.filters?Array.isArray(t.filters)?t.filters:[t.filters]:[],By=t=>t?Array.isArray(t)?t.filter(Boolean):[t]:[],N8=(t,e,r)=>{let i=new Set;for(let a of e.values())for(let c of By(a))i.add(c);for(let a of By(r))i.add(a);let s=G8(t).filter(a=>!i.has(a)),n=[...O8.flatMap(a=>By(e.get(a))),...s];t.filters=n.length>0?n:null},H8=t=>{for(let e of By(t))e.destroy?.()},rc=(t,e,r)=>{let i=D8(t),s=i.get(e);r?i.set(e,r):i.delete(e),N8(t,i,s),s&&s!==r&&H8(s)};var PO=/^[a-z][A-Za-z0-9]*$/;var V8=new Set(["shader"]),CO=new Set(["normal","add","multiply","screen"]),RO=new Set(["clamp","repeat"]),W8=new Set(["uTexture","uPrevTexture","uNextTexture","uNextTextureMatrix","uNextTextureClamp","uProgress","uResolution","uSampler","GlobalFilterUniforms","ShaderUniforms","VSOutput","gfu","shaderUniforms","mainVertex","mainFragment","uInputSize","uInputPixel","uInputClamp","uOutputFrame","uGlobalFrame","uOutputTexture"]),z8=t=>!!t&&typeof t=="object"&&!Array.isArray(t),IO=t=>typeof t=="number"&&Number.isFinite(t),zn=(t,e)=>{if(!z8(t))throw new Error(`Input Error: ${e} must be an object`)},up=(t,e)=>{if(typeof t!="string"||t.length===0)throw new Error(`Input Error: ${e} must be a non-empty string`)},BO=(t,e)=>{if(!PO.test(t))throw new Error(`Input Error: ${e} must match ${PO.source}`)},FO=t=>t.charAt(0).toUpperCase()+t.slice(1),$8=t=>`u${FO(t)}`,X8=t=>`u${FO(t)}Texture`,kO=({key:t,symbol:e,path:r,symbols:i,kind:s})=>{if(W8.has(e))throw new Error(`Input Error: ${r}.${t} generates reserved shader symbol ${e}`);if(i.has(e))throw new Error(`Input Error: ${r}.${t} generates duplicate shader symbol ${e}`);i.set(e,{key:t,kind:s})},Y8=(t,e)=>{if(IO(t))return{type:"f32",value:t};if(Array.isArray(t)&&(t.length===2||t.length===4)&&t.every(IO))return{type:t.length===2?"vec2<f32>":"vec4<f32>",value:[...t]};throw new Error(`Input Error: ${e} must be a number, a length-2 number array, or a length-4 number array`)},j8=(t,e,r)=>t===void 0?[]:(zn(t,e),Object.keys(t).sort().map(i=>{BO(i,`${e}.${i}`);let s=$8(i);return kO({key:i,symbol:s,path:e,symbols:r,kind:"uniform"}),{key:i,symbol:s,...Y8(t[i],`${e}.${i}`)}})),q8=({textures:t,path:e,symbols:r,maxTextures:i})=>{if(t===void 0)return[];zn(t,e);let s=Object.keys(t).sort();if(s.length>i)throw new Error(`Input Error: ${e} supports at most ${i} custom textures`);return s.map(o=>{BO(o,`${e}.${o}`),up(t[o],`${e}.${o}`);let n=X8(o);return kO({key:o,symbol:n,path:e,symbols:r,kind:"texture"}),{key:o,symbol:n,src:t[o]}})},K8=(t,e)=>{if(t===void 0)return{blend:"normal",textureWrap:"clamp",mipmap:!1};zn(t,e);let r=t.blend??"normal";if(!CO.has(r))throw new Error(`Input Error: ${e}.blend must be one of: ${Array.from(CO).join(", ")}`);let i=t.textureWrap??"clamp";if(!RO.has(i))throw new Error(`Input Error: ${e}.textureWrap must be one of: ${Array.from(RO).join(", ")}`);let s=t.mipmap??!1;if(typeof s!="boolean")throw new Error(`Input Error: ${e}.mipmap must be a boolean`);return{blend:r,textureWrap:i,mipmap:s}},Q8=(t,e)=>{if(zn(t,e),zn(t.webgl,`${e}.webgl`),zn(t.webgpu,`${e}.webgpu`),t.webgl.vertex!==void 0&&typeof t.webgl.vertex!="string")throw new Error(`Input Error: ${e}.webgl.vertex must be a string`);if(up(t.webgl.fragment,`${e}.webgl.fragment`),up(t.webgpu.source,`${e}.webgpu.source`),!t.webgpu.source.includes("mainVertex")||!t.webgpu.source.includes("mainFragment"))throw new Error(`Input Error: ${e}.webgpu.source must define mainVertex and mainFragment`);return{webgl:{...t.webgl.vertex!==void 0?{vertex:t.webgl.vertex}:{},fragment:t.webgl.fragment},webgpu:{source:t.webgpu.source}}},J8=(t,e)=>{if(t===void 0)return{grid:[1,1]};if(zn(t,e),!Array.isArray(t.grid)||t.grid.length!==2||!t.grid.every(r=>Number.isInteger(r)&&r>=1))throw new Error(`Input Error: ${e}.grid must be [columns, rows] with positive integers`);return{grid:[t.grid[0],t.grid[1]]}},UO=({shader:t,path:e,requireId:r,textureLimit:i,allowMesh:s})=>{if(zn(t,e),!V8.has(t.type))throw new Error(`Input Error: ${e}.type must be shader`);let o={type:"shader"};r?(up(t.id,`${e}.id`),o.id=t.id):t.id!==void 0&&(up(t.id,`${e}.id`),o.id=t.id);let n=new Map;if(o.uniforms=j8(t.uniforms,`${e}.uniforms`,n),o.textures=q8({textures:t.textures,path:`${e}.textures`,symbols:n,maxTextures:i}),o.pipeline=K8(t.pipeline,`${e}.pipeline`),o.source=Q8(t.source,`${e}.source`),t.mesh!==void 0&&!s)throw new Error(`Input Error: ${e}.mesh is only valid for compositors`);return s&&(o.mesh=J8(t.mesh,`${e}.mesh`)),o},LO=(t,e="filters")=>{if(t===void 0)return;if(!Array.isArray(t))throw new Error(`Input Error: ${e} must be an array`);let r=new Set;return t.map((i,s)=>{let o=UO({shader:i,path:`${e}[${s}]`,requireId:!0,textureLimit:7,allowMesh:!1});if(r.has(o.id))throw new Error(`Input Error: ${e}[${s}].id must be unique within filters`);return r.add(o.id),o})},OO=(t,e="compositor")=>UO({shader:t,path:e,requireId:!1,textureLimit:6,allowMesh:!0}),DO=t=>JSON.stringify(t??null);var Sw="__routeGraphicsShaderFilters",ic="__routeGraphicsShaderProgress",GO="__routeGraphicsShaderDestroyCleanup",Z8=`
|
|
1632
|
+
Iwu¸öôú!3å6³âVq£³¹´RN£%y10º:p#\:J:b9Hµ7h_:¢I9 _¼µV,þ<`});var te={a:U};this.setModule=W=>{t.setModule(ko,W)},this.getModule=()=>t.getModule(ko),this.instantiate=()=>(this.getModule().then(W=>WebAssembly.instantiate(W,te)).then(W=>{let ne=W.exports;F(ne),p=ne.g,m(),J(ne),r()}),this.ready=new Promise(W=>{r=W}).then(()=>{this.HEAP=p.buffer,this.malloc=z,this.free=I,this.opus_frame_decoder_create=V,this.opus_frame_decode_float_deinterleaved=H,this.opus_frame_decoder_destroy=Q}),this)}function li(t={}){li.errors||Object.defineProperties(li,{errors:{value:new Map([[-1,"OPUS_BAD_ARG: One or more invalid/out of range arguments"],[-2,"OPUS_BUFFER_TOO_SMALL: Not enough bytes allocated in the buffer"],[-3,"OPUS_INTERNAL_ERROR: An internal error was detected"],[-4,"OPUS_INVALID_PACKET: The compressed data passed is corrupted"],[-5,"OPUS_UNIMPLEMENTED: Invalid/unsupported request number"],[-6,"OPUS_INVALID_STATE: An encoder or decoder structure is invalid or already freed"],[-7,"OPUS_ALLOC_FAIL: Memory allocation has failed"]])}}),this._init=()=>new this._WASMAudioDecoderCommon(this).instantiate(this._EmscriptenWASM,this._module).then(h=>{this._common=h,this._inputBytes=0,this._outputSamples=0,this._frameNumber=0,this._input=this._common.allocateTypedArray(this._inputSize,Uint8Array),this._output=this._common.allocateTypedArray(this._outputChannels*this._outputChannelSize,Float32Array);let u=this._common.allocateTypedArray(this._channels,Uint8Array);u.buf.set(this._channelMappingTable),this._decoder=this._common.wasm.opus_frame_decoder_create(this._sampleRate,this._channels,this._streamCount,this._coupledStreamCount,u.ptr,this._preSkip,this._forceStereo)}),Object.defineProperty(this,"ready",{enumerable:!0,get:()=>this._ready}),this.reset=()=>(this.free(),this._init()),this.free=()=>{this._common.free(),this._common.wasm.opus_frame_decoder_destroy(this._decoder),this._common.wasm.free(this._decoder)},this._decode=h=>{if(!(h instanceof Uint8Array))throw Error("Data to decode must be Uint8Array. Instead got "+typeof h);this._input.buf.set(h);let u=this._common.wasm.opus_frame_decode_float_deinterleaved(this._decoder,this._input.ptr,h.length,this._output.ptr),d;return u<0&&(d="libopus "+u+" "+(li.errors.get(u)||"Unknown Error"),console.error(d),u=0),{outputBuffer:this._common.getOutputChannels(this._output.buf,this._outputChannels,u),samplesDecoded:u,error:d}},this.decodeFrame=h=>{let u=[],d=this._decode(h);return d.error&&this._common.addError(u,d.error,h.length,this._frameNumber,this._inputBytes,this._outputSamples),this._frameNumber++,this._inputBytes+=h.length,this._outputSamples+=d.samplesDecoded,this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(u,[d.outputBuffer],this._outputChannels,d.samplesDecoded,this._sampleRate)},this.decodeFrames=h=>{let u=[],d=[],f=0,p=0;for(;p<h.length;){let m=h[p++],g=this._decode(m);u.push(g.outputBuffer),f+=g.samplesDecoded,g.error&&this._common.addError(d,g.error,m.length,this._frameNumber,this._inputBytes,this._outputSamples),this._frameNumber++,this._inputBytes+=m.length,this._outputSamples+=g.samplesDecoded}return this._WASMAudioDecoderCommon.getDecodedAudioMultiChannel(d,u,this._outputChannels,f,this._sampleRate)},this._isWebWorker=li.isWebWorker,this._WASMAudioDecoderCommon=li.WASMAudioDecoderCommon||st,this._EmscriptenWASM=li.EmscriptenWASM||ko,this._module=li.module;let e=8,r=h=>typeof h=="number",i=t.sampleRate,s=t.channels,o=t.streamCount,n=t.coupledStreamCount,a=t.channelMappingTable,c=t.preSkip,l=t.forceStereo?1:0;if(s>2&&(!r(o)||!r(n)||!Array.isArray(a)))throw new Error("Invalid Opus Decoder Options for multichannel decoding.");return this._sampleRate=[8e3,12e3,16e3,24e3,48e3].includes(i)?i:48e3,this._channels=r(s)?s:2,this._streamCount=r(o)?o:1,this._coupledStreamCount=r(n)?n:this._channels-1,this._channelMappingTable=a||(this._channels===2?[0,1]:[0]),this._preSkip=c||0,this._forceStereo=s<=e&&s!=2?l:0,this._inputSize=32e3*.12*this._channels,this._outputChannelSize=120*48,this._outputChannels=this._forceStereo?2:this._channels,this._ready=this._init(),this}var Ya=class extends yn{constructor(e){super(e,"opus-decoder",li,ko)}async decodeFrame(e){return this.postToDecoder("decodeFrame",e)}async decodeFrames(e){return this.postToDecoder("decodeFrames",e)}};zs(li,"OpusDecoder");zs(Ya,"OpusDecoderWebWorker");var a5=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),Uo=class{constructor(e={}){this._sampleRate=e.sampleRate||48e3,this._speechQualityEnhancement=e.speechQualityEnhancement,this._forceStereo=e.forceStereo!==void 0?e.forceStereo:!1,this._onCodec=r=>{if(r!=="opus")throw new Error("ogg-opus-decoder does not support this codec "+r)},new st,this._useMLDecoder=["lace","nolace"].includes(this._speechQualityEnhancement),this._decoderLibraryLoaded=this._loadDecoderLibrary(),this._ready=this._init()}_initDecoderClass(){this._decoderClass=this._useMLDecoder?this.OpusMLDecoder:this.OpusDecoder}async _loadDecoderLibrary(){if(this._useMLDecoder)if(await a5()){let{OpusMLDecoder:r,OpusMLDecoderWebWorker:i}=await Promise.resolve().then(()=>(QU(),KU));this.OpusMLDecoder=r,this.OpusMLDecoderWebWorker=i}else console.warn(`ogg-opus-decoder: This platform does not support WebAssembly SIMD; { speechQualityEnhancements: '${this._speechQualityEnhancement}' } has been disabled`),this._useMLDecoder=!1;this.OpusDecoder=li,this.OpusDecoderWebWorker=Ya,this._initDecoderClass()}async _init(){this._decoder&&await this._decoder.free(),this._decoder=null,this._decoderReady=null,this._codecParser=new ny("application/ogg",{onCodec:this._onCodec,enableFrameCRC32:!1})}async _instantiateDecoder(e){return this._totalSamplesDecoded=0,this._preSkip=e[XU],this._channels=this._forceStereo?2:e[CT],await this._decoderLibraryLoaded,this._decoder=new this._decoderClass({channels:e[CT],streamCount:e[qU],coupledStreamCount:e[$U],channelMappingTable:e[jU],preSkip:Math.round(this._preSkip/48e3*this._sampleRate),sampleRate:this._sampleRate,speechQualityEnhancement:this._speechQualityEnhancement,forceStereo:this._forceStereo}),this._decoder.ready}get ready(){return this._ready}async reset(){this._ready=this._init(),await this._ready}free(){this._decoder&&this._decoder.free()}async _decode(e){let r=[],i=[],s=[],o=0,n=async()=>{if(r.length){await this._decoderReady;let{channelData:a,samplesDecoded:c,errors:l}=await this._decoder.decodeFrames(r);s.push(a),i.push(...l),o+=c,this._totalSamplesDecoded+=c,r=[]}};for(let a=0;a<e.length;a++){let c=e[a],l=c[$a].map(h=>h[eu]);if(l.length&&(r.push(...l),this._decoderReady||(this._decoderReady=this._instantiateDecoder(c[$a][0][ay]))),c[cy]){if(await n(),c[zU]!==void 0&&s.length){let h=this._totalSamplesDecoded/this._sampleRate*48e3,u=Math.round((h-c[ly])/48e3*this._sampleRate),d=s[s.length-1];if(u>0)for(let f=0;f<d.length;f++)d[f]=d[f].subarray(0,d[f].length-u);o-=u,this._totalSamplesDecoded-=u}await this.reset()}}return await n(),[i,s,this._channels,o,this._sampleRate,16]}async decode(e){let r=await this._decode([...this._codecParser.parseChunk(e)]);return st.getDecodedAudioMultiChannel(...r)}async decodeFile(e){let r=await this._decode([...this._codecParser.parseAll(e)]);return await this.reset(),st.getDecodedAudioMultiChannel(...r)}async flush(){let e=await this._decode([...this._codecParser.flush()]);return await this.reset(),st.getDecodedAudioMultiChannel(...e)}};var Zf=class extends Uo{constructor(e){super(e)}_initDecoderClass(){this._decoderClass=this._useMLDecoder?this.OpusMLDecoderWebWorker:this.OpusDecoderWebWorker}async free(){this._decoder&&await this._decoder.free()}};zs(Uo,"OggOpusDecoder");zs(Zf,"OggOpusDecoderWebWorker");var c5=new Set(["audio/ogg","application/ogg"]),ja={opus:{decoderPromise:null,queue:Promise.resolve()},vorbis:{decoderPromise:null,queue:Promise.resolve()}},IT=new Map,ZU=t=>t instanceof Uint8Array?t:new Uint8Array(t??new ArrayBuffer(0)),JU=(t,e)=>{let r=Array.from(e,s=>s.charCodeAt(0)),i=t.length-r.length;for(let s=0;s<=i;s+=1){let o=!0;for(let n=0;n<r.length;n+=1)if(t[s+n]!==r[n]){o=!1;break}if(o)return!0}return!1},ep=t=>{if(IT.has(t))return IT.get(t);let e=!1;try{let r=globalThis.document?.createElement?.("audio");e=typeof r?.canPlayType=="function"&&r.canPlayType(t)!==""}catch{e=!1}return IT.set(t,e),e},l5=t=>typeof t!="string"?"":t.split(";")[0].trim().toLowerCase(),BT=t=>c5.has(l5(t)),eL=t=>{let e=ZU(t);return JU(e,"OpusHead")?"opus":JU(e,"vorbis")?"vorbis":"unknown"},u5=t=>t==="opus"?ep('audio/ogg; codecs="opus"')||ep("audio/ogg"):t==="vorbis"&&ep('audio/ogg; codecs="vorbis"')||ep("audio/ogg"),h5=({audioContext:t,channelData:e,sampleRate:r,samplesDecoded:i})=>{let s=e.length;if(s===0)throw new Error("Ogg decoder returned no audio channels.");let o=Math.max(0,i??Math.max(...e.map(a=>a.length)));if(o===0)throw new Error("Ogg decoder returned an empty audio buffer.");let n=t.createBuffer(s,o,r);for(let a=0;a<s;a+=1){let c=e[a];n.getChannelData(a).set(c.subarray(0,o))}return n},d5=async()=>(ja.opus.decoderPromise||(ja.opus.decoderPromise=(async()=>{let t=new Uo;return await t.ready,t})()),ja.opus.decoderPromise),f5=async()=>(ja.vorbis.decoderPromise||(ja.vorbis.decoderPromise=(async()=>{let t=new Fo;return await t.ready,t})()),ja.vorbis.decoderPromise),tL=t=>{if(t==="opus")return d5();if(t==="vorbis")return f5();throw new Error(`Unsupported Ogg codec "${t}".`)},p5=async({codec:t,bytes:e})=>{let r=ja[t];if(!r)throw new Error(`Unsupported Ogg codec "${t}".`);let i=async()=>{let o=await tL(t);try{return await o.decodeFile(e)}finally{await o.reset?.()}},s=r.queue.then(i,i);return r.queue=s.catch(()=>{}),s},rL=async(t={})=>{let e=new Set;for(let r of Object.values(t)){if(!BT(r?.type)||!r?.buffer)continue;let i=eL(r.buffer);i==="unknown"||u5(i)||e.add(i)}await Promise.all([...e].map(r=>tL(r)))},iL=async({arrayBuffer:t,audioContext:e})=>{let r=eL(t),i=ZU(t),s=await p5({codec:r,bytes:i});return h5({audioContext:e,channelData:s.channelData??[],sampleRate:s.sampleRate,samplesDecoded:s.samplesDecoded})};var tp,m5=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,g5=(t,e={})=>{m5()&&console.log(`[AudioContext] ${t}`,e)},_r=()=>{if(tp)return tp;let t=globalThis.window?.AudioContext??globalThis.window?.webkitAudioContext;if(!t)throw new Error("AudioContext is not available in this environment.");return tp=new t,g5("context created",{state:tp.state}),tp};var tu={},On={},x5=async t=>{await rL(t)},y5=t=>t?typeof t=="string"?t:t.message||String(t):"Unknown error",sL=(t,e)=>{let r="Unsupported or damaged audio file.",i=`Could not load audio "${t}". ${r}`,s=new Error(i,{cause:e});return s.userMessage=i,s.rootCauseMessage=r,s.details={assetKey:t,assetKind:"audio",phase:"decode",cause:y5(e)},s},_5=async({key:t,arrayBuffer:e,type:r,audioContext:i})=>{try{return await i.decodeAudioData(e.slice(0))}catch(s){if(!BT(r))throw sL(t,s);try{return await iL({arrayBuffer:e,audioContext:i})}catch(o){throw sL(t,o)}}},b5=(t,e,r)=>{if(tu[t])return tu[t];if(On[t])return On[t];if(!e||e.byteLength===0)return;let i=_r(),s=_5({key:t,arrayBuffer:e,type:r,audioContext:i}).then(o=>(On[t]===s&&(tu[t]=o),o)).finally(()=>{On[t]===s&&delete On[t]});return On[t]=s,s},v5=t=>tu[t],S5=t=>{let e=!!tu[t]||!!On[t];return delete tu[t],delete On[t],e},Mi={prepareDecoders:x5,load:b5,getAsset:v5,unload:S5};var Yt=({type:t,add:e,update:r,delete:i,parse:s,shouldUpdateUnchanged:o})=>({type:t,add:e,update:r,delete:i,parse:s,shouldUpdateUnchanged:o});var FT=({type:t})=>({type:t});var kT=({type:t,add:e,update:r,delete:i})=>({type:t,add:e,update:r,delete:i});var hy={alpha:"alpha",x:"x",y:"y",translateX:"translateX",translateY:"translateY",scaleX:"scaleX",scaleY:"scaleY",rotation:"rotation",blurX:"blurX",blurY:"blurY",uProgress:"uProgress"};var dy={scaleX:["scale","x"],scaleY:["scale","y"],x:["x"],y:["y"],alpha:["alpha"],rotation:["rotation"],blurX:["_routeGraphicsBlur","x"],blurY:["_routeGraphicsBlur","y"],uProgress:["uProgress"]};var Pi={RECT:"rect",TEXT:"text",INPUT:"input",CONTAINER:"container",SPRITE:"sprite",TEXT_REVEALING:"text-revealing",SLIDER:"slider",PARTICLES:"particles",SPRITESHEET_ANIMATION:"spritesheet-animation",VIDEO:"video"};var dt={fill:"black",fontFamily:"Arial",fontSize:16,align:"left",lineHeight:1.2,wordWrap:!1,breakWords:!1,strokeColor:"transparent",strokeWidth:0,wordWrapWidth:0};var oL={color:"black",alpha:1,blur:0,offsetX:2,offsetY:2},T5=.4,w5=t=>{if(typeof t=="number"&&Number.isFinite(t))return Math.max(0,t);if(typeof t=="string"){let e=Number.parseFloat(t);if(Number.isFinite(e))return Math.max(0,e)}return dt.fontSize},E5=t=>typeof t=="number"&&Number.isFinite(t)?t:0,A5=(t={})=>Math.ceil(w5(t.fontSize)*T5),M5=(t={})=>{let e=typeof t.stroke=="object"&&t.stroke!==null?t.stroke:{};return{...e,color:t.strokeColor??e.color??dt.strokeColor,width:t.strokeWidth??e.width??dt.strokeWidth}},P5=t=>{if(t===void 0)return;if(t===null||t===!1)return null;let e=typeof t=="object"&&t!==null?{...oL,...t}:oL,r=e.offsetX,i=e.offsetY,s=Math.hypot(r,i);return{alpha:e.alpha,angle:s===0?0:Math.atan2(i,r),blur:e.blur,color:e.color,distance:s}},C5=t=>t?Math.ceil(Math.max(0,t.blur)+t.distance):0,br=(t={},e={})=>{let r=e.includeShadow!==!1,{strokeColor:i,strokeWidth:s,stroke:o,shadow:n,...a}=t;delete a.dropShadow;let c={...a,stroke:M5({strokeColor:i,strokeWidth:s,stroke:o})};if(Array.isArray(c.fontFamily)&&(c.fontFamily=[...c.fontFamily]),r){let l=P5(n),h=C5(l),u=Math.max(E5(a.padding),h,A5(a));n!==void 0&&(c.dropShadow=l),u>0&&(c.padding=u)}return c};var Js=(t,e)=>{let r={fill:e?.fill??dt.fill,fontFamily:e?.fontFamily??dt.fontFamily,fontSize:e?.fontSize??dt.fontSize,...e?.fontWeight!==void 0?{fontWeight:e.fontWeight}:{},...e?.fontStyle!==void 0?{fontStyle:e.fontStyle}:{},align:e?.align??dt.align,lineHeight:e?.lineHeight??dt.lineHeight,wordWrap:e?.wordWrap??dt.wordWrap,breakWords:e?.breakWords??dt.breakWords,strokeColor:e?.strokeColor??dt.strokeColor,strokeWidth:e?.strokeWidth??dt.strokeWidth,wordWrapWidth:e?.wordWrapWidth??dt.wordWrapWidth,...e?.padding!==void 0?{padding:e.padding}:{},...Object.prototype.hasOwnProperty.call(e??{},"shadow")?{shadow:e.shadow}:{}};t.style=br(r)};var qa=(t=0)=>t*Math.PI/180,UT=(t=0)=>t*180/Math.PI,nL=t=>typeof t=="number"&&Number.isFinite(t)&&t!==0?t:1,fy=t=>({x:Math.round((t.x??0)+(t.originX??0)),y:Math.round((t.y??0)+(t.originY??0))}),Qi=(t,e)=>{let r=e.originX??0,i=e.originY??0,s=nL(t.scale?.x),o=nL(t.scale?.y),n=fy(e);t.pivot?.set?.(r/s,i/o),t.x=n.x,t.y=n.y,t.rotation=qa(e.rotation??0)},Ji=(t,e={})=>{let r=fy(t),i={x:r.x,y:r.y,...e};return t.rotation!==void 0&&(i.rotation=t.rotation),i};var Dn=t=>t==="translateX"||t==="translateY",lL=(t,e)=>typeof e!="string"?e:t[e]??e,R5=(t,e,r,i)=>{let s=lL(r,e);if(typeof s=="string"){let n=t[s];return n===void 0?i:e==="rotation"?UT(n):n}let o=t;for(let n of s){if(o==null)return i;o=o[n]}return o===void 0?i:e==="rotation"?UT(o):o},I5=(t,e,r,i)=>{let s=lL(r,e),o=e==="rotation"?qa(i):i;if(typeof s=="string")return t[s]=o,t;let n=t;for(let a=0;a<s.length-1;a++){let c=s[a];c in n||(n[c]={}),n=n[c]}return n[s[s.length-1]]=o,t},aL=t=>typeof t=="number"&&Number.isFinite(t),B5=t=>{let e=t?.getLocalBounds?.();return e?.rectangle??e??null},cL=(t,e)=>{let r=e==="x"?t?.width:t?.height;if(aL(r)&&r>0)return r;let i=B5(t),s=e==="x"?i?.width:i?.height,o=e==="x"?t?.scale?.x:t?.scale?.y;return aL(s)&&s>0?Math.abs(s*(o??1)):0},Gn=t=>({x:t?.x??0,y:t?.y??0,width:cL(t,"x"),height:cL(t,"y")}),uL=({object:t,property:e,propertyPathMap:r,subjectState:i,defaultValue:s=0})=>e==="translateX"||e==="translateY"?s:R5(t,e,r,s),rp=({object:t,property:e,propertyPathMap:r,subjectState:i,value:s})=>e==="translateX"?(t.x=i.x+s*i.width,t):e==="translateY"?(t.y=i.y+s*i.height,t):I5(t,e,r,s);var hL=(t,e,r=dy,i)=>{let s=i;for(let o of e)for(let[n,a]of Object.entries(o.tween)){if(!hy[n])throw new Error(`${n} is not a supported property for animation.`);a.initialValue!==void 0&&(!s&&Dn(n)&&(s=Gn(t)),rp({object:t,property:n,propertyPathMap:r,subjectState:s,value:a.initialValue}))}},py=({animations:t,animationBus:e,completionTracker:r,element:i,targetState:s,onComplete:o,animationBaseState:n})=>{for(let a of t){if(typeof e?.hasContext=="function"&&e.hasContext(a.id))continue;for(let[h,u]of Object.entries(a.tween))if(u.auto&&(!s||!Object.prototype.hasOwnProperty.call(s,h)))throw new Error(`Animation "${a.id}" cannot auto-resolve property "${h}" from targetState.`);let c=a.playback?.continuity!=="persistent",l=c?r.getVersion():null;c&&r.track(l),e.dispatch({type:"START",payload:{id:a.id,animationType:a.type,targetId:a.targetId,continuity:a.playback?.continuity??"render",playbackSpeed:a.playback?.speed,signature:a.signature??JSON.stringify({type:a.type,tween:a.tween,playback:a.playback??null}),element:i,properties:a.tween,targetState:s,animationBaseState:n,onComplete:()=>{c&&r.complete(l),o?.(a)}}})}};var F5=t=>{if(!t?.dropShadow||typeof t.clone!="function")return t;let e=t.clone();return e.dropShadow=null,e};function my(t,e){let r=t.text.substring(0,e),s=_t.measureText(r,F5(t.style)).width;return t.x+s}var k5=async(t,e)=>new Promise((r,i)=>{if(e?.aborted)return i(new DOMException("The operation was aborted.","AbortError"));let s,o=()=>{s&&e?.removeEventListener("abort",s)},n=setTimeout(()=>{o(),r()},t);s=()=>{clearTimeout(n),o(),i(e.reason)},e?.addEventListener("abort",s,{once:!0})}),gy=k5;var U5=(t,e)=>{let r=Number(t);if(Number.isFinite(r))return r;let i=Number(e);return Number.isFinite(i)?i:100},Ve=(t,e=100)=>{let r=U5(t??e,e);return Math.min(Math.max(r,0),100)/100};var ip={softness:1.25,easing:"linear",lineOverlap:0,lineDelay:0},L5=18,O5=64,OT={linear:t=>t,easeOutCubic:t=>1-(1-t)**3},D5=(t,e,r)=>Math.max(e,Math.min(r,t)),LT=(t,e)=>typeof t=="number"&&Number.isFinite(t)?t:e,Ka=(t={})=>{let e=t&&typeof t=="object"?t:{};return{softness:Math.max(0,LT(e.softness,ip.softness)),easing:Object.prototype.hasOwnProperty.call(OT,e.easing)?e.easing:ip.easing,lineOverlap:D5(LT(e.lineOverlap,ip.lineOverlap),0,.95),lineDelay:Math.max(0,LT(e.lineDelay,ip.lineDelay))}},DT=t=>OT[t]??OT[ip.easing],GT=({maxLineHeight:t,softWipe:e})=>Math.max(L5,Math.min(O5,Math.round(t*e.softness)));var ru=(t,e,r,i)=>{if(!r)return;let s=o=>{let n=Number(o?.detail?.frameIndex);o?.detail?.elementId===e&&Number.isInteger(n)&&(t.gotoAndStop(n),i?.())};window.addEventListener("snapShotAnimatedSpriteFrame",s),t._snapShotKeyFrameHandler=s},Qa=t=>{t._snapShotKeyFrameHandler&&(window.removeEventListener("snapShotAnimatedSpriteFrame",t._snapShotKeyFrameHandler),delete t._snapShotKeyFrameHandler)};var dL=(t={})=>{if(t.frame){let n=t.frame.w??0,a=t.frame.h??0,c=t.sourceSize?.w??n,l=t.sourceSize?.h??a,h={frame:{x:t.frame.x??0,y:t.frame.y??0,w:n,h:a},rotated:t.rotated??!1,trimmed:t.trimmed??!1,spriteSourceSize:{x:t.spriteSourceSize?.x??0,y:t.spriteSourceSize?.y??0,w:t.spriteSourceSize?.w??n,h:t.spriteSourceSize?.h??a},sourceSize:{w:c,h:l}};return t.anchor?h.anchor={x:t.anchor.x??0,y:t.anchor.y??0}:t.pivot&&(h.anchor={x:t.pivot.x??0,y:t.pivot.y??0}),t.borders&&(h.borders={...t.borders}),h}let e=t.width??t.w??0,r=t.height??t.h??0,i=t.sourceWidth??e,s=t.sourceHeight??r,o={frame:{x:t.x??0,y:t.y??0,w:e,h:r},rotated:t.rotated??!1,trimmed:t.trimmed??!1,spriteSourceSize:{x:t.offsetX??0,y:t.offsetY??0,w:e,h:r},sourceSize:{w:i,h:s}};return t.anchor?o.anchor={x:t.anchor.x??0,y:t.anchor.y??0}:t.pivot&&(o.anchor={x:t.pivot.x??0,y:t.pivot.y??0}),t.borders&&(o.borders={...t.borders}),o},NT=(t={})=>!t||typeof t!="object"?{}:Object.fromEntries(Object.entries(t).map(([e,r])=>[e,Array.isArray(r)?r.map(i=>String(i)):[]])),G5=(t,e={})=>{let r=Math.max(0,Number(e.from??0)),i=Math.min(t.length-1,Number(e.to??r));if(!Number.isFinite(r)||!Number.isFinite(i)||i<r)return[];let s=t.slice(r,i+1),o=String(e.direction??"forward").toLowerCase();if(o==="reverse"||o==="backward")return[...s].reverse();if(o==="pingpong")return[...s,...s.slice(1,-1).reverse()];if(o==="pingpong_reverse"){let n=[...s].reverse();return[...n,...n.slice(1,-1).reverse()]}return s},N5=(t=[],e=[])=>!Array.isArray(t)||e.length===0?{}:Object.fromEntries(t.map(r=>{let i=typeof r?.name=="string"?r.name:"";return i?[i,G5(e,r)]:null}).filter(Boolean)),ys=(t={})=>{let e=t??{},r=NT(e.animations);return{frames:Array.isArray(e.frames)?Object.fromEntries(e.frames.map(s=>{let o=s?.filename??s?.name;return typeof o!="string"||o.length===0?null:[o,dL(s)]}).filter(Boolean)):Object.fromEntries(Object.entries(e.frames??{}).map(([s,o])=>[s,dL(o)])),...Object.keys(r).length>0?{animations:r}:{},meta:{...e.meta??{},scale:String(e.scale??e.meta?.scale??1),...e.width!=null||e.height!=null?{size:{w:e.width??e.meta?.size?.w??0,h:e.height??e.meta?.size?.h??0}}:{}}}},_s=(t={},e={},r={},i=[])=>({...N5(r?.frameTags,i),...NT(e),...NT(t)}),H5=(t,e)=>{if(!Array.isArray(e?.frames))return[];let r=Object.keys(t.frames??{});return e.frames.map(i=>typeof i=="number"?r[i]:String(i)).filter(Boolean)},Zi=({atlas:t={frames:{}},clips:e={},playback:r,legacyAnimation:i})=>{let s=r??i??{},o={fps:s.fps??null,loop:s.loop??!0,autoplay:s.autoplay??!0};return typeof s.clip=="string"&&s.clip.length>0&&(o.clip=s.clip),Array.isArray(s.frames)?o.frames=s.frames.map(n=>typeof n=="number"?Object.keys(t.frames??{})[n]:String(n)).filter(Boolean):o.clip||(o.frames=H5(t,i)),o.fps==null&&(typeof s.animationSpeed=="number"?o.fps=s.animationSpeed*60:o.fps=30),o.clip&&(!Array.isArray(o.frames)||o.frames.length===0)&&(o.frames=Array.isArray(e[o.clip])?[...e[o.clip]]:[]),Array.isArray(o.frames)||(o.frames=[]),o},iu=({spritesheet:t,atlas:e,clips:r={},playback:i,legacyAnimation:s})=>{let o=Zi({atlas:e,clips:r,playback:i,legacyAnimation:s});return{frameTextures:o.frames.map(a=>t.textures[a]),playback:o}},su=t=>typeof t=="number"?t/60:.5;var Lo=Symbol("textRevealRuntime"),yy=Symbol("textRevealSnapshot"),ou=Symbol("textRevealIndicator"),xL=Symbol("textRevealIndicatorPlayback"),V5="__route_graphics_text_reveal_sound__",WT=50,W5=0,XT=100,HT=XT-1,fL=10,yL=120,z5=.9,$5=360,X5=1.2,VT=20,Y5=16,j5=0,q5=(t,e,r)=>Math.max(e,Math.min(r,t)),_L=(t=WT)=>typeof t!="number"||!Number.isFinite(t)?WT:Math.max(W5,Math.min(XT,t)),K5=t=>_L(t)>=XT,YT=(t,{maxRate:e=yL,curve:r=z5}={})=>{let i=Math.min(_L(t),HT),o=(HT>0?i/HT:0)**r;return fL*(e/fL)**o},Q5=t=>YT(t,{maxRate:$5,curve:X5}),J5=t=>{let e=1e3/t;return e>=VT||t<=yL?{stepDelay:Math.max(1,Math.floor(e)),charactersPerStep:1}:{stepDelay:VT,charactersPerStep:Math.max(2,Math.round(t*VT/1e3))}},Z5=t=>t?.revealEffect==="softWipe"?"softWipe":"typewriter",jT=t=>{let e=t?.initialRevealedCharacters;return typeof e!="number"||!Number.isFinite(e)?0:Math.max(0,Math.floor(e))},bL=t=>(t?.content??[]).reduce((e,r)=>e+(r.lineParts??[]).reduce((i,s)=>i+(s.text?.length??0),0),0),e8=t=>`${V5}:${t.id}`,t8=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,xy=(t,e={})=>{t8()&&console.log(`[TextRevealSound] ${t}`,e)},vL=({app:t,element:e})=>{let r=e?.revealSound;if(!r?.src)return()=>{};if(!t?.audioStage)return xy("skipped: audioStage unavailable",{elementId:e?.id,src:r.src}),()=>{};let i=e8(e),s=Ve(r.volume,100),o="active";return xy("start",{elementId:e.id,soundId:i,src:r.src,loop:r.loop??!0,configuredVolume:r.volume,normalizedVolume:s}),t.audioStage.add({id:i,url:r.src,loop:r.loop??!0,volume:s}),t.audioStage.tick?.(),xy("registered",{elementId:e.id,soundId:i,directAudio:t.audioStage.getById?.(i)??null}),({completed:n=!1}={})=>{if(o==="stopped")return!1;if(o==="finishing"&&n)return!0;let a=o==="active"&&n&&(r.stopTiming??"loopEnd")==="loopEnd";return xy("stop",{elementId:e.id,soundId:i,src:r.src,finishPlayback:a}),a&&typeof t.audioStage.finish=="function"?(o="finishing",t.audioStage.finish(i),!0):(o="stopped",t.audioStage.remove(i),t.audioStage.tick?.(),!1)}},SL=(t,e)=>{t?.[Lo]===e&&delete t[Lo]},nu=t=>t?.revealEffect==="none"||K5(t?.speed??WT),zT=t=>t!==null&&typeof t=="object"&&typeof t.then=="function",qT=(t={})=>t.kind??(t.atlas!==void 0||t.clips!==void 0||t.playback!==void 0?"spritesheet":"image"),r8=t=>["revealing","complete"].some(e=>qT(t?.indicator?.[e])==="spritesheet"&&!!t?.indicator?.[e]?.src),TL=t=>`${t.id}-indicator`,wL=(t,e,r)=>{typeof e?.width=="number"?t.width=e.width:r?.width&&(t.width=r.width),typeof e?.height=="number"?t.height=e.height:r?.height&&(t.height=r.height)},EL=(t={})=>{let e=t?.src?G.from(t.src):G.EMPTY,r=new Ke(e);return wL(r,t,e),r},i8=(t={},{app:e,element:r})=>{if(!t?.src)return EL(t);let i=ys(t.atlas),s=_s(t.clips,t.atlas?.animations,t.atlas?.meta,Object.keys(i.frames??{})),o=Zi({atlas:i,clips:s,playback:t.playback});return(async()=>{let n=new Fs(G.from(t.src),i);await n.parse();let{frameTextures:a}=iu({spritesheet:n,atlas:i,clips:s,playback:o}),c=new Ws(a.length>0?a:[G.EMPTY]);return c.animationSpeed=su(o.fps),c.loop=o.loop,c[xL]=o,wL(c,t,a[0]),e?.debug&&ru(c,TL(r),e.debug,()=>{typeof e.render=="function"&&e.render()}),c})()},pL=(t,e)=>qT(t)==="spritesheet"?i8(t,e):EL(t),mL=(t,e)=>{t instanceof Ws&&!e?.debug&&t[xL]?.autoplay!==!1&&t.play()},AL=t=>{!t||t.destroyed||(Qa(t),typeof t.stop=="function"&&t.stop(),t.destroy({children:!0}))},$T=t=>{let e=t?.[ou];if(e){for(let r of e.displays)Qa(r);for(let r of e.displays)r?.parent!==t&&AL(r);delete t[ou]}t.destroy({children:!0})},s8=({element:t,app:e,revealingDisplay:r,completeDisplay:i})=>{let s=new he({label:TL(t)}),o=new Set([r]);return i&&o.add(i),s.addChild(r),s[ou]={displays:o,currentDisplay:r,completeDisplay:i,start(){mL(this.currentDisplay,e)},showComplete(){if(!this.completeDisplay||this.currentDisplay===this.completeDisplay)return;let n=this.currentDisplay;n?.parent===s&&s.removeChild(n),AL(n),o.delete(n),this.currentDisplay=this.completeDisplay,s.addChild(this.completeDisplay),mL(this.completeDisplay,e)}},s},o8=(t,{app:e}={})=>{let r=t?.indicator?.revealing??{},i=t?.indicator?.complete,s=pL(r,{app:e,element:t}),o=i?.src||qT(i)==="spritesheet"?pL(i,{app:e,element:t}):null,n=(a,c)=>s8({element:t,app:e,revealingDisplay:a,completeDisplay:c});return zT(s)||zT(o)?Promise.all([s,o]).then(([a,c])=>n(a,c)):n(s,o)},n8=t=>{t?.[ou]?.showComplete()},au=(t,e="revealing")=>{let r=t?.indicator?.[e]??{};return{x:r.offsetX??t?.indicator?.offsetX??Y5,y:r.offsetY??t?.indicator?.offsetY??j5}},a8=(t,e)=>{if(!e)return 0;let r=Math.max(0,e.lineMaxHeight??0),i=Math.max(0,t?.height??0);return e.y+Math.max(0,r-i)},Oo=(t,e,r)=>{t.x=r.x,t.y=a8(t,e)+r.y},ML=(t,e,r)=>{if(!e||e.text.length===0){t.x=r.x;return}t.x=my(e,e.text.length-1)+r.x},Nn=(t,e,r,i)=>{n8(t);let s=au(i,"complete");Oo(t,e,s),ML(t,r,s)},PL=(t,e)=>{if(t[Lo]){let r=t[Lo];delete t[Lo],r()}t[Lo]=e},c8=t=>t?.[yy]??null,sp=(t,e)=>t?e?(t[yy]=e,e):(delete t[yy],null):null,CL=t=>{let e=c8(t);return!e||e.mode!=="typewriter"||e.completed===!0?null:e},RL=t=>!!CL(t),KT=t=>{if(t[Lo]){let r=t[Lo];delete t[Lo],r()}delete t[yy],t.onRender=void 0,t.removeChildren().forEach(r=>{if(r?.[ou]){$T(r);return}r.destroy({children:!0})})},QT=(t,e="",r="")=>{let i=new at(br(t.textStyle)),s=new vi({text:e,style:i,x:Math.round(t.x),y:Math.round(t.y)}),o=null;if(t.furigana){let n=new at(br(t.furigana.textStyle));o=new vi({text:r,style:n,x:Math.round(t.furigana.x),y:Math.round(t.furigana.y)})}return{text:s,furiganaText:o}},JT=(t,e)=>{let r=null,i=null,s=0,o=0,n=[];for(let a=0;a<e.content.length;a++){let c=e.content[a],l=new he({label:`${e.id}-line-${a}`}),h=[],u=null,d=0;t.addChild(l),i=c,o=Math.max(o,c.lineMaxHeight??0);for(let f=0;f<c.lineParts.length;f++){let p=c.lineParts[f],{text:m,furiganaText:g}=QT(p,p.text,p.furigana?.text||"");g&&(l.addChild(g),h.push(g)),l.addChild(m),h.push(m),r=m,u=m,s+=p.text.length,d+=p.text.length}if(h.length>0){let f=l.getLocalBounds();n.push({chunk:c,container:l,lastTextObject:u,totalCharacters:d,bounds:{x:f.x,y:f.y,width:f.width,height:f.height}})}else l.destroy()}return{lines:n,lastTextObject:r,lastChunk:i,totalCharacters:s,maxLineHeight:o,bounds:t.getLocalBounds()}},gL=({contentContainer:t,indicatorSprite:e,element:r})=>{let{lastTextObject:i,lastChunk:s}=JT(t,r);Nn(e,s,i,r)},l8=({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})=>{let s=au(r),o=r.content[0]??null,n=bL(r),a=Math.min(i,Math.max(0,n)),c=null,l=null;if(a<=0){Oo(e,o,s);return}e:for(let h=0;h<r.content.length;h++){let u=r.content[h];for(let d=0;d<u.lineParts.length;d++){let f=u.lineParts[d],p=Math.min(f.text.length,a);if(p<=0)break e;let m=f.furigana?.text||"",g=m.length,_=f.text.length>0?Math.round(p/f.text.length*g):0,{text:y,furiganaText:x}=QT(f,f.text.substring(0,p),m.substring(0,_));if(x&&t.addChild(x),t.addChild(y),c=y,l=u,a-=p,p<f.text.length)break e}}l?(Oo(e,l,s),ML(e,c,s)):Oo(e,o,s),i>=n&&Nn(e,l??o,c,r)},u8=({contentContainer:t,indicatorSprite:e,element:r})=>{let i=jT(r);if(i<=0){let s=au(r),o=r.content[0]??null;Oo(e,o,s);return}r.revealEffect==="softWipe"?m8({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i}):l8({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})},h8=async({contentContainer:t,indicatorSprite:e,element:r,signal:i,startAtCharacter:s=0,snapshot:o=null})=>{let n=Q5(r.speed??50),a=au(r),{stepDelay:c,charactersPerStep:l}=J5(n),h=Math.max(c,Math.floor(4e3/n)),u=Math.max(0,Math.floor(s)),d=!1,f=null,p=null;o&&(o.revealedCharacters=u,o.completed=!1);for(let m=0;m<r.content.length;m++){if(i?.aborted||t.destroyed)return!1;let g=r.content[m],_=!1;Oo(e,g,a);for(let y=0;y<g.lineParts.length;y++){if(i?.aborted||t.destroyed)return!1;let x=g.lineParts[y],{text:S,furiganaText:v}=QT(x);v&&t.addChild(v),t.addChild(S);let b=x.text,w=x.furigana?.text||"";b.length>0&&(f=S,p=g);let A=w.length,C=Math.min(b.length,u),R=b.length>0?Math.round(C/b.length*A):0;S.text=b.substring(0,C),v&&(v.text=w.substring(0,R)),u-=C,C>0&&(e.x=my(S,C-1)+a.x);let P=C;for(;P<b.length;){if(i?.aborted||t.destroyed)return!1;let U=Math.min(b.length,P+l),F=U-1;if(S.text=b.substring(0,U),e.x=my(S,F)+a.x,_=!0,d=!0,o&&(o.revealedCharacters+=U-P),v){let V=Math.round(U/b.length*A);v.text=w.substring(0,V)}P=U,P<b.length&&await gy(c,i)}}m<r.content.length-1&&_&&await gy(h,i)}return d&&(await gy(c,i),i?.aborted||t.destroyed)?!1:(Nn(e,p,f,r),o&&(o.completed=!0),!0)},IL=({lines:t,edgeWidth:e,baseDuration:r,softWipe:i})=>{let s=t.map(l=>{let h=Math.max(1,l.totalCharacters),u=1+e/Math.max(1,l.bounds.width);return h*u}),o=s.reduce((l,h)=>l+h,0),n=[],a=0,c=0;for(let l=0;l<t.length;l++){let h=s[l],u=o>0?Math.max(1,r*h/o):r,d=Math.max(0,a),f=d+u;n.push({...t[l],startTime:d,endTime:f,duration:u}),c=Math.max(c,f),a=f-u*i.lineOverlap+i.lineDelay}return{timedLines:n,duration:Math.max(1,Math.ceil(c))}},d8=({currentTime:t,line:e,easing:r})=>{let i=e.duration>0?(t-e.startTime)/e.duration:1;return r(Math.max(0,Math.min(i,1)))},f8=({progress:t,easingName:e})=>{let r=q5(t,0,1);return e==="easeOutCubic"?1-Math.cbrt(1-r):r},BL=({timedLines:t,initialRevealedCharacters:e,softWipe:r,easingName:i})=>{let s=Math.max(0,Math.floor(e)),o=s<=0,n=0,a=0;return{timedLines:t.map(l=>{let h=Math.max(0,l.totalCharacters??0),u=0,d=!1;if(!o&&s>0)if(h<=0||s>=h)s-=h,u=1,d=!0;else{let m=s/h;u=f8({progress:m,easingName:i}),s=0,o=!0}if(d)return{...l,startTime:-l.duration,endTime:0};o=!0;let f=u>0?-u*l.duration:Math.max(0,n),p=f+l.duration;return a=Math.max(a,p),n=p-l.duration*r.lineOverlap+r.lineDelay,{...l,startTime:f,endTime:p}}),duration:Math.max(1,Math.ceil(a))}},p8=t=>{t.forEach(e=>{e&&(e.line.container.mask===e.sprite&&(e.line.container.mask=null),e.sprite.parent&&e.sprite.parent.removeChild(e.sprite),e.sprite.destroy(),e.texture.destroy(!0))})},FL=({contentContainer:t,timedLines:e,edgeWidth:r})=>{let i=e.map(s=>{let o=document.createElement("canvas");o.width=Math.max(1,Math.ceil(s.bounds.width+r)),o.height=Math.max(1,Math.ceil(s.bounds.height));let n=o.getContext("2d");if(!n)return null;let a=Fa(o),c=new Ke(a);return c.x=Math.floor(s.bounds.x-r),c.y=Math.floor(s.bounds.y),s.container.mask=c,t.addChild(c),{canvas:o,context:n,texture:a,sprite:c,line:s,edgeWidth:r}});return i.some(s=>s===null)?(p8(i),null):i},kL=({timedLines:t,lineMasks:e,easing:r,indicatorSprite:i,indicatorOffsets:s,currentTime:o})=>{let n=t[0],a=n.bounds.x;for(let c=0;c<t.length;c++){let l=t[c],h=e[c],u=d8({currentTime:o,line:l,easing:r}),{context:d,canvas:f,texture:p}=h;if(d.clearRect(0,0,f.width,f.height),u<=0){p.source.update();continue}let m=0,g=l.bounds.width+h.edgeWidth,_=h.edgeWidth,y=_+u*g,x=Math.max(_,y-h.edgeWidth);x>_&&(d.fillStyle="#ffffff",d.fillRect(_,m,Math.min(x-_,l.bounds.width),l.bounds.height));let S=Math.max(_,y-h.edgeWidth),v=Math.min(_+l.bounds.width,y);if(v>S){let b=d.createLinearGradient(S,0,v,0);b.addColorStop(0,"rgba(255, 255, 255, 1)"),b.addColorStop(1,"rgba(255, 255, 255, 0)"),d.fillStyle=b,d.fillRect(S,m,v-S,l.bounds.height)}p.source.update(),n=l,a=l.bounds.x+Math.min(g,Math.max(0,y-_))}Oo(i,n.chunk,s),i.x=a+s.x},m8=({contentContainer:t,indicatorSprite:e,element:r,revealedCharacters:i})=>{let s=au(r),{lines:o,lastTextObject:n,lastChunk:a,totalCharacters:c,maxLineHeight:l}=JT(t,r);if(Oo(e,a,s),o.length===0||c===0||i>=c||!o.some(y=>y.bounds.width>0&&y.bounds.height>0)||!globalThis.document){Nn(e,a,n,r);return}let h=Ka(r.softWipe),u=DT(h.easing),d=GT({maxLineHeight:l,softWipe:h}),f=YT(r.speed??50),p=Math.max(1,Math.round(c/f*1e3)),m=IL({lines:o,edgeWidth:d,baseDuration:p,softWipe:h}),{timedLines:g}=BL({timedLines:m.timedLines,initialRevealedCharacters:i,softWipe:h,easingName:h.easing}),_=FL({contentContainer:t,timedLines:g,edgeWidth:d});if(!_){Nn(e,a,n,r);return}kL({timedLines:g,lineMasks:_,easing:u,indicatorSprite:e,indicatorOffsets:s,currentTime:0})},g8=({container:t,contentContainer:e,indicatorSprite:r,element:i,animationBus:s,completionTracker:o,app:n})=>{let a=au(i),c=YT(i.speed??50),{lines:l,lastTextObject:h,lastChunk:u,totalCharacters:d,maxLineHeight:f}=JT(e,i),p=jT(i);if(Oo(r,u,a),l.length===0||d===0||p>=d||!l.some(F=>F.bounds.width>0&&F.bounds.height>0)||!globalThis.document||!s)return Nn(r,u,h,i),!1;let m=Ka(i.softWipe),g=DT(m.easing),_=GT({maxLineHeight:f,softWipe:m}),y=Math.max(1,Math.round(d/c*1e3)),x=IL({lines:l,edgeWidth:_,baseDuration:y,softWipe:m}),{timedLines:S,duration:v}=BL({timedLines:x.timedLines,initialRevealedCharacters:p,softWipe:m,easingName:m.easing}),b=o.getVersion(),w=`${i.id}-soft-wipe`,A=FL({contentContainer:e,timedLines:S,edgeWidth:_});if(!A)return Nn(r,u,h,i),!1;let C=!1,R=vL({app:n,element:i}),P=F=>{if(C)return;C=!0,R({completed:F})||SL(t,U),A.forEach(z=>{z.line.container.mask===z.sprite&&(z.line.container.mask=null),z.sprite.parent&&z.sprite.parent.removeChild(z.sprite),z.sprite.destroy(),z.texture.destroy(!0)}),F&&Nn(r,u,h,i)},U=()=>{if(C){R();return}s.dispatch({type:"CANCEL",id:w}),P(!1)};return PL(t,U),o.track(b),s.dispatch({type:"START",payload:{id:w,driver:"custom",duration:v,applyFrame:F=>{kL({timedLines:S,lineMasks:A,easing:g,indicatorSprite:r,indicatorOffsets:a,currentTime:Math.min(v,F)})},applyTargetState:()=>{P(!1)},onComplete:()=>{o.complete(b),P(!0)},onCancel:()=>{o.complete(b),P(!1)},isValid:()=>!!t&&!t.destroyed&&!e.destroyed&&!r.destroyed}}),!0},Do=async({container:t,element:e,completionTracker:r,animationBus:i,zIndex:s,signal:o,app:n,playback:a="autoplay",onLayoutMounted:c})=>{if(o?.aborted||t.destroyed)return;let l=nu(e),h=a==="resume"?CL(t):null,u=jT(e);if(a==="resume"&&!h)return;let d=r?.getVersion?.(),f=r8(e),p=!1,m=()=>{!f||p||(r?.track?.(d),p=!0)},g=()=>{p&&(p=!1,r?.complete?.(d))};m(),KT(t),t.zIndex=s;let _=new he({label:`${e.id}-content`}),y;try{let x=o8(e,{app:n});if(y=zT(x)?await x:x,o?.aborted||t.destroyed){$T(y),g();return}if(t.addChild(_),t.addChild(y),y?.[ou]?.start(),a==="paused-initial"){l||sp(t,{mode:Z5(e),revealedCharacters:u,completed:!1}),l?(sp(t,{mode:"none",completed:!0}),gL({contentContainer:_,indicatorSprite:y,element:e})):u8({contentContainer:_,indicatorSprite:y,element:e}),c?.(),g();return}let S=r.getVersion(),v=!1;if(l)r.track(S),g(),sp(t,{mode:"none",completed:!0}),gL({contentContainer:_,indicatorSprite:y,element:e}),c?.(),v=!0;else if(e.revealEffect==="softWipe"){sp(t,{mode:"softWipe",revealedCharacters:u,completed:!1});let b=g8({container:t,contentContainer:_,indicatorSprite:y,element:e,animationBus:i,completionTracker:r,app:n});if(c?.(),!b&&!o?.aborted&&!t.destroyed)r.track(S),g(),v=!0;else{g();return}}else{r.track(S),g();let b=h?.revealedCharacters??u,w=bL(e),A=sp(t,{mode:"typewriter",revealedCharacters:b,completed:!1}),C=b<w,R=C?vL({app:n,element:e}):()=>{},P=({completed:U=!1}={})=>R({completed:U});C&&PL(t,P);try{let U=h8({contentContainer:_,indicatorSprite:y,element:e,signal:o,startAtCharacter:b,snapshot:A});c?.(),v=await U}finally{P({completed:v&&!o?.aborted&&!t.destroyed})||SL(t,P)}}v&&!o?.aborted&&!t.destroyed&&r.complete(S)}catch(x){if(g(),y&&!y.destroyed&&!y.parent&&$T(y),x?.name!=="AbortError"&&!o?.aborted)throw x}};var _y=({suppressAnimations:t=!1,deferredMountOperations:e=[]}={})=>({suppressAnimations:t,deferredMountOperations:e}),UL=t=>{switch(t?.type){case"play-animated-sprite":t.animatedSprite?.destroyed||t.animatedSprite?.play();return;case"play-video":t.video?.play();return;case"start-particles":if(t.app?.debug){let e=r=>{if(t.emitter.destroyed){window.removeEventListener("snapShotKeyFrame",e);return}r?.detail?.deltaMS&&(t.emitter.update(Number(r.detail.deltaMS)/1e3),typeof t.app?.render=="function"&&t.app.render())};window.addEventListener("snapShotKeyFrame",e),t.container.customTickerHandler=e;return}t.app.ticker.add(t.tickerCallback);return;case"autoplay-text-reveal":Do({container:t.container,element:t.element,completionTracker:t.completionTracker,animationBus:t.animationBus,zIndex:t.zIndex,signal:t.signal,app:t.app,playback:"autoplay",onLayoutMounted:t.onLayoutMounted});return;case"start-update-animations":if(!t.element||t.element.destroyed)return;py({animations:t.animations,animationBus:t.animationBus,completionTracker:t.completionTracker,element:t.element,targetState:t.targetState,animationBaseState:t.animationBaseState});return}},op=(t,e)=>{if(e?.type){if(!t?.suppressAnimations){UL(e);return}t.deferredMountOperations.push(e)}},cu=t=>{t?.deferredMountOperations&&(t.deferredMountOperations.length=0)},LL=(t,e)=>op(t,{type:"play-animated-sprite",animatedSprite:e}),OL=(t,e)=>op(t,{type:"play-video",video:e}),DL=(t,{app:e,emitter:r,container:i,tickerCallback:s})=>op(t,{type:"start-particles",app:e,emitter:r,container:i,tickerCallback:s}),by=(t,{app:e,container:r,element:i,completionTracker:s,animationBus:o,zIndex:n,signal:a,onLayoutMounted:c})=>op(t,{type:"autoplay-text-reveal",app:e,container:r,element:i,completionTracker:s,animationBus:o,zIndex:n,signal:a,onLayoutMounted:c}),GL=(t,{animations:e,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:n})=>op(t,{type:"start-update-animations",animations:e,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:n}),ZT=(t,e=()=>!0)=>{if(!t?.deferredMountOperations?.length)return;let r=t.deferredMountOperations.splice(0),i=[];for(let s of r)e(s)?UL(s):i.push(s);i.length>0&&t.deferredMountOperations.push(...i)};var x8=Object.prototype.hasOwnProperty,Me=(t,e)=>{if(Object.is(t,e))return!0;if(t===null||e===null||typeof t!="object"||typeof e!="object")return!1;let r=Array.isArray(t),i=Array.isArray(e);if(r!==i)return!1;if(r&&i){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(!Me(t[n],e[n]))return!1;return!0}let s=Object.keys(t),o=Object.keys(e);if(s.length!==o.length)return!1;for(let n of s)if(!x8.call(e,n)||!Me(t[n],e[n]))return!1;return!0};var Ja=t=>{let e=new Set;if(t.id&&e.add(t.id),t.children&&Array.isArray(t.children))for(let r of t.children)for(let i of Ja(r))e.add(i);return e};var HL=(t=[])=>{if(t instanceof Map)return t;let e=new Map;for(let r of t)e.has(r.targetId)||e.set(r.targetId,[]),e.get(r.targetId).push(r);return e},vy=(t,e)=>t?t instanceof Map?t.get(e)??[]:t.filter(r=>r.targetId===e):[],VL=(t,e)=>vy(t,e).filter(r=>r.type==="update"),Sy=(t,e)=>vy(t,e).find(r=>r.type==="transition")??null,NL=(t=[])=>t.some(e=>Object.keys(e.tween??{}).some(Dn)),np=(t=[],e,r=[])=>{for(let i of t){if(i?.id===e)return{element:i,ancestorIds:r};if(Array.isArray(i?.children)){let s=np(i.children,e,[...r,i.id]);if(s)return s}}return null},WL=(t,e)=>Me(t?.ancestorIds??null,e?.ancestorIds??null),y8=({subtreeRoot:t,nextAnimations:e,continuingAnimationId:r})=>{if(!t)return!1;let i=Ja(t);for(let s of e??[])if(!(!s||s.id===r)&&i.has(s.targetId))return!0;return!1},ew=(t={})=>t.type==="update"?JSON.stringify({type:t.type,tween:t.tween,playback:t.playback??null}):JSON.stringify({type:t.type,prev:t.prev??null,next:t.next??null,mask:t.mask??null,compositor:t.compositor??null,tween:t.tween??null,playback:t.playback??null}),_8=({prevState:t,nextState:e,animation:r})=>{let i=np(t?.elements,r.targetId),s=np(e?.elements,r.targetId);return i!==null&&s!==null&&WL(i,s)&&Me(i.element,s.element)},b8=({prevState:t,nextState:e,animation:r})=>{let i=np(t?.elements,r.targetId),s=np(e?.elements,r.targetId);return i===null&&s===null?!0:i===null||s===null||!WL(i,s)||!Me(i.element,s.element)?!1:!y8({subtreeRoot:s.element,nextAnimations:e?.animations,continuingAnimationId:r.id})},zL=({prevState:t,nextState:e,activeAnimations:r})=>{let i=new Set,s=r instanceof Map?r:new Map(r?.map(o=>[o.id,o])??[]);for(let o of e?.animations??[]){if(o?.playback?.continuity!=="persistent")continue;let n=s.get(o.id);if(n&&!(n.type!==o.type||n.targetId!==o.targetId||n.signature!==ew(o))){if(o.type==="update"){_8({prevState:t,nextState:e,animation:o})&&i.add(o.id);continue}b8({prevState:t,nextState:e,animation:o})&&i.add(o.id)}}return{continuedAnimationIds:i}},v8=({animations:t,targetId:e,animationBus:r,completionTracker:i,element:s,targetState:o,onComplete:n,renderContext:a})=>{let c=VL(t,e),l=c.filter(u=>typeof r?.hasContext=="function"?r.hasContext(u.id):!1),h=c.filter(u=>!l.includes(u));if(c.length===0)return!1;if(h.length===0)return!0;if(a?.suppressAnimations){if(n)throw new Error("Deferred update animations do not support onComplete hooks.");let u=NL(h)?Gn(s):void 0;return hL(s,h,void 0,u),GL(a,{animations:h,animationBus:r,completionTracker:i,element:s,targetState:o,animationBaseState:u}),!0}return py({animations:h,animationBus:r,completionTracker:i,element:s,targetState:o,onComplete:n,animationBaseState:NL(h)?Gn(s):void 0}),!0},lu=VL;var pe=v8;var $L=t=>!!t&&typeof t=="object"&&!Array.isArray(t),S8=(t,e)=>e===void 0?t:e===null||e===!1?null:$L(e)?{...$L(t)?t:{},...e}:e,Hn=(t={},e={})=>{if(!e)return{...t};let r={...t,...e};return Object.prototype.hasOwnProperty.call(e,"shadow")&&(r.shadow=S8(t?.shadow,e.shadow)),r};var KL=Symbol("routeGraphicsElementRenderState"),QL=Symbol("routeGraphicsElementHitTestBounds"),JL=Symbol("routeGraphicsDeferredRenderStateCommit"),tw=Symbol("routeGraphicsParentRenderState"),rw=Symbol("routeGraphicsElementRenderLifecycle"),ow=t=>t&&typeof t.then=="function",uu=(t,e)=>JSON.stringify([t,e]),Za=t=>t?.[KL]??null,rt=(t,e)=>{t&&e&&(t[KL]=e)},hu=(t,e)=>{t&&typeof e=="function"&&(t[QL]=e)},ZL=t=>t?.[QL]?.(t)??null,eO=t=>(t[tw]||(t[tw]={lifecycle:null,managed:!1}),t[tw]),Ty=(t,e)=>{for(let r=t.children.length-1;r>=0;r--){let i=t.children[r];if(!i.destroyed&&i.label===e)return i}},XL=(t,e,r)=>{for(let i=t.children.length-1;i>=0;i--){let s=t.children[i];if(!s.destroyed&&s.label===e.id&&!r.has(s)){let o=Za(s);if(!o||o.type===e.type)return s}}return null},iw=(t,e)=>{t&&rt(t,e)},tO=({plugin:t,...e})=>{let r=new Set(e.parent.children),i=t.add(e),{parent:s,element:o}=e,n=XL(s,o,r);return iw(n,o),ow(i)?i.then(()=>{(!n||n.destroyed)&&(n=XL(s,o,r)),iw(n,o)}):i},rO=({plugin:t,...e})=>{let{parent:r,prevElement:i,nextElement:s,signal:o}=e,n=!1,a=null,c=()=>{if(a)return;let d,f=new Promise(g=>{d=g}),p=!1,m=()=>{p||(p=!0,o?.removeEventListener?.("abort",m),d())};a={result:{[JL]:f},settle:m},n||o?.aborted||r.destroyed?m():o?.addEventListener?.("abort",m,{once:!0})},l=d=>{if(n=!0,!o?.aborted&&!r.destroyed){let f=d??Ty(r,s.id)??Ty(r,i.id);iw(f,s)}a?.settle()},h;try{h=t.update({...e,commitRenderState:l,deferRenderStateCommit:c})}catch(d){throw a?.settle(),d}let u=d=>a?a.result:(l(),d);return ow(h)?h.then(u,d=>{throw a?.settle(),d}):u(h)},nw=t=>{let e=t;for(;e;){let r=Za(e);if(r)return r.id;e=e.parent}return null},iO=(t,e,r=new Map)=>{for(let i=0;i<t.length;i++){let s=t[i];r.set(uu(e,s.id),{element:s,ownerElementId:e,zIndex:i}),Array.isArray(s.children)&&iO(s.children,s.id,r)}return r},T8=t=>({currentRender:null,desiredElements:new Map,pendingReplacements:new Map,renderParents:new Map,rootOwnerElementId:nw(t),rootParent:t}),w8=(t,e)=>{if(e[rw])return{lifecycle:e[rw],isRootRender:!1};let r=eO(t),i=r.lifecycle??T8(t);return r.lifecycle=i,e[rw]=i,{lifecycle:i,isRootRender:!0}},sO=(t,e)=>{let r=e?.completionTracker;if(!r?.getVersion||!r?.track)return;let i=r.getVersion(),s=t.completionReservation;s?.tracker===r&&s.version===i||(r.track(i),t.completionReservation={tracker:r,version:i},s?.tracker.complete?.(s.version))},YL=t=>{let e=t.completionReservation;t.completionReservation=null,e?.tracker.complete?.(e.version)},E8=(t,{nextComputedTree:e,parent:r,renderSnapshot:i})=>{t.rootParent=r,t.rootOwnerElementId=nw(r),t.currentRender=i,t.desiredElements=iO(e,t.rootOwnerElementId);for(let s of t.pendingReplacements.values())sO(s,i)},A8=(t,e)=>{let r=eO(t),i=new Map(e.map(o=>[o.id,o])),s=new Map;for(let o of t.children){if(o.destroyed)continue;let n=i.get(o.label),a=Za(o);!a&&n&&(a=n,rt(o,n)),a&&s.set(a.id,n?.type===a.type?n:a)}if(!r.managed)for(let o of e)s.has(o.id)||s.set(o.id,o);return r.managed=!0,Array.from(s.values())},oO=({nextComputedTree:t,parent:e,prevComputedTree:r,renderContext:i,renderSnapshot:s})=>{let{lifecycle:o,isRootRender:n}=w8(e,i);n&&E8(o,{nextComputedTree:t,parent:e,renderSnapshot:s});let a=nw(e),c=A8(e,r);for(let h of[...c,...t])o.renderParents.set(uu(a,h.id),e);let l=new Set;for(let h of o.pendingReplacements.values())h.ownerElementId===a&&l.add(h.id);return{lifecycle:o,ownerElementId:a,pendingReplacementIds:l,renderedPrevComputedTree:c,resolveRenderParent:h=>sw(o,a,h)}},nO=(t,e)=>{for(let r of t.children??[]){if(r.destroyed)continue;if(r.label===e)return r;let i=nO(r,e);if(i)return i}return null},jL=(t,e)=>{let r=t;for(;r;){if(r===e)return!0;r=r.parent}return!1},aO=(t,e)=>{for(let r of t.children??[]){if(r.destroyed)continue;let i=Za(r);if(r.label===e&&i?.id===e)return r.parent;let s=aO(r,e);if(s)return s}return null},sw=(t,e,r)=>{let{rootOwnerElementId:i,rootParent:s}=t;if(!s||s.destroyed)return null;let o=uu(e,r),n=t.renderParents.get(o),a=n&&!n.destroyed&&jL(n,s),c=e===i?s:s.getChildByLabel?.(e,!0)??nO(s,e);if(!c)return null;let l=aO(c,r);if(a&&(!l||jL(l,n)))return n;if(l)return t.renderParents.set(o,l),l;let u=c.children?.find(d=>!d.destroyed&&d.label===`${e}-content`)??c;return t.renderParents.set(o,u),u},M8=(t,e)=>t.desiredElements.get(uu(e.ownerElementId,e.id)),ap=(t,e)=>t.currentRender===e&&!e?.signal?.aborted&&!t.rootParent?.destroyed,P8=async(t,e)=>{let r=null;for(;;){let i=t.currentRender;if(!ap(t,i))return!1;let s=sw(t,e.ownerElementId,e.id);if(!s||s.destroyed)return!1;let o=M8(t,e),n=Ty(s,e.id),a=n?Za(n)??r?.element??e.prevElement:null;if(n&&o&&a.type===o.element.type){if(!Me(a,o.element)&&(await(await i.updateElement({parent:s,prevElement:a,nextElement:o.element,zIndex:o.zIndex}))?.[JL],!ap(t,i)))continue;return!n.destroyed&&n.parent===s&&rt(n,o.element),!0}if(n){if(await i.deleteElement({parent:s,element:a}),ap(t,i)&&sw(t,e.ownerElementId,e.id)===s&&Ty(s,e.id)===n)throw new Error(`Element plugin cleanup did not remove "${e.id}".`);continue}if(!o)return!0;r=o;let c=i.mountElement({parent:s,element:o.element,zIndex:o.zIndex});if(!ow(c)||(await c,ap(t,i)))return!0}},qL=(t,e)=>t.pendingReplacements.delete(uu(e.ownerElementId,e.id)),C8=t=>{let e=t.currentRender;ap(t,e)&&e.requestFrame?.()},aw=({lifecycle:t,operation:e,replacement:r})=>{let i=uu(r.ownerElementId,r.id);return t.pendingReplacements.set(i,r),sO(r,t.currentRender),e.then(()=>P8(t,r)).then(s=>{t.pendingReplacements.get(i)===r&&(qL(t,r),s&&C8(t),YL(r))},s=>{throw t.pendingReplacements.get(i)===r&&(qL(t,r),YL(r)),s})};var lO=Symbol("routeGraphicsTextAnchorRatios"),Vn=Symbol("routeGraphicsTextLayoutState"),cO=(t,e)=>typeof t!="number"||t===0?0:e/t,wy=t=>t?.align??dt.align,uO=t=>{let e=t[Vn];return e?.fixedWidth&&typeof e.layoutWidth=="number"?e.layoutWidth:typeof e?.measuredWidth=="number"?e.measuredWidth:t.width},R8=(t,e)=>{let r=_t.measureText(String(t??""),new at(br(e,{includeShadow:!1})));return{width:r.width,height:r.height}},hO=t=>t?.shadow!==void 0&&t.shadow!==null&&t.shadow!==!1,cw=(t,e)=>hO(e)?R8(t.text,e):{width:t.width,height:t.height},Ey=t=>{let e=t[Vn];return typeof e?.measuredWidth=="number"?e.measuredWidth:t.width},dO=t=>{let e=t[Vn];return typeof e?.measuredHeight=="number"?e.measuredHeight:t.height},fO=(t,e,r)=>{let i=!!e.__fixedWidth,s=r??cw(t,e.textStyle),o=s.width??e.measuredWidth??e.width,n=s.height??e.height??t.height;t[Vn]={fixedWidth:i,layoutWidth:i?e.width:o,measuredWidth:o,measuredHeight:n}},Ay=(t,e,r)=>{let i=Math.max(0,t-e);return r==="center"?i/2:r==="right"?i:0},I8=t=>{if(!t[Vn])return null;let r=uO(t),i=Ey(t);return{x:-Ay(r,i,wy(t.style)),y:0,width:r,height:dO(t)}},lw=t=>{let e=t.measuredWidth??t.width,r=Ay(t.width,e,wy(t.textStyle));return{x:t.x+r,y:t.y}},My=(t,e)=>{let r=cw(t,e.textStyle),i=e.__fixedWidth&&typeof e.width=="number"?e.width:r.width,s=r.height,o=typeof e.__anchorXRatio=="number"?e.__anchorXRatio:cO(i,e.originX),n=typeof e.__anchorYRatio=="number"?e.__anchorYRatio:cO(s,e.originY);t[lO]={x:o,y:n},fO(t,e,r),hu(t,I8)},B8=t=>typeof t?.fontSize!="number"||t.fontSize===0||typeof t?.lineHeight!="number"?dt.lineHeight:t.lineHeight/t.fontSize,uw=(t,e)=>{if(!e)return t;let r=Hn(t,e);if(e.fontSize!==void 0||e.lineHeight!==void 0){let i=e.lineHeight??B8(t);r.lineHeight=Math.round(r.fontSize*i)}return r},pO=(t,e,r)=>{let i=t[lO],s=uO(t),o=uw(e,r);if(!i){Js(t,o);return}let n=Ay(s,Ey(t),wy(t.style)),c=t.x-n+s*i.x,l=t.y+dO(t)*i.y;Js(t,o);let h=cw(t,o),d=t[Vn]?.fixedWidth===!0?s:h.width,f=Ay(d,h.width,wy(o));t.x=c-d*i.x+f,t.y=l-h.height*i.y,t[Vn]={...t[Vn]??{},layoutWidth:d,measuredWidth:h.width,measuredHeight:h.height}},Py=(t,e)=>{fO(t,e);let r=hO(e.textStyle)?e.measuredWidth??Ey(t):Ey(t),i=lw({...e,measuredWidth:r,width:e.__fixedWidth&&typeof e.width=="number"?e.width:r});t.x=i.x,t.y=i.y};var mO=t=>{if(!(!t||typeof t!="object")){if(typeof t.button=="number")return t.button;if(typeof t.data?.button=="number")return t.data.button;if(typeof t.nativeEvent?.button=="number")return t.nativeEvent.button}},vr=t=>{let e=mO(t);return e===void 0||e===0},gO=t=>mO(t)===2;var hw=Symbol.for("routeGraphics.setInheritedHover"),xO=Symbol.for("routeGraphics.treeInheritedHoverActive"),dw=Symbol.for("routeGraphics.setInheritedPress"),yO=Symbol.for("routeGraphics.treeInheritedPressActive"),fw=Symbol.for("routeGraphics.setInheritedRightPress"),_O=Symbol.for("routeGraphics.treeInheritedRightPressActive"),du=t=>Array.isArray(t?.children)?t.children:[],pw=({displayObject:t,symbol:e,source:r,isActive:i})=>{let s=t?.[e];typeof s=="function"&&s(r,i)},Cy=({displayObject:t,symbol:e})=>{t&&e in t&&delete t[e]},mw=({displayObject:t,symbol:e,onStateChange:r})=>{let i=!1,s=new Set,o=({nextDirectActive:n=i,onInheritedChange:a})=>{let c=i||s.size>0;i=n,a?.(s);let l=i||s.size>0;return c!==l&&r(l),l};return t[e]=(n,a)=>o({onInheritedChange:c=>{if(n){if(a){c.add(n);return}c.delete(n)}}}),{setDirectState:n=>o({nextDirectActive:n}),isActive:()=>i||s.size>0,destroy:()=>{Cy({displayObject:t,symbol:e})}}},fu=t=>Cy({displayObject:t,symbol:hw}),Ry=t=>Cy({displayObject:t,symbol:dw}),Iy=t=>Cy({displayObject:t,symbol:fw}),Wn=({displayObject:t,onHoverChange:e})=>{let r=mw({displayObject:t,symbol:hw,onStateChange:e});return{setDirectHover:r.setDirectState,isHovering:r.isActive,destroy:r.destroy}},pu=({displayObject:t,onPressChange:e})=>{let r=mw({displayObject:t,symbol:dw,onStateChange:e});return{setDirectPress:r.setDirectState,isPressed:r.isActive,destroy:r.destroy}},mu=({displayObject:t,onPressChange:e})=>{let r=mw({displayObject:t,symbol:fw,onStateChange:e});return{setDirectPress:r.setDirectState,isPressed:r.isActive,destroy:r.destroy}},gw=t=>t?.[xO]===!0,xw=t=>t?.[yO]===!0,yw=t=>t?.[_O]===!0,gu=({root:t,isHovered:e})=>{if(!t)return;t[xO]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:hw,source:t,isActive:e}),r.push(...du(i))}},ec=({root:t,isPressed:e})=>{if(!t)return;t[yO]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:dw,source:t,isActive:e}),r.push(...du(i))}},Go=({root:t,isPressed:e})=>{if(!t)return;t[_O]=e;let r=[...du(t)];for(;r.length>0;){let i=r.pop();pw({displayObject:i,symbol:fw,source:t,isActive:e}),r.push(...du(i))}};var bO="__rtglScrollHandled",vO=t=>t?.payload&&typeof t.payload=="object"?t.payload:{},es=({canvas:t,displayObject:e,width:r,height:i,scrollUpEvent:s,scrollDownEvent:o,eventHandler:n})=>{if(!s&&!o)return;let a=!1,c=Number.isFinite(r)&&Number.isFinite(i)&&r>0&&i>0;e.eventMode="static",c&&(e.hitArea=new ue(0,0,Math.round(r),Math.round(i)));let l=(p,m)=>{m?.[bO]||(m&&(m[bO]=!0),p<0&&s&&n?n("scrollUp",{_event:{id:e.label},...vO(s)}):p>0&&o&&n&&n("scrollDown",{_event:{id:e.label},...vO(o)}))},h=()=>{a=!0},u=()=>{a=!1},d=p=>{p.preventDefault?.(),l(p.deltaY,p.nativeEvent)},f=p=>{a&&(p.preventDefault(),l(p.deltaY,p))};e.on("pointerover",h),e.on("pointerout",u),e.on("wheel",d),t?.addEventListener("wheel",f,{passive:!1}),e._cleanupScrollInteraction=()=>{a=!1,e.off("pointerover",h),e.off("pointerout",u),e.off("wheel",d),t?.removeEventListener("wheel",f),c&&(e.hitArea=null),delete e._cleanupScrollInteraction}},_w=({root:t})=>{t?._cleanupScrollInteraction?.(),t?.children?.forEach(e=>{_w({root:e})})};var xu=t=>{t._cleanupScrollInteraction?.(),t.removeAllListeners("pointerover"),t.removeAllListeners("pointerout"),t.removeAllListeners("pointerdown"),t.removeAllListeners("pointerupoutside"),t.removeAllListeners("pointerup"),t.removeAllListeners("rightdown"),t.removeAllListeners("rightclick"),t.removeAllListeners("rightup"),t.removeAllListeners("rightupoutside"),t.removeAllListeners("wheel"),fu(t),Ry(t),Iy(t),t.cursor="auto",t.eventMode="auto"},cp=({app:t,displayObject:e,textComputedNode:r,eventHandler:i,applyStyle:s})=>{let o=r?.hover,n=r?.click,a=r?.rightClick,c=r?.scrollUp,l=r?.scrollDown,h=null,u=null,d=null,f=()=>{let p=h?.isHovering()??!1,m=u?.isPressed()??!1;(d?.isPressed()??!1)&&a?.textStyle?s(a.textStyle):m&&n?.textStyle?s(n.textStyle):p&&o?.textStyle?s(o.textStyle):s()};if(o){let{cursor:p,soundSrc:m,soundVolume:g,payload:_}=o;e.eventMode="static",h=Wn({displayObject:e,onHoverChange:f});let y=()=>{h.setDirectHover(!0),_&&i&&i("hover",{_event:{id:e.label},..._}),p&&(e.cursor=p),m&&t.audioStage.add({id:`hover-${Date.now()}`,url:m,loop:!1,volume:Ve(g)})},x=()=>{h.setDirectHover(!1),e.cursor="auto"};e.on("pointerover",y),e.on("pointerout",x)}if(n){let{soundSrc:p,soundVolume:m,payload:g}=n;e.eventMode="static",u=pu({displayObject:e,onPressChange:f});let _=S=>{vr(S)&&u.setDirectPress(!0)},y=S=>{vr(S)&&(u.setDirectPress(!1),g&&i&&i("click",{_event:{id:e.label},...g}),p&&t.audioStage.add({id:`click-${Date.now()}`,url:p,loop:!1,volume:Ve(m)}))},x=()=>{u.setDirectPress(!1)};e.on("pointerdown",_),e.on("pointerup",y),e.on("pointerupoutside",x)}if(a){let{soundSrc:p,payload:m}=a;e.eventMode="static",d=mu({displayObject:e,onPressChange:f});let g=()=>{d.setDirectPress(!0)},_=()=>{d.setDirectPress(!1)},y=()=>{d.setDirectPress(!1),m&&i&&i("rightClick",{_event:{id:e.label},...m}),p&&t.audioStage.add({id:`rightClick-${Date.now()}`,url:p,loop:!1})},x=()=>{d.setDirectPress(!1)};e.on("rightdown",g),e.on("rightup",_),e.on("rightclick",y),e.on("rightupoutside",x)}(c||l)&&es({canvas:t.canvas,displayObject:e,scrollUpEvent:c,scrollDownEvent:l,eventHandler:i})};var wO=Symbol("routeGraphicsRichTextDisplay"),F8=t=>t?.align??dt.align,k8=(t,e,r)=>{let i=Math.max(0,t-e.width),s=0;return r==="center"?s=i/2:r==="right"&&(s=i),s-e.x},U8=t=>{t.removeChildren().forEach(r=>{r.destroy({children:!0})})},SO=({text:t,style:e,x:r,y:i})=>new vi({text:t,style:new at(br(e)),x:Math.round(r),y:Math.round(i)}),TO=(t,e)=>e?uw(t,e):t,L8=(t,e,r)=>{let i=t.getLocalBounds(),s=Math.min(0,i.x),o=Math.min(0,i.y),n=Math.max(e,i.x+i.width),a=Math.max(r,i.y+i.height);return new ue(s,o,n-s,a-o)},tc=t=>Array.isArray(t?.content),EO=t=>!!t?.[wO],AO=t=>({x:t.x,y:t.y}),lp=(t,e,r)=>{U8(t),t.label=e.id,t.x=Math.round(e.x??0),t.y=Math.round(e.y??0),t.alpha=e.alpha??1;let i=e.width??e.measuredWidth??0;for(let n=0;n<e.content.length;n++){let a=e.content[n],c=new he({label:`${e.id}-line-${n}`});for(let h of a.lineParts??[])h.furigana&&c.addChild(SO({text:h.furigana.text,style:TO(h.furigana.textStyle,r),x:h.furigana.x,y:h.furigana.y})),c.addChild(SO({text:h.text,style:TO(h.textStyle,r),x:h.x,y:h.y}));let l=c.getLocalBounds();c.x=k8(i,l,F8(e.textStyle)),t.addChild(c)}let s=Math.max(0,i),o=Math.max(0,e.height??0);t.hitArea=new ue(0,0,s,o),hu(t,n=>L8(n,s,o))},MO=(t,e)=>{let r=new he({label:t.id});return r[wO]=!0,r.zIndex=e,lp(r,t),r};var bw="__routeGraphicsManagedFilters",O8=["shadow","blur","shader"],D8=t=>(t[bw]||Object.defineProperty(t,bw,{value:new Map,enumerable:!1,configurable:!0}),t[bw]),G8=t=>t.filters?Array.isArray(t.filters)?t.filters:[t.filters]:[],By=t=>t?Array.isArray(t)?t.filter(Boolean):[t]:[],N8=(t,e,r)=>{let i=new Set;for(let a of e.values())for(let c of By(a))i.add(c);for(let a of By(r))i.add(a);let s=G8(t).filter(a=>!i.has(a)),n=[...O8.flatMap(a=>By(e.get(a))),...s];t.filters=n.length>0?n:null},H8=t=>{for(let e of By(t))e.destroy?.()},rc=(t,e,r)=>{let i=D8(t),s=i.get(e);r?i.set(e,r):i.delete(e),N8(t,i,s),s&&s!==r&&H8(s)};var PO=/^[a-z][A-Za-z0-9]*$/;var V8=new Set(["shader"]),CO=new Set(["normal","add","multiply","screen"]),RO=new Set(["clamp","repeat"]),W8=new Set(["uTexture","uPrevTexture","uNextTexture","uNextTextureMatrix","uNextTextureClamp","uProgress","uResolution","uSampler","GlobalFilterUniforms","ShaderUniforms","VSOutput","gfu","shaderUniforms","mainVertex","mainFragment","uInputSize","uInputPixel","uInputClamp","uOutputFrame","uGlobalFrame","uOutputTexture"]),z8=t=>!!t&&typeof t=="object"&&!Array.isArray(t),IO=t=>typeof t=="number"&&Number.isFinite(t),zn=(t,e)=>{if(!z8(t))throw new Error(`Input Error: ${e} must be an object`)},up=(t,e)=>{if(typeof t!="string"||t.length===0)throw new Error(`Input Error: ${e} must be a non-empty string`)},BO=(t,e)=>{if(!PO.test(t))throw new Error(`Input Error: ${e} must match ${PO.source}`)},FO=t=>t.charAt(0).toUpperCase()+t.slice(1),$8=t=>`u${FO(t)}`,X8=t=>`u${FO(t)}Texture`,kO=({key:t,symbol:e,path:r,symbols:i,kind:s})=>{if(W8.has(e))throw new Error(`Input Error: ${r}.${t} generates reserved shader symbol ${e}`);if(i.has(e))throw new Error(`Input Error: ${r}.${t} generates duplicate shader symbol ${e}`);i.set(e,{key:t,kind:s})},Y8=(t,e)=>{if(IO(t))return{type:"f32",value:t};if(Array.isArray(t)&&(t.length===2||t.length===4)&&t.every(IO))return{type:t.length===2?"vec2<f32>":"vec4<f32>",value:[...t]};throw new Error(`Input Error: ${e} must be a number, a length-2 number array, or a length-4 number array`)},j8=(t,e,r)=>t===void 0?[]:(zn(t,e),Object.keys(t).sort().map(i=>{BO(i,`${e}.${i}`);let s=$8(i);return kO({key:i,symbol:s,path:e,symbols:r,kind:"uniform"}),{key:i,symbol:s,...Y8(t[i],`${e}.${i}`)}})),q8=({textures:t,path:e,symbols:r,maxTextures:i})=>{if(t===void 0)return[];zn(t,e);let s=Object.keys(t).sort();if(s.length>i)throw new Error(`Input Error: ${e} supports at most ${i} custom textures`);return s.map(o=>{BO(o,`${e}.${o}`),up(t[o],`${e}.${o}`);let n=X8(o);return kO({key:o,symbol:n,path:e,symbols:r,kind:"texture"}),{key:o,symbol:n,src:t[o]}})},K8=(t,e)=>{if(t===void 0)return{blend:"normal",textureWrap:"clamp",mipmap:!1};zn(t,e);let r=t.blend??"normal";if(!CO.has(r))throw new Error(`Input Error: ${e}.blend must be one of: ${Array.from(CO).join(", ")}`);let i=t.textureWrap??"clamp";if(!RO.has(i))throw new Error(`Input Error: ${e}.textureWrap must be one of: ${Array.from(RO).join(", ")}`);let s=t.mipmap??!1;if(typeof s!="boolean")throw new Error(`Input Error: ${e}.mipmap must be a boolean`);return{blend:r,textureWrap:i,mipmap:s}},Q8=(t,e)=>{if(zn(t,e),zn(t.webgl,`${e}.webgl`),zn(t.webgpu,`${e}.webgpu`),t.webgl.vertex!==void 0&&typeof t.webgl.vertex!="string")throw new Error(`Input Error: ${e}.webgl.vertex must be a string`);if(up(t.webgl.fragment,`${e}.webgl.fragment`),up(t.webgpu.source,`${e}.webgpu.source`),!t.webgpu.source.includes("mainVertex")||!t.webgpu.source.includes("mainFragment"))throw new Error(`Input Error: ${e}.webgpu.source must define mainVertex and mainFragment`);return{webgl:{...t.webgl.vertex!==void 0?{vertex:t.webgl.vertex}:{},fragment:t.webgl.fragment},webgpu:{source:t.webgpu.source}}},J8=(t,e)=>{if(t===void 0)return{grid:[1,1]};if(zn(t,e),!Array.isArray(t.grid)||t.grid.length!==2||!t.grid.every(r=>Number.isInteger(r)&&r>=1))throw new Error(`Input Error: ${e}.grid must be [columns, rows] with positive integers`);return{grid:[t.grid[0],t.grid[1]]}},UO=({shader:t,path:e,requireId:r,textureLimit:i,allowMesh:s})=>{if(zn(t,e),!V8.has(t.type))throw new Error(`Input Error: ${e}.type must be shader`);let o={type:"shader"};r?(up(t.id,`${e}.id`),o.id=t.id):t.id!==void 0&&(up(t.id,`${e}.id`),o.id=t.id);let n=new Map;if(o.uniforms=j8(t.uniforms,`${e}.uniforms`,n),o.textures=q8({textures:t.textures,path:`${e}.textures`,symbols:n,maxTextures:i}),o.pipeline=K8(t.pipeline,`${e}.pipeline`),o.source=Q8(t.source,`${e}.source`),t.mesh!==void 0&&!s)throw new Error(`Input Error: ${e}.mesh is only valid for compositors`);return s&&(o.mesh=J8(t.mesh,`${e}.mesh`)),o},LO=(t,e="filters")=>{if(t===void 0)return;if(!Array.isArray(t))throw new Error(`Input Error: ${e} must be an array`);let r=new Set;return t.map((i,s)=>{let o=UO({shader:i,path:`${e}[${s}]`,requireId:!0,textureLimit:7,allowMesh:!1});if(r.has(o.id))throw new Error(`Input Error: ${e}[${s}].id must be unique within filters`);return r.add(o.id),o})},OO=(t,e="compositor")=>UO({shader:t,path:e,requireId:!1,textureLimit:6,allowMesh:!0}),DO=t=>JSON.stringify(t??null);var Sw="__routeGraphicsShaderFilters",ic="__routeGraphicsShaderProgress",GO="__routeGraphicsShaderDestroyCleanup",Z8=`
|
|
1633
1633
|
precision mediump float;
|
|
1634
1634
|
|
|
1635
1635
|
in vec2 aPosition;
|
|
@@ -2431,7 +2431,7 @@ void main(void)
|
|
|
2431
2431
|
`)}}return o.push(`
|
|
2432
2432
|
renderer.buffer.update(buffer);
|
|
2433
2433
|
`),{size:s,syncFunc:new Function("ud","uv","renderer","syncData","buffer",o.join(`
|
|
2434
|
-
`))}}var D7=0,g0={textureCount:0,uboCount:0},sa=class{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=D7++}systemCheck(){if(!h0())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,r){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;let i=e.program,s=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(s.program)),r||(g0.textureCount=0,g0.uboCount=0,this.syncUniformGroup(e.uniformGroup,g0)),s}setUniforms(e){let r=this.shader.program,i=r.glPrograms[this.renderer.CONTEXT_UID];r.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,r){let i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,r))}syncUniforms(e,r,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(r.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){let r=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[r]||(this.cache[r]=aA(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[r],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,r){let i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;let s=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,r);e.buffer.update(),s(i.uniformData,e.uniforms,this.renderer,g0,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[r])}createSyncBufferGroup(e,r,i){let{gl:s}=this.renderer;this.renderer.buffer.bind(e.buffer);let o=this.gl.getUniformBlockIndex(r.program,i);r.uniformBufferBindings[i]=this.shader.uniformBindCount,s.uniformBlockBinding(r.program,o,this.shader.uniformBindCount),this.shader.uniformBindCount++;let n=this.getSignature(e,this.shader.program.uniformData,"ubo"),a=this._uboCache[n];if(a||(a=this._uboCache[n]=gA(e,this.shader.program.uniformData)),e.autoManage){let c=new Float32Array(a.size/4);e.buffer.update(c)}return r.uniformGroups[e.id]=a.syncFunc,r.uniformGroups[e.id]}getSignature(e,r,i){let s=e.uniforms,o=[`${i}-`];for(let n in s)o.push(n),r[n]&&o.push(r[n].type);return o.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){let r=this.gl,i=e.program,s=mA(r,i);return i.glPrograms[this.renderer.CONTEXT_UID]=s,s}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}};sa.extension={type:le.RendererSystem,name:"shader"};xe.add(sa);var qo=class{constructor(e){this.renderer=e}run(e){let{renderer:r}=this;r.runners.init.emit(r.options),e.hello&&console.log(`PixiJS 7.4.3 - ${r.rendererLogId} - https://pixijs.com`),r.resize(r.screen.width,r.screen.height)}destroy(){}};qo.defaultOptions={hello:!1},qo.extension={type:[le.RendererSystem,le.CanvasRendererSystem],name:"startup"};xe.add(qo);function sV(t,e=[]){return e[Te.NORMAL]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.ADD]=[t.ONE,t.ONE],e[Te.MULTIPLY]=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SCREEN]=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.OVERLAY]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.DARKEN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.LIGHTEN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR_DODGE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR_BURN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.HARD_LIGHT]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SOFT_LIGHT]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.DIFFERENCE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.EXCLUSION]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.HUE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SATURATION]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.LUMINOSITY]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.NONE]=[0,0],e[Te.NORMAL_NPM]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.ADD_NPM]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],e[Te.SCREEN_NPM]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SRC_IN]=[t.DST_ALPHA,t.ZERO],e[Te.SRC_OUT]=[t.ONE_MINUS_DST_ALPHA,t.ZERO],e[Te.SRC_ATOP]=[t.DST_ALPHA,t.ONE_MINUS_SRC_ALPHA],e[Te.DST_OVER]=[t.ONE_MINUS_DST_ALPHA,t.ONE],e[Te.DST_IN]=[t.ZERO,t.SRC_ALPHA],e[Te.DST_OUT]=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],e[Te.DST_ATOP]=[t.ONE_MINUS_DST_ALPHA,t.SRC_ALPHA],e[Te.XOR]=[t.ONE_MINUS_DST_ALPHA,t.ONE_MINUS_SRC_ALPHA],e[Te.SUBTRACT]=[t.ONE,t.ONE,t.ONE,t.ONE,t.FUNC_REVERSE_SUBTRACT,t.FUNC_ADD],e}var G7=0,N7=1,H7=2,V7=3,W7=4,z7=5,oV=class xA{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=Te.NONE,this._blendEq=!1,this.map=[],this.map[G7]=this.setBlend,this.map[N7]=this.setOffset,this.map[H7]=this.setCullFace,this.map[V7]=this.setDepthTest,this.map[W7]=this.setFrontFace,this.map[z7]=this.setDepthMask,this.checks=[],this.defaultState=new so,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=sV(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let r=this.stateId^e.data,i=0;for(;r;)r&1&&this.map[i].call(this,!!(e.data&1<<i)),r=r>>1,i++;this.stateId=e.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,e)}forceState(e){e=e||this.defaultState;for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(e.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,e);this.stateId=e.data}setBlend(e){this.updateCheck(xA.checkBlendMode,e),this.gl[e?"enable":"disable"](this.gl.BLEND)}setOffset(e){this.updateCheck(xA.checkPolygonOffset,e),this.gl[e?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this.gl[e?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace(e){this.gl.frontFace(this.gl[e?"CW":"CCW"])}setBlendMode(e){if(e===this.blendMode)return;this.blendMode=e;let r=this.blendModes[e],i=this.gl;r.length===2?i.blendFunc(r[0],r[1]):i.blendFuncSeparate(r[0],r[1],r[2],r[3]),r.length===6?(this._blendEq=!0,i.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,r){this.gl.polygonOffset(e,r)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode=-1,this.setBlendMode(0)}updateCheck(e,r){let i=this.checks.indexOf(e);r&&i===-1?this.checks.push(e):!r&&i!==-1&&this.checks.splice(i,1)}static checkBlendMode(e,r){e.setBlendMode(r.blendMode)}static checkPolygonOffset(e,r){e.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null}};oV.extension={type:le.RendererSystem,name:"state"};var yA=oV;xe.add(yA);var ch=class extends xc.default{constructor(){super(...arguments),this.runners={},this._systemsHash={}}setup(e){this.addRunners(...e.runners);let r=(e.priority??[]).filter(s=>e.systems[s]),i=[...r,...Object.keys(e.systems).filter(s=>!r.includes(s))];for(let s of i)this.addSystem(e.systems[s],s)}addRunners(...e){e.forEach(r=>{this.runners[r]=new qt(r)})}addSystem(e,r){let i=new e(this);if(this[r])throw new Error(`Whoops! The name "${r}" is already in use`);this[r]=i,this._systemsHash[r]=i;for(let s in this.runners)this.runners[s].add(i);return this}emitWithCustomOptions(e,r){let i=Object.keys(this._systemsHash);e.items.forEach(s=>{let o=i.find(n=>this._systemsHash[n]===s);s[e.name](r[o])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}};var nm=class x0{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=x0.defaultMaxIdle,this.checkCountMax=x0.defaultCheckCountMax,this.mode=x0.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==R_.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let e=this.renderer.texture,r=e.managedTextures,i=!1;for(let s=0;s<r.length;s++){let o=r[s];o.resource&&this.count-o.touched>this.maxIdle&&(e.destroyTexture(o,!0),r[s]=null,i=!0)}if(i){let s=0;for(let o=0;o<r.length;o++)r[o]!==null&&(r[s++]=r[o]);r.length=s}}unload(e){let r=this.renderer.texture,i=e._texture;i&&!i.framebuffer&&r.destroyTexture(i);for(let s=e.children.length-1;s>=0;s--)this.unload(e.children[s])}destroy(){this.renderer=null}};nm.defaultMode=R_.AUTO,nm.defaultMaxIdle=60*60,nm.defaultCheckCountMax=60*10,nm.extension={type:le.RendererSystem,name:"textureGC"};var ao=nm;xe.add(ao);var Rc=class{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=Pe.UNSIGNED_BYTE,this.internalFormat=ee.RGBA,this.samplerType=0}};function nV(t){let e;return"WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext?e={[t.RGB]:oe.FLOAT,[t.RGBA]:oe.FLOAT,[t.ALPHA]:oe.FLOAT,[t.LUMINANCE]:oe.FLOAT,[t.LUMINANCE_ALPHA]:oe.FLOAT,[t.R8]:oe.FLOAT,[t.R8_SNORM]:oe.FLOAT,[t.RG8]:oe.FLOAT,[t.RG8_SNORM]:oe.FLOAT,[t.RGB8]:oe.FLOAT,[t.RGB8_SNORM]:oe.FLOAT,[t.RGB565]:oe.FLOAT,[t.RGBA4]:oe.FLOAT,[t.RGB5_A1]:oe.FLOAT,[t.RGBA8]:oe.FLOAT,[t.RGBA8_SNORM]:oe.FLOAT,[t.RGB10_A2]:oe.FLOAT,[t.RGB10_A2UI]:oe.FLOAT,[t.SRGB8]:oe.FLOAT,[t.SRGB8_ALPHA8]:oe.FLOAT,[t.R16F]:oe.FLOAT,[t.RG16F]:oe.FLOAT,[t.RGB16F]:oe.FLOAT,[t.RGBA16F]:oe.FLOAT,[t.R32F]:oe.FLOAT,[t.RG32F]:oe.FLOAT,[t.RGB32F]:oe.FLOAT,[t.RGBA32F]:oe.FLOAT,[t.R11F_G11F_B10F]:oe.FLOAT,[t.RGB9_E5]:oe.FLOAT,[t.R8I]:oe.INT,[t.R8UI]:oe.UINT,[t.R16I]:oe.INT,[t.R16UI]:oe.UINT,[t.R32I]:oe.INT,[t.R32UI]:oe.UINT,[t.RG8I]:oe.INT,[t.RG8UI]:oe.UINT,[t.RG16I]:oe.INT,[t.RG16UI]:oe.UINT,[t.RG32I]:oe.INT,[t.RG32UI]:oe.UINT,[t.RGB8I]:oe.INT,[t.RGB8UI]:oe.UINT,[t.RGB16I]:oe.INT,[t.RGB16UI]:oe.UINT,[t.RGB32I]:oe.INT,[t.RGB32UI]:oe.UINT,[t.RGBA8I]:oe.INT,[t.RGBA8UI]:oe.UINT,[t.RGBA16I]:oe.INT,[t.RGBA16UI]:oe.UINT,[t.RGBA32I]:oe.INT,[t.RGBA32UI]:oe.UINT,[t.DEPTH_COMPONENT16]:oe.FLOAT,[t.DEPTH_COMPONENT24]:oe.FLOAT,[t.DEPTH_COMPONENT32F]:oe.FLOAT,[t.DEPTH_STENCIL]:oe.FLOAT,[t.DEPTH24_STENCIL8]:oe.FLOAT,[t.DEPTH32F_STENCIL8]:oe.FLOAT}:e={[t.RGB]:oe.FLOAT,[t.RGBA]:oe.FLOAT,[t.ALPHA]:oe.FLOAT,[t.LUMINANCE]:oe.FLOAT,[t.LUMINANCE_ALPHA]:oe.FLOAT,[t.DEPTH_STENCIL]:oe.FLOAT},e}function aV(t){let e;return"WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext?e={[Pe.UNSIGNED_BYTE]:{[ee.RGBA]:t.RGBA8,[ee.RGB]:t.RGB8,[ee.RG]:t.RG8,[ee.RED]:t.R8,[ee.RGBA_INTEGER]:t.RGBA8UI,[ee.RGB_INTEGER]:t.RGB8UI,[ee.RG_INTEGER]:t.RG8UI,[ee.RED_INTEGER]:t.R8UI,[ee.ALPHA]:t.ALPHA,[ee.LUMINANCE]:t.LUMINANCE,[ee.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[Pe.BYTE]:{[ee.RGBA]:t.RGBA8_SNORM,[ee.RGB]:t.RGB8_SNORM,[ee.RG]:t.RG8_SNORM,[ee.RED]:t.R8_SNORM,[ee.RGBA_INTEGER]:t.RGBA8I,[ee.RGB_INTEGER]:t.RGB8I,[ee.RG_INTEGER]:t.RG8I,[ee.RED_INTEGER]:t.R8I},[Pe.UNSIGNED_SHORT]:{[ee.RGBA_INTEGER]:t.RGBA16UI,[ee.RGB_INTEGER]:t.RGB16UI,[ee.RG_INTEGER]:t.RG16UI,[ee.RED_INTEGER]:t.R16UI,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT16},[Pe.SHORT]:{[ee.RGBA_INTEGER]:t.RGBA16I,[ee.RGB_INTEGER]:t.RGB16I,[ee.RG_INTEGER]:t.RG16I,[ee.RED_INTEGER]:t.R16I},[Pe.UNSIGNED_INT]:{[ee.RGBA_INTEGER]:t.RGBA32UI,[ee.RGB_INTEGER]:t.RGB32UI,[ee.RG_INTEGER]:t.RG32UI,[ee.RED_INTEGER]:t.R32UI,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT24},[Pe.INT]:{[ee.RGBA_INTEGER]:t.RGBA32I,[ee.RGB_INTEGER]:t.RGB32I,[ee.RG_INTEGER]:t.RG32I,[ee.RED_INTEGER]:t.R32I},[Pe.FLOAT]:{[ee.RGBA]:t.RGBA32F,[ee.RGB]:t.RGB32F,[ee.RG]:t.RG32F,[ee.RED]:t.R32F,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT32F},[Pe.HALF_FLOAT]:{[ee.RGBA]:t.RGBA16F,[ee.RGB]:t.RGB16F,[ee.RG]:t.RG16F,[ee.RED]:t.R16F},[Pe.UNSIGNED_SHORT_5_6_5]:{[ee.RGB]:t.RGB565},[Pe.UNSIGNED_SHORT_4_4_4_4]:{[ee.RGBA]:t.RGBA4},[Pe.UNSIGNED_SHORT_5_5_5_1]:{[ee.RGBA]:t.RGB5_A1},[Pe.UNSIGNED_INT_2_10_10_10_REV]:{[ee.RGBA]:t.RGB10_A2,[ee.RGBA_INTEGER]:t.RGB10_A2UI},[Pe.UNSIGNED_INT_10F_11F_11F_REV]:{[ee.RGB]:t.R11F_G11F_B10F},[Pe.UNSIGNED_INT_5_9_9_9_REV]:{[ee.RGB]:t.RGB9_E5},[Pe.UNSIGNED_INT_24_8]:{[ee.DEPTH_STENCIL]:t.DEPTH24_STENCIL8},[Pe.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[ee.DEPTH_STENCIL]:t.DEPTH32F_STENCIL8}}:e={[Pe.UNSIGNED_BYTE]:{[ee.RGBA]:t.RGBA,[ee.RGB]:t.RGB,[ee.ALPHA]:t.ALPHA,[ee.LUMINANCE]:t.LUMINANCE,[ee.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[Pe.UNSIGNED_SHORT_5_6_5]:{[ee.RGB]:t.RGB},[Pe.UNSIGNED_SHORT_4_4_4_4]:{[ee.RGBA]:t.RGBA},[Pe.UNSIGNED_SHORT_5_5_5_1]:{[ee.RGBA]:t.RGBA}},e}var lh=class{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new We,this.hasIntegerTextures=!1}contextChange(){let e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=aV(e),this.samplerTypes=nV(e);let r=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=r;for(let s=0;s<r;s++)this.boundTextures[s]=null;this.emptyTextures={};let i=new Rc(e.createTexture());e.bindTexture(e.TEXTURE_2D,i.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array(4)),this.emptyTextures[e.TEXTURE_2D]=i,this.emptyTextures[e.TEXTURE_CUBE_MAP]=new Rc(e.createTexture()),e.bindTexture(e.TEXTURE_CUBE_MAP,this.emptyTextures[e.TEXTURE_CUBE_MAP].texture);for(let s=0;s<6;s++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MIN_FILTER,e.LINEAR);for(let s=0;s<this.boundTextures.length;s++)this.bind(null,s)}bind(e,r=0){let{gl:i}=this;if(e=e?.castToBaseTexture(),e?.valid&&!e.parentTextureArray){e.touched=this.renderer.textureGC.count;let s=e._glTextures[this.CONTEXT_UID]||this.initTexture(e);this.boundTextures[r]!==e&&(this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),i.bindTexture(e.target,s.texture)),s.dirtyId!==e.dirtyId?(this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),this.updateTexture(e)):s.dirtyStyleId!==e.dirtyStyleId&&this.updateTextureStyle(e),this.boundTextures[r]=e}else this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),i.bindTexture(i.TEXTURE_2D,this.emptyTextures[i.TEXTURE_2D].texture),this.boundTextures[r]=null}reset(){this._unknownBoundTextures=!0,this.hasIntegerTextures=!1,this.currentLocation=-1;for(let e=0;e<this.boundTextures.length;e++)this.boundTextures[e]=this.unknownTexture}unbind(e){let{gl:r,boundTextures:i}=this;if(this._unknownBoundTextures){this._unknownBoundTextures=!1;for(let s=0;s<i.length;s++)i[s]===this.unknownTexture&&this.bind(null,s)}for(let s=0;s<i.length;s++)i[s]===e&&(this.currentLocation!==s&&(r.activeTexture(r.TEXTURE0+s),this.currentLocation=s),r.bindTexture(e.target,this.emptyTextures[e.target].texture),i[s]=null)}ensureSamplerType(e){let{boundTextures:r,hasIntegerTextures:i,CONTEXT_UID:s}=this;if(i)for(let o=e-1;o>=0;--o){let n=r[o];n&&n._glTextures[s].samplerType!==oe.FLOAT&&this.renderer.texture.unbind(n)}}initTexture(e){let r=new Rc(this.gl.createTexture());return r.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=r,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),r}initTextureType(e,r){r.internalFormat=this.internalFormats[e.type]?.[e.format]??e.format,r.samplerType=this.samplerTypes[r.internalFormat]??oe.FLOAT,this.webGLVersion===2&&e.type===Pe.HALF_FLOAT?r.type=this.gl.HALF_FLOAT:r.type=e.type}updateTexture(e){let r=e._glTextures[this.CONTEXT_UID];if(!r)return;let i=this.renderer;if(this.initTextureType(e,r),e.resource?.upload(i,e,r))r.samplerType!==oe.FLOAT&&(this.hasIntegerTextures=!0);else{let s=e.realWidth,o=e.realHeight,n=i.gl;(r.width!==s||r.height!==o||r.dirtyId<0)&&(r.width=s,r.height=o,n.texImage2D(e.target,0,r.internalFormat,s,o,0,e.format,r.type,null))}e.dirtyStyleId!==r.dirtyStyleId&&this.updateTextureStyle(e),r.dirtyId=e.dirtyId}destroyTexture(e,r){let{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!r)){let s=this.managedTextures.indexOf(e);s!==-1&&YE(this.managedTextures,s,1)}}updateTextureStyle(e){let r=e._glTextures[this.CONTEXT_UID];r&&((e.mipmap===vs.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?r.mipmap=!1:r.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?r.wrapMode=wp.CLAMP:r.wrapMode=e.wrapMode,e.resource?.style(this.renderer,e,r)||this.setStyle(e,r),r.dirtyStyleId=e.dirtyStyleId)}setStyle(e,r){let i=this.gl;if(r.mipmap&&e.mipmap!==vs.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,r.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,r.wrapMode),r.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);let s=this.renderer.context.extensions.anisotropicFiltering;if(s&&e.anisotropicLevel>0&&e.scaleMode===is.LINEAR){let o=Math.min(e.anisotropicLevel,i.getParameter(s.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,s.TEXTURE_MAX_ANISOTROPY_EXT,o)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}};lh.extension={type:le.RendererSystem,name:"texture"};xe.add(lh);var uh=class{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,s)}unbind(){let{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,r){let{gl:i,renderer:s}=this;r&&s.shader.bind(r),i.beginTransformFeedback(e)}endTransformFeedback(){let{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){let{gl:r,renderer:i,CONTEXT_UID:s}=this,o=r.createTransformFeedback();e._glTransformFeedbacks[s]=o,r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,o);for(let n=0;n<e.buffers.length;n++){let a=e.buffers[n];a&&(i.buffer.update(a),a._glBuffers[s].refCount++,r.bindBufferBase(r.TRANSFORM_FEEDBACK_BUFFER,n,a._glBuffers[s].buffer||null))}return r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,null),e.disposeRunner.add(this),o}disposeTransformFeedback(e,r){let i=e._glTransformFeedbacks[this.CONTEXT_UID],s=this.gl;e.disposeRunner.remove(this);let o=this.renderer.buffer;if(o)for(let n=0;n<e.buffers.length;n++){let a=e.buffers[n];if(!a)continue;let c=a._glBuffers[this.CONTEXT_UID];c&&(c.refCount--,c.refCount===0&&!r&&o.dispose(a,r))}i&&(r||s.deleteTransformFeedback(i),delete e._glTransformFeedbacks[this.CONTEXT_UID])}destroy(){this.renderer=null}};uh.extension={type:le.RendererSystem,name:"transformFeedback"};xe.add(uh);var Ko=class{constructor(e){this.renderer=e}init(e){this.screen=new je(0,0,e.width,e.height),this.element=e.view||ge.ADAPTER.createCanvas(),this.resolution=e.resolution||ge.RESOLUTION,this.autoDensity=!!e.autoDensity}resizeView(e,r){this.element.width=Math.round(e*this.resolution),this.element.height=Math.round(r*this.resolution);let i=this.element.width/this.resolution,s=this.element.height/this.resolution;this.screen.width=i,this.screen.height=s,this.autoDensity&&(this.element.style.width=`${i}px`,this.element.style.height=`${s}px`),this.renderer.emit("resize",i,s),this.renderer.runners.resize.emit(this.screen.width,this.screen.height)}destroy(e){e&&this.element.parentNode?.removeChild(this.element),this.renderer=null,this.element=null,this.screen=null}};Ko.defaultOptions={width:800,height:600,resolution:void 0,autoDensity:!1},Ko.extension={type:[le.RendererSystem,le.CanvasRendererSystem],name:"_view"};xe.add(Ko);ge.PREFER_ENV=Ci.WEBGL2;ge.STRICT_TEXTURE_CACHE=!1;ge.RENDER_OPTIONS={...jo.defaultOptions,...Yo.defaultOptions,...Ko.defaultOptions,...qo.defaultOptions};Object.defineProperties(ge,{WRAP_MODE:{get(){return We.defaultOptions.wrapMode},set(t){De("7.1.0","settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"),We.defaultOptions.wrapMode=t}},SCALE_MODE:{get(){return We.defaultOptions.scaleMode},set(t){De("7.1.0","settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"),We.defaultOptions.scaleMode=t}},MIPMAP_TEXTURES:{get(){return We.defaultOptions.mipmap},set(t){De("7.1.0","settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"),We.defaultOptions.mipmap=t}},ANISOTROPIC_LEVEL:{get(){return We.defaultOptions.anisotropicLevel},set(t){De("7.1.0","settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"),We.defaultOptions.anisotropicLevel=t}},FILTER_RESOLUTION:{get(){return De("7.1.0","settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"),no.defaultResolution},set(t){no.defaultResolution=t}},FILTER_MULTISAMPLE:{get(){return De("7.1.0","settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"),no.defaultMultisample},set(t){no.defaultMultisample=t}},SPRITE_MAX_TEXTURES:{get(){return Xo.defaultMaxTextures},set(t){De("7.1.0","settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"),Xo.defaultMaxTextures=t}},SPRITE_BATCH_SIZE:{get(){return Xo.defaultBatchSize},set(t){De("7.1.0","settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"),Xo.defaultBatchSize=t}},CAN_UPLOAD_SAME_BUFFER:{get(){return Xo.canUploadSameBuffer},set(t){De("7.1.0","settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"),Xo.canUploadSameBuffer=t}},GC_MODE:{get(){return ao.defaultMode},set(t){De("7.1.0","settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"),ao.defaultMode=t}},GC_MAX_IDLE:{get(){return ao.defaultMaxIdle},set(t){De("7.1.0","settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"),ao.defaultMaxIdle=t}},GC_MAX_CHECK_COUNT:{get(){return ao.defaultCheckCountMax},set(t){De("7.1.0","settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"),ao.defaultCheckCountMax=t}},PRECISION_VERTEX:{get(){return ns.defaultVertexPrecision},set(t){De("7.1.0","settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"),ns.defaultVertexPrecision=t}},PRECISION_FRAGMENT:{get(){return ns.defaultFragmentPrecision},set(t){De("7.1.0","settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"),ns.defaultFragmentPrecision=t}}});var Ic=(t=>(t[t.INTERACTION=50]="INTERACTION",t[t.HIGH=25]="HIGH",t[t.NORMAL=0]="NORMAL",t[t.LOW=-25]="LOW",t[t.UTILITY=-50]="UTILITY",t))(Ic||{});var hh=class{constructor(e,r=null,i=0,s=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=r,this.priority=i,this.once=s}match(e,r=null){return this.fn===e&&this.context===r}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));let r=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),r}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);let r=this.next;return this.next=e?null:r,this.previous=null,r}};var cV=class ki{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new hh(null,null,1/0),this.deltaMS=1/ki.targetFPMS,this.elapsedMS=1/ki.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,r,i=Ic.NORMAL){return this._addListener(new hh(e,r,i))}addOnce(e,r,i=Ic.NORMAL){return this._addListener(new hh(e,r,i,!0))}_addListener(e){let r=this._head.next,i=this._head;if(!r)e.connect(i);else{for(;r;){if(e.priority>r.priority){e.connect(i);break}i=r,r=r.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,r){let i=this._head.next;for(;i;)i.match(e,r)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,r=this._head;for(;r=r.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let r;if(e>this.lastTime){if(r=this.elapsedMS=e-this.lastTime,r>this._maxElapsedMS&&(r=this._maxElapsedMS),r*=this.speed,this._minElapsedMS){let o=e-this._lastFrame|0;if(o<this._minElapsedMS)return;this._lastFrame=e-o%this._minElapsedMS}this.deltaMS=r,this.deltaTime=this.deltaMS*ki.targetFPMS;let i=this._head,s=i.next;for(;s;)s=s.emit(this.deltaTime);i.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=e}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(e){let r=Math.min(this.maxFPS,e),i=Math.min(Math.max(0,r)/1e3,ki.targetFPMS);this._maxElapsedMS=1/i}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(e){if(e===0)this._minElapsedMS=0;else{let r=Math.max(this.minFPS,e);this._minElapsedMS=1/(r/1e3)}}static get shared(){if(!ki._shared){let e=ki._shared=new ki;e.autoStart=!0,e._protected=!0}return ki._shared}static get system(){if(!ki._system){let e=ki._system=new ki;e.autoStart=!0,e._protected=!0}return ki._system}};cV.targetFPMS=.06;var as=cV;Object.defineProperties(ge,{TARGET_FPMS:{get(){return as.targetFPMS},set(t){De("7.1.0","settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"),as.targetFPMS=t}}});var am=class{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(r){this._ticker&&this._ticker.remove(this.render,this),this._ticker=r,r&&r.add(this.render,this,Ic.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?as.shared:new as,e.autoStart&&this.start()}static destroy(){if(this._ticker){let e=this._ticker;this.ticker=null,e.destroy()}}};am.extension=le.Application;xe.add(am);var $7=[];xe.handleByList(le.Renderer,$7);var cm=class{constructor(e){this.renderer=e}contextChange(e){let r;if(this.renderer.context.webGLVersion===1){let i=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),r=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,i)}else{let i=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),r=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,i)}r>=ft.HIGH?this.multisample=ft.HIGH:r>=ft.MEDIUM?this.multisample=ft.MEDIUM:r>=ft.LOW?this.multisample=ft.LOW:this.multisample=ft.NONE}destroy(){}};cm.extension={type:le.RendererSystem,name:"_multisample"};xe.add(cm);var y0=class{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}};var lm=class{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glBuffers[i]||this.createGLBuffer(e);r.bindBuffer(e.type,s.buffer)}unbind(e){let{gl:r}=this;r.bindBuffer(e,null)}bindBufferBase(e,r){let{gl:i,CONTEXT_UID:s}=this;if(this.boundBufferBases[r]!==e){let o=e._glBuffers[s]||this.createGLBuffer(e);this.boundBufferBases[r]=e,i.bindBufferBase(i.UNIFORM_BUFFER,r,o.buffer)}}bindBufferRange(e,r,i){let{gl:s,CONTEXT_UID:o}=this;i=i||0;let n=e._glBuffers[o]||this.createGLBuffer(e);s.bindBufferRange(s.UNIFORM_BUFFER,r||0,n.buffer,i*256,256)}update(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==s.updateID)if(s.updateID=e._updateID,r.bindBuffer(e.type,s.buffer),s.byteLength>=e.data.byteLength)r.bufferSubData(e.type,0,e.data);else{let o=e.static?r.STATIC_DRAW:r.DYNAMIC_DRAW;s.byteLength=e.data.byteLength,r.bufferData(e.type,e.data,o)}}dispose(e,r){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];let i=e._glBuffers[this.CONTEXT_UID],s=this.gl;e.disposeRunner.remove(this),i&&(r||s.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){let r=Object.keys(this.managedBuffers);for(let i=0;i<r.length;i++)this.dispose(this.managedBuffers[r[i]],e)}createGLBuffer(e){let{CONTEXT_UID:r,gl:i}=this;return e._glBuffers[r]=new y0(i.createBuffer()),this.managedBuffers[e.id]=e,e.disposeRunner.add(this),e._glBuffers[r]}};lm.extension={type:le.RendererSystem,name:"buffer"};xe.add(lm);var um=class{constructor(e){this.renderer=e}render(e,r){let i=this.renderer,s,o,n,a;if(r&&(s=r.renderTexture,o=r.clear,n=r.transform,a=r.skipUpdateTransform),this.renderingToScreen=!s,i.runners.prerender.emit(),i.emit("prerender"),i.projection.transform=n,!i.context.isLost){if(s||(this.lastObjectRendered=e),!a){let c=e.enableTempParent();e.updateTransform(),e.disableTempParent(c)}i.renderTexture.bind(s),i.batch.currentRenderer.start(),(o??i.background.clearBeforeRender)&&i.renderTexture.clear(),e.render(i),i.batch.currentRenderer.flush(),s&&(r.blit&&i.framebuffer.blit(),s.baseTexture.update()),i.runners.postrender.emit(),i.projection.transform=null,i.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}};um.extension={type:le.RendererSystem,name:"objectRenderer"};xe.add(um);var _0=class _A extends ch{constructor(e){super(),this.type=cE.WEBGL,e=Object.assign({},ge.RENDER_OPTIONS,e),this.gl=null,this.CONTEXT_UID=0,this.globalUniforms=new Fi({projectionMatrix:new St},!0);let r={runners:["init","destroy","contextChange","resolutionChange","reset","update","postrender","prerender","resize"],systems:_A.__systems,priority:["_view","textureGenerator","background","_plugin","startup","context","state","texture","buffer","geometry","framebuffer","transformFeedback","mask","scissor","stencil","projection","textureGC","filter","renderTexture","batch","objectRenderer","_multisample"]};this.setup(r),"useContextAlpha"in e&&(De("7.0.0","options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"),e.premultipliedAlpha=e.useContextAlpha&&e.useContextAlpha!=="notMultiplied",e.backgroundAlpha=e.useContextAlpha===!1?1:e.backgroundAlpha),this._plugin.rendererPlugins=_A.__plugins,this.options=e,this.startup.run(this.options)}static test(e){return e?.forceCanvas?!1:$E()}render(e,r){this.objectRenderer.render(e,r)}resize(e,r){this._view.resizeView(e,r)}reset(){return this.runners.reset.emit(),this}clear(){this.renderTexture.bind(),this.renderTexture.clear()}destroy(e=!1){this.runners.destroy.items.reverse(),this.emitWithCustomOptions(this.runners.destroy,{_view:e}),super.destroy()}get plugins(){return this._plugin.plugins}get multisample(){return this._multisample.multisample}get width(){return this._view.element.width}get height(){return this._view.element.height}get resolution(){return this._view.resolution}set resolution(e){this._view.resolution=e,this.runners.resolutionChange.emit(e)}get autoDensity(){return this._view.autoDensity}get view(){return this._view.element}get screen(){return this._view.screen}get lastObjectRendered(){return this.objectRenderer.lastObjectRendered}get renderingToScreen(){return this.objectRenderer.renderingToScreen}get rendererLogId(){return`WebGL ${this.context.webGLVersion}`}get clearBeforeRender(){return De("7.0.0","renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."),this.background.clearBeforeRender}get useContextAlpha(){return De("7.0.0","renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."),this.context.useContextAlpha}get preserveDrawingBuffer(){return De("7.0.0","renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"),this.context.preserveDrawingBuffer}get backgroundColor(){return De("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color}set backgroundColor(e){De("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color=e}get backgroundAlpha(){return De("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha}set backgroundAlpha(e){De("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha=e}get powerPreference(){return De("7.0.0","renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"),this.context.powerPreference}generateTexture(e,r){return this.textureGenerator.generateTexture(e,r)}};_0.extension={type:le.Renderer,priority:1},_0.__plugins={},_0.__systems={};var b0=_0;xe.handleByMap(le.RendererPlugin,b0.__plugins);xe.handleByMap(le.RendererSystem,b0.__systems);xe.add(b0);var oa=class extends Bi{constructor(e,r){let{width:i,height:s}=r||{};super(i,s),this.items=[],this.itemDirtyIds=[];for(let o=0;o<e;o++){let n=new We;this.items.push(n),this.itemDirtyIds.push(-2)}this.length=e,this._load=null,this.baseTexture=null}initFromArray(e,r){for(let i=0;i<this.length;i++)e[i]&&(e[i].castToBaseTexture?this.addBaseTextureAt(e[i].castToBaseTexture(),i):e[i]instanceof Bi?this.addResourceAt(e[i],i):this.addResourceAt(Xu(e[i],r),i))}dispose(){for(let e=0,r=this.length;e<r;e++)this.items[e].destroy();this.items=null,this.itemDirtyIds=null,this._load=null}addResourceAt(e,r){if(!this.items[r])throw new Error(`Index ${r} is out of bounds`);return e.valid&&!this.valid&&this.resize(e.width,e.height),this.items[r].setResource(e),this}bind(e){if(this.baseTexture!==null)throw new Error("Only one base texture per TextureArray is allowed");super.bind(e);for(let r=0;r<this.length;r++)this.items[r].parentTextureArray=e,this.items[r].on("update",e.update,e)}unbind(e){super.unbind(e);for(let r=0;r<this.length;r++)this.items[r].parentTextureArray=null,this.items[r].off("update",e.update,e)}load(){if(this._load)return this._load;let e=this.items.map(r=>r.resource).filter(r=>r).map(r=>r.load());return this._load=Promise.all(e).then(()=>{let{realWidth:r,realHeight:i}=this.items[0];return this.resize(r,i),this.update(),Promise.resolve(this)}),this._load}};var hm=class extends oa{constructor(e,r){let{width:i,height:s}=r||{},o,n;Array.isArray(e)?(o=e,n=e.length):n=e,super(n,{width:i,height:s}),o&&this.initFromArray(o,r)}addBaseTextureAt(e,r){if(e.resource)this.addResourceAt(e.resource,r);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=Ho.TEXTURE_2D_ARRAY}upload(e,r,i){let{length:s,itemDirtyIds:o,items:n}=this,{gl:a}=e;i.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,s,0,r.format,i.type,null);for(let c=0;c<s;c++){let l=n[c];o[c]<l.dirtyId&&(o[c]=l.dirtyId,l.valid&&a.texSubImage3D(a.TEXTURE_2D_ARRAY,0,0,0,c,l.resource.width,l.resource.height,1,r.format,i.type,l.resource.source))}return!0}};var dm=class extends lr{constructor(e){super(e)}static test(e){let{OffscreenCanvas:r}=globalThis;return r&&e instanceof r?!0:globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement}};var lV=class fm extends oa{constructor(e,r){let{width:i,height:s,autoLoad:o,linkBaseTexture:n}=r||{};if(e&&e.length!==fm.SIDES)throw new Error(`Invalid length. Got ${e.length}, expected 6`);super(6,{width:i,height:s});for(let a=0;a<fm.SIDES;a++)this.items[a].target=Ho.TEXTURE_CUBE_MAP_POSITIVE_X+a;this.linkBaseTexture=n!==!1,e&&this.initFromArray(e,r),o!==!1&&this.load()}bind(e){super.bind(e),e.target=Ho.TEXTURE_CUBE_MAP}addBaseTextureAt(e,r,i){if(i===void 0&&(i=this.linkBaseTexture),!this.items[r])throw new Error(`Index ${r} is out of bounds`);if(!this.linkBaseTexture||e.parentTextureArray||Object.keys(e._glTextures).length>0)if(e.resource)this.addResourceAt(e.resource,r);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=Ho.TEXTURE_CUBE_MAP_POSITIVE_X+r,e.parentTextureArray=this.baseTexture,this.items[r]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[r]=e,this}upload(e,r,i){let s=this.itemDirtyIds;for(let o=0;o<fm.SIDES;o++){let n=this.items[o];(s[o]<n.dirtyId||i.dirtyId<r.dirtyId)&&(n.valid&&n.resource?(n.resource.upload(e,n,i),s[o]=n.dirtyId):s[o]<-1&&(e.gl.texImage2D(n.target,0,i.internalFormat,r.realWidth,r.realHeight,0,r.format,i.type,null),s[o]=-1))}return!0}static test(e){return Array.isArray(e)&&e.length===fm.SIDES}};lV.SIDES=6;var bA=lV;var pm=class t extends lr{constructor(e,r){r=r||{};let i,s,o;typeof e=="string"?(i=t.EMPTY,s=e,o=!0):(i=e,s=null,o=!1),super(i),this.url=s,this.crossOrigin=r.crossOrigin??!0,this.alphaMode=typeof r.alphaMode=="number"?r.alphaMode:null,this.ownsImageBitmap=r.ownsImageBitmap??o,this._load=null,r.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(async(e,r)=>{if(this.url===null){e(this);return}try{let i=await ge.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;let s=await i.blob();if(this.destroyed)return;let o=await createImageBitmap(s,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ri.UNPACK?"premultiply":"none"});if(this.destroyed){o.close();return}this.source=o,this.update(),e(this)}catch(i){if(this.destroyed)return;r(i),this.onError.emit(i)}}),this._load)}upload(e,r,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(r.alphaMode=this.alphaMode),super.upload(e,r,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return t._EMPTY=t._EMPTY??ge.ADAPTER.createCanvas(0,0),t._EMPTY}};var vA=class v0 extends lr{constructor(e,r){r=r||{},super(ge.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=r.scale||1,this._overrideWidth=r.width,this._overrideHeight=r.height,this._resolve=null,this._crossorigin=r.crossorigin,this._load=null,r.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},v0.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){let e=new Image;lr.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=r=>{this._resolve&&(e.onerror=null,this.onError.emit(r))},e.onload=()=>{if(!this._resolve)return;let r=e.width,i=e.height;if(!r||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let s=r*this.scale,o=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(s=this._overrideWidth||this._overrideHeight/i*r,o=this._overrideHeight||this._overrideWidth/r*i),s=Math.round(s),o=Math.round(o);let n=this.source;n.width=s,n.height=o,n._pixiId=`canvas_${Wo()}`,n.getContext("2d").drawImage(e,0,0,r,i,0,0,s,o),this._resolve(),this._resolve=null}}static getSize(e){let r=v0.SVG_SIZE.exec(e),i={};return r&&(i[r[1]]=Math.round(parseFloat(r[3])),i[r[5]]=Math.round(parseFloat(r[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,r){return r==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&v0.SVG_XML.test(e)}};vA.SVG_XML=/^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m,vA.SVG_SIZE=/<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var SA=vA;var S0=class extends lr{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}};var TA=class wA extends lr{constructor(e,r){if(r=r||{},!(e instanceof HTMLVideoElement)){let i=document.createElement("video");r.autoLoad!==!1&&i.setAttribute("preload","auto"),r.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),r.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),r.loop===!0&&i.setAttribute("loop",""),r.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);let s=e[0].src||e[0];lr.crossOrigin(i,s,r.crossorigin);for(let o=0;o<e.length;++o){let n=document.createElement("source"),{src:a,mime:c}=e[o];if(a=a||e[o],a.startsWith("data:"))c=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){let l=a.split("?").shift().toLowerCase(),h=l.slice(l.lastIndexOf(".")+1);c=c||wA.MIME_TYPES[h]||`video/${h}`}n.src=a,c&&(n.type=c),i.appendChild(n)}e=i}super(e),this.noSubImage=!0,this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=r.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=r.autoPlay!==!1,this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),r.autoLoad!==!1&&this.load()}update(e=0){if(!this.destroyed){if(this._updateFPS){let r=as.shared.elapsedMS*this.source.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-r)}(!this._updateFPS||this._msToNextUpdate<=0)&&(super.update(),this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0)}}_videoFrameRequestCallback(){this.update(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)}load(){if(this._load)return this._load;let e=this.source;return(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._load=new Promise((r,i)=>{this.valid?r(this):(this._resolve=r,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){let e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){let e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);let r=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!r&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();let e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(as.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(as.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(as.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,r){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||wA.TYPES.includes(r)}};TA.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],TA.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var EA=TA;Gp.push(pm,Ac,dm,EA,S0,SA,yc,bA,hm);var X7={vec3(t,e,r,i){(r[0]!==i[0]||r[1]!==i[1]||r[2]!==i[2])&&(r[0]=i[0],r[1]=i[1],r[2]=i[2],t.uniform3f(e,i[0],i[1],i[2]))},int(t,e,r,i){t.uniform1i(e,i)},ivec2(t,e,r,i){t.uniform2i(e,i[0],i[1])},ivec3(t,e,r,i){t.uniform3i(e,i[0],i[1],i[2])},ivec4(t,e,r,i){t.uniform4i(e,i[0],i[1],i[2],i[3])},uint(t,e,r,i){t.uniform1ui(e,i)},uvec2(t,e,r,i){t.uniform2ui(e,i[0],i[1])},uvec3(t,e,r,i){t.uniform3ui(e,i[0],i[1],i[2])},uvec4(t,e,r,i){t.uniform4ui(e,i[0],i[1],i[2],i[3])},bvec2(t,e,r,i){t.uniform2i(e,i[0],i[1])},bvec3(t,e,r,i){t.uniform3i(e,i[0],i[1],i[2])},bvec4(t,e,r,i){t.uniform4i(e,i[0],i[1],i[2],i[3])},mat2(t,e,r,i){t.uniformMatrix2fv(e,!1,i)},mat4(t,e,r,i){t.uniformMatrix4fv(e,!1,i)}},Y7={float(t,e,r,i){t.uniform1fv(e,i)},vec2(t,e,r,i){t.uniform2fv(e,i)},vec3(t,e,r,i){t.uniform3fv(e,i)},vec4(t,e,r,i){t.uniform4fv(e,i)},int(t,e,r,i){t.uniform1iv(e,i)},ivec2(t,e,r,i){t.uniform2iv(e,i)},ivec3(t,e,r,i){t.uniform3iv(e,i)},ivec4(t,e,r,i){t.uniform4iv(e,i)},uint(t,e,r,i){t.uniform1uiv(e,i)},uvec2(t,e,r,i){t.uniform2uiv(e,i)},uvec3(t,e,r,i){t.uniform3uiv(e,i)},uvec4(t,e,r,i){t.uniform4uiv(e,i)},bool(t,e,r,i){t.uniform1iv(e,i)},bvec2(t,e,r,i){t.uniform2iv(e,i)},bvec3(t,e,r,i){t.uniform3iv(e,i)},bvec4(t,e,r,i){t.uniform4iv(e,i)},sampler2D(t,e,r,i){t.uniform1iv(e,i)},samplerCube(t,e,r,i){t.uniform1iv(e,i)},sampler2DArray(t,e,r,i){t.uniform1iv(e,i)}};function uV(t,e,r,i,s){let o=0,n=null,a=null,c=s.gl;for(let l in t.uniforms){let h=e[l],u=i[l],d=r[l],f=t.uniforms[l];if(!h){f.group===!0&&s.shader.syncUniformGroup(u);continue}h.type==="float"&&h.size===1&&!h.isArray?u!==d.value&&(d.value=u,c.uniform1f(d.location,u)):h.type==="bool"&&h.size===1&&!h.isArray?u!==d.value&&(d.value=u,c.uniform1i(d.location,Number(u))):(h.type==="sampler2D"||h.type==="samplerCube"||h.type==="sampler2DArray")&&h.size===1&&!h.isArray?(s.texture.bind(u,o),d.value!==o&&(d.value=o,c.uniform1i(d.location,o)),o++):h.type==="mat3"&&h.size===1&&!h.isArray?f.a!==void 0?c.uniformMatrix3fv(d.location,!1,u.toArray(!0)):c.uniformMatrix3fv(d.location,!1,u):h.type==="vec2"&&h.size===1&&!h.isArray?f.x!==void 0?(a=d.value,n=u,(a[0]!==n.x||a[1]!==n.y)&&(a[0]=n.x,a[1]=n.y,c.uniform2f(d.location,n.x,n.y))):(a=d.value,n=u,(a[0]!==n[0]||a[1]!==n[1])&&(a[0]=n[0],a[1]=n[1],c.uniform2f(d.location,n[0],n[1]))):h.type==="vec4"&&h.size===1&&!h.isArray?f.width!==void 0?(a=d.value,n=u,(a[0]!==n.x||a[1]!==n.y||a[2]!==n.width||a[3]!==n.height)&&(a[0]=n.x,a[1]=n.y,a[2]=n.width,a[3]=n.height,c.uniform4f(d.location,n.x,n.y,n.width,n.height))):(a=d.value,n=u,(a[0]!==n[0]||a[1]!==n[1]||a[2]!==n[2]||a[3]!==n[3])&&(a[0]=n[0],a[1]=n[1],a[2]=n[2],a[3]=n[3],c.uniform4f(d.location,n[0],n[1],n[2],n[3]))):(h.size===1&&!h.isArray?X7:Y7)[h.type].call(null,c,d.location,d.value,u)}}function j7(){Object.assign(sa.prototype,{systemCheck(){},syncUniforms(t,e){let{shader:r,renderer:i}=this;uV(t,r.program.uniformData,e.uniformData,t.uniforms,i)}})}j7();var AA="__route_graphics_audio_root__",mm="__route_graphics_audio_direct__",q7=16,K7=1024,RA=new WeakMap,mV=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,Jo=(t,e={})=>{mV()&&console.log(`[AudioStage] ${t}`,e)},kc=(t,e)=>{t&&e&&typeof t.connect=="function"&&t.connect(e)},Fc=t=>{t&&typeof t.disconnect=="function"&&t.disconnect()},cs=(t,e=0)=>{let r=Number(t);return Number.isFinite(r)?r:e},IA=(t,e=0)=>cs(t?.value,e),Q7=(t,e)=>{if(t.length===0)return 0;let r=t[t.length-1];if(e>=r.time)return r.value;for(let i=1;i<t.length;i++){let s=t[i-1],o=t[i];if(e>=o.time||o.time===s.time)continue;let n=Math.max(0,Math.min(1,(e-s.time)/(o.time-s.time))),a=t_(o.easing)(n);return s.value+(o.value-s.value)*a}return r.value},J7=(t,e=_r())=>{let r=RA.get(t);if(!r)return IA(t);let i=Math.max(0,(e.currentTime-r.startTime)*1e3);return r.normalizeValue(Q7(r.timeline,i))},T0=(t,e,r)=>{typeof t.setValueAtTime=="function"?t.setValueAtTime(e,r):t.value=e},gV=(t=_r())=>{if(t.state==="suspended"&&typeof t.resume=="function"){let e=t.state;return Jo("resume requested",{state:e}),t.resume().then(()=>{Jo("resume resolved",{previousState:e,state:t.state})}).catch(r=>{mV()&&console.warn("[AudioStage] resume failed",{previousState:e,state:t.state,error:r})})}return Jo("resume skipped",{state:t.state,canResume:typeof t.resume=="function"}),Promise.resolve()},BA=(t,e,r=_r())=>{if(!t)return;let i=r.currentTime,s=cs(e,IA(t));typeof t.cancelScheduledValues=="function"&&t.cancelScheduledValues(i),T0(t,s,i),RA.set(t,{startTime:i,timeline:[{time:0,value:s,easing:"linear"}],normalizeValue:o=>o})},Z7=({transition:t,currentValue:e,normalizeTransitionValue:r,denormalizeParamValue:i})=>{let s=t.initialValue===void 0?i(e):t.initialValue,o=r(s),n=i(o),a=0,c=[{time:0,value:o,easing:"linear"}];for(let l of t.keyframes){a+=Math.max(0,cs(l.duration,0));let h=l.relative?n+l.value:l.value,u=r(h);n=i(u),c.push({time:a,value:u,easing:l.easing??"linear"})}return c},eK=({param:t,start:e,end:r,startTime:i,normalizeValue:s})=>{let o=r.time-e.time,n=i+r.time/1e3;if(o<=0){T0(t,r.value,n);return}if(typeof t.linearRampToValueAtTime!="function"){T0(t,r.value,n);return}if(r.easing==="linear"){t.linearRampToValueAtTime(r.value,n);return}let a=t_(r.easing),c=Math.min(K7,Math.max(1,Math.ceil(o/q7)));for(let l=1;l<=c;l++){let h=l/c,u=s(e.value+(r.value-e.value)*a(h)),d=i+(e.time+o*h)/1e3;t.linearRampToValueAtTime(u,d)}},tK=({param:t,transition:e,normalizeTransitionValue:r,denormalizeParamValue:i,normalizeParamValue:s,context:o=_r()})=>{if(!t)return 0;let n=o.currentTime,a=J7(t,o),c=Z7({transition:e,currentValue:a,normalizeTransitionValue:r,denormalizeParamValue:i});!(e.initialValue!==void 0)&&typeof t.cancelAndHoldAtTime=="function"?t.cancelAndHoldAtTime(n):typeof t.cancelScheduledValues=="function"&&t.cancelScheduledValues(n),T0(t,c[0].value,n);for(let h=1;h<c.length;h++)eK({param:t,start:c[h-1],end:c[h],startTime:n,normalizeValue:s});return RA.set(t,{startTime:n,timeline:c,normalizeValue:s}),c[c.length-1].time},xV=(t=1)=>{let e=_r(),r=e.createGain();return BA(r.gain,t,e),r},yV=(t=0)=>{let e=_r();if(typeof e.createStereoPanner!="function")return null;let r=e.createStereoPanner();return BA(r.pan,t,e),r},Es=({volume:t,muted:e})=>e?0:Ve(t,100),hV=(t,e)=>t.src===e.src&&t.startAt===e.startAt&&t.endAt===e.endAt&&t.startDelayMs===e.startDelayMs,rK=(t,e=1)=>{let r=Number(e),i=Number.isFinite(r)?r:1,s=Number(t??i),o=Number.isFinite(s)?s:i;return Ve(o*100,i*100)*100},Ui=(t=[],e,r,i)=>t.find(o=>o.type==="audio-transition"&&o.targetId===e)?.properties?.[r]?.[i]??null,FA=({param:t,targetValue:e,transition:r,normalizeTargetValue:i=n=>n,normalizeTransitionValue:s=i,denormalizeParamValue:o=n=>n})=>{if(!t)return 0;let n=i(e);return r?tK({param:t,transition:r,normalizeTransitionValue:s,denormalizeParamValue:o,normalizeParamValue:i}):(BA(t,n),0)},Qo=({gainNode:t,targetValue:e,transition:r})=>FA({param:t?.gain,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(0,Math.min(1,cs(i,1))),normalizeTransitionValue:i=>Ve(i,100),denormalizeParamValue:i=>i*100}),Bc=({pannerNode:t,targetValue:e,transition:r})=>FA({param:t?.pan,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(-1,Math.min(1,cs(i,0)))}),CA=({source:t,targetValue:e,transition:r})=>FA({param:t?.playbackRate,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(0,cs(i,1))}),MA=(t,e)=>{let r=xV(Es(t)),i=yV(t.pan??0);return kc(r,i??e),i&&kc(i,e),{id:t.id,gainNode:r,pannerNode:i,volume:t.volume??100,muted:t.muted??!1,pan:t.pan??0,outputNode:e,cleanupTimeoutId:null}},iK=({sound:t,channelNode:e,internalId:r})=>{let i=xV(Es(t)),s=yV(t.pan??0);return kc(i,s??e),s&&kc(s,e),{internalId:r,id:t.id,src:t.src,url:t.src,loop:t.loop??!1,volume:t.volume??100,muted:t.muted??!1,pan:t.pan??0,startDelayMs:t.startDelayMs??0,playbackRate:t.playbackRate??1,startAt:t.startAt??0,endAt:t.endAt??null,channelId:t.channelId??null,gainNode:i,pannerNode:s,source:null,sourceEnded:!1,onSourceEnded:null,finishing:!1,playbackRateTransition:null,pendingTimeoutId:null,cleanupTimeoutId:null,playRequestId:0}},sK=t=>{let e=_r(),r=Mi.getAsset(t.src);if(Jo("asset lookup",{id:t.id,src:t.src,found:!!r,duration:r?.duration??null,contextState:e.state}),!r)return console.warn("AudioStage: asset not found",t.src),null;let i=e.createBufferSource();i.buffer=r,i.loop=t.loop??!1,CA({source:i,targetValue:t.playbackRate??1,transition:t.playbackRateTransition}),t.playbackRateTransition=null,kc(i,t.gainNode),t.sourceEnded=!1,i.onended=()=>{t.source===i&&(t.sourceEnded=!0,t.onSourceEnded?.())};let s=t.startAt??0,o=t.endAt!==null&&t.endAt!==void 0?Math.max(t.endAt-s,0):void 0,n=Math.max(0,cs(e.currentTime,0));return i.loop&&t.endAt!==null&&t.endAt!==void 0?(i.loopStart=s,i.loopEnd=t.endAt,i.start(n,s)):o!==void 0?i.start(n,s,o):i.start(n,s),Jo("source started",{id:t.id,src:t.src,loop:i.loop,startTime:n,offset:s,duration:o??null,playbackRate:t.playbackRate,gain:IA(t.gainNode?.gain,null),contextState:e.state}),i},dV=t=>{t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null);let e=_r(),r=(t.playRequestId??0)+1;t.playRequestId=r,Jo("play requested",{id:t.id,src:t.src,loop:t.loop,volume:t.volume,muted:t.muted,startDelayMs:t.startDelayMs,contextState:e.state});let i=e.state==="suspended"&&typeof e.resume=="function",s=()=>{t.playRequestId===r&&(t.pendingTimeoutId=null,t.source=sK(t))},o=()=>{if(t.playRequestId===r){if(t.startDelayMs>0){t.pendingTimeoutId=setTimeout(s,t.startDelayMs);return}s()}},n=gV(e);if(i){n.then(o);return}o()},_V=(t,e=0)=>{if(t.playRequestId=(t.playRequestId??0)+1,t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null),!t.source)return;let r=_r();try{t.source.stop(r.currentTime+e/1e3)}catch{}},PA=t=>{t.onSourceEnded=null,t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null),t.cleanupTimeoutId!==null&&(clearTimeout(t.cleanupTimeoutId),t.cleanupTimeoutId=null),_V(t),Fc(t.source),Fc(t.gainNode),Fc(t.pannerNode)},fV=t=>{t.cleanupTimeoutId!==null&&(clearTimeout(t.cleanupTimeoutId),t.cleanupTimeoutId=null),Fc(t.gainNode),Fc(t.pannerNode)},pV=(t,e)=>e<=0?(t(),null):setTimeout(t,e);var bV=()=>{let t=new Map,e=new Map,r=new Map,i=new Map,s=0,o=b=>{let w=t.get(b);if(w)return w;let A=MA({id:b,volume:100,muted:!1,pan:0},_r().destination);return t.set(b,A),A},n=(b,w,A)=>{let C=t.get(b.id),R=Ui(w,b.id,"volume",A),P=Ui(w,b.id,"pan",A);if(C&&C.cleanupTimeoutId!==null){let F=MA(b,_r().destination);return t.set(b.id,F),Qo({gainNode:F.gainNode,targetValue:Es(b),transition:R}),Bc({pannerNode:F.pannerNode,targetValue:b.pan,transition:P}),F}if(C){let F=Es(C),V=Es(b),z=F!==V,H=C.pan!==(b.pan??0);return C.volume=b.volume,C.muted=b.muted,C.pan=b.pan,z&&R?Qo({gainNode:C.gainNode,targetValue:V,transition:R}):z&&Qo({gainNode:C.gainNode,targetValue:V,transition:null}),H&&Bc({pannerNode:C.pannerNode,targetValue:b.pan,transition:P}),C}let U=MA(b,_r().destination);return t.set(b.id,U),Qo({gainNode:U.gainNode,targetValue:Es(b),transition:R}),Bc({pannerNode:U.pannerNode,targetValue:b.pan,transition:P}),U},a=b=>{let w=b.channelId!==null?t.get(b.channelId):o(AA);if(!w)throw new Error(`Input error: sound "${b.id}" references missing channel.`);return w},c=(b,w)=>{Fc(b.gainNode),Fc(b.pannerNode),kc(b.gainNode,b.pannerNode??w),b.pannerNode&&kc(b.pannerNode,w)},l=(b,w)=>{if(!b||b.id===AA||b.id===mm)return 0;let A=Ui(w,b.id,"volume","exit"),C=Ui(w,b.id,"pan","exit"),R=Qo({gainNode:b.gainNode,targetValue:Es(b),transition:A}),P=Bc({pannerNode:b.pannerNode,targetValue:b.pan,transition:C});return Math.max(R,P)},h=({sound:b,effects:w,phase:A,internalId:C})=>{let R=a(b),P=iK({sound:b,channelNode:R.gainNode,internalId:C});e.set(C,P),r.set(b.id,C);let U=Ui(w,b.id,"volume",A),F=Ui(w,b.id,"pan",A);return Qo({gainNode:P.gainNode,targetValue:Es(b),transition:U}),Bc({pannerNode:P.pannerNode,targetValue:b.pan,transition:F}),P.playbackRateTransition=Ui(w,b.id,"playbackRate",A),dV(P),P},u=(b,w,A=0)=>{if(!b)return 0;b.finishing=!1,b.onSourceEnded=null;let C=Ui(w,b.id,"volume","exit"),R=Ui(w,b.id,"pan","exit"),P=Ui(w,b.id,"playbackRate","exit"),U=Qo({gainNode:b.gainNode,targetValue:Es(b),transition:C}),F=Bc({pannerNode:b.pannerNode,targetValue:b.pan,transition:R}),V=CA({source:b.source,targetValue:b.playbackRate,transition:P}),z=Math.max(U,F,V),H=Math.max(z,A);return _V(b,H),b.cleanupTimeoutId=pV(()=>{PA(b),e.delete(b.internalId)},H),H},d=b=>{if(!b||b.finishing)return;b.finishing=!0,b.loop=!1;let w=()=>{b.finishing&&(b.finishing=!1,b.onSourceEnded=null,PA(b),e.get(b.internalId)===b&&e.delete(b.internalId))};if(!b.source||b.sourceEnded||_r().state!=="running"){w();return}b.source.loop=!1,b.onSourceEnded=w},f=({instance:b,sound:w,effects:A})=>{let C=Es(b),R=Es(w),P=C!==R,U=b.pan!==w.pan,F=b.playbackRate!==w.playbackRate,V=b.startDelayMs!==w.startDelayMs;if(b.channelId!==w.channelId){let H=a(w);c(b,H.gainNode)}b.loop=w.loop,b.volume=w.volume,b.muted=w.muted,b.pan=w.pan,b.startDelayMs=w.startDelayMs,b.playbackRate=w.playbackRate,b.startAt=w.startAt,b.endAt=w.endAt,b.channelId=w.channelId,b.source&&(b.source.loop=w.loop);let z=Ui(A,w.id,"volume","update");if(P&&z?Qo({gainNode:b.gainNode,targetValue:R,transition:z}):P&&Qo({gainNode:b.gainNode,targetValue:R,transition:null}),U&&Bc({pannerNode:b.pannerNode,targetValue:w.pan,transition:Ui(A,w.id,"pan","update")}),F){let H=Ui(A,w.id,"playbackRate","update");b.source?CA({source:b.source,targetValue:w.playbackRate,transition:H}):b.playbackRateTransition=H}V&&b.pendingTimeoutId!==null&&dV(b)};return{add:b=>{let w=e.get(`direct:${b.id}`);w?.finishing&&u(w,[],0);let A={id:b.id,type:"sound",src:b.url??b.src,loop:b.loop??!1,volume:rK(b.volume),muted:b.muted??!1,pan:cs(b.pan,0),startDelayMs:Math.max(0,cs(b.startDelayMs,0)),playbackRate:cs(b.playbackRate,1),startAt:Math.max(0,cs(b.startAt,0)),endAt:b.endAt!==void 0&&b.endAt!==null?Math.max(0,cs(b.endAt,0)):null};i.set(b.id,A),Jo("direct add",{id:A.id,src:A.src,loop:A.loop,volume:A.volume,muted:A.muted,pan:A.pan})},remove:b=>{let w=`direct:${b}`,A=e.get(w);Jo("direct remove",{id:b,hadAudio:i.has(b),hadInstance:!!A}),i.delete(b),r.delete(b),A&&u(A,[],0)},finish:b=>{let w=`direct:${b}`,A=e.get(w);Jo("direct finish",{id:b,hadAudio:i.has(b),hadInstance:!!A}),i.delete(b),r.delete(b),d(A)},getById:b=>i.get(b),resume:()=>gV(_r()),tick:()=>{let b=o(mm);for(let w of i.values()){let A=`direct:${w.id}`,C=e.get(A);if(!C){let R={...w,channelId:mm};h({sound:R,effects:[],phase:"enter",internalId:A});continue}if(C.src!==w.src){u(C,[],0);let R={...w,channelId:mm};h({sound:R,effects:[],phase:"enter",internalId:A});continue}f({instance:C,sound:{...w,channelId:mm},effects:[]})}for(let[w,A]of e)w.startsWith("direct:")&&!i.has(A.id)&&!A.finishing&&(u(A,[],0),r.delete(A.id));return b},renderGraph:({prevAudio:b=[],nextAudio:w=[],prevAudioEffects:A=[],nextAudioEffects:C=[]}={})=>{let R=Zn({audio:b,audioEffects:A}),P=Zn({audio:w,audioEffects:C}),U=new Map(R.channels.map(I=>[I.id,I])),F=new Map(P.channels.map(I=>[I.id,I])),V=new Map(R.sounds.map(I=>[I.id,I])),z=new Map(P.sounds.map(I=>[I.id,I]));for(let I of U.keys())if(z.has(I))throw new Error(`Input error: audio node "${I}" cannot change type from "audio-channel" to "sound" between render states.`);for(let I of V.keys())if(F.has(I))throw new Error(`Input error: audio node "${I}" cannot change type from "sound" to "audio-channel" between render states.`);o(AA);let H=new Map,Q=new Map;for(let[I]of U)if(!F.has(I)){let L=l(t.get(I),A);H.set(I,t.get(I)),Q.set(I,L)}for(let[I,L]of F)n(L,C,U.has(I)?"update":"enter");for(let[I,L]of V){let J=z.get(I),te=r.get(I),W=te?e.get(te):null,ne=L.channelId?Q.get(L.channelId)??0:0;if(!J){let ce=u(W,A,ne);L.channelId&&Q.set(L.channelId,Math.max(Q.get(L.channelId)??0,ce)),r.delete(I);continue}if(!hV(L,J)){let ce=u(W,A,ne);L.channelId&&Q.set(L.channelId,Math.max(Q.get(L.channelId)??0,ce)),h({sound:J,effects:C,phase:"enter",internalId:`render:${I}:${++s}`})}}for(let[I,L]of z){if(!V.has(I)){h({sound:L,effects:C,phase:"enter",internalId:`render:${I}:${++s}`});continue}let J=V.get(I);if(!hV(J,L))continue;let te=r.get(I),W=te?e.get(te):null;W&&f({instance:W,sound:L,effects:C})}for(let[I,L]of H){if(!L)continue;let J=Q.get(I)??0;L.cleanupTimeoutId=pV(()=>{fV(L),t.get(I)===L&&t.delete(I)},J)}},destroy:()=>{for(let b of e.values())PA(b);for(let b of t.values())fV(b);e.clear(),r.clear(),t.clear(),i.clear()},_inspect:()=>({channels:t,sounds:e,currentSoundKeyById:r,directAudios:i})}};var oK=({JSONObject:t,parserPlugins:e=[]})=>t.map(i=>{let s=e.find(o=>o.type===i.type);if(!s)throw new Error(`No parser plugin found for element type: ${i.type} (id: ${i.id??"unknown"})`);return s.parse({state:i,parserPlugins:e})});var kA=oK;var vV=({type:t,parse:e})=>({type:t,parse:e});var UA=typeof navigator<"u"?navigator.userAgent.toLowerCase().indexOf("firefox")>0:!1;function LA(t,e,r,i){t.addEventListener?t.addEventListener(e,r,i):t.attachEvent&&t.attachEvent(`on${e}`,r)}function gm(t,e,r,i){t&&(t.removeEventListener?t.removeEventListener(e,r,i):t.detachEvent&&t.detachEvent(`on${e}`,r))}function wV(t,e){let r=e.slice(0,e.length-1),i=[];for(let s=0;s<r.length;s++)i.push(t[r[s].toLowerCase()]);return i}function EV(t){typeof t!="string"&&(t=""),t=t.replace(/\s/g,"");let e=t.split(","),r=e.lastIndexOf("");for(;r>=0;)e[r-1]+=",",e.splice(r,1),r=e.lastIndexOf("");return e}function nK(t,e){let r=t.length>=e.length?t:e,i=t.length>=e.length?e:t,s=!0;for(let o=0;o<r.length;o++)i.indexOf(r[o])===-1&&(s=!1);return s}function AV(t){let e=t.keyCode||t.which||t.charCode;return t.code&&/^Key[A-Z]$/.test(t.code)&&(e=t.code.charCodeAt(3)),e}var _m={backspace:8,"\u232B":8,tab:9,clear:12,enter:13,"\u21A9":13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,arrowup:38,arrowdown:40,arrowleft:37,arrowright:39,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,num_0:96,num_1:97,num_2:98,num_3:99,num_4:100,num_5:101,num_6:102,num_7:103,num_8:104,num_9:105,num_multiply:106,num_add:107,num_enter:108,num_subtract:109,num_decimal:110,num_divide:111,"\u21EA":20,",":188,".":190,"/":191,"`":192,"-":UA?173:189,"=":UA?61:187,";":UA?59:186,"'":222,"{":219,"}":221,"[":219,"]":221,"\\":220},As={"\u21E7":16,shift:16,"\u2325":18,alt:18,option:18,"\u2303":17,ctrl:17,control:17,"\u2318":91,cmd:91,meta:91,command:91},xm={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},Tr={16:!1,18:!1,17:!1,91:!1},Gt={};for(let t=1;t<20;t++)_m[`f${t}`]=111+t;var Ot=[],ym=null,MV="all",Zo=new Map,dh=t=>_m[t.toLowerCase()]||As[t.toLowerCase()]||t.toUpperCase().charCodeAt(0),aK=t=>Object.keys(_m).find(e=>_m[e]===t),cK=t=>Object.keys(As).find(e=>As[e]===t),PV=t=>{MV=t||"all"},bm=()=>MV||"all",lK=()=>Ot.slice(0),uK=()=>Ot.map(t=>aK(t)||cK(t)||String.fromCharCode(t)),hK=()=>{let t=[];return Object.keys(Gt).forEach(e=>{Gt[e].forEach(({key:r,scope:i,mods:s,shortcut:o})=>{t.push({scope:i,shortcut:o,mods:s,keys:r.split("+").map(n=>dh(n))})})}),t},CV=t=>{let e=t.target||t.srcElement,{tagName:r}=e,i=!0,s=r==="INPUT"&&!["checkbox","radio","range","button","file","reset","submit","color"].includes(e.type);return(e.isContentEditable||(s||r==="TEXTAREA"||r==="SELECT")&&!e.readOnly)&&(i=!1),i},dK=t=>(typeof t=="string"&&(t=dh(t)),Ot.indexOf(t)!==-1),fK=(t,e)=>{let r,i;t||(t=bm());for(let s in Gt)if(Object.prototype.hasOwnProperty.call(Gt,s))for(r=Gt[s],i=0;i<r.length;)r[i].scope===t?r.splice(i,1).forEach(({element:o})=>DA(o)):i++;bm()===t&&PV(e||"all")};function pK(t){let e=AV(t);t.key&&t.key.toLowerCase()==="capslock"&&(e=dh(t.key));let r=Ot.indexOf(e);if(r>=0&&Ot.splice(r,1),t.key&&t.key.toLowerCase()==="meta"&&Ot.splice(0,Ot.length),(e===93||e===224)&&(e=91),e in Tr){Tr[e]=!1;for(let i in As)As[i]===e&&(rr[i]=!1)}}var RV=(t,...e)=>{if(typeof t>"u")Object.keys(Gt).forEach(r=>{Array.isArray(Gt[r])&&Gt[r].forEach(i=>w0(i)),delete Gt[r]}),DA(null);else if(Array.isArray(t))t.forEach(r=>{r.key&&w0(r)});else if(typeof t=="object")t.key&&w0(t);else if(typeof t=="string"){let[r,i]=e;typeof r=="function"&&(i=r,r=""),w0({key:t,scope:r,method:i,splitKey:"+"})}},w0=({key:t,scope:e,method:r,splitKey:i="+"})=>{EV(t).forEach(s=>{let o=s.split(i),n=o.length,a=o[n-1],c=a==="*"?"*":dh(a);if(!Gt[c])return;e||(e=bm());let l=n>1?wV(As,o):[],h=[];Gt[c]=Gt[c].filter(u=>{let d=(r?u.method===r:!0)&&u.scope===e&&nK(u.mods,l);return d&&h.push(u.element),!d}),h.forEach(u=>DA(u))})};function SV(t,e,r,i){if(e.element!==i)return;let s;if(e.scope===r||e.scope==="all"){s=e.mods.length>0;for(let o in Tr)Object.prototype.hasOwnProperty.call(Tr,o)&&(!Tr[o]&&e.mods.indexOf(+o)>-1||Tr[o]&&e.mods.indexOf(+o)===-1)&&(s=!1);(e.mods.length===0&&!Tr[16]&&!Tr[18]&&!Tr[17]&&!Tr[91]||s||e.shortcut==="*")&&(e.keys=[],e.keys=e.keys.concat(Ot),e.method(t,e)===!1&&(t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation&&t.stopPropagation(),t.cancelBubble&&(t.cancelBubble=!0)))}}function TV(t,e){let r=Gt["*"],i=AV(t);if(t.key&&t.key.toLowerCase()==="capslock"||!(rr.filter||CV).call(this,t))return;if((i===93||i===224)&&(i=91),Ot.indexOf(i)===-1&&i!==229&&Ot.push(i),["metaKey","ctrlKey","altKey","shiftKey"].forEach(a=>{let c=xm[a];t[a]&&Ot.indexOf(c)===-1?Ot.push(c):!t[a]&&Ot.indexOf(c)>-1?Ot.splice(Ot.indexOf(c),1):a==="metaKey"&&t[a]&&(Ot=Ot.filter(l=>l in xm||l===i))}),i in Tr){Tr[i]=!0;for(let a in As)if(Object.prototype.hasOwnProperty.call(As,a)){let c=xm[As[a]];rr[a]=t[c]}if(!r)return}for(let a in Tr)Object.prototype.hasOwnProperty.call(Tr,a)&&(Tr[a]=t[xm[a]]);t.getModifierState&&!(t.altKey&&!t.ctrlKey)&&t.getModifierState("AltGraph")&&(Ot.indexOf(17)===-1&&Ot.push(17),Ot.indexOf(18)===-1&&Ot.push(18),Tr[17]=!0,Tr[18]=!0);let s=bm();if(r)for(let a=0;a<r.length;a++)r[a].scope===s&&(t.type==="keydown"&&r[a].keydown||t.type==="keyup"&&r[a].keyup)&&SV(t,r[a],s,e);if(!(i in Gt))return;let o=Gt[i],n=o.length;for(let a=0;a<n;a++)if((t.type==="keydown"&&o[a].keydown||t.type==="keyup"&&o[a].keyup)&&o[a].key){let c=o[a],{splitKey:l}=c,h=c.key.split(l),u=[];for(let d=0;d<h.length;d++)u.push(dh(h[d]));u.sort().join("")===Ot.sort().join("")&&SV(t,c,s,e)}}var rr=function(t,e,r){Ot=[];let i=EV(t),s=[],o="all",n=document,a=0,c=!1,l=!0,h="+",u=!1,d=!1;if(r===void 0&&typeof e=="function"&&(r=e),Object.prototype.toString.call(e)==="[object Object]"){let f=e;f.scope&&(o=f.scope),f.element&&(n=f.element),f.keyup&&(c=f.keyup),f.keydown!==void 0&&(l=f.keydown),f.capture!==void 0&&(u=f.capture),typeof f.splitKey=="string"&&(h=f.splitKey),f.single===!0&&(d=!0)}for(typeof e=="string"&&(o=e),d&&RV(t,o);a<i.length;a++){let f=i[a].split(h);s=[],f.length>1&&(s=wV(As,f));let p=f[f.length-1];p=p==="*"?"*":dh(p),p in Gt||(Gt[p]=[]),Gt[p].push({keyup:c,keydown:l,scope:o,mods:s,shortcut:i[a],method:r,key:i[a],splitKey:h,element:n})}if(typeof n<"u"&&typeof window<"u"){if(!Zo.has(n)){let f=(m=window.event)=>TV(m,n),p=(m=window.event)=>{TV(m,n),pK(m)};Zo.set(n,{keydownListener:f,keyupListenr:p,capture:u}),LA(n,"keydown",f,u),LA(n,"keyup",p,u)}if(!ym){let f=()=>{Ot=[]};ym={listener:f,capture:u},LA(window,"focus",f,u)}}};function mK(t,e="all"){Object.keys(Gt).forEach(r=>{Gt[r].filter(i=>i.scope===e&&i.shortcut===t).forEach(i=>{i&&i.method&&i.method({},i)})})}function DA(t){let e=Object.values(Gt).flat();if(e.findIndex(({element:r})=>r===t)<0&&t){let{keydownListener:r,keyupListenr:i,capture:s}=Zo.get(t)||{};r&&i&&(gm(t,"keyup",i,s),gm(t,"keydown",r,s),Zo.delete(t))}if((e.length<=0||Zo.size<=0)&&(Array.from(Zo.keys()).forEach(r=>{let{keydownListener:i,keyupListenr:s,capture:o}=Zo.get(r)||{};i&&s&&(gm(r,"keyup",s,o),gm(r,"keydown",i,o),Zo.delete(r))}),Zo.clear(),Object.keys(Gt).forEach(r=>delete Gt[r]),ym)){let{listener:r,capture:i}=ym;gm(window,"focus",r,i),ym=null}}var OA={getPressedKeyString:uK,setScope:PV,getScope:bm,deleteScope:fK,getPressedKeyCodes:lK,getAllKeyCodes:hK,isPressed:dK,filter:CV,trigger:mK,unbind:RV,keyMap:_m,modifier:As,modifierMap:xm};for(let t in OA){let e=t;Object.prototype.hasOwnProperty.call(OA,e)&&(rr[e]=OA[e])}if(typeof window<"u"){let t=window.hotkeys;rr.noConflict=e=>(e&&window.hotkeys===rr&&(window.hotkeys=t),rr),window.hotkeys=rr}var IV=",",gK="+",xK=new Set([93,224]),yK="\0",GA=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),BV=t=>GA(t)?{payload:GA(t.payload)?t.payload:{}}:null,LV=t=>{if(typeof t!="string"||t.length===0)return null;let e=t.toLowerCase();return typeof rr.modifier?.[e]=="number"?rr.modifier[e]:typeof rr.keyMap?.[e]=="number"?rr.keyMap[e]:t.length===1?t.toUpperCase().charCodeAt(0):null},OV=t=>xK.has(t)?91:t,FV=t=>{let e=null;return typeof t?.keyCode=="number"&&t.keyCode>0?e=t.keyCode:typeof t?.which=="number"&&t.which>0?e=t.which:typeof t?.charCode=="number"&&t.charCode>0&&(e=t.charCode),typeof t?.code=="string"&&/^Key[A-Z]$/.test(t.code)&&(e=t.code.charCodeAt(3)),typeof e=="number"?OV(e):LV(t?.key??"")},_K=t=>{if(typeof t!="string"||t.length===0)return[];let e=t.replace(/\s/g,"").split(IV),r=e.lastIndexOf("");for(;r>=0;)r>0&&(e[r-1]+=IV),e.splice(r,1),r=e.lastIndexOf("");return e.filter(Boolean)},bK=t=>typeof rr.modifierMap?.[t]=="string",vK=t=>_K(t).map(e=>{let r=new Set(e.split(gK).map(i=>LV(i)).filter(i=>typeof i=="number").map(i=>OV(i)));return r.size===0?null:{shortcut:e,releaseCodes:r,isModifierOnly:[...r].every(bK)}}).filter(Boolean),SK=(t,e)=>{for(let r of e)if(!t.has(r))return!1;return!0},kV=(t,e)=>`${t}${yK}${e.shortcut}`,UV=t=>{if(!t||typeof t!="object")return!1;let e=typeof t.tagName=="string"?t.tagName.toLowerCase():"";if(["input","textarea","select"].includes(e)||typeof HTMLInputElement<"u"&&t instanceof HTMLInputElement||typeof HTMLTextAreaElement<"u"&&t instanceof HTMLTextAreaElement||typeof HTMLSelectElement<"u"&&t instanceof HTMLSelectElement||t.isContentEditable===!0||t.contentEditable==="true"||t.contentEditable==="plaintext-only")return!0;if(typeof t.getAttribute=="function"){let i=t.getAttribute("contenteditable");if(i!==null&&i.toLowerCase()!=="false"||t.getAttribute("data-route-graphics-input-id")!==null)return!0}let r=typeof t.closest=="function"?t.closest.bind(t):typeof t.parentElement?.closest=="function"?t.parentElement.closest.bind(t.parentElement):null;return r?!!r('[data-route-graphics-input-id], [contenteditable]:not([contenteditable="false"])'):!1},TK=()=>typeof document>"u"?null:document.activeElement??null,NA=t=>UV(t?.target)?!0:UV(TK()),wK=t=>NA(t)?"editable-context":typeof rr.filter=="function"&&!rr.filter(t)?"hotkeys-filter":null,EK=({activeKeyupShortcuts:t,activeModifierShortcuts:e,pressedKeyCodes:r,releasedKeyCode:i})=>{for(let[s,o]of Array.from(t))o.releaseCodes.has(i)&&t.delete(s);for(let[s,o]of Array.from(e))o.releaseCodes.has(i)&&e.delete(s);r.delete(i)},AK=t=>{if(!GA(t))return null;let e={},r=BV(t.keydown),i=BV(t.keyup);return r&&(e.keydown=r),i&&(e.keyup=i),Object.keys(e).length>0?e:null},DV=t=>{let e=new Map,r=new Map,i=new Map,s=new Map,o=new Set,n=(g,_,y)=>{t&&t(g,{_event:{key:_},...y})},a=()=>{i.clear(),s.clear(),o.clear()},c=g=>{for(let[_,y]of Array.from(i))y.binding===g&&i.delete(_);for(let[_,y]of Array.from(s))y.binding===g&&s.delete(_);r.delete(g)},l=(g,_)=>{let y=r.get(g)??[],x=typeof _?.shortcut=="string"?_.shortcut:typeof _?.key=="string"?_.key:null;return y.find(S=>S.shortcut===x)??y[0]??null},h=(g,_)=>{!e.get(g)?.keyup||!_||i.set(kV(g,_),{binding:g,releaseCodes:new Set(_.releaseCodes)})},u=(g,_)=>{let y=kV(g,_),x=s.has(y);return s.set(y,{binding:g,releaseCodes:new Set(_.releaseCodes)}),x},d=g=>{if(wK(g)){a();return}let y=FV(g);if(typeof y=="number"){o.add(y);for(let[x,S]of e)(r.get(x)??[]).filter(b=>b.isModifierOnly).forEach(b=>{if(!SK(o,b.releaseCodes))return;let w=u(x,b);h(x,b),S.keydown&&!w&&n("keydown",x,S.keydown.payload)})}},f=g=>{let _=NA(g),y=FV(g);if(_){typeof y=="number"?EK({activeKeyupShortcuts:i,activeModifierShortcuts:s,pressedKeyCodes:o,releasedKeyCode:y}):a();return}if(typeof y=="number"){for(let[x,S]of Array.from(i)){let v=e.get(S.binding);!S.releaseCodes.has(y)||!v?.keyup||(i.delete(x),n("keyup",S.binding,v.keyup.payload))}for(let[x,S]of Array.from(s))S.releaseCodes.has(y)&&s.delete(x);o.delete(y)}};return typeof document<"u"&&(document.addEventListener("keydown",d),document.addEventListener("keyup",f)),typeof window<"u"&&window.addEventListener("blur",a),{registerHotkeys:(g={})=>{if(typeof g!="object"||g===null)return;let _=new Map,y=[],x=[],S=[];Object.keys(g).forEach(v=>{let b=AK(g[v]);b&&_.set(v,b)}),_.forEach((v,b)=>{let w=e.get(b);w?Me(w,v)||(x.push(b),rr.unbind(b)):y.push(b)}),e.forEach((v,b)=>{_.has(b)||S.push(b)}),S.forEach(v=>{rr.unbind(v),e.delete(v),c(v)}),[...y,...x].forEach(v=>{let b=_.get(v),w=vK(v);c(v),r.set(v,w),e.set(v,b),rr(v,(A,C)=>{if(NA(A)){a();return}let R=l(v,C);if(R?.isModifierOnly){let P=u(v,R);h(v,R),b.keydown&&!P&&n("keydown",v,b.keydown.payload);return}h(v,R),b.keydown&&n("keydown",v,b.keydown.payload)})})},destroy:()=>{typeof document<"u"&&(document.removeEventListener("keydown",d),document.removeEventListener("keyup",f)),typeof window<"u"&&window.removeEventListener("blur",a);for(let g of e.keys())rr.unbind(g);e.clear(),r.clear(),i.clear(),s.clear(),o.clear()}}};var HA=1,MK=(t={})=>Object.keys(t).some(Dn),PK=(t,e,r)=>{if(!t||!Object.prototype.hasOwnProperty.call(t,e))throw new Error(`Animation "${r}" cannot auto-resolve property "${e}" from targetState.`);return t[e]},CK=(t,e,r,i,s,o)=>Object.entries(e).map(([n,a])=>{if(!hy[n])throw new Error(`${n} is not a supported property for animation.`);let c=uL({object:t,property:n,propertyPathMap:r,subjectState:o,defaultValue:0});if(a.auto){let u=PK(i,n,s);if(c===u)return null;let d=ac([{value:c},{duration:a.auto.duration,value:u,easing:a.auto.easing}]);return{property:n,timeline:d}}let l=a.initialValue??c,h=ac([{value:l},...a.keyframes]);return{property:n,timeline:h}}).filter(Boolean),GV=()=>{let t=[],e=new Map,r=new Map,i=new Map,s=0,o=null,n=!1,a=(B,X)=>Math.min(Math.max(B,0),Math.max(X??0,0)),c=(B,X)=>{let Z=a(X*B.playbackSpeed,B.duration);return B.currentTime=Z,B.applyFrame(Z),Z>=B.duration},l=(B,X)=>{if(B==null)return HA;if(typeof B!="number"||!Number.isFinite(B)||B<=0)throw new Error(`Animation "${X}" playback speed must be a finite number greater than 0.`);return B},h=(B,X)=>{i.get(B)?.forEach(Z=>{try{Z(X)}catch{}})},u=B=>{if(h("completed",{id:B.id}),B.onComplete)try{B.onComplete()}catch{}},d=(B,X={})=>(B.animationType=X.animationType??B.animationType,B.targetId=X.targetId??B.targetId,B.signature=X.signature??B.signature,B.continuity=X.continuity??B.continuity??"render",B.playbackSpeed=l(X.playbackSpeed??B.playbackSpeed,B.id),B.onContinuationUpdate=X.onContinuationUpdate??B.onContinuationUpdate,B),f=B=>({id:B.id,type:B.animationType??null,targetId:B.targetId??null,signature:B.signature??null,continuity:B.continuity??"render",pending:B.pending===!0}),p=B=>{B.applyFrame(0),r.delete(B.id),e.set(B.id,B);let X=o!==null&&c(B,o);h("started",{id:B.id}),X&&(u(B),e.delete(B.id))},m=B=>{let{id:X,element:Z,properties:D,targetState:ve,onComplete:Ge,onCancel:qe,propertyPathMap:ot=dy,animationBaseState:nt}=B,Rt=nt??(MK(D)?Gn(Z):null),co=()=>(Rt||(Rt=Gn(Z)),Rt),ei=CK(Z,D,ot,ve,X,Rt);if(ei.length===0){u({id:X,onComplete:Ge});return}let Oi={id:X,kind:"property",element:Z,timelines:ei,duration:Au(ei),currentTime:0,playbackSpeed:HA,stateVersion:s,targetState:ve,onComplete:Ge,onCancel:qe,applyFrame:Di=>{for(let{property:wr,timeline:di}of ei){let Er=cc(di,Di);try{rp({object:Z,property:wr,propertyPathMap:ot,subjectState:Dn(wr)?co():Rt,value:Er})}catch{}}},applyTargetState:()=>{if(!(!Z||Z.destroyed)){if(ve===null){Z.destroy();return}if(ve)for(let[Di,wr]of Object.entries(ve))try{rp({object:Z,property:Di,propertyPathMap:ot,subjectState:Dn(Di)?co():Rt,value:wr})}catch{}}},isValid:()=>!!Z&&!Z.destroyed};p(d(Oi,B))},g=B=>{let X={id:B.id,kind:"custom",duration:B.duration??0,currentTime:0,playbackSpeed:HA,deferCompletionUntilNextFrame:B.deferCompletionUntilNextFrame===!0,pendingCompletion:!1,stateVersion:s,onComplete:B.onComplete,onCancel:B.onCancel,applyFrame:B.applyFrame??(()=>{}),applyTargetState:B.applyTargetState??(()=>{}),isValid:B.isValid??(()=>!0)};p(d(X,B))},_=B=>{if(B.driver==="custom"){g(B);return}m(B)},y=B=>{try{B.applyTargetState?.()}catch{}if(B.onCancel)try{B.onCancel()}catch{}},x=B=>{let X=r.get(B);X&&(y(X),r.delete(B),h("cancelled",{id:B}))},S=B=>{switch(B.type){case"START":_(B.payload);break;case"CANCEL":w(B.id);break}},v=()=>{let B=t.splice(0);for(let X of B)S(X)},b=()=>{o===null||n||(n=!0,queueMicrotask(()=>{n=!1,o!==null&&v()}))},w=B=>{let X=e.get(B);if(!X){x(B);return}y(X),e.delete(B),h("cancelled",{id:B})},A=B=>{t.push(B),b()},C=()=>{for(let[B,X]of e)y(X),h("cancelled",{id:B});for(let[B,X]of r)y(X),h("cancelled",{id:B});e.clear(),r.clear(),s++},R=(B=new Set)=>{let X=B instanceof Set?B:new Set(B??[]);for(let[Z,D]of e)X.has(Z)||(y(D),e.delete(Z),h("cancelled",{id:Z}));for(let[Z,D]of r)X.has(Z)||(y(D),r.delete(Z),h("cancelled",{id:Z}))},P=B=>{v();let X=[];for(let[Z,D]of e){if(D.stateVersion!==s){X.push(Z);continue}if(!D.isValid()){X.push(Z);continue}if(D.pendingCompletion){u(D),X.push(Z);continue}if(D.currentTime=a(D.currentTime+B*D.playbackSpeed,D.duration),D.currentTime>=D.duration){if(D.applyFrame(D.duration),D.deferCompletionUntilNextFrame===!0&&D.duration>0){D.pendingCompletion=!0;continue}u(D),X.push(Z);continue}D.applyFrame(D.currentTime)}for(let Z of X)e.delete(Z)},U=B=>{o=B,v();let X=[];for(let[Z,D]of e){if(D.stateVersion!==s){X.push(Z);continue}if(!D.isValid()){X.push(Z);continue}c(D,B)&&(u(D),X.push(Z))}for(let Z of X)e.delete(Z)},F=()=>{o=null},V=()=>{v()},z=(B,X)=>(i.has(B)||i.set(B,new Set),i.get(B).add(X),()=>H(B,X)),H=(B,X)=>{i.get(B)?.delete(X)};return{dispatch:A,cancelAll:C,cancelAllExcept:R,flush:V,tick:P,setTime:U,clearTime:F,on:z,off:H,registerPending:B=>{let X=d({id:B.id,kind:"pending",pending:!0,applyTargetState:B.applyTargetState??(()=>{}),onCancel:B.onCancel},B);r.set(X.id,X)},activatePending:(B,X)=>{let Z=r.get(B);return Z?(r.delete(B),_({...X,id:B,animationType:Z.animationType,targetId:Z.targetId,signature:Z.signature,continuity:Z.continuity,playbackSpeed:Z.playbackSpeed,onContinuationUpdate:X.onContinuationUpdate??Z.onContinuationUpdate}),!0):!1},removePending:B=>{r.delete(B)},getContinuableAnimations:()=>{let B=new Map;for(let[X,Z]of r)Z.continuity==="persistent"&&B.set(X,f(Z));for(let[X,Z]of e)Z.continuity==="persistent"&&B.set(X,f(Z));return B},getState:()=>({stateVersion:s,activeCount:e.size,pendingCount:r.size,animations:Array.from(e.entries()).map(([B,X])=>({id:B,currentTime:X.currentTime,duration:X.duration,playbackSpeed:X.playbackSpeed,progress:X.duration>0?X.currentTime/X.duration:0}))}),isAnimating:B=>e.has(B),hasContext:B=>e.has(B)||r.has(B),updateContinuation:(B,X)=>{let Z=e.get(B)??r.get(B);if(Z?.onContinuationUpdate)try{Z.onContinuationUpdate(X)}catch{}},destroy:()=>{C(),i.clear()}}};var NV=t=>{let e=0,r=0,i=null,s=!1,o=!1,n=d=>{o||(o=!0,t?.("renderComplete",d))};return{reset:d=>{e>0&&i!==null&&!o&&t?.("renderComplete",{id:i,aborted:!0}),r++,e=0,i=d,s=!0,o=!1},track:d=>{d===r&&e++},complete:d=>{d!==r||e===0||(e--,e===0&&!s&&n({id:i,aborted:!1}))},getVersion:()=>r,completeIfEmpty:()=>{s=!1,e===0&&n({id:i,aborted:!1})}}};var HV=new Set(["update","transition"]),VV=new Set(["render","persistent"]),RK="render",IK=1,BK=new Set(["alpha","x","y","translateX","translateY","scaleX","scaleY","rotation","blurX","blurY","uProgress"]),FK=new Set(["x","y","translateX","translateY","alpha","scaleX","scaleY","rotation"]),kK=new Set(["uProgress"]),WV=new Set(["single","sequence"]),zV=new Set(["red","green","blue","alpha"]),$V=new Set(["hold","linear"]),YV=new Set(Eu),Ms=(t,e)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object.`)},fh=(t,e)=>{if(typeof t!="string"||t.length===0)throw new Error(`${e} must be a non-empty string.`)},ph=(t,e)=>{if(typeof t!="number"||Number.isNaN(t))throw new Error(`${e} must be a number.`)},UK=(t,e)=>{if(typeof t!="number"||!Number.isFinite(t)||t<=0)throw new Error(`${e} must be a finite number greater than 0.`)},LK=(t,e)=>{Ms(t,e);let r=t.continuity??RK;if(!VV.has(r))throw new Error(`${e}.continuity must be one of: ${Array.from(VV).join(", ")}.`);let i={continuity:r};return t.speed!==void 0&&(UK(t.speed,`${e}.speed`),t.speed!==IK&&(i.speed=t.speed)),i},OK=(t,e)=>{if(Ms(t,e),ph(t.duration,`${e}.duration`),t.easing!==void 0&&typeof t.easing!="string")throw new Error(`${e}.easing must be a string.`);if(t.easing!==void 0&&!YV.has(t.easing))throw new Error(`${e}.easing must be one of: ${Eu.join(", ")}.`);return{duration:t.duration,easing:t.easing??"linear"}},zA=(t,e)=>{Ms(t,e);let r={};if(t.initialValue!==void 0&&(ph(t.initialValue,`${e}.initialValue`),r.initialValue=t.initialValue),!Array.isArray(t.keyframes)||t.keyframes.length===0)throw new Error(`${e}.keyframes must be a non-empty array.`);return r.keyframes=t.keyframes.map((i,s)=>{let o=`${e}.keyframes[${s}]`;if(Ms(i,o),ph(i.value,`${o}.value`),ph(i.duration,`${o}.duration`),i.easing!==void 0&&typeof i.easing!="string")throw new Error(`${o}.easing must be a string.`);if(i.easing!==void 0&&!YV.has(i.easing))throw new Error(`${o}.easing must be one of: ${Eu.join(", ")}.`);if(i.relative!==void 0&&typeof i.relative!="boolean")throw new Error(`${o}.relative must be a boolean.`);return{value:i.value,duration:i.duration,easing:i.easing??"linear",...i.relative!==void 0?{relative:i.relative}:{}}}),r},DK=(t,e)=>{Ms(t,e);let r=t.keyframes!==void 0,i=t.auto!==void 0;if(r&&i)throw new Error(`${e} cannot define both keyframes and auto.`);if(!r&&!i)throw new Error(`${e} must define keyframes or auto.`);if(i){if(t.initialValue!==void 0)throw new Error(`${e}.initialValue is not valid when auto is defined.`);return{auto:OK(t.auto,`${e}.auto`)}}return zA(t,e)},WA=(t,e,r,i=zA)=>{if(Ms(t,e),t.x!==void 0&&t.translateX!==void 0)throw new Error(`${e} cannot define both x and translateX.`);if(t.y!==void 0&&t.translateY!==void 0)throw new Error(`${e} cannot define both y and translateY.`);let s=Object.entries(t).map(([o,n])=>{if(!r.has(o))throw new Error(`${e}.${o} is not a supported animation property.`);return[o,i(n,`${e}.${o}`)]});if(s.length===0)throw new Error(`${e} must define at least one property.`);return Object.fromEntries(s)},GK=(t,e)=>{if(Ms(t,e),fh(t.texture,`${e}.texture`),ph(t.at,`${e}.at`),t.at<0||t.at>1)throw new Error(`${e}.at must be between 0 and 1.`);return{at:t.at,texture:t.texture}},NK=(t,e)=>{if(!Array.isArray(t)||t.length<2)throw new Error(`${e} must be an array with at least two frames.`);let r=t.map((s,o)=>GK(s,`${e}[${o}]`));if(r[0].at!==0)throw new Error(`${e}[0].at must be 0.`);let i=r.length-1;if(r[i].at!==1)throw new Error(`${e}[${i}].at must be 1.`);for(let s=1;s<r.length;s++)if(r[s].at<=r[s-1].at)throw new Error(`${e} must be sorted by ascending unique at values.`);return r},HK=(t,e)=>{if(Ms(t,e),!WV.has(t.kind))throw new Error(`${e}.kind must be one of: ${Array.from(WV).join(", ")}.`);let r={kind:t.kind};if(t.channel!==void 0){if(!zV.has(t.channel))throw new Error(`${e}.channel must be one of: ${Array.from(zV).join(", ")}.`);r.channel=t.channel}if(t.softness!==void 0&&(ph(t.softness,`${e}.softness`),r.softness=t.softness),t.invert!==void 0){if(typeof t.invert!="boolean")throw new Error(`${e}.invert must be a boolean.`);r.invert=t.invert}if(t.progress!==void 0&&(r.progress=zA(t.progress,`${e}.progress`)),t.kind==="single"){if(t.frames!==void 0)throw new Error(`${e}.frames is only valid for sequence masks.`);if(t.sample!==void 0)throw new Error(`${e}.sample is only valid for sequence masks.`);if(t.items!==void 0)throw new Error(`${e}.items is not supported.`);if(t.combine!==void 0)throw new Error(`${e}.combine is not supported.`);fh(t.texture,`${e}.texture`),r.texture=t.texture}if(t.kind==="sequence"){if(t.texture!==void 0)throw new Error(`${e}.texture is not valid for sequence masks. Use ${e}.frames[].texture instead.`);if(t.items!==void 0)throw new Error(`${e}.items is not supported.`);if(t.combine!==void 0)throw new Error(`${e}.combine is not supported.`);if(t.textures!==void 0)throw new Error(`${e}.textures is no longer supported. Use ${e}.frames with texture and at entries instead.`);if(t.softness!==void 0)throw new Error(`${e}.softness is not valid for sequence masks. Author feathering into ${e}.frames[].texture instead.`);if(r.frames=NK(t.frames,`${e}.frames`),t.sample!==void 0&&(fh(t.sample,`${e}.sample`),!$V.has(t.sample)))throw new Error(`${e}.sample must be one of: ${Array.from($V).join(", ")}.`);r.sample=t.sample??"hold"}return r.progress||(r.progress={initialValue:0,keyframes:[{duration:0,value:1,easing:"linear"}]}),r},XV=(t,e)=>{if(Ms(t,e),t.mask!==void 0)throw new Error(`${e}.mask is not valid. Define mask on ${e}.`);let r={};if(t.tween!==void 0&&(r.tween=WA(t.tween,`${e}.tween`,FK)),Object.keys(r).length===0)throw new Error(`${e} must define tween.`);return r},VK=(t,e)=>{let r={};if(t.shader!==void 0)throw new Error(`${e}.shader is not supported.`);if(t.prev!==void 0&&(r.prev=XV(t.prev,`${e}.prev`)),t.next!==void 0&&(r.next=XV(t.next,`${e}.next`)),t.mask!==void 0&&(r.mask=HK(t.mask,`${e}.mask`)),t.compositor!==void 0&&(r.compositor=OO(t.compositor,`${e}.compositor`)),r.mask!==void 0&&r.compositor!==void 0)throw new Error(`${e}.compositor cannot be combined with ${e}.mask in v1.`);if(r.prev===void 0&&r.next===void 0&&r.mask===void 0&&r.compositor===void 0)throw new Error(`${e} must define prev, next, mask, or compositor.`);return r},VA=(t,e,r)=>{if(t!==void 0)throw new Error(`${e} ${r}`)},jV=(t=[])=>{if(!Array.isArray(t))throw new Error("Input error: `animations` must be an array.");let e=t.map((s,o)=>{let n=`animations[${o}]`;if(Ms(s,n),fh(s.id,`${n}.id`),fh(s.targetId,`${n}.targetId`),fh(s.type,`${n}.type`),!HV.has(s.type))throw new Error(`${n}.type must be one of: ${Array.from(HV).join(", ")}.`);let a={id:s.id,targetId:s.targetId,type:s.type};if(s.complete!==void 0&&(Ms(s.complete,`${n}.complete`),a.complete=s.complete),s.playback!==void 0&&(a.playback=LK(s.playback,`${n}.playback`)),VA(s.operation,`${n}.operation`,"is no longer supported. Use `type: update | transition` instead."),VA(s.properties,`${n}.properties`,"is no longer supported. Use `tween` instead."),VA(s.subjects,`${n}.subjects`,"is no longer supported. Use `prev` / `next` instead."),s.type==="update"){if(a.tween=WA(s.tween,`${n}.tween`,BK,DK),s.replace!==void 0)throw new Error(`${n}.replace is no longer supported. Define \`prev\`, \`next\`, or \`mask\` directly on the animation.`);if(s.prev!==void 0)throw new Error(`${n}.prev is only valid for transition animations.`);if(s.next!==void 0)throw new Error(`${n}.next is only valid for transition animations.`);if(s.mask!==void 0)throw new Error(`${n}.mask is only valid for transition animations.`);if(s.compositor!==void 0)throw new Error(`${n}.compositor is only valid for transition animations.`);if(s.shader!==void 0)throw new Error(`${n}.shader is not supported.`);return a}if(s.tween!==void 0&&s.compositor===void 0)throw new Error(`${n}.tween is not valid for transition animations.`);if(s.replace!==void 0)throw new Error(`${n}.replace is no longer supported. Define \`prev\`, \`next\`, or \`mask\` directly on the animation.`);let c=VK(s,n);if(c.prev!==void 0&&(a.prev=c.prev),c.next!==void 0&&(a.next=c.next),c.mask!==void 0&&(a.mask=c.mask),c.compositor!==void 0){if(a.compositor=c.compositor,s.tween===void 0)throw new Error(`${n}.tween.uProgress is required when compositor is defined.`);a.tween=WA(s.tween,`${n}.tween`,kK)}return a}),r=new Map;for(let s of e){let o=r.get(s.targetId)??new Set;o.add(s.type),r.set(s.targetId,o)}for(let[s,o]of r)if(o.has("transition")&&o.size>1)throw new Error(`Animations targeting "${s}" cannot mix update and transition types in the same state.`);let i=new Set;for(let s of e)if(!(s.type!=="update"||s.tween?.uProgress===void 0)){if(i.has(s.targetId))throw new Error(`Animations targeting "${s.targetId}" cannot define multiple active uProgress update tweens in the same state.`);i.add(s.targetId)}return e};var $A=(t={})=>{if(t===null||typeof t!="object")throw new Error("Input error: render state must be an object.");if(t.transitions!==void 0)throw new Error("Input error: `transitions` is no longer supported. Use `animations` instead.");let e={...t,elements:t.elements??[],animations:t.animations??[],audio:t.audio??[],audioEffects:t.audioEffects??[]};if(!Array.isArray(e.elements))throw new Error("Input error: `elements` must be an array.");if(!Array.isArray(e.animations))throw new Error("Input error: `animations` must be an array.");if(!Array.isArray(e.audio))throw new Error("Input error: `audio` must be an array.");if(!Array.isArray(e.audioEffects))throw new Error("Input error: `audioEffects` must be an array.");return e.animations=jV(e.animations),Zn({audio:e.audio,audioEffects:e.audioEffects}),e};var WK="0",mh=(t,e)=>{let r=t?.[e];return typeof r=="number"?r:0},Li=t=>({value:t.element.value??"",selectionStart:mh(t.element,"selectionStart"),selectionEnd:mh(t.element,"selectionEnd"),focused:document.activeElement===t.element,composing:t.composing===!0}),zK=(t,e)=>!t||!e?!1:t.value===e.value&&t.selectionStart===e.selectionStart&&t.selectionEnd===e.selectionEnd&&t.focused===e.focused&&t.composing===e.composing,$K=t=>t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement,vm=t=>{t.element.style.pointerEvents="none"},XA=(t,e,r)=>{if(typeof t?.setSelectionRange=="function")try{t.setSelectionRange(e,r)}catch{}},XK=({app:t,geometry:e})=>{let r=t.canvas;if(!e||!r||e.visible===!1)return null;let i=r.getBoundingClientRect(),s=t.renderer?.width||i.width||1,o=t.renderer?.height||i.height||1,n=i.width/s,a=i.height/o,c=e.clipInsets??{top:0,right:0,bottom:0,left:0},l=i.left+(e.x+c.left)*n,h=i.top+(e.y+c.top)*a,u=i.left+(e.x+e.width-c.right)*n,d=i.top+(e.y+e.height-c.bottom)*a;return u<=l||d<=h?null:{left:l,top:h,right:u,bottom:d}},YK=({app:t,entry:e,event:r})=>{let i=e.options.getGeometry?.(),s=XK({app:t,geometry:i}),o=r.clientX,n=r.clientY;return!!s&&Number.isFinite(o)&&Number.isFinite(n)&&o>=s.left&&o<=s.right&&n>=s.top&&n<=s.bottom},qV=({app:t})=>{let e=new Map,r,i=null,s=()=>{r||(r=document.createElement("div"),r.dataset.routeGraphicsInputBridge="true",r.style.position="fixed",r.style.left="0",r.style.top="0",r.style.pointerEvents="none",r.style.zIndex="1000",r.style.width="0",r.style.height="0");let x=t.canvas?.parentNode??document.body;r.isConnected||x.appendChild(r)},o=(x,S=x.lastSnapshot)=>{let v=Li(x);v.focused&&i!==x.id?i=x.id:!v.focused&&i===x.id&&(i=null),vm(x,i),S?.value!==v.value&&x.callbacks.onValueChange?.(v),(S?.selectionStart!==v.selectionStart||S?.selectionEnd!==v.selectionEnd||S?.focused!==v.focused||S?.composing!==v.composing)&&x.callbacks.onSelectionChange?.(v),x.lastSnapshot=v},n=x=>{let{disabled:S=!1,multiline:v=!1,maxLength:b,textStyle:w,padding:A,placeholder:C="",autocomplete:R="off",autocapitalize:P="off",spellcheck:U=!1}=x.options,{element:F}=x;F instanceof HTMLInputElement&&(F.type="text"),F.disabled=S,F.placeholder=C,F.autocomplete=R,F.autocapitalize=P,F.spellcheck=!!U,F.style.opacity=WK,F.style.color="transparent",F.style.caretColor="transparent",F.style.background="transparent",F.style.paddingTop=`${A.top}px`,F.style.paddingRight=`${A.right}px`,F.style.paddingBottom=`${A.bottom}px`,F.style.paddingLeft=`${A.left}px`,F.style.fontFamily=w?.fontFamily??"Arial",F.style.fontSize=`${w?.fontSize??16}px`,F.style.fontWeight=w?.fontWeight??"400",F.style.textAlign=w?.align??"left",F.style.lineHeight=typeof w?.lineHeight=="number"?`${w.lineHeight}px`:"normal",F.style.whiteSpace=v?"pre":"nowrap",F.style.overflowWrap="normal",F.style.resize="none",F.style.overflow="hidden",typeof b=="number"?F.maxLength=b:F.removeAttribute("maxLength"),F.tabIndex=-1,v&&F instanceof HTMLTextAreaElement&&(F.wrap="off",F.rows=1),vm(x,i)},a=x=>{s();let S=t.canvas,v=x.options.getGeometry?.();if(!S||!v||v.visible===!1){x.element.style.display="none";return}let b=S.getBoundingClientRect(),w=t.renderer?.width||b.width||1,A=t.renderer?.height||b.height||1,C=b.width/w,R=b.height/A,P=v.clipInsets??{top:0,right:0,bottom:0,left:0},U={top:P.top*R,right:P.right*C,bottom:P.bottom*R,left:P.left*C};x.element.style.display="block",x.element.style.left=`${b.left+v.x*C}px`,x.element.style.top=`${b.top+v.y*R}px`,x.element.style.width=`${v.width*C}px`,x.element.style.height=`${v.height*R}px`;let F=Object.values(U).some(V=>V>0);x.element.style.clipPath=F?`inset(${U.top}px ${U.right}px ${U.bottom}px ${U.left}px)`:"none"},c=x=>{if(!i)return;let S=e.get(i),v=x.target;!S||v===S.element||S.element.contains(v)||$K(v)&&r?.contains(v)||YK({app:t,entry:S,event:x})||S.element.blur()},l=()=>{for(let x of e.values()){if(a(x),!x.lastSnapshot){x.lastSnapshot=Li(x);continue}let S=Li(x);zK(S,x.lastSnapshot)||o(x,x.lastSnapshot)}},h=({id:x,options:S})=>{let v=S.multiline===!0?document.createElement("textarea"):document.createElement("input");return v.dataset.routeGraphicsInputId=x,v.style.position="fixed",v.style.border="none",v.style.outline="none",v.style.margin="0",v.style.boxSizing="border-box",v.style.borderRadius="0",v.style.transformOrigin="top left",v.style.appearance="none",v.style.boxShadow="none",v.style.userSelect="none",v.style.webkitUserSelect="none",v},u=x=>{let{id:S,element:v}=x,b=()=>{o(x)};v.addEventListener("focus",()=>{x.pendingBlurTimer&&(clearTimeout(x.pendingBlurTimer),x.pendingBlurTimer=null),i=S,vm(x,i);let w=Li(x);x.lastSnapshot=w,x.callbacks.onFocus?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("blur",()=>{i===S&&(i=null),vm(x,i),x.pendingBlurTimer=setTimeout(()=>{x.pendingBlurTimer=null;let w=Li(x);if(w.focused){x.lastSnapshot=w;return}x.lastSnapshot=w,x.callbacks.onBlur?.(w),x.callbacks.onSelectionChange?.(w)},0)}),v.addEventListener("input",b),v.addEventListener("select",b),v.addEventListener("click",()=>queueMicrotask(b)),v.addEventListener("keyup",w=>{w.stopPropagation(),w.stopImmediatePropagation?.(),queueMicrotask(b)}),v.addEventListener("keydown",w=>{w.stopPropagation(),w.stopImmediatePropagation?.();let A=x.options.submitOnEnter!==!1,C=x.options.submitOnEnter===!1,R=typeof x.callbacks.onSubmit=="function",P=w.key==="Enter"&&x.options.multiline!==!0&&!w.shiftKey,U=P&&A&&R,F=w.key==="Enter"&&x.options.multiline===!0&&(w.ctrlKey||w.metaKey)&&A&&R;(P||F||w.key==="Enter"&&C)&&w.preventDefault(),(U||F)&&x.callbacks.onSubmit(Li(x),w),w.key==="Escape"&&v.blur(),queueMicrotask(b)}),v.addEventListener("compositionstart",()=>{x.composing=!0;let w=Li(x);x.lastSnapshot=w,x.callbacks.onCompositionStart?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("compositionupdate",()=>{let w=Li(x);x.lastSnapshot=w,x.callbacks.onCompositionUpdate?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("compositionend",()=>{x.composing=!1,b(),x.callbacks.onCompositionEnd?.(Li(x))})};document.addEventListener("pointerdown",c,!0),t.ticker?.add?.(l);let d=(x,S)=>{s();let v=e.get(x);if(v)return v.options=S,v.callbacks=S.callbacks??{},n(v),a(v),typeof S.value=="string"&&v.element.value!==S.value&&(v.element.value=S.value),v.lastSnapshot=Li(v),v.element;let b={id:x,element:h({id:x,options:S}),options:S,callbacks:S.callbacks??{},composing:!1,pendingBlurTimer:null,lastSnapshot:null};return u(b),typeof S.value=="string"&&(b.element.value=S.value),n(b),r.appendChild(b.element),e.set(x,b),a(b),b.lastSnapshot=Li(b),b.element};return{mount:d,update:(x,S)=>{let v=e.get(x);if(!v)return d(x,S);let b=S.multiline===!0!=v.element instanceof HTMLTextAreaElement;if(v.options=S,v.callbacks=S.callbacks??{},b){let w=v.element,A=document.activeElement===w,C=mh(w,"selectionStart"),R=mh(w,"selectionEnd");return v.element=h({id:x,options:S}),u(v),w.replaceWith(v.element),v.element.value=typeof S.value=="string"?S.value:w.value,n(v),a(v),v.lastSnapshot=Li(v),A&&!S.disabled&&queueMicrotask(()=>{v.element.focus(),XA(v.element,C,R)}),v.element}return typeof S.value=="string"&&S.value!==v.element.value&&v.composing!==!0&&(v.element.value=S.value),n(v),a(v),v.lastSnapshot=Li(v),v.element},focus:(x,{selectAll:S=!1,selectionStart:v,selectionEnd:b}={})=>{let w=e.get(x);if(!w||w.element.disabled)return;let A=document.activeElement===w.element;if(i=x,vm(w,i),A||w.element.focus(),S){w.element.select?.(),o(w,w.lastSnapshot);return}if(typeof v=="number"||typeof b=="number"){let C=typeof v=="number"?v:mh(w.element,"selectionStart"),R=typeof b=="number"?b:typeof v=="number"?v:mh(w.element,"selectionEnd");XA(w.element,C,R)}o(w,w.lastSnapshot)},setSelection:(x,S,v=S,{focus:b=!1}={})=>{let w=e.get(x);if(!w||w.element.disabled)return;let A=()=>{XA(w.element,S,v),o(w,w.lastSnapshot)};if(b&&document.activeElement!==w.element){w.element.focus(),A();return}A()},blur:x=>{e.get(x)?.element.blur()},unmount:x=>{let S=e.get(x);S&&(i===x&&(i=null),S.pendingBlurTimer&&(clearTimeout(S.pendingBlurTimer),S.pendingBlurTimer=null),S.element.remove(),e.delete(x),e.size===0&&r?.remove())},destroy:()=>{document.removeEventListener("pointerdown",c,!0),t.ticker?.remove?.(l);for(let x of e.values())x.pendingBlurTimer&&(clearTimeout(x.pendingBlurTimer),x.pendingBlurTimer=null),x.element.remove();e.clear(),i=null,r?.remove(),r=void 0}}};var jK=new Set(["sprite","video","animated-sprite","spritesheet-animation"]),qK=t=>Number.isFinite(t?.x)&&Number.isFinite(t?.y),KK=t=>t&&t.destroyed!==!0&&t.visible!==!1&&t.renderable!==!1,Sm=({x:t=0,y:e=0,width:r,height:i})=>({x:t,y:e,width:r,height:i}),QK=t=>{if(Array.isArray(t.content)||t.__fixedWidth!==!0)return 0;let e=t.measuredWidth??t.width,r=Math.max(0,t.width-e),i=t.textStyle?.align;return i==="center"?r/2:i==="right"?r:0},JK=({displayObject:t,element:e})=>{let r=ZL(t);if(r)return Sm(r);if(jK.has(e.type)){let i=t.getLocalBounds?.(),s=i?.rectangle??i;if(Number.isFinite(s?.x)&&Number.isFinite(s?.y)&&Number.isFinite(s?.width)&&Number.isFinite(s?.height)&&s.width>0&&s.height>0)return Sm(s)}return e.type==="text"?Sm({x:-QK(e),width:e.width,height:e.height}):Sm({width:e.width,height:e.height})},QV=({displayObject:t,rectangle:e,point:r})=>{if(!Number.isFinite(e.width)||!Number.isFinite(e.height)||e.width<=0||e.height<=0||typeof t.toLocal!="function")return!1;let i=t.toLocal(r);return i.x>=e.x&&i.x<=e.x+e.width&&i.y>=e.y&&i.y<=e.y+e.height},ZK=({displayObject:t,rectangle:e})=>{if(typeof t.toGlobal!="function")return;let r=[t.toGlobal({x:e.x,y:e.y}),t.toGlobal({x:e.x+e.width,y:e.y}),t.toGlobal({x:e.x+e.width,y:e.y+e.height}),t.toGlobal({x:e.x,y:e.y+e.height})].map(({x:a,y:c})=>({x:a,y:c})),i=r.map(({x:a})=>a),s=r.map(({y:a})=>a),o=Math.min(...i),n=Math.min(...s);return{x:o,y:n,width:Math.max(...i)-o,height:Math.max(...s)-n,corners:r}},eQ=t=>t?.__routeGraphicsScrollController?.contentContainer?.children??t?.children??[],JV=({elements:t,parent:e})=>{let r=eQ(e),i=new Map,s=new Map,o=[],n=new Set,a=new Map(t.map((l,h)=>[l.id,h]));for(let l=0;l<r.length;l++){let h=r[l],u=Za(h);if(u){o.push({displayObject:h,element:u,elementIndex:a.get(u.id)??l,paintIndex:l}),n.add(h),s.set(h,l);continue}let d=i.get(h.label)??[];d.push(h),i.set(h.label,d),s.set(h,l)}let c=new Map;return o.concat(t.flatMap((l,h)=>{let u=i.get(l.id)??[],d=c.get(l.id)??0,f=u[d];if(c.set(l.id,d+1),!f||n.has(f))return[];let p=s.get(f)??-1;return[{displayObject:f,element:l,elementIndex:h,paintIndex:p}]}))},ZV=t=>t.sort((e,r)=>{let i=(r.displayObject.zIndex??r.elementIndex)-(e.displayObject.zIndex??e.elementIndex);return i!==0?i:r.paintIndex-e.paintIndex}),KV=({clips:t,point:e})=>t.every(({displayObject:r,rectangle:i})=>QV({displayObject:r,rectangle:i,point:e})),tQ=t=>{let e=t.__routeGraphicsScrollController;if(e)return{displayObject:t,rectangle:Sm({width:e.viewportWidth,height:e.viewportHeight})}},e4=({displayObject:t,element:e,point:r,path:i,clips:s})=>{if(!KK(t))return[];if(!KV({clips:s,point:r}))return[];let o=JK({displayObject:t,element:e}),n=ZK({displayObject:t,rectangle:o}),a={id:e.id,type:e.type,bounds:n},c=[...i,a],l=tQ(t),h=l?[...s,l]:s,d=ZV(JV({elements:e.children??[],parent:t})).flatMap(f=>e4({...f,point:r,path:c,clips:h}));return d.length>0?d:QV({displayObject:t,rectangle:o,point:r})&&(!l||KV({clips:[l],point:r}))?[{path:c}]:[]},t4=({stage:t,elements:e=[],x:r,y:i})=>{let s={x:r,y:i};return!t||!Array.isArray(e)||!qK(s)?[]:ZV(JV({elements:e,parent:t})).flatMap(o=>e4({...o,point:s,path:[],clips:[]}))};var Uc=new Map,Tm=new Map,wm=new Map,E0=new Map,r4=new Map,rQ=()=>{let e=M=>{let k=window.HTMLMediaElement?.HAVE_CURRENT_DATA??2;return M.readyState>=k&&M.videoWidth>0&&M.videoHeight>0},r=M=>Number.isFinite(M)&&M>0?M:1,i=M=>M.videoWidth>0&&M.videoHeight>0,s=(M,k)=>{if(M.width===k.videoWidth&&M.height===k.videoHeight)return;let O=fD(M);M.resize?.(k.videoWidth,k.videoHeight),pD(O)},o=(M,k)=>new mo({resource:M,width:r(M.videoWidth),height:r(M.videoHeight),autoLoad:!1,autoPlay:!1,alphaMode:k,crossorigin:"anonymous",muted:!1,playsinline:!0}),n=M=>{let k=M?.source,O=k?.resource;if(!(O instanceof HTMLVideoElement)||k.__routeGraphicsVideoTextureRuntime)return;let $,j,me=0,q=1e3/30,se=({force:Em=!1}={})=>k.destroyed||(Em?!i(O):!e(O))?!1:(s(k,O),k.update(),!0),pt=()=>{$!==void 0&&(window.cancelAnimationFrame($),$=void 0)},fi=()=>{j!==void 0&&typeof O.cancelVideoFrameCallback=="function"&&O.cancelVideoFrameCallback(j),j=void 0},mt=()=>{se({force:!0})},It=()=>j!==void 0||typeof O.requestVideoFrameCallback!="function"?!1:(j=O.requestVideoFrameCallback(()=>{j=void 0,mt(),!O.paused&&!O.ended&&!k.destroyed&&It()}),!0),ye=()=>{se()},At=()=>{pt(),fi(),se()},pi=Em=>{$=void 0,!(O.paused||O.ended||k.destroyed)&&(Em-me>=q&&(me=Em,se()),$=window.requestAnimationFrame(pi))},Ps=()=>{se(),!It()&&$===void 0&&(me=0,$=window.requestAnimationFrame(pi))},M0=()=>{pt(),fi(),O.removeEventListener("play",Ps),O.removeEventListener("playing",Ps),O.removeEventListener("pause",At),O.removeEventListener("ended",At),O.removeEventListener("loadeddata",ye),O.removeEventListener("canplay",ye),O.removeEventListener("canplaythrough",ye),O.removeEventListener("seeked",ye),O.removeEventListener("timeupdate",ye),dD(k),k.__routeGraphicsVideoTextureRuntime=void 0};O.addEventListener("play",Ps),O.addEventListener("playing",Ps),O.addEventListener("pause",At),O.addEventListener("ended",At),O.addEventListener("loadeddata",ye),O.addEventListener("canplay",ye),O.addEventListener("canplaythrough",ye),O.addEventListener("seeked",ye),O.addEventListener("timeupdate",ye),k.once("destroy",M0),M.once("destroy",M0),k.__routeGraphicsVideoTextureRuntime={cleanup:M0,requestUpdate:se},se()},a=M=>{if(M!=="auto"&&M!=="manual")throw new Error(`Invalid animation playback mode "${M}". Expected "auto" or "manual".`)},c,l=bV(),h={elements:[],animations:[],audio:[],audioEffects:[]},u,d={animations:[],elements:[],audio:[],parsers:[]},f,p,m,g,_=!1,y,x,S,v="auto",b=null,w=[],A,C,R,P,U=new Map,F=new Map,V=new Map,z,H=(M,k,O,$)=>{M.clear(),M.rect(0,0,k,O),M.fill($??0)},Q=M=>{if(!M)return"texture";let k=M.split(";")[0].trim().toLowerCase();return k.startsWith("audio/")||k==="application/ogg"?"audio":k.startsWith("font/")||["application/font-woff","application/font-woff2","application/x-font-ttf","application/x-font-otf"].includes(k)?"font":k.startsWith("video/")?"video":"texture"},I=M=>{if(typeof M!="string")return"audio/mpeg";let k=M.split("?")[0].split("#")[0].toLowerCase();return k.endsWith(".ogg")||k.endsWith(".oga")?"audio/ogg":k.endsWith(".m4a")?"audio/mp4":k.endsWith(".aac")?"audio/aac":k.endsWith(".wav")?"audio/wav":k.endsWith(".flac")?"audio/flac":"audio/mpeg"},L=M=>M?typeof M=="string"?M:M.message||String(M):"Unknown error",J=(M,k=180)=>{if(typeof M=="string")return M.length<=k?M:`${M.slice(0,k-1)}...`},te=M=>M&&typeof M.byteLength=="number"?M.byteLength:0,W=(M,k={})=>M==="texture"?k.type?.startsWith("image/")?"image":"visual asset":M||"asset",ne=M=>M.match(/HTTP\s+(\d{3})/)?.[1],ce=M=>{if(/Timed out loading video asset/i.test(M))return"Timed out while loading video metadata.";if(!/Failed to load video asset/i.test(M))return;let k=M.match(/\((.*)\)\.?$/)?.[1];return k?`Video element failed to load (${k}).`:"Video element failed to load."},be=({category:M,phase:k,error:O})=>{if(O?.rootCauseMessage)return O.rootCauseMessage;let $=L(O),j=ne($);return j==="404"?"File not found.":j==="401"||j==="403"?"Access denied.":j?.startsWith("5")?"File server error.":/URL is missing/i.test($)?"Missing file URL.":/missing or empty/i.test($)?"Missing file data.":M==="audio"||/decode/i.test($)?"Unsupported or damaged audio file.":M==="font"?"Unsupported or damaged font file.":M==="video"?ce($)??"Unsupported, damaged, or inaccessible video file.":M==="texture"&&k==="image bitmap creation"?"Unsupported or damaged image file.":M==="texture"?"Missing, inaccessible, or unsupported image file.":"File could not be loaded."},B=({key:M,kind:k,category:O,phase:$,asset:j,error:me})=>{let q={assetKey:M,assetKind:k,assetCategory:O,phase:$,cause:L(me)};return j?.type&&(q.type=j.type),j?.source&&(q.source=j.source),j?.url&&(q.url=J(j.url)),j?.buffer&&(q.bufferBytes=te(j.buffer)),q},X=({key:M,category:k,phase:O,asset:$,error:j})=>{let me=W(k,$),q=be({category:k,phase:O,error:j}),se=`Could not load ${me} "${M}". ${q}`,pt=new Error(se,{cause:j});return pt.userMessage=se,pt.rootCauseMessage=q,pt.details=B({key:M,kind:me,category:k,phase:O,asset:$,error:j}),pt},Z=async({key:M,category:k,phase:O,asset:$},j)=>{try{return await j()}catch(me){throw X({key:M,category:k,phase:O,asset:$,error:me})}},D=(M,k)=>{if(te(M?.buffer)===0)throw new Error(`${k} asset data is missing or empty.`)},ve=M=>M?`"${String(M).replaceAll('"','\\"')}"`:"unknown",Ge=M=>{let{assetKind:k,assetKey:O}=M?.details||{};return O?k?`${k} ${ve(O)}`:ve(O):"unknown asset"},qe=M=>{let O=M.slice(0,3).map(Ge),$=M.length-O.length,j=$>0?`, and ${$} more`:"";return`${O.join(", ")}${j}`},ot=M=>{let O=M.slice(0,3).map(me=>{let q=Ge(me),se=me?.rootCauseMessage||me?.details?.cause||L(me);return`${q}: ${J(se)}`}),$=M.length-O.length,j=$>0?`, and ${$} more`:"";return`${O.join("; ")}${j}`},nt=M=>{let k=M.filter(me=>me.status==="rejected").map(me=>me.reason);if(k.length===0)return;if(k.length===1)throw k[0];let O=ot(k),$=`Could not load ${k.length} assets: ${qe(k)}. ${O}`,j=new AggregateError(k,$);throw j.userMessage=$,j.rootCauseMessage=O,j.details={failures:k.map(me=>me?.details||{cause:L(me)})},j},Rt=(M,k,{revokable:O=!1}={})=>{V.set(M,{url:k,revokable:O})},co=M=>{let k=V.get(M);k?.revokable===!0&&typeof k?.url=="string"&&URL.revokeObjectURL(k.url),V.delete(M)},ei=(M,k)=>(U.set(M,k),k.value),Oi=(M,k)=>{let O=F.get(M);if(O)return O;let $,j,me=new Promise((se,pt)=>{$=se,j=pt});F.set(M,me);let q=()=>{F.get(M)===me&&F.delete(M)};me.then(q,q);try{Promise.resolve(k()).then($,j)}catch(se){j(se)}return me},Di=(M,k)=>{let O=E0.get(M);if(O)return O;let $,j,me=new Promise((se,pt)=>{$=se,j=pt});E0.set(M,me);let q=()=>{E0.get(M)===me&&E0.delete(M)};me.then(q,q);try{Promise.resolve(k()).then($,j)}catch(se){j(se)}return me},wr=M=>(M.referenceCount+=1,M),di=({registry:M,identity:k,dispose:O})=>{let $=M.get(k);return $||($={registry:M,identity:k,referenceCount:0,dispose:O,unregister:()=>{M.get(k)===$&&M.delete(k)}},M.set(k,$)),wr($)},Er=async M=>{if(M.referenceCount-=1,!(M.referenceCount>0)){if(M.onZeroReferences){await M.onZeroReferences();return}M.unregister?.(),await M.dispose?.()}},na=(M,k,{dispose:O}={})=>{let $={category:"audio",value:k,sharedOwnership:di({registry:r4,identity:M,dispose:O})};return ei(M,$)},ls=M=>Array.isArray(M)?M[0]:M,aa=(M,k,{dispose:O,ownership:$,ownershipAlreadyRetained:j=!1,cacheAliasInstalled:me=!1}={})=>{let q=$?j?$:wr($):di({registry:Uc,identity:k.value,dispose:O});q.aliasRecords??=new Map;let se=q.aliasRecords.get(M);return se||(se={referenceCount:0,cacheAliasInstalled:!1,primaryValue:ls(k.value)},q.aliasRecords.set(M,se)),se.referenceCount+=1,me&&(se.cacheAliasInstalled=!0,se.primaryValue=ls(k.value)),Tm.set(M,q),k.sharedOwnership=q,ei(M,k)},YA=(M,k,O)=>{let $=Tm.get(M),j=($&&ls($.value)===ls(O.value)?$:void 0)??Uc.get(O.value);return!O.created&&!j?O.value:aa(M,{category:k,value:j?.value??O.value},j?{ownership:j,cacheAliasInstalled:O.cacheAliasInstalled}:{dispose:O.dispose,cacheAliasInstalled:O.cacheAliasInstalled})},A0=M=>{if(M?.nodeName==="VIDEO"||typeof HTMLVideoElement<"u"&&M instanceof HTMLVideoElement){M.pause(),M.removeAttribute("src"),M.querySelectorAll("source").forEach(O=>O.remove()),M.load();return}typeof M?.close=="function"&&M.close()},s4=M=>{let k=new Set,O=Array.isArray(M)?M:[M];for(let $ of O){let j=$?.source?.resource;j&&k.add(j)}return k},jA=M=>{let k=M;try{k=Ze.resolver?.resolve?.(M)?.src??M}catch{}try{let O=(typeof document<"u"?document.baseURI:void 0)??globalThis.location?.href;return new URL(k,O).href}catch{return k}},o4=(M,k,O)=>{let $={sourceUrl:M,sourceIdentity:k,referenceCount:0,aliasRecords:new Map,disposing:!1};return wm.set(k,$),$.loadPromise=(async()=>{if(O)try{await O}catch{}let j=Ze.cache.has(M),me=await Ze.load(M),q=s4(me);return $.value=me,Uc.set(me,$),j||($.dispose=async()=>{try{await Ze.unload(M)}finally{for(let se of q)A0(se)}}),me})(),$.onZeroReferences=async()=>{$.disposing=!0,$.value!==void 0&&Uc.get($.value)===$&&Uc.delete($.value);let j=Promise.resolve().then(()=>$.dispose?.());$.disposalPromise=j;try{await j}finally{wm.get(k)===$&&wm.delete(k)}},$},n4=M=>{let k=jA(M),O=wm.get(k);return(!O||O.disposing)&&(O=o4(M,k,O?.disposalPromise)),wr(O)},a4=async(M,k)=>{let O=k.sharedOwnership,$=O.aliasRecords.get(M),j=($?.referenceCount??1)-1;j>0?$.referenceCount=j:(O.aliasRecords.delete(M),Tm.get(M)===O&&Tm.delete(M),$?.cacheAliasInstalled===!0&&Ze.cache.has(M)&&Ze.cache.get(M)===$.primaryValue&&Ze.cache.remove(M)),await Er(O)},qA=async M=>{let k=F.get(M);if(k)try{await k}catch{return!1}let O=U.get(M);return!O||O.released===!0?!1:(O.released=!0,U.get(M)===O&&U.delete(M),O.category==="audio"?await Er(O.sharedOwnership):O.category==="font"?document.fonts?.delete?.(O.value):(O.category==="texture"||O.category==="video")&&await a4(M,O),!0)},c4=async({sourceUrl:M,mimeType:k})=>{let O=document.createElement("video");O.crossOrigin="anonymous",O.preload="metadata",O.playsInline=!0,O.setAttribute("playsinline",""),O.setAttribute("webkit-playsinline","");let $=document.createElement("source");$.src=M,typeof k=="string"&&k.length>0&&($.type=k),O.appendChild($),O.load();let j=await ya(),me=new G({source:o(O,j)});return n(me),me},l4=(M,k,O)=>{f&&f.registerHotkeys(O?.keyboard??{}),M.renderer.events.cursorStyles||(M.renderer.events.cursorStyles={}),M.renderer.events.cursorStyles.default||(M.renderer.events.cursorStyles.default="default"),M.renderer.events.cursorStyles.hover||(M.renderer.events.cursorStyles.hover="pointer");let $=k?.cursorStyles,j=O?.cursorStyles;Me($,j)||(j?(j.default&&(M.renderer.events.cursorStyles.default=j.default,M.canvas.style.cursor=j.default),j.hover&&(M.renderer.events.cursorStyles.hover=j.hover)):$&&(M.renderer.events.cursorStyles.default="default",M.renderer.events.cursorStyles.hover="pointer"))},u4=(M,k,O,$)=>{if(Me(h,O)){typeof M.render=="function"&&M.render();return}let j=zL({prevState:h,nextState:O,activeAnimations:p.getContinuableAnimations()});y&&y.abort(),y=new AbortController;let me=y.signal;m.reset(O.id),l4(M,h.global,O.global),p.cancelAllExcept(j.continuedAnimationIds),lc({app:M,parent:k,prevComputedTree:h.elements,nextComputedTree:O.elements,animations:O.animations,elementPlugins:d.elements,animationBus:p,completionTracker:m,eventHandler:$,signal:me}),p.flush(),v==="manual"&&b!==null&&p.setTime(b),aE({app:M,prevAudioTree:h.audio,nextAudioTree:O.audio,prevAudioEffects:h.audioEffects,nextAudioEffects:O.audioEffects,audioPlugins:d.audio}),h=O,typeof M.render=="function"&&M.render(),m.completeIfEmpty(),_||(_=!0,g&&g())},KA={rendererName:"pixi",get canvas(){return c.canvas},findElementByLabel:M=>c.stage.getChildByLabel(M,!0)??null,hitTestElementBounds:({x:M,y:k})=>t4({stage:c.stage,x:M,y:k}),extractBase64:async M=>{typeof c.render=="function"&&c.render();let k=new ue(0,0,c.renderer.width,c.renderer.height);if(!M)return await c.renderer.extract.base64({target:c.stage,frame:k});let O=c.stage.getChildByLabel(M,!0);if(!O)throw new Error(`Element with label '${M}' not found`);return await c.renderer.extract.base64({target:O,frame:k})},assignStageEvent:(M,k)=>{c.stage.eventMode="static",c.stage.on(M,k)},resumeAudio:()=>l.resume(),setAnimationPlaybackMode:M=>{a(M),v=M,v!=="manual"&&(b=null,p?.clearTime?.())},setAnimationTime:M=>{let k=Number(M);if(!Number.isFinite(k))throw new Error("Animation time must be a finite number.");v==="manual"&&(b=k),p.flush(),p.setTime(k),v!=="manual"&&(b=null,p.clearTime()),typeof c.render=="function"&&c.render()},init:async M=>{let{eventHandler:k,plugins:O,width:$,height:j,backgroundColor:me,debug:q=!1,onFirstRender:se,animationPlaybackMode:pt="auto"}=M;g=se,a(pt),v=pt,b=null,w.forEach(ye=>ye()),w=[];let fi=[];O?.elements?.forEach(ye=>{ye?.parse&&fi.push(vV({type:ye.type,parse:ye.parse}))}),d={animations:O?.animations??[],elements:O?.elements??[],audio:O?.audio??[],parsers:fi},u=k,f=DV(k),m=NV(k),c=new cf,c.audioStage=l,await c.init({width:$,height:j,backgroundColor:me,preference:"webgl",preserveDrawingBuffer:q===!0}),typeof c.ticker?.remove=="function"&&c.ticker.remove(c.render,c),c.debug=q,c.inputDomBridge=qV({app:c}),A=ye=>{ye.preventDefault()},c.canvas.addEventListener("contextmenu",A),C=ye=>{ye.preventDefault();let At={};typeof ye.statusMessage=="string"&&ye.statusMessage.length>0&&(At.statusMessage=ye.statusMessage),u?.("rendererContextLost",At)},R=()=>{u?.("rendererContextRestored",{})},c.canvas.addEventListener("webglcontextlost",C),c.canvas.addEventListener("webglcontextrestored",R);let mt=c.renderer?.gpu?.device?.lost;if(mt&&typeof mt.then=="function"){let ye={};P=ye,Promise.resolve(mt).then(At=>{if(P!==ye)return;let pi={};typeof At?.reason=="string"&&At.reason.length>0&&(pi.reason=At.reason),typeof At?.message=="string"&&At.message.length>0&&(pi.statusMessage=At.message),u?.("rendererContextLost",pi)},()=>{})}z=new wt,z.label="__route_graphics_background__",H(z,$,j,me),c.stage.addChild(z),c.stage.width=$,c.stage.height=j,c.ticker.add(c.audioStage.tick),p=GV();let It=()=>{v==="manual"&&typeof c.render=="function"&&c.render()};return w=[p.on("started",It),p.on("completed",It),p.on("cancelled",It)],q?(x=ye=>{v==="auto"&&ye?.detail?.deltaMS&&(p.tick(Number(ye.detail.deltaMS)),typeof c.render=="function"&&c.render())},window.addEventListener("snapShotKeyFrame",x)):(S=ye=>{v==="auto"&&(p.tick(ye.deltaMS),typeof c.render=="function"&&c.render())},c.ticker.add(S)),KA},destroy:()=>{y&&(y.abort(),y=void 0),x&&(window.removeEventListener("snapShotKeyFrame",x),x=void 0),S&&typeof c?.ticker?.remove=="function"&&(c.ticker.remove(S),S=void 0),A&&c?.canvas&&(c.canvas.removeEventListener("contextmenu",A),A=void 0),C&&c?.canvas&&(c.canvas.removeEventListener("webglcontextlost",C),C=void 0),R&&c?.canvas&&(c.canvas.removeEventListener("webglcontextrestored",R),R=void 0),P=void 0;let M=new Set([...U.keys(),...F.keys()]);for(let O of M)qA(O).catch(()=>{});c?.inputDomBridge?.destroy?.(),f?.destroy(),Kw(),w.forEach(O=>O()),w=[],p&&p.destroy(),c?.audioStage&&c.audioStage.destroy();let k=O=>{for(let $ of O.children){let j=$.texture?.source?.resource;j instanceof HTMLVideoElement&&j.pause(),$.children&&k($)}};c?.stage&&(k(c.stage),pr({app:c,root:c.stage})),c&&c.destroy(),v="auto",b=null,z=void 0},loadAssets:async M=>{if(!M)throw new Error("assetBufferMap is required");let k={audio:{},font:{},video:{},texture:{}};for(let[q,se]of Object.entries(M)){let pt=Q(se.type);k[pt][q]=se}let O=Object.entries(k.audio),$=O.length>0&&typeof Mi.prepareDecoders=="function"?Mi.prepareDecoders(k.audio):void 0,j=[];O.forEach(([q,se])=>{j.push({includeInReturn:!1,promise:Oi(q,()=>Z({key:q,category:"audio",phase:"decode",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="audio")return pt.value;D(se,"Audio"),await $;let fi=!r4.has(q)&&Mi.getAsset(q)!==void 0,mt=await Mi.load(q,se.buffer,se.type);return na(q,mt,{dispose:fi?void 0:()=>Mi.unload(q)})}))})}),Object.entries(k.font).forEach(([q,se])=>{j.push({includeInReturn:!1,promise:Oi(q,()=>Z({key:q,category:"font",phase:"font face load",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="font")return pt.value;D(se,"Font");let fi=new Blob([se.buffer],{type:se.type}),mt=URL.createObjectURL(fi),It=new FontFace(q,`url(${mt})`);try{return await It.load(),document.fonts.add(It),ei(q,{category:"font",value:It})}finally{URL.revokeObjectURL(mt)}}))})}),Object.entries(k.texture).forEach(([q,se])=>j.push({includeInReturn:!0,promise:Oi(q,()=>Z({key:q,category:"texture",phase:se?.source==="url"&&typeof se?.url=="string"?"Pixi URL load":"image bitmap creation",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="texture")return pt.value;if(Ze.cache.has(q)){let mt=Ze.cache.get(q),It=se?.source==="url"&&typeof se?.url=="string"?se.url:void 0,ye=It?wm.get(jA(It)):void 0;if(!(ye&&(ye.disposing||ye.value===void 0))){let pi=Tm.get(q),Ps=(pi&&ls(pi.value)===mt?pi:void 0)??(ye&&ls(ye.value)===mt?ye:void 0)??Uc.get(mt);return Ps?aa(q,{category:"texture",value:Ps.value},{ownership:Ps}):mt}}if(se?.source==="url"&&typeof se?.url=="string"){let mt=se.url,It=n4(mt),ye=!1;try{let At=await It.loadPromise;return q!==mt&&(Ze.cache.set(q,At),ye=!0),aa(q,{category:"texture",value:At},{ownership:It,ownershipAlreadyRetained:!0,cacheAliasInstalled:ye})}catch(At){throw ye&&Ze.cache.has(q)&&Ze.cache.get(q)===ls(It.value)&&Ze.cache.remove(q),await Er(It),At}}let fi=await Di(`texture:${q}`,async()=>{if(Ze.cache.has(q))return{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1};D(se,"Texture");let mt=new Blob([se.buffer],{type:se.type}),It=await createImageBitmap(mt),ye=G.from(It),At=()=>{try{ye?.destroyed||ye?.destroy?.(!0)}finally{A0(It)}};return Ze.cache.has(q)?(At(),{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1}):(Ze.cache.set(q,ye),{value:ye,created:!0,cacheAliasInstalled:!0,dispose:At})});return YA(q,"texture",fi)}))})),Object.entries(k.video).forEach(([q,se])=>{j.push({includeInReturn:!0,promise:Oi(q,()=>Z({key:q,category:"video",phase:"video texture load",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="video")return pt.value;if(Ze.cache.has(q)){let mt=Ze.cache.get(q);return Uc.has(mt)?aa(q,{category:"video",value:mt}):mt}se?.source!=="url"&&D(se,"Video");let fi=await Di(`video:${q}`,async()=>{if(Ze.cache.has(q))return{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1};let mt=se?.source==="url"&&typeof se?.url=="string"?se.url:URL.createObjectURL(new Blob([se.buffer],{type:se.type})),It=se?.source!=="url";Rt(q,mt,{revokable:It});let ye;try{ye=await c4({sourceUrl:mt,mimeType:se?.type})}catch(Ps){throw V.delete(q),It&&URL.revokeObjectURL(mt),Ps}let At=ye?.source?.resource,pi=()=>{try{ye?.destroyed||ye?.destroy?.(!0),A0(At)}finally{co(q)}};return Ze.cache.has(q)?(pi(),{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1}):(Ze.cache.set(q,ye),{value:ye,created:!0,cacheAliasInstalled:!0,dispose:pi})});return YA(q,"video",fi)}))})});let me=await Promise.allSettled(j.map(q=>q.promise));return nt(me),me.map((q,se)=>j[se].includeInReturn&&q.status==="fulfilled"?q.value:void 0).filter(Boolean)},unloadAssets:async M=>{if(!Array.isArray(M))throw new Error("assetIds must be an array");let k=Array.from(new Set(M.filter(j=>typeof j=="string"&&j.length>0))),O=[],$=[];for(let j of k)try{await qA(j)&&O.push(j)}catch(me){let q=new Error(`Could not unload asset "${j}".`,{cause:me});q.details={assetKey:j,phase:"unload",cause:L(me)},$.push(q)}if($.length===1)throw $[0];if($.length>1)throw new AggregateError($,`Could not unload ${$.length} assets.`);return O},loadAudioAssets:async M=>Promise.all(M.map(k=>Oi(k,async()=>{let O=U.get(k);if(O?.category==="audio")return O.value;let $=Mi.getAsset(k);if($!==void 0)return na(k,$);let me=await(await fetch(k)).arrayBuffer(),q=I(k);await Mi.prepareDecoders?.({[k]:{buffer:me,type:q}});let se=await Mi.load(k,me,q);return na(k,se,{dispose:()=>Mi.unload(k)})}))),updatedBackgroundColor:M=>{c.renderer.background.color=M,z&&H(z,c.renderer.width,c.renderer.height,M),typeof c.render=="function"&&c.render()},render:M=>{let k=$A(M),O=kA({JSONObject:k.elements,parserPlugins:d.parsers}),$={...k,elements:O};u4(c,c.stage,$,u)},parse:M=>{let k=$A(M),O=kA({JSONObject:k.elements,parserPlugins:d.parsers});return{...k,elements:O}}};return KA},i4=rQ;var J6e=i4;export{cf as Application,Ze as Assets,Mi as AudioAsset,wY as animatedSpritePlugin,vY as containerPlugin,FT as createAnimationPlugin,x4 as createAssetBufferManager,kT as createAudioPlugin,Yt as createElementPlugin,J6e as default,kX as inputPlugin,fj as particlesPlugin,q6 as rectPlugin,aE as renderAudio,lc as renderElements,_X as sliderPlugin,MY as soundPlugin,tX as spritePlugin,wG as spritesheetAnimationPlugin,W6 as textPlugin,TY as textRevealingPlugin,EY as tweenPlugin,sX as videoPlugin};
|
|
2434
|
+
`))}}var D7=0,g0={textureCount:0,uboCount:0},sa=class{constructor(e){this.destroyed=!1,this.renderer=e,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=D7++}systemCheck(){if(!h0())throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(e){this.gl=e,this.reset()}bind(e,r){e.disposeRunner.add(this),e.uniforms.globals=this.renderer.globalUniforms;let i=e.program,s=i.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(e);return this.shader=e,this.program!==i&&(this.program=i,this.gl.useProgram(s.program)),r||(g0.textureCount=0,g0.uboCount=0,this.syncUniformGroup(e.uniformGroup,g0)),s}setUniforms(e){let r=this.shader.program,i=r.glPrograms[this.renderer.CONTEXT_UID];r.syncUniforms(i.uniformData,e,this.renderer)}syncUniformGroup(e,r){let i=this.getGlProgram();(!e.static||e.dirtyId!==i.uniformDirtyGroups[e.id])&&(i.uniformDirtyGroups[e.id]=e.dirtyId,this.syncUniforms(e,i,r))}syncUniforms(e,r,i){(e.syncUniforms[this.shader.program.id]||this.createSyncGroups(e))(r.uniformData,e.uniforms,this.renderer,i)}createSyncGroups(e){let r=this.getSignature(e,this.shader.program.uniformData,"u");return this.cache[r]||(this.cache[r]=aA(e,this.shader.program.uniformData)),e.syncUniforms[this.shader.program.id]=this.cache[r],e.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(e,r){let i=this.getGlProgram();if(!e.static||e.dirtyId!==0||!i.uniformGroups[e.id]){e.dirtyId=0;let s=i.uniformGroups[e.id]||this.createSyncBufferGroup(e,i,r);e.buffer.update(),s(i.uniformData,e.uniforms,this.renderer,g0,e.buffer)}this.renderer.buffer.bindBufferBase(e.buffer,i.uniformBufferBindings[r])}createSyncBufferGroup(e,r,i){let{gl:s}=this.renderer;this.renderer.buffer.bind(e.buffer);let o=this.gl.getUniformBlockIndex(r.program,i);r.uniformBufferBindings[i]=this.shader.uniformBindCount,s.uniformBlockBinding(r.program,o,this.shader.uniformBindCount),this.shader.uniformBindCount++;let n=this.getSignature(e,this.shader.program.uniformData,"ubo"),a=this._uboCache[n];if(a||(a=this._uboCache[n]=gA(e,this.shader.program.uniformData)),e.autoManage){let c=new Float32Array(a.size/4);e.buffer.update(c)}return r.uniformGroups[e.id]=a.syncFunc,r.uniformGroups[e.id]}getSignature(e,r,i){let s=e.uniforms,o=[`${i}-`];for(let n in s)o.push(n),r[n]&&o.push(r[n].type);return o.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(e){let r=this.gl,i=e.program,s=mA(r,i);return i.glPrograms[this.renderer.CONTEXT_UID]=s,s}reset(){this.program=null,this.shader=null}disposeShader(e){this.shader===e&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}};sa.extension={type:le.RendererSystem,name:"shader"};xe.add(sa);var qo=class{constructor(e){this.renderer=e}run(e){let{renderer:r}=this;r.runners.init.emit(r.options),e.hello&&console.log(`PixiJS 7.4.3 - ${r.rendererLogId} - https://pixijs.com`),r.resize(r.screen.width,r.screen.height)}destroy(){}};qo.defaultOptions={hello:!1},qo.extension={type:[le.RendererSystem,le.CanvasRendererSystem],name:"startup"};xe.add(qo);function sV(t,e=[]){return e[Te.NORMAL]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.ADD]=[t.ONE,t.ONE],e[Te.MULTIPLY]=[t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SCREEN]=[t.ONE,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.OVERLAY]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.DARKEN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.LIGHTEN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR_DODGE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR_BURN]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.HARD_LIGHT]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SOFT_LIGHT]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.DIFFERENCE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.EXCLUSION]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.HUE]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SATURATION]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.COLOR]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.LUMINOSITY]=[t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.NONE]=[0,0],e[Te.NORMAL_NPM]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.ADD_NPM]=[t.SRC_ALPHA,t.ONE,t.ONE,t.ONE],e[Te.SCREEN_NPM]=[t.SRC_ALPHA,t.ONE_MINUS_SRC_COLOR,t.ONE,t.ONE_MINUS_SRC_ALPHA],e[Te.SRC_IN]=[t.DST_ALPHA,t.ZERO],e[Te.SRC_OUT]=[t.ONE_MINUS_DST_ALPHA,t.ZERO],e[Te.SRC_ATOP]=[t.DST_ALPHA,t.ONE_MINUS_SRC_ALPHA],e[Te.DST_OVER]=[t.ONE_MINUS_DST_ALPHA,t.ONE],e[Te.DST_IN]=[t.ZERO,t.SRC_ALPHA],e[Te.DST_OUT]=[t.ZERO,t.ONE_MINUS_SRC_ALPHA],e[Te.DST_ATOP]=[t.ONE_MINUS_DST_ALPHA,t.SRC_ALPHA],e[Te.XOR]=[t.ONE_MINUS_DST_ALPHA,t.ONE_MINUS_SRC_ALPHA],e[Te.SUBTRACT]=[t.ONE,t.ONE,t.ONE,t.ONE,t.FUNC_REVERSE_SUBTRACT,t.FUNC_ADD],e}var G7=0,N7=1,H7=2,V7=3,W7=4,z7=5,oV=class xA{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=Te.NONE,this._blendEq=!1,this.map=[],this.map[G7]=this.setBlend,this.map[N7]=this.setOffset,this.map[H7]=this.setCullFace,this.map[V7]=this.setDepthTest,this.map[W7]=this.setFrontFace,this.map[z7]=this.setDepthMask,this.checks=[],this.defaultState=new so,this.defaultState.blend=!0}contextChange(e){this.gl=e,this.blendModes=sV(e),this.set(this.defaultState),this.reset()}set(e){if(e=e||this.defaultState,this.stateId!==e.data){let r=this.stateId^e.data,i=0;for(;r;)r&1&&this.map[i].call(this,!!(e.data&1<<i)),r=r>>1,i++;this.stateId=e.data}for(let r=0;r<this.checks.length;r++)this.checks[r](this,e)}forceState(e){e=e||this.defaultState;for(let r=0;r<this.map.length;r++)this.map[r].call(this,!!(e.data&1<<r));for(let r=0;r<this.checks.length;r++)this.checks[r](this,e);this.stateId=e.data}setBlend(e){this.updateCheck(xA.checkBlendMode,e),this.gl[e?"enable":"disable"](this.gl.BLEND)}setOffset(e){this.updateCheck(xA.checkPolygonOffset,e),this.gl[e?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest(e){this.gl[e?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask(e){this.gl.depthMask(e)}setCullFace(e){this.gl[e?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace(e){this.gl.frontFace(this.gl[e?"CW":"CCW"])}setBlendMode(e){if(e===this.blendMode)return;this.blendMode=e;let r=this.blendModes[e],i=this.gl;r.length===2?i.blendFunc(r[0],r[1]):i.blendFuncSeparate(r[0],r[1],r[2],r[3]),r.length===6?(this._blendEq=!0,i.blendEquationSeparate(r[4],r[5])):this._blendEq&&(this._blendEq=!1,i.blendEquationSeparate(i.FUNC_ADD,i.FUNC_ADD))}setPolygonOffset(e,r){this.gl.polygonOffset(e,r)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode=-1,this.setBlendMode(0)}updateCheck(e,r){let i=this.checks.indexOf(e);r&&i===-1?this.checks.push(e):!r&&i!==-1&&this.checks.splice(i,1)}static checkBlendMode(e,r){e.setBlendMode(r.blendMode)}static checkPolygonOffset(e,r){e.setPolygonOffset(1,r.polygonOffset)}destroy(){this.gl=null}};oV.extension={type:le.RendererSystem,name:"state"};var yA=oV;xe.add(yA);var ch=class extends xc.default{constructor(){super(...arguments),this.runners={},this._systemsHash={}}setup(e){this.addRunners(...e.runners);let r=(e.priority??[]).filter(s=>e.systems[s]),i=[...r,...Object.keys(e.systems).filter(s=>!r.includes(s))];for(let s of i)this.addSystem(e.systems[s],s)}addRunners(...e){e.forEach(r=>{this.runners[r]=new qt(r)})}addSystem(e,r){let i=new e(this);if(this[r])throw new Error(`Whoops! The name "${r}" is already in use`);this[r]=i,this._systemsHash[r]=i;for(let s in this.runners)this.runners[s].add(i);return this}emitWithCustomOptions(e,r){let i=Object.keys(this._systemsHash);e.items.forEach(s=>{let o=i.find(n=>this._systemsHash[n]===s);s[e.name](r[o])})}destroy(){Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash={}}};var nm=class x0{constructor(e){this.renderer=e,this.count=0,this.checkCount=0,this.maxIdle=x0.defaultMaxIdle,this.checkCountMax=x0.defaultCheckCountMax,this.mode=x0.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==R_.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let e=this.renderer.texture,r=e.managedTextures,i=!1;for(let s=0;s<r.length;s++){let o=r[s];o.resource&&this.count-o.touched>this.maxIdle&&(e.destroyTexture(o,!0),r[s]=null,i=!0)}if(i){let s=0;for(let o=0;o<r.length;o++)r[o]!==null&&(r[s++]=r[o]);r.length=s}}unload(e){let r=this.renderer.texture,i=e._texture;i&&!i.framebuffer&&r.destroyTexture(i);for(let s=e.children.length-1;s>=0;s--)this.unload(e.children[s])}destroy(){this.renderer=null}};nm.defaultMode=R_.AUTO,nm.defaultMaxIdle=60*60,nm.defaultCheckCountMax=60*10,nm.extension={type:le.RendererSystem,name:"textureGC"};var ao=nm;xe.add(ao);var Rc=class{constructor(e){this.texture=e,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=Pe.UNSIGNED_BYTE,this.internalFormat=ee.RGBA,this.samplerType=0}};function nV(t){let e;return"WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext?e={[t.RGB]:oe.FLOAT,[t.RGBA]:oe.FLOAT,[t.ALPHA]:oe.FLOAT,[t.LUMINANCE]:oe.FLOAT,[t.LUMINANCE_ALPHA]:oe.FLOAT,[t.R8]:oe.FLOAT,[t.R8_SNORM]:oe.FLOAT,[t.RG8]:oe.FLOAT,[t.RG8_SNORM]:oe.FLOAT,[t.RGB8]:oe.FLOAT,[t.RGB8_SNORM]:oe.FLOAT,[t.RGB565]:oe.FLOAT,[t.RGBA4]:oe.FLOAT,[t.RGB5_A1]:oe.FLOAT,[t.RGBA8]:oe.FLOAT,[t.RGBA8_SNORM]:oe.FLOAT,[t.RGB10_A2]:oe.FLOAT,[t.RGB10_A2UI]:oe.FLOAT,[t.SRGB8]:oe.FLOAT,[t.SRGB8_ALPHA8]:oe.FLOAT,[t.R16F]:oe.FLOAT,[t.RG16F]:oe.FLOAT,[t.RGB16F]:oe.FLOAT,[t.RGBA16F]:oe.FLOAT,[t.R32F]:oe.FLOAT,[t.RG32F]:oe.FLOAT,[t.RGB32F]:oe.FLOAT,[t.RGBA32F]:oe.FLOAT,[t.R11F_G11F_B10F]:oe.FLOAT,[t.RGB9_E5]:oe.FLOAT,[t.R8I]:oe.INT,[t.R8UI]:oe.UINT,[t.R16I]:oe.INT,[t.R16UI]:oe.UINT,[t.R32I]:oe.INT,[t.R32UI]:oe.UINT,[t.RG8I]:oe.INT,[t.RG8UI]:oe.UINT,[t.RG16I]:oe.INT,[t.RG16UI]:oe.UINT,[t.RG32I]:oe.INT,[t.RG32UI]:oe.UINT,[t.RGB8I]:oe.INT,[t.RGB8UI]:oe.UINT,[t.RGB16I]:oe.INT,[t.RGB16UI]:oe.UINT,[t.RGB32I]:oe.INT,[t.RGB32UI]:oe.UINT,[t.RGBA8I]:oe.INT,[t.RGBA8UI]:oe.UINT,[t.RGBA16I]:oe.INT,[t.RGBA16UI]:oe.UINT,[t.RGBA32I]:oe.INT,[t.RGBA32UI]:oe.UINT,[t.DEPTH_COMPONENT16]:oe.FLOAT,[t.DEPTH_COMPONENT24]:oe.FLOAT,[t.DEPTH_COMPONENT32F]:oe.FLOAT,[t.DEPTH_STENCIL]:oe.FLOAT,[t.DEPTH24_STENCIL8]:oe.FLOAT,[t.DEPTH32F_STENCIL8]:oe.FLOAT}:e={[t.RGB]:oe.FLOAT,[t.RGBA]:oe.FLOAT,[t.ALPHA]:oe.FLOAT,[t.LUMINANCE]:oe.FLOAT,[t.LUMINANCE_ALPHA]:oe.FLOAT,[t.DEPTH_STENCIL]:oe.FLOAT},e}function aV(t){let e;return"WebGL2RenderingContext"in globalThis&&t instanceof globalThis.WebGL2RenderingContext?e={[Pe.UNSIGNED_BYTE]:{[ee.RGBA]:t.RGBA8,[ee.RGB]:t.RGB8,[ee.RG]:t.RG8,[ee.RED]:t.R8,[ee.RGBA_INTEGER]:t.RGBA8UI,[ee.RGB_INTEGER]:t.RGB8UI,[ee.RG_INTEGER]:t.RG8UI,[ee.RED_INTEGER]:t.R8UI,[ee.ALPHA]:t.ALPHA,[ee.LUMINANCE]:t.LUMINANCE,[ee.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[Pe.BYTE]:{[ee.RGBA]:t.RGBA8_SNORM,[ee.RGB]:t.RGB8_SNORM,[ee.RG]:t.RG8_SNORM,[ee.RED]:t.R8_SNORM,[ee.RGBA_INTEGER]:t.RGBA8I,[ee.RGB_INTEGER]:t.RGB8I,[ee.RG_INTEGER]:t.RG8I,[ee.RED_INTEGER]:t.R8I},[Pe.UNSIGNED_SHORT]:{[ee.RGBA_INTEGER]:t.RGBA16UI,[ee.RGB_INTEGER]:t.RGB16UI,[ee.RG_INTEGER]:t.RG16UI,[ee.RED_INTEGER]:t.R16UI,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT16},[Pe.SHORT]:{[ee.RGBA_INTEGER]:t.RGBA16I,[ee.RGB_INTEGER]:t.RGB16I,[ee.RG_INTEGER]:t.RG16I,[ee.RED_INTEGER]:t.R16I},[Pe.UNSIGNED_INT]:{[ee.RGBA_INTEGER]:t.RGBA32UI,[ee.RGB_INTEGER]:t.RGB32UI,[ee.RG_INTEGER]:t.RG32UI,[ee.RED_INTEGER]:t.R32UI,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT24},[Pe.INT]:{[ee.RGBA_INTEGER]:t.RGBA32I,[ee.RGB_INTEGER]:t.RGB32I,[ee.RG_INTEGER]:t.RG32I,[ee.RED_INTEGER]:t.R32I},[Pe.FLOAT]:{[ee.RGBA]:t.RGBA32F,[ee.RGB]:t.RGB32F,[ee.RG]:t.RG32F,[ee.RED]:t.R32F,[ee.DEPTH_COMPONENT]:t.DEPTH_COMPONENT32F},[Pe.HALF_FLOAT]:{[ee.RGBA]:t.RGBA16F,[ee.RGB]:t.RGB16F,[ee.RG]:t.RG16F,[ee.RED]:t.R16F},[Pe.UNSIGNED_SHORT_5_6_5]:{[ee.RGB]:t.RGB565},[Pe.UNSIGNED_SHORT_4_4_4_4]:{[ee.RGBA]:t.RGBA4},[Pe.UNSIGNED_SHORT_5_5_5_1]:{[ee.RGBA]:t.RGB5_A1},[Pe.UNSIGNED_INT_2_10_10_10_REV]:{[ee.RGBA]:t.RGB10_A2,[ee.RGBA_INTEGER]:t.RGB10_A2UI},[Pe.UNSIGNED_INT_10F_11F_11F_REV]:{[ee.RGB]:t.R11F_G11F_B10F},[Pe.UNSIGNED_INT_5_9_9_9_REV]:{[ee.RGB]:t.RGB9_E5},[Pe.UNSIGNED_INT_24_8]:{[ee.DEPTH_STENCIL]:t.DEPTH24_STENCIL8},[Pe.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[ee.DEPTH_STENCIL]:t.DEPTH32F_STENCIL8}}:e={[Pe.UNSIGNED_BYTE]:{[ee.RGBA]:t.RGBA,[ee.RGB]:t.RGB,[ee.ALPHA]:t.ALPHA,[ee.LUMINANCE]:t.LUMINANCE,[ee.LUMINANCE_ALPHA]:t.LUMINANCE_ALPHA},[Pe.UNSIGNED_SHORT_5_6_5]:{[ee.RGB]:t.RGB},[Pe.UNSIGNED_SHORT_4_4_4_4]:{[ee.RGBA]:t.RGBA},[Pe.UNSIGNED_SHORT_5_5_5_1]:{[ee.RGBA]:t.RGBA}},e}var lh=class{constructor(e){this.renderer=e,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new We,this.hasIntegerTextures=!1}contextChange(){let e=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=aV(e),this.samplerTypes=nV(e);let r=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=r;for(let s=0;s<r;s++)this.boundTextures[s]=null;this.emptyTextures={};let i=new Rc(e.createTexture());e.bindTexture(e.TEXTURE_2D,i.texture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,new Uint8Array(4)),this.emptyTextures[e.TEXTURE_2D]=i,this.emptyTextures[e.TEXTURE_CUBE_MAP]=new Rc(e.createTexture()),e.bindTexture(e.TEXTURE_CUBE_MAP,this.emptyTextures[e.TEXTURE_CUBE_MAP].texture);for(let s=0;s<6;s++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_CUBE_MAP,e.TEXTURE_MIN_FILTER,e.LINEAR);for(let s=0;s<this.boundTextures.length;s++)this.bind(null,s)}bind(e,r=0){let{gl:i}=this;if(e=e?.castToBaseTexture(),e?.valid&&!e.parentTextureArray){e.touched=this.renderer.textureGC.count;let s=e._glTextures[this.CONTEXT_UID]||this.initTexture(e);this.boundTextures[r]!==e&&(this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),i.bindTexture(e.target,s.texture)),s.dirtyId!==e.dirtyId?(this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),this.updateTexture(e)):s.dirtyStyleId!==e.dirtyStyleId&&this.updateTextureStyle(e),this.boundTextures[r]=e}else this.currentLocation!==r&&(this.currentLocation=r,i.activeTexture(i.TEXTURE0+r)),i.bindTexture(i.TEXTURE_2D,this.emptyTextures[i.TEXTURE_2D].texture),this.boundTextures[r]=null}reset(){this._unknownBoundTextures=!0,this.hasIntegerTextures=!1,this.currentLocation=-1;for(let e=0;e<this.boundTextures.length;e++)this.boundTextures[e]=this.unknownTexture}unbind(e){let{gl:r,boundTextures:i}=this;if(this._unknownBoundTextures){this._unknownBoundTextures=!1;for(let s=0;s<i.length;s++)i[s]===this.unknownTexture&&this.bind(null,s)}for(let s=0;s<i.length;s++)i[s]===e&&(this.currentLocation!==s&&(r.activeTexture(r.TEXTURE0+s),this.currentLocation=s),r.bindTexture(e.target,this.emptyTextures[e.target].texture),i[s]=null)}ensureSamplerType(e){let{boundTextures:r,hasIntegerTextures:i,CONTEXT_UID:s}=this;if(i)for(let o=e-1;o>=0;--o){let n=r[o];n&&n._glTextures[s].samplerType!==oe.FLOAT&&this.renderer.texture.unbind(n)}}initTexture(e){let r=new Rc(this.gl.createTexture());return r.dirtyId=-1,e._glTextures[this.CONTEXT_UID]=r,this.managedTextures.push(e),e.on("dispose",this.destroyTexture,this),r}initTextureType(e,r){r.internalFormat=this.internalFormats[e.type]?.[e.format]??e.format,r.samplerType=this.samplerTypes[r.internalFormat]??oe.FLOAT,this.webGLVersion===2&&e.type===Pe.HALF_FLOAT?r.type=this.gl.HALF_FLOAT:r.type=e.type}updateTexture(e){let r=e._glTextures[this.CONTEXT_UID];if(!r)return;let i=this.renderer;if(this.initTextureType(e,r),e.resource?.upload(i,e,r))r.samplerType!==oe.FLOAT&&(this.hasIntegerTextures=!0);else{let s=e.realWidth,o=e.realHeight,n=i.gl;(r.width!==s||r.height!==o||r.dirtyId<0)&&(r.width=s,r.height=o,n.texImage2D(e.target,0,r.internalFormat,s,o,0,e.format,r.type,null))}e.dirtyStyleId!==r.dirtyStyleId&&this.updateTextureStyle(e),r.dirtyId=e.dirtyId}destroyTexture(e,r){let{gl:i}=this;if(e=e.castToBaseTexture(),e._glTextures[this.CONTEXT_UID]&&(this.unbind(e),i.deleteTexture(e._glTextures[this.CONTEXT_UID].texture),e.off("dispose",this.destroyTexture,this),delete e._glTextures[this.CONTEXT_UID],!r)){let s=this.managedTextures.indexOf(e);s!==-1&&YE(this.managedTextures,s,1)}}updateTextureStyle(e){let r=e._glTextures[this.CONTEXT_UID];r&&((e.mipmap===vs.POW2||this.webGLVersion!==2)&&!e.isPowerOfTwo?r.mipmap=!1:r.mipmap=e.mipmap>=1,this.webGLVersion!==2&&!e.isPowerOfTwo?r.wrapMode=wp.CLAMP:r.wrapMode=e.wrapMode,e.resource?.style(this.renderer,e,r)||this.setStyle(e,r),r.dirtyStyleId=e.dirtyStyleId)}setStyle(e,r){let i=this.gl;if(r.mipmap&&e.mipmap!==vs.ON_MANUAL&&i.generateMipmap(e.target),i.texParameteri(e.target,i.TEXTURE_WRAP_S,r.wrapMode),i.texParameteri(e.target,i.TEXTURE_WRAP_T,r.wrapMode),r.mipmap){i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR_MIPMAP_LINEAR:i.NEAREST_MIPMAP_NEAREST);let s=this.renderer.context.extensions.anisotropicFiltering;if(s&&e.anisotropicLevel>0&&e.scaleMode===is.LINEAR){let o=Math.min(e.anisotropicLevel,i.getParameter(s.MAX_TEXTURE_MAX_ANISOTROPY_EXT));i.texParameterf(e.target,s.TEXTURE_MAX_ANISOTROPY_EXT,o)}}else i.texParameteri(e.target,i.TEXTURE_MIN_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST);i.texParameteri(e.target,i.TEXTURE_MAG_FILTER,e.scaleMode===is.LINEAR?i.LINEAR:i.NEAREST)}destroy(){this.renderer=null}};lh.extension={type:le.RendererSystem,name:"texture"};xe.add(lh);var uh=class{constructor(e){this.renderer=e}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glTransformFeedbacks[i]||this.createGLTransformFeedback(e);r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,s)}unbind(){let{gl:e}=this;e.bindTransformFeedback(e.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(e,r){let{gl:i,renderer:s}=this;r&&s.shader.bind(r),i.beginTransformFeedback(e)}endTransformFeedback(){let{gl:e}=this;e.endTransformFeedback()}createGLTransformFeedback(e){let{gl:r,renderer:i,CONTEXT_UID:s}=this,o=r.createTransformFeedback();e._glTransformFeedbacks[s]=o,r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,o);for(let n=0;n<e.buffers.length;n++){let a=e.buffers[n];a&&(i.buffer.update(a),a._glBuffers[s].refCount++,r.bindBufferBase(r.TRANSFORM_FEEDBACK_BUFFER,n,a._glBuffers[s].buffer||null))}return r.bindTransformFeedback(r.TRANSFORM_FEEDBACK,null),e.disposeRunner.add(this),o}disposeTransformFeedback(e,r){let i=e._glTransformFeedbacks[this.CONTEXT_UID],s=this.gl;e.disposeRunner.remove(this);let o=this.renderer.buffer;if(o)for(let n=0;n<e.buffers.length;n++){let a=e.buffers[n];if(!a)continue;let c=a._glBuffers[this.CONTEXT_UID];c&&(c.refCount--,c.refCount===0&&!r&&o.dispose(a,r))}i&&(r||s.deleteTransformFeedback(i),delete e._glTransformFeedbacks[this.CONTEXT_UID])}destroy(){this.renderer=null}};uh.extension={type:le.RendererSystem,name:"transformFeedback"};xe.add(uh);var Ko=class{constructor(e){this.renderer=e}init(e){this.screen=new je(0,0,e.width,e.height),this.element=e.view||ge.ADAPTER.createCanvas(),this.resolution=e.resolution||ge.RESOLUTION,this.autoDensity=!!e.autoDensity}resizeView(e,r){this.element.width=Math.round(e*this.resolution),this.element.height=Math.round(r*this.resolution);let i=this.element.width/this.resolution,s=this.element.height/this.resolution;this.screen.width=i,this.screen.height=s,this.autoDensity&&(this.element.style.width=`${i}px`,this.element.style.height=`${s}px`),this.renderer.emit("resize",i,s),this.renderer.runners.resize.emit(this.screen.width,this.screen.height)}destroy(e){e&&this.element.parentNode?.removeChild(this.element),this.renderer=null,this.element=null,this.screen=null}};Ko.defaultOptions={width:800,height:600,resolution:void 0,autoDensity:!1},Ko.extension={type:[le.RendererSystem,le.CanvasRendererSystem],name:"_view"};xe.add(Ko);ge.PREFER_ENV=Ci.WEBGL2;ge.STRICT_TEXTURE_CACHE=!1;ge.RENDER_OPTIONS={...jo.defaultOptions,...Yo.defaultOptions,...Ko.defaultOptions,...qo.defaultOptions};Object.defineProperties(ge,{WRAP_MODE:{get(){return We.defaultOptions.wrapMode},set(t){De("7.1.0","settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"),We.defaultOptions.wrapMode=t}},SCALE_MODE:{get(){return We.defaultOptions.scaleMode},set(t){De("7.1.0","settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"),We.defaultOptions.scaleMode=t}},MIPMAP_TEXTURES:{get(){return We.defaultOptions.mipmap},set(t){De("7.1.0","settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"),We.defaultOptions.mipmap=t}},ANISOTROPIC_LEVEL:{get(){return We.defaultOptions.anisotropicLevel},set(t){De("7.1.0","settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"),We.defaultOptions.anisotropicLevel=t}},FILTER_RESOLUTION:{get(){return De("7.1.0","settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"),no.defaultResolution},set(t){no.defaultResolution=t}},FILTER_MULTISAMPLE:{get(){return De("7.1.0","settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"),no.defaultMultisample},set(t){no.defaultMultisample=t}},SPRITE_MAX_TEXTURES:{get(){return Xo.defaultMaxTextures},set(t){De("7.1.0","settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"),Xo.defaultMaxTextures=t}},SPRITE_BATCH_SIZE:{get(){return Xo.defaultBatchSize},set(t){De("7.1.0","settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"),Xo.defaultBatchSize=t}},CAN_UPLOAD_SAME_BUFFER:{get(){return Xo.canUploadSameBuffer},set(t){De("7.1.0","settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"),Xo.canUploadSameBuffer=t}},GC_MODE:{get(){return ao.defaultMode},set(t){De("7.1.0","settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"),ao.defaultMode=t}},GC_MAX_IDLE:{get(){return ao.defaultMaxIdle},set(t){De("7.1.0","settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"),ao.defaultMaxIdle=t}},GC_MAX_CHECK_COUNT:{get(){return ao.defaultCheckCountMax},set(t){De("7.1.0","settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"),ao.defaultCheckCountMax=t}},PRECISION_VERTEX:{get(){return ns.defaultVertexPrecision},set(t){De("7.1.0","settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"),ns.defaultVertexPrecision=t}},PRECISION_FRAGMENT:{get(){return ns.defaultFragmentPrecision},set(t){De("7.1.0","settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"),ns.defaultFragmentPrecision=t}}});var Ic=(t=>(t[t.INTERACTION=50]="INTERACTION",t[t.HIGH=25]="HIGH",t[t.NORMAL=0]="NORMAL",t[t.LOW=-25]="LOW",t[t.UTILITY=-50]="UTILITY",t))(Ic||{});var hh=class{constructor(e,r=null,i=0,s=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=e,this.context=r,this.priority=i,this.once=s}match(e,r=null){return this.fn===e&&this.context===r}emit(e){this.fn&&(this.context?this.fn.call(this.context,e):this.fn(e));let r=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),r}connect(e){this.previous=e,e.next&&(e.next.previous=this),this.next=e.next,e.next=this}destroy(e=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);let r=this.next;return this.next=e?null:r,this.previous=null,r}};var cV=class ki{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new hh(null,null,1/0),this.deltaMS=1/ki.targetFPMS,this.elapsedMS=1/ki.targetFPMS,this._tick=e=>{this._requestId=null,this.started&&(this.update(e),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add(e,r,i=Ic.NORMAL){return this._addListener(new hh(e,r,i))}addOnce(e,r,i=Ic.NORMAL){return this._addListener(new hh(e,r,i,!0))}_addListener(e){let r=this._head.next,i=this._head;if(!r)e.connect(i);else{for(;r;){if(e.priority>r.priority){e.connect(i);break}i=r,r=r.next}e.previous||e.connect(i)}return this._startIfPossible(),this}remove(e,r){let i=this._head.next;for(;i;)i.match(e,r)?i=i.destroy():i=i.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let e=0,r=this._head;for(;r=r.next;)e++;return e}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let e=this._head.next;for(;e;)e=e.destroy(!0);this._head.destroy(),this._head=null}}update(e=performance.now()){let r;if(e>this.lastTime){if(r=this.elapsedMS=e-this.lastTime,r>this._maxElapsedMS&&(r=this._maxElapsedMS),r*=this.speed,this._minElapsedMS){let o=e-this._lastFrame|0;if(o<this._minElapsedMS)return;this._lastFrame=e-o%this._minElapsedMS}this.deltaMS=r,this.deltaTime=this.deltaMS*ki.targetFPMS;let i=this._head,s=i.next;for(;s;)s=s.emit(this.deltaTime);i.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=e}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(e){let r=Math.min(this.maxFPS,e),i=Math.min(Math.max(0,r)/1e3,ki.targetFPMS);this._maxElapsedMS=1/i}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(e){if(e===0)this._minElapsedMS=0;else{let r=Math.max(this.minFPS,e);this._minElapsedMS=1/(r/1e3)}}static get shared(){if(!ki._shared){let e=ki._shared=new ki;e.autoStart=!0,e._protected=!0}return ki._shared}static get system(){if(!ki._system){let e=ki._system=new ki;e.autoStart=!0,e._protected=!0}return ki._system}};cV.targetFPMS=.06;var as=cV;Object.defineProperties(ge,{TARGET_FPMS:{get(){return as.targetFPMS},set(t){De("7.1.0","settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"),as.targetFPMS=t}}});var am=class{static init(e){e=Object.assign({autoStart:!0,sharedTicker:!1},e),Object.defineProperty(this,"ticker",{set(r){this._ticker&&this._ticker.remove(this.render,this),this._ticker=r,r&&r.add(this.render,this,Ic.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=e.sharedTicker?as.shared:new as,e.autoStart&&this.start()}static destroy(){if(this._ticker){let e=this._ticker;this.ticker=null,e.destroy()}}};am.extension=le.Application;xe.add(am);var $7=[];xe.handleByList(le.Renderer,$7);var cm=class{constructor(e){this.renderer=e}contextChange(e){let r;if(this.renderer.context.webGLVersion===1){let i=e.getParameter(e.FRAMEBUFFER_BINDING);e.bindFramebuffer(e.FRAMEBUFFER,null),r=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.FRAMEBUFFER,i)}else{let i=e.getParameter(e.DRAW_FRAMEBUFFER_BINDING);e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),r=e.getParameter(e.SAMPLES),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,i)}r>=ft.HIGH?this.multisample=ft.HIGH:r>=ft.MEDIUM?this.multisample=ft.MEDIUM:r>=ft.LOW?this.multisample=ft.LOW:this.multisample=ft.NONE}destroy(){}};cm.extension={type:le.RendererSystem,name:"_multisample"};xe.add(cm);var y0=class{constructor(e){this.buffer=e||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}};var lm=class{constructor(e){this.renderer=e,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glBuffers[i]||this.createGLBuffer(e);r.bindBuffer(e.type,s.buffer)}unbind(e){let{gl:r}=this;r.bindBuffer(e,null)}bindBufferBase(e,r){let{gl:i,CONTEXT_UID:s}=this;if(this.boundBufferBases[r]!==e){let o=e._glBuffers[s]||this.createGLBuffer(e);this.boundBufferBases[r]=e,i.bindBufferBase(i.UNIFORM_BUFFER,r,o.buffer)}}bindBufferRange(e,r,i){let{gl:s,CONTEXT_UID:o}=this;i=i||0;let n=e._glBuffers[o]||this.createGLBuffer(e);s.bindBufferRange(s.UNIFORM_BUFFER,r||0,n.buffer,i*256,256)}update(e){let{gl:r,CONTEXT_UID:i}=this,s=e._glBuffers[i]||this.createGLBuffer(e);if(e._updateID!==s.updateID)if(s.updateID=e._updateID,r.bindBuffer(e.type,s.buffer),s.byteLength>=e.data.byteLength)r.bufferSubData(e.type,0,e.data);else{let o=e.static?r.STATIC_DRAW:r.DYNAMIC_DRAW;s.byteLength=e.data.byteLength,r.bufferData(e.type,e.data,o)}}dispose(e,r){if(!this.managedBuffers[e.id])return;delete this.managedBuffers[e.id];let i=e._glBuffers[this.CONTEXT_UID],s=this.gl;e.disposeRunner.remove(this),i&&(r||s.deleteBuffer(i.buffer),delete e._glBuffers[this.CONTEXT_UID])}disposeAll(e){let r=Object.keys(this.managedBuffers);for(let i=0;i<r.length;i++)this.dispose(this.managedBuffers[r[i]],e)}createGLBuffer(e){let{CONTEXT_UID:r,gl:i}=this;return e._glBuffers[r]=new y0(i.createBuffer()),this.managedBuffers[e.id]=e,e.disposeRunner.add(this),e._glBuffers[r]}};lm.extension={type:le.RendererSystem,name:"buffer"};xe.add(lm);var um=class{constructor(e){this.renderer=e}render(e,r){let i=this.renderer,s,o,n,a;if(r&&(s=r.renderTexture,o=r.clear,n=r.transform,a=r.skipUpdateTransform),this.renderingToScreen=!s,i.runners.prerender.emit(),i.emit("prerender"),i.projection.transform=n,!i.context.isLost){if(s||(this.lastObjectRendered=e),!a){let c=e.enableTempParent();e.updateTransform(),e.disableTempParent(c)}i.renderTexture.bind(s),i.batch.currentRenderer.start(),(o??i.background.clearBeforeRender)&&i.renderTexture.clear(),e.render(i),i.batch.currentRenderer.flush(),s&&(r.blit&&i.framebuffer.blit(),s.baseTexture.update()),i.runners.postrender.emit(),i.projection.transform=null,i.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}};um.extension={type:le.RendererSystem,name:"objectRenderer"};xe.add(um);var _0=class _A extends ch{constructor(e){super(),this.type=cE.WEBGL,e=Object.assign({},ge.RENDER_OPTIONS,e),this.gl=null,this.CONTEXT_UID=0,this.globalUniforms=new Fi({projectionMatrix:new St},!0);let r={runners:["init","destroy","contextChange","resolutionChange","reset","update","postrender","prerender","resize"],systems:_A.__systems,priority:["_view","textureGenerator","background","_plugin","startup","context","state","texture","buffer","geometry","framebuffer","transformFeedback","mask","scissor","stencil","projection","textureGC","filter","renderTexture","batch","objectRenderer","_multisample"]};this.setup(r),"useContextAlpha"in e&&(De("7.0.0","options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"),e.premultipliedAlpha=e.useContextAlpha&&e.useContextAlpha!=="notMultiplied",e.backgroundAlpha=e.useContextAlpha===!1?1:e.backgroundAlpha),this._plugin.rendererPlugins=_A.__plugins,this.options=e,this.startup.run(this.options)}static test(e){return e?.forceCanvas?!1:$E()}render(e,r){this.objectRenderer.render(e,r)}resize(e,r){this._view.resizeView(e,r)}reset(){return this.runners.reset.emit(),this}clear(){this.renderTexture.bind(),this.renderTexture.clear()}destroy(e=!1){this.runners.destroy.items.reverse(),this.emitWithCustomOptions(this.runners.destroy,{_view:e}),super.destroy()}get plugins(){return this._plugin.plugins}get multisample(){return this._multisample.multisample}get width(){return this._view.element.width}get height(){return this._view.element.height}get resolution(){return this._view.resolution}set resolution(e){this._view.resolution=e,this.runners.resolutionChange.emit(e)}get autoDensity(){return this._view.autoDensity}get view(){return this._view.element}get screen(){return this._view.screen}get lastObjectRendered(){return this.objectRenderer.lastObjectRendered}get renderingToScreen(){return this.objectRenderer.renderingToScreen}get rendererLogId(){return`WebGL ${this.context.webGLVersion}`}get clearBeforeRender(){return De("7.0.0","renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."),this.background.clearBeforeRender}get useContextAlpha(){return De("7.0.0","renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."),this.context.useContextAlpha}get preserveDrawingBuffer(){return De("7.0.0","renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"),this.context.preserveDrawingBuffer}get backgroundColor(){return De("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color}set backgroundColor(e){De("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color=e}get backgroundAlpha(){return De("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha}set backgroundAlpha(e){De("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha=e}get powerPreference(){return De("7.0.0","renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"),this.context.powerPreference}generateTexture(e,r){return this.textureGenerator.generateTexture(e,r)}};_0.extension={type:le.Renderer,priority:1},_0.__plugins={},_0.__systems={};var b0=_0;xe.handleByMap(le.RendererPlugin,b0.__plugins);xe.handleByMap(le.RendererSystem,b0.__systems);xe.add(b0);var oa=class extends Bi{constructor(e,r){let{width:i,height:s}=r||{};super(i,s),this.items=[],this.itemDirtyIds=[];for(let o=0;o<e;o++){let n=new We;this.items.push(n),this.itemDirtyIds.push(-2)}this.length=e,this._load=null,this.baseTexture=null}initFromArray(e,r){for(let i=0;i<this.length;i++)e[i]&&(e[i].castToBaseTexture?this.addBaseTextureAt(e[i].castToBaseTexture(),i):e[i]instanceof Bi?this.addResourceAt(e[i],i):this.addResourceAt(Xu(e[i],r),i))}dispose(){for(let e=0,r=this.length;e<r;e++)this.items[e].destroy();this.items=null,this.itemDirtyIds=null,this._load=null}addResourceAt(e,r){if(!this.items[r])throw new Error(`Index ${r} is out of bounds`);return e.valid&&!this.valid&&this.resize(e.width,e.height),this.items[r].setResource(e),this}bind(e){if(this.baseTexture!==null)throw new Error("Only one base texture per TextureArray is allowed");super.bind(e);for(let r=0;r<this.length;r++)this.items[r].parentTextureArray=e,this.items[r].on("update",e.update,e)}unbind(e){super.unbind(e);for(let r=0;r<this.length;r++)this.items[r].parentTextureArray=null,this.items[r].off("update",e.update,e)}load(){if(this._load)return this._load;let e=this.items.map(r=>r.resource).filter(r=>r).map(r=>r.load());return this._load=Promise.all(e).then(()=>{let{realWidth:r,realHeight:i}=this.items[0];return this.resize(r,i),this.update(),Promise.resolve(this)}),this._load}};var hm=class extends oa{constructor(e,r){let{width:i,height:s}=r||{},o,n;Array.isArray(e)?(o=e,n=e.length):n=e,super(n,{width:i,height:s}),o&&this.initFromArray(o,r)}addBaseTextureAt(e,r){if(e.resource)this.addResourceAt(e.resource,r);else throw new Error("ArrayResource does not support RenderTexture");return this}bind(e){super.bind(e),e.target=Ho.TEXTURE_2D_ARRAY}upload(e,r,i){let{length:s,itemDirtyIds:o,items:n}=this,{gl:a}=e;i.dirtyId<0&&a.texImage3D(a.TEXTURE_2D_ARRAY,0,i.internalFormat,this._width,this._height,s,0,r.format,i.type,null);for(let c=0;c<s;c++){let l=n[c];o[c]<l.dirtyId&&(o[c]=l.dirtyId,l.valid&&a.texSubImage3D(a.TEXTURE_2D_ARRAY,0,0,0,c,l.resource.width,l.resource.height,1,r.format,i.type,l.resource.source))}return!0}};var dm=class extends lr{constructor(e){super(e)}static test(e){let{OffscreenCanvas:r}=globalThis;return r&&e instanceof r?!0:globalThis.HTMLCanvasElement&&e instanceof HTMLCanvasElement}};var lV=class fm extends oa{constructor(e,r){let{width:i,height:s,autoLoad:o,linkBaseTexture:n}=r||{};if(e&&e.length!==fm.SIDES)throw new Error(`Invalid length. Got ${e.length}, expected 6`);super(6,{width:i,height:s});for(let a=0;a<fm.SIDES;a++)this.items[a].target=Ho.TEXTURE_CUBE_MAP_POSITIVE_X+a;this.linkBaseTexture=n!==!1,e&&this.initFromArray(e,r),o!==!1&&this.load()}bind(e){super.bind(e),e.target=Ho.TEXTURE_CUBE_MAP}addBaseTextureAt(e,r,i){if(i===void 0&&(i=this.linkBaseTexture),!this.items[r])throw new Error(`Index ${r} is out of bounds`);if(!this.linkBaseTexture||e.parentTextureArray||Object.keys(e._glTextures).length>0)if(e.resource)this.addResourceAt(e.resource,r);else throw new Error("CubeResource does not support copying of renderTexture.");else e.target=Ho.TEXTURE_CUBE_MAP_POSITIVE_X+r,e.parentTextureArray=this.baseTexture,this.items[r]=e;return e.valid&&!this.valid&&this.resize(e.realWidth,e.realHeight),this.items[r]=e,this}upload(e,r,i){let s=this.itemDirtyIds;for(let o=0;o<fm.SIDES;o++){let n=this.items[o];(s[o]<n.dirtyId||i.dirtyId<r.dirtyId)&&(n.valid&&n.resource?(n.resource.upload(e,n,i),s[o]=n.dirtyId):s[o]<-1&&(e.gl.texImage2D(n.target,0,i.internalFormat,r.realWidth,r.realHeight,0,r.format,i.type,null),s[o]=-1))}return!0}static test(e){return Array.isArray(e)&&e.length===fm.SIDES}};lV.SIDES=6;var bA=lV;var pm=class t extends lr{constructor(e,r){r=r||{};let i,s,o;typeof e=="string"?(i=t.EMPTY,s=e,o=!0):(i=e,s=null,o=!1),super(i),this.url=s,this.crossOrigin=r.crossOrigin??!0,this.alphaMode=typeof r.alphaMode=="number"?r.alphaMode:null,this.ownsImageBitmap=r.ownsImageBitmap??o,this._load=null,r.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(async(e,r)=>{if(this.url===null){e(this);return}try{let i=await ge.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;let s=await i.blob();if(this.destroyed)return;let o=await createImageBitmap(s,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===Ri.UNPACK?"premultiply":"none"});if(this.destroyed){o.close();return}this.source=o,this.update(),e(this)}catch(i){if(this.destroyed)return;r(i),this.onError.emit(i)}}),this._load)}upload(e,r,i){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&(r.alphaMode=this.alphaMode),super.upload(e,r,i)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(e){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof e=="string"||e instanceof ImageBitmap)}static get EMPTY(){return t._EMPTY=t._EMPTY??ge.ADAPTER.createCanvas(0,0),t._EMPTY}};var vA=class v0 extends lr{constructor(e,r){r=r||{},super(ge.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=e,this.scale=r.scale||1,this._overrideWidth=r.width,this._overrideHeight=r.height,this._resolve=null,this._crossorigin=r.crossorigin,this._load=null,r.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(e=>{if(this._resolve=()=>{this.update(),e(this)},v0.SVG_XML.test(this.svg.trim())){if(!btoa)throw new Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){let e=new Image;lr.crossOrigin(e,this.svg,this._crossorigin),e.src=this.svg,e.onerror=r=>{this._resolve&&(e.onerror=null,this.onError.emit(r))},e.onload=()=>{if(!this._resolve)return;let r=e.width,i=e.height;if(!r||!i)throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let s=r*this.scale,o=i*this.scale;(this._overrideWidth||this._overrideHeight)&&(s=this._overrideWidth||this._overrideHeight/i*r,o=this._overrideHeight||this._overrideWidth/r*i),s=Math.round(s),o=Math.round(o);let n=this.source;n.width=s,n.height=o,n._pixiId=`canvas_${Wo()}`,n.getContext("2d").drawImage(e,0,0,r,i,0,0,s,o),this._resolve(),this._resolve=null}}static getSize(e){let r=v0.SVG_SIZE.exec(e),i={};return r&&(i[r[1]]=Math.round(parseFloat(r[3])),i[r[5]]=Math.round(parseFloat(r[7]))),i}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test(e,r){return r==="svg"||typeof e=="string"&&e.startsWith("data:image/svg+xml")||typeof e=="string"&&v0.SVG_XML.test(e)}};vA.SVG_XML=/^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m,vA.SVG_SIZE=/<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var SA=vA;var S0=class extends lr{constructor(e){super(e)}static test(e){return!!globalThis.VideoFrame&&e instanceof globalThis.VideoFrame}};var TA=class wA extends lr{constructor(e,r){if(r=r||{},!(e instanceof HTMLVideoElement)){let i=document.createElement("video");r.autoLoad!==!1&&i.setAttribute("preload","auto"),r.playsinline!==!1&&(i.setAttribute("webkit-playsinline",""),i.setAttribute("playsinline","")),r.muted===!0&&(i.setAttribute("muted",""),i.muted=!0),r.loop===!0&&i.setAttribute("loop",""),r.autoPlay!==!1&&i.setAttribute("autoplay",""),typeof e=="string"&&(e=[e]);let s=e[0].src||e[0];lr.crossOrigin(i,s,r.crossorigin);for(let o=0;o<e.length;++o){let n=document.createElement("source"),{src:a,mime:c}=e[o];if(a=a||e[o],a.startsWith("data:"))c=a.slice(5,a.indexOf(";"));else if(!a.startsWith("blob:")){let l=a.split("?").shift().toLowerCase(),h=l.slice(l.lastIndexOf(".")+1);c=c||wA.MIME_TYPES[h]||`video/${h}`}n.src=a,c&&(n.type=c),i.appendChild(n)}e=i}super(e),this.noSubImage=!0,this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=r.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=r.autoPlay!==!1,this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),r.autoLoad!==!1&&this.load()}update(e=0){if(!this.destroyed){if(this._updateFPS){let r=as.shared.elapsedMS*this.source.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-r)}(!this._updateFPS||this._msToNextUpdate<=0)&&(super.update(),this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0)}}_videoFrameRequestCallback(){this.update(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)}load(){if(this._load)return this._load;let e=this.source;return(e.readyState===e.HAVE_ENOUGH_DATA||e.readyState===e.HAVE_FUTURE_DATA)&&e.width&&e.height&&(e.complete=!0),e.addEventListener("play",this._onPlayStart),e.addEventListener("pause",this._onPlayStop),e.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._onCanPlay():(e.addEventListener("canplay",this._onCanPlay),e.addEventListener("canplaythrough",this._onCanPlay),e.addEventListener("error",this._onError,!0)),this._load=new Promise((r,i)=>{this.valid?r(this):(this._resolve=r,this._reject=i,e.load())}),this._load}_onError(e){this.source.removeEventListener("error",this._onError,!0),this.onError.emit(e),this._reject&&(this._reject(e),this._reject=null,this._resolve=null)}_isSourcePlaying(){let e=this.source;return!e.paused&&!e.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){let e=this.source;e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay);let r=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!r&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&e.play()}dispose(){this._configureAutoUpdate();let e=this.source;e&&(e.removeEventListener("play",this._onPlayStart),e.removeEventListener("pause",this._onPlayStop),e.removeEventListener("seeked",this._onSeeked),e.removeEventListener("canplay",this._onCanPlay),e.removeEventListener("canplaythrough",this._onCanPlay),e.removeEventListener("error",this._onError,!0),e.pause(),e.src="",e.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate(e){e!==this._autoUpdate&&(this._autoUpdate=e,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(e){e!==this._updateFPS&&(this._updateFPS=e,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(as.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(as.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(as.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(e,r){return globalThis.HTMLVideoElement&&e instanceof HTMLVideoElement||wA.TYPES.includes(r)}};TA.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],TA.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var EA=TA;Gp.push(pm,Ac,dm,EA,S0,SA,yc,bA,hm);var X7={vec3(t,e,r,i){(r[0]!==i[0]||r[1]!==i[1]||r[2]!==i[2])&&(r[0]=i[0],r[1]=i[1],r[2]=i[2],t.uniform3f(e,i[0],i[1],i[2]))},int(t,e,r,i){t.uniform1i(e,i)},ivec2(t,e,r,i){t.uniform2i(e,i[0],i[1])},ivec3(t,e,r,i){t.uniform3i(e,i[0],i[1],i[2])},ivec4(t,e,r,i){t.uniform4i(e,i[0],i[1],i[2],i[3])},uint(t,e,r,i){t.uniform1ui(e,i)},uvec2(t,e,r,i){t.uniform2ui(e,i[0],i[1])},uvec3(t,e,r,i){t.uniform3ui(e,i[0],i[1],i[2])},uvec4(t,e,r,i){t.uniform4ui(e,i[0],i[1],i[2],i[3])},bvec2(t,e,r,i){t.uniform2i(e,i[0],i[1])},bvec3(t,e,r,i){t.uniform3i(e,i[0],i[1],i[2])},bvec4(t,e,r,i){t.uniform4i(e,i[0],i[1],i[2],i[3])},mat2(t,e,r,i){t.uniformMatrix2fv(e,!1,i)},mat4(t,e,r,i){t.uniformMatrix4fv(e,!1,i)}},Y7={float(t,e,r,i){t.uniform1fv(e,i)},vec2(t,e,r,i){t.uniform2fv(e,i)},vec3(t,e,r,i){t.uniform3fv(e,i)},vec4(t,e,r,i){t.uniform4fv(e,i)},int(t,e,r,i){t.uniform1iv(e,i)},ivec2(t,e,r,i){t.uniform2iv(e,i)},ivec3(t,e,r,i){t.uniform3iv(e,i)},ivec4(t,e,r,i){t.uniform4iv(e,i)},uint(t,e,r,i){t.uniform1uiv(e,i)},uvec2(t,e,r,i){t.uniform2uiv(e,i)},uvec3(t,e,r,i){t.uniform3uiv(e,i)},uvec4(t,e,r,i){t.uniform4uiv(e,i)},bool(t,e,r,i){t.uniform1iv(e,i)},bvec2(t,e,r,i){t.uniform2iv(e,i)},bvec3(t,e,r,i){t.uniform3iv(e,i)},bvec4(t,e,r,i){t.uniform4iv(e,i)},sampler2D(t,e,r,i){t.uniform1iv(e,i)},samplerCube(t,e,r,i){t.uniform1iv(e,i)},sampler2DArray(t,e,r,i){t.uniform1iv(e,i)}};function uV(t,e,r,i,s){let o=0,n=null,a=null,c=s.gl;for(let l in t.uniforms){let h=e[l],u=i[l],d=r[l],f=t.uniforms[l];if(!h){f.group===!0&&s.shader.syncUniformGroup(u);continue}h.type==="float"&&h.size===1&&!h.isArray?u!==d.value&&(d.value=u,c.uniform1f(d.location,u)):h.type==="bool"&&h.size===1&&!h.isArray?u!==d.value&&(d.value=u,c.uniform1i(d.location,Number(u))):(h.type==="sampler2D"||h.type==="samplerCube"||h.type==="sampler2DArray")&&h.size===1&&!h.isArray?(s.texture.bind(u,o),d.value!==o&&(d.value=o,c.uniform1i(d.location,o)),o++):h.type==="mat3"&&h.size===1&&!h.isArray?f.a!==void 0?c.uniformMatrix3fv(d.location,!1,u.toArray(!0)):c.uniformMatrix3fv(d.location,!1,u):h.type==="vec2"&&h.size===1&&!h.isArray?f.x!==void 0?(a=d.value,n=u,(a[0]!==n.x||a[1]!==n.y)&&(a[0]=n.x,a[1]=n.y,c.uniform2f(d.location,n.x,n.y))):(a=d.value,n=u,(a[0]!==n[0]||a[1]!==n[1])&&(a[0]=n[0],a[1]=n[1],c.uniform2f(d.location,n[0],n[1]))):h.type==="vec4"&&h.size===1&&!h.isArray?f.width!==void 0?(a=d.value,n=u,(a[0]!==n.x||a[1]!==n.y||a[2]!==n.width||a[3]!==n.height)&&(a[0]=n.x,a[1]=n.y,a[2]=n.width,a[3]=n.height,c.uniform4f(d.location,n.x,n.y,n.width,n.height))):(a=d.value,n=u,(a[0]!==n[0]||a[1]!==n[1]||a[2]!==n[2]||a[3]!==n[3])&&(a[0]=n[0],a[1]=n[1],a[2]=n[2],a[3]=n[3],c.uniform4f(d.location,n[0],n[1],n[2],n[3]))):(h.size===1&&!h.isArray?X7:Y7)[h.type].call(null,c,d.location,d.value,u)}}function j7(){Object.assign(sa.prototype,{systemCheck(){},syncUniforms(t,e){let{shader:r,renderer:i}=this;uV(t,r.program.uniformData,e.uniformData,t.uniforms,i)}})}j7();var AA="__route_graphics_audio_root__",mm="__route_graphics_audio_direct__",q7=16,K7=1024,RA=new WeakMap,mV=()=>globalThis.window?.RTGL_AUDIO_DEBUG===!0||globalThis.window?.RTGL_VT_DEBUG===!0,Jo=(t,e={})=>{mV()&&console.log(`[AudioStage] ${t}`,e)},kc=(t,e)=>{t&&e&&typeof t.connect=="function"&&t.connect(e)},Fc=t=>{t&&typeof t.disconnect=="function"&&t.disconnect()},cs=(t,e=0)=>{let r=Number(t);return Number.isFinite(r)?r:e},IA=(t,e=0)=>cs(t?.value,e),Q7=(t,e)=>{if(t.length===0)return 0;let r=t[t.length-1];if(e>=r.time)return r.value;for(let i=1;i<t.length;i++){let s=t[i-1],o=t[i];if(e>=o.time||o.time===s.time)continue;let n=Math.max(0,Math.min(1,(e-s.time)/(o.time-s.time))),a=t_(o.easing)(n);return s.value+(o.value-s.value)*a}return r.value},J7=(t,e=_r())=>{let r=RA.get(t);if(!r)return IA(t);let i=Math.max(0,(e.currentTime-r.startTime)*1e3);return r.normalizeValue(Q7(r.timeline,i))},T0=(t,e,r)=>{typeof t.setValueAtTime=="function"?t.setValueAtTime(e,r):t.value=e},gV=(t=_r())=>{if(t.state==="suspended"&&typeof t.resume=="function"){let e=t.state;return Jo("resume requested",{state:e}),t.resume().then(()=>{Jo("resume resolved",{previousState:e,state:t.state})}).catch(r=>{mV()&&console.warn("[AudioStage] resume failed",{previousState:e,state:t.state,error:r})})}return Jo("resume skipped",{state:t.state,canResume:typeof t.resume=="function"}),Promise.resolve()},BA=(t,e,r=_r())=>{if(!t)return;let i=r.currentTime,s=cs(e,IA(t));typeof t.cancelScheduledValues=="function"&&t.cancelScheduledValues(i),T0(t,s,i),RA.set(t,{startTime:i,timeline:[{time:0,value:s,easing:"linear"}],normalizeValue:o=>o})},Z7=({transition:t,currentValue:e,normalizeTransitionValue:r,denormalizeParamValue:i})=>{let s=t.initialValue===void 0?i(e):t.initialValue,o=r(s),n=i(o),a=0,c=[{time:0,value:o,easing:"linear"}];for(let l of t.keyframes){a+=Math.max(0,cs(l.duration,0));let h=l.relative?n+l.value:l.value,u=r(h);n=i(u),c.push({time:a,value:u,easing:l.easing??"linear"})}return c},eK=({param:t,start:e,end:r,startTime:i,normalizeValue:s})=>{let o=r.time-e.time,n=i+r.time/1e3;if(o<=0){T0(t,r.value,n);return}if(typeof t.linearRampToValueAtTime!="function"){T0(t,r.value,n);return}if(r.easing==="linear"){t.linearRampToValueAtTime(r.value,n);return}let a=t_(r.easing),c=Math.min(K7,Math.max(1,Math.ceil(o/q7)));for(let l=1;l<=c;l++){let h=l/c,u=s(e.value+(r.value-e.value)*a(h)),d=i+(e.time+o*h)/1e3;t.linearRampToValueAtTime(u,d)}},tK=({param:t,transition:e,normalizeTransitionValue:r,denormalizeParamValue:i,normalizeParamValue:s,context:o=_r()})=>{if(!t)return 0;let n=o.currentTime,a=J7(t,o),c=Z7({transition:e,currentValue:a,normalizeTransitionValue:r,denormalizeParamValue:i});!(e.initialValue!==void 0)&&typeof t.cancelAndHoldAtTime=="function"?t.cancelAndHoldAtTime(n):typeof t.cancelScheduledValues=="function"&&t.cancelScheduledValues(n),T0(t,c[0].value,n);for(let h=1;h<c.length;h++)eK({param:t,start:c[h-1],end:c[h],startTime:n,normalizeValue:s});return RA.set(t,{startTime:n,timeline:c,normalizeValue:s}),c[c.length-1].time},xV=(t=1)=>{let e=_r(),r=e.createGain();return BA(r.gain,t,e),r},yV=(t=0)=>{let e=_r();if(typeof e.createStereoPanner!="function")return null;let r=e.createStereoPanner();return BA(r.pan,t,e),r},Es=({volume:t,muted:e})=>e?0:Ve(t,100),hV=(t,e)=>t.src===e.src&&t.startAt===e.startAt&&t.endAt===e.endAt&&t.startDelayMs===e.startDelayMs,rK=(t,e=1)=>{let r=Number(e),i=Number.isFinite(r)?r:1,s=Number(t??i),o=Number.isFinite(s)?s:i;return Ve(o*100,i*100)*100},Ui=(t=[],e,r,i)=>t.find(o=>o.type==="audio-transition"&&o.targetId===e)?.properties?.[r]?.[i]??null,FA=({param:t,targetValue:e,transition:r,normalizeTargetValue:i=n=>n,normalizeTransitionValue:s=i,denormalizeParamValue:o=n=>n})=>{if(!t)return 0;let n=i(e);return r?tK({param:t,transition:r,normalizeTransitionValue:s,denormalizeParamValue:o,normalizeParamValue:i}):(BA(t,n),0)},Qo=({gainNode:t,targetValue:e,transition:r})=>FA({param:t?.gain,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(0,Math.min(1,cs(i,1))),normalizeTransitionValue:i=>Ve(i,100),denormalizeParamValue:i=>i*100}),Bc=({pannerNode:t,targetValue:e,transition:r})=>FA({param:t?.pan,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(-1,Math.min(1,cs(i,0)))}),CA=({source:t,targetValue:e,transition:r})=>FA({param:t?.playbackRate,targetValue:e,transition:r,normalizeTargetValue:i=>Math.max(0,cs(i,1))}),MA=(t,e)=>{let r=xV(Es(t)),i=yV(t.pan??0);return kc(r,i??e),i&&kc(i,e),{id:t.id,gainNode:r,pannerNode:i,volume:t.volume??100,muted:t.muted??!1,pan:t.pan??0,outputNode:e,cleanupTimeoutId:null}},iK=({sound:t,channelNode:e,internalId:r})=>{let i=xV(Es(t)),s=yV(t.pan??0);return kc(i,s??e),s&&kc(s,e),{internalId:r,id:t.id,src:t.src,url:t.src,loop:t.loop??!1,volume:t.volume??100,muted:t.muted??!1,pan:t.pan??0,startDelayMs:t.startDelayMs??0,playbackRate:t.playbackRate??1,startAt:t.startAt??0,endAt:t.endAt??null,channelId:t.channelId??null,gainNode:i,pannerNode:s,source:null,sourceEnded:!1,onSourceEnded:null,finishing:!1,playbackRateTransition:null,pendingTimeoutId:null,cleanupTimeoutId:null,playRequestId:0}},sK=t=>{let e=_r(),r=Mi.getAsset(t.src);if(Jo("asset lookup",{id:t.id,src:t.src,found:!!r,duration:r?.duration??null,contextState:e.state}),!r)return console.warn("AudioStage: asset not found",t.src),null;let i=e.createBufferSource();i.buffer=r,i.loop=t.loop??!1,CA({source:i,targetValue:t.playbackRate??1,transition:t.playbackRateTransition}),t.playbackRateTransition=null,kc(i,t.gainNode),t.sourceEnded=!1,i.onended=()=>{t.source===i&&(t.sourceEnded=!0,t.onSourceEnded?.())};let s=t.startAt??0,o=t.endAt!==null&&t.endAt!==void 0?Math.max(t.endAt-s,0):void 0,n=Math.max(0,cs(e.currentTime,0));return i.loop&&t.endAt!==null&&t.endAt!==void 0?(i.loopStart=s,i.loopEnd=t.endAt,i.start(n,s)):o!==void 0?i.start(n,s,o):i.start(n,s),Jo("source started",{id:t.id,src:t.src,loop:i.loop,startTime:n,offset:s,duration:o??null,playbackRate:t.playbackRate,gain:IA(t.gainNode?.gain,null),contextState:e.state}),i},dV=t=>{t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null);let e=_r(),r=(t.playRequestId??0)+1;t.playRequestId=r,Jo("play requested",{id:t.id,src:t.src,loop:t.loop,volume:t.volume,muted:t.muted,startDelayMs:t.startDelayMs,contextState:e.state});let i=e.state==="suspended"&&typeof e.resume=="function",s=()=>{t.playRequestId===r&&(t.pendingTimeoutId=null,t.source=sK(t))},o=()=>{if(t.playRequestId===r){if(t.startDelayMs>0){t.pendingTimeoutId=setTimeout(s,t.startDelayMs);return}s()}},n=gV(e);if(i){n.then(o);return}o()},_V=(t,e=0)=>{if(t.playRequestId=(t.playRequestId??0)+1,t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null),!t.source)return;let r=_r();try{t.source.stop(r.currentTime+e/1e3)}catch{}},PA=t=>{t.onSourceEnded=null,t.pendingTimeoutId!==null&&(clearTimeout(t.pendingTimeoutId),t.pendingTimeoutId=null),t.cleanupTimeoutId!==null&&(clearTimeout(t.cleanupTimeoutId),t.cleanupTimeoutId=null),_V(t),Fc(t.source),Fc(t.gainNode),Fc(t.pannerNode)},fV=t=>{t.cleanupTimeoutId!==null&&(clearTimeout(t.cleanupTimeoutId),t.cleanupTimeoutId=null),Fc(t.gainNode),Fc(t.pannerNode)},pV=(t,e)=>e<=0?(t(),null):setTimeout(t,e);var bV=()=>{let t=new Map,e=new Map,r=new Map,i=new Map,s=0,o=b=>{let w=t.get(b);if(w)return w;let A=MA({id:b,volume:100,muted:!1,pan:0},_r().destination);return t.set(b,A),A},n=(b,w,A)=>{let C=t.get(b.id),R=Ui(w,b.id,"volume",A),P=Ui(w,b.id,"pan",A);if(C&&C.cleanupTimeoutId!==null){let F=MA(b,_r().destination);return t.set(b.id,F),Qo({gainNode:F.gainNode,targetValue:Es(b),transition:R}),Bc({pannerNode:F.pannerNode,targetValue:b.pan,transition:P}),F}if(C){let F=Es(C),V=Es(b),z=F!==V,H=C.pan!==(b.pan??0);return C.volume=b.volume,C.muted=b.muted,C.pan=b.pan,z&&R?Qo({gainNode:C.gainNode,targetValue:V,transition:R}):z&&Qo({gainNode:C.gainNode,targetValue:V,transition:null}),H&&Bc({pannerNode:C.pannerNode,targetValue:b.pan,transition:P}),C}let U=MA(b,_r().destination);return t.set(b.id,U),Qo({gainNode:U.gainNode,targetValue:Es(b),transition:R}),Bc({pannerNode:U.pannerNode,targetValue:b.pan,transition:P}),U},a=b=>{let w=b.channelId!==null?t.get(b.channelId):o(AA);if(!w)throw new Error(`Input error: sound "${b.id}" references missing channel.`);return w},c=(b,w)=>{Fc(b.gainNode),Fc(b.pannerNode),kc(b.gainNode,b.pannerNode??w),b.pannerNode&&kc(b.pannerNode,w)},l=(b,w)=>{if(!b||b.id===AA||b.id===mm)return 0;let A=Ui(w,b.id,"volume","exit"),C=Ui(w,b.id,"pan","exit"),R=Qo({gainNode:b.gainNode,targetValue:Es(b),transition:A}),P=Bc({pannerNode:b.pannerNode,targetValue:b.pan,transition:C});return Math.max(R,P)},h=({sound:b,effects:w,phase:A,internalId:C})=>{let R=a(b),P=iK({sound:b,channelNode:R.gainNode,internalId:C});e.set(C,P),r.set(b.id,C);let U=Ui(w,b.id,"volume",A),F=Ui(w,b.id,"pan",A);return Qo({gainNode:P.gainNode,targetValue:Es(b),transition:U}),Bc({pannerNode:P.pannerNode,targetValue:b.pan,transition:F}),P.playbackRateTransition=Ui(w,b.id,"playbackRate",A),dV(P),P},u=(b,w,A=0)=>{if(!b)return 0;b.finishing=!1,b.onSourceEnded=null;let C=Ui(w,b.id,"volume","exit"),R=Ui(w,b.id,"pan","exit"),P=Ui(w,b.id,"playbackRate","exit"),U=Qo({gainNode:b.gainNode,targetValue:Es(b),transition:C}),F=Bc({pannerNode:b.pannerNode,targetValue:b.pan,transition:R}),V=CA({source:b.source,targetValue:b.playbackRate,transition:P}),z=Math.max(U,F,V),H=Math.max(z,A);return _V(b,H),b.cleanupTimeoutId=pV(()=>{PA(b),e.delete(b.internalId)},H),H},d=b=>{if(!b||b.finishing)return;b.finishing=!0,b.loop=!1;let w=()=>{b.finishing&&(b.finishing=!1,b.onSourceEnded=null,PA(b),e.get(b.internalId)===b&&e.delete(b.internalId))};if(!b.source||b.sourceEnded||_r().state!=="running"){w();return}b.source.loop=!1,b.onSourceEnded=w},f=({instance:b,sound:w,effects:A})=>{let C=Es(b),R=Es(w),P=C!==R,U=b.pan!==w.pan,F=b.playbackRate!==w.playbackRate,V=b.startDelayMs!==w.startDelayMs;if(b.channelId!==w.channelId){let H=a(w);c(b,H.gainNode)}b.loop=w.loop,b.volume=w.volume,b.muted=w.muted,b.pan=w.pan,b.startDelayMs=w.startDelayMs,b.playbackRate=w.playbackRate,b.startAt=w.startAt,b.endAt=w.endAt,b.channelId=w.channelId,b.source&&(b.source.loop=w.loop);let z=Ui(A,w.id,"volume","update");if(P&&z?Qo({gainNode:b.gainNode,targetValue:R,transition:z}):P&&Qo({gainNode:b.gainNode,targetValue:R,transition:null}),U&&Bc({pannerNode:b.pannerNode,targetValue:w.pan,transition:Ui(A,w.id,"pan","update")}),F){let H=Ui(A,w.id,"playbackRate","update");b.source?CA({source:b.source,targetValue:w.playbackRate,transition:H}):b.playbackRateTransition=H}V&&b.pendingTimeoutId!==null&&dV(b)};return{add:b=>{let w=e.get(`direct:${b.id}`);w?.finishing&&u(w,[],0);let A={id:b.id,type:"sound",src:b.url??b.src,loop:b.loop??!1,volume:rK(b.volume),muted:b.muted??!1,pan:cs(b.pan,0),startDelayMs:Math.max(0,cs(b.startDelayMs,0)),playbackRate:cs(b.playbackRate,1),startAt:Math.max(0,cs(b.startAt,0)),endAt:b.endAt!==void 0&&b.endAt!==null?Math.max(0,cs(b.endAt,0)):null};i.set(b.id,A),Jo("direct add",{id:A.id,src:A.src,loop:A.loop,volume:A.volume,muted:A.muted,pan:A.pan})},remove:b=>{let w=`direct:${b}`,A=e.get(w);Jo("direct remove",{id:b,hadAudio:i.has(b),hadInstance:!!A}),i.delete(b),r.delete(b),A&&u(A,[],0)},finish:b=>{let w=`direct:${b}`,A=e.get(w);Jo("direct finish",{id:b,hadAudio:i.has(b),hadInstance:!!A}),i.delete(b),r.delete(b),d(A)},getById:b=>i.get(b),resume:()=>gV(_r()),tick:()=>{let b=o(mm);for(let w of i.values()){let A=`direct:${w.id}`,C=e.get(A);if(!C){let R={...w,channelId:mm};h({sound:R,effects:[],phase:"enter",internalId:A});continue}if(C.src!==w.src){u(C,[],0);let R={...w,channelId:mm};h({sound:R,effects:[],phase:"enter",internalId:A});continue}f({instance:C,sound:{...w,channelId:mm},effects:[]})}for(let[w,A]of e)w.startsWith("direct:")&&!i.has(A.id)&&!A.finishing&&(u(A,[],0),r.delete(A.id));return b},renderGraph:({prevAudio:b=[],nextAudio:w=[],prevAudioEffects:A=[],nextAudioEffects:C=[]}={})=>{let R=Zn({audio:b,audioEffects:A}),P=Zn({audio:w,audioEffects:C}),U=new Map(R.channels.map(I=>[I.id,I])),F=new Map(P.channels.map(I=>[I.id,I])),V=new Map(R.sounds.map(I=>[I.id,I])),z=new Map(P.sounds.map(I=>[I.id,I]));for(let I of U.keys())if(z.has(I))throw new Error(`Input error: audio node "${I}" cannot change type from "audio-channel" to "sound" between render states.`);for(let I of V.keys())if(F.has(I))throw new Error(`Input error: audio node "${I}" cannot change type from "sound" to "audio-channel" between render states.`);o(AA);let H=new Map,Q=new Map;for(let[I]of U)if(!F.has(I)){let L=l(t.get(I),A);H.set(I,t.get(I)),Q.set(I,L)}for(let[I,L]of F)n(L,C,U.has(I)?"update":"enter");for(let[I,L]of V){let J=z.get(I),te=r.get(I),W=te?e.get(te):null,ne=L.channelId?Q.get(L.channelId)??0:0;if(!J){let ce=u(W,A,ne);L.channelId&&Q.set(L.channelId,Math.max(Q.get(L.channelId)??0,ce)),r.delete(I);continue}if(!hV(L,J)){let ce=u(W,A,ne);L.channelId&&Q.set(L.channelId,Math.max(Q.get(L.channelId)??0,ce)),h({sound:J,effects:C,phase:"enter",internalId:`render:${I}:${++s}`})}}for(let[I,L]of z){if(!V.has(I)){h({sound:L,effects:C,phase:"enter",internalId:`render:${I}:${++s}`});continue}let J=V.get(I);if(!hV(J,L))continue;let te=r.get(I),W=te?e.get(te):null;W&&f({instance:W,sound:L,effects:C})}for(let[I,L]of H){if(!L)continue;let J=Q.get(I)??0;L.cleanupTimeoutId=pV(()=>{fV(L),t.get(I)===L&&t.delete(I)},J)}},destroy:()=>{for(let b of e.values())PA(b);for(let b of t.values())fV(b);e.clear(),r.clear(),t.clear(),i.clear()},_inspect:()=>({channels:t,sounds:e,currentSoundKeyById:r,directAudios:i})}};var oK=({JSONObject:t,parserPlugins:e=[]})=>t.map(i=>{let s=e.find(o=>o.type===i.type);if(!s)throw new Error(`No parser plugin found for element type: ${i.type} (id: ${i.id??"unknown"})`);return s.parse({state:i,parserPlugins:e})});var kA=oK;var vV=({type:t,parse:e})=>({type:t,parse:e});var UA=typeof navigator<"u"?navigator.userAgent.toLowerCase().indexOf("firefox")>0:!1;function LA(t,e,r,i){t.addEventListener?t.addEventListener(e,r,i):t.attachEvent&&t.attachEvent(`on${e}`,r)}function gm(t,e,r,i){t&&(t.removeEventListener?t.removeEventListener(e,r,i):t.detachEvent&&t.detachEvent(`on${e}`,r))}function wV(t,e){let r=e.slice(0,e.length-1),i=[];for(let s=0;s<r.length;s++)i.push(t[r[s].toLowerCase()]);return i}function EV(t){typeof t!="string"&&(t=""),t=t.replace(/\s/g,"");let e=t.split(","),r=e.lastIndexOf("");for(;r>=0;)e[r-1]+=",",e.splice(r,1),r=e.lastIndexOf("");return e}function nK(t,e){let r=t.length>=e.length?t:e,i=t.length>=e.length?e:t,s=!0;for(let o=0;o<r.length;o++)i.indexOf(r[o])===-1&&(s=!1);return s}function AV(t){let e=t.keyCode||t.which||t.charCode;return t.code&&/^Key[A-Z]$/.test(t.code)&&(e=t.code.charCodeAt(3)),e}var _m={backspace:8,"\u232B":8,tab:9,clear:12,enter:13,"\u21A9":13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,arrowup:38,arrowdown:40,arrowleft:37,arrowright:39,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,num_0:96,num_1:97,num_2:98,num_3:99,num_4:100,num_5:101,num_6:102,num_7:103,num_8:104,num_9:105,num_multiply:106,num_add:107,num_enter:108,num_subtract:109,num_decimal:110,num_divide:111,"\u21EA":20,",":188,".":190,"/":191,"`":192,"-":UA?173:189,"=":UA?61:187,";":UA?59:186,"'":222,"{":219,"}":221,"[":219,"]":221,"\\":220},As={"\u21E7":16,shift:16,"\u2325":18,alt:18,option:18,"\u2303":17,ctrl:17,control:17,"\u2318":91,cmd:91,meta:91,command:91},xm={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},Tr={16:!1,18:!1,17:!1,91:!1},Gt={};for(let t=1;t<20;t++)_m[`f${t}`]=111+t;var Ot=[],ym=null,MV="all",Zo=new Map,dh=t=>_m[t.toLowerCase()]||As[t.toLowerCase()]||t.toUpperCase().charCodeAt(0),aK=t=>Object.keys(_m).find(e=>_m[e]===t),cK=t=>Object.keys(As).find(e=>As[e]===t),PV=t=>{MV=t||"all"},bm=()=>MV||"all",lK=()=>Ot.slice(0),uK=()=>Ot.map(t=>aK(t)||cK(t)||String.fromCharCode(t)),hK=()=>{let t=[];return Object.keys(Gt).forEach(e=>{Gt[e].forEach(({key:r,scope:i,mods:s,shortcut:o})=>{t.push({scope:i,shortcut:o,mods:s,keys:r.split("+").map(n=>dh(n))})})}),t},CV=t=>{let e=t.target||t.srcElement,{tagName:r}=e,i=!0,s=r==="INPUT"&&!["checkbox","radio","range","button","file","reset","submit","color"].includes(e.type);return(e.isContentEditable||(s||r==="TEXTAREA"||r==="SELECT")&&!e.readOnly)&&(i=!1),i},dK=t=>(typeof t=="string"&&(t=dh(t)),Ot.indexOf(t)!==-1),fK=(t,e)=>{let r,i;t||(t=bm());for(let s in Gt)if(Object.prototype.hasOwnProperty.call(Gt,s))for(r=Gt[s],i=0;i<r.length;)r[i].scope===t?r.splice(i,1).forEach(({element:o})=>DA(o)):i++;bm()===t&&PV(e||"all")};function pK(t){let e=AV(t);t.key&&t.key.toLowerCase()==="capslock"&&(e=dh(t.key));let r=Ot.indexOf(e);if(r>=0&&Ot.splice(r,1),t.key&&t.key.toLowerCase()==="meta"&&Ot.splice(0,Ot.length),(e===93||e===224)&&(e=91),e in Tr){Tr[e]=!1;for(let i in As)As[i]===e&&(rr[i]=!1)}}var RV=(t,...e)=>{if(typeof t>"u")Object.keys(Gt).forEach(r=>{Array.isArray(Gt[r])&&Gt[r].forEach(i=>w0(i)),delete Gt[r]}),DA(null);else if(Array.isArray(t))t.forEach(r=>{r.key&&w0(r)});else if(typeof t=="object")t.key&&w0(t);else if(typeof t=="string"){let[r,i]=e;typeof r=="function"&&(i=r,r=""),w0({key:t,scope:r,method:i,splitKey:"+"})}},w0=({key:t,scope:e,method:r,splitKey:i="+"})=>{EV(t).forEach(s=>{let o=s.split(i),n=o.length,a=o[n-1],c=a==="*"?"*":dh(a);if(!Gt[c])return;e||(e=bm());let l=n>1?wV(As,o):[],h=[];Gt[c]=Gt[c].filter(u=>{let d=(r?u.method===r:!0)&&u.scope===e&&nK(u.mods,l);return d&&h.push(u.element),!d}),h.forEach(u=>DA(u))})};function SV(t,e,r,i){if(e.element!==i)return;let s;if(e.scope===r||e.scope==="all"){s=e.mods.length>0;for(let o in Tr)Object.prototype.hasOwnProperty.call(Tr,o)&&(!Tr[o]&&e.mods.indexOf(+o)>-1||Tr[o]&&e.mods.indexOf(+o)===-1)&&(s=!1);(e.mods.length===0&&!Tr[16]&&!Tr[18]&&!Tr[17]&&!Tr[91]||s||e.shortcut==="*")&&(e.keys=[],e.keys=e.keys.concat(Ot),e.method(t,e)===!1&&(t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation&&t.stopPropagation(),t.cancelBubble&&(t.cancelBubble=!0)))}}function TV(t,e){let r=Gt["*"],i=AV(t);if(t.key&&t.key.toLowerCase()==="capslock"||!(rr.filter||CV).call(this,t))return;if((i===93||i===224)&&(i=91),Ot.indexOf(i)===-1&&i!==229&&Ot.push(i),["metaKey","ctrlKey","altKey","shiftKey"].forEach(a=>{let c=xm[a];t[a]&&Ot.indexOf(c)===-1?Ot.push(c):!t[a]&&Ot.indexOf(c)>-1?Ot.splice(Ot.indexOf(c),1):a==="metaKey"&&t[a]&&(Ot=Ot.filter(l=>l in xm||l===i))}),i in Tr){Tr[i]=!0;for(let a in As)if(Object.prototype.hasOwnProperty.call(As,a)){let c=xm[As[a]];rr[a]=t[c]}if(!r)return}for(let a in Tr)Object.prototype.hasOwnProperty.call(Tr,a)&&(Tr[a]=t[xm[a]]);t.getModifierState&&!(t.altKey&&!t.ctrlKey)&&t.getModifierState("AltGraph")&&(Ot.indexOf(17)===-1&&Ot.push(17),Ot.indexOf(18)===-1&&Ot.push(18),Tr[17]=!0,Tr[18]=!0);let s=bm();if(r)for(let a=0;a<r.length;a++)r[a].scope===s&&(t.type==="keydown"&&r[a].keydown||t.type==="keyup"&&r[a].keyup)&&SV(t,r[a],s,e);if(!(i in Gt))return;let o=Gt[i],n=o.length;for(let a=0;a<n;a++)if((t.type==="keydown"&&o[a].keydown||t.type==="keyup"&&o[a].keyup)&&o[a].key){let c=o[a],{splitKey:l}=c,h=c.key.split(l),u=[];for(let d=0;d<h.length;d++)u.push(dh(h[d]));u.sort().join("")===Ot.sort().join("")&&SV(t,c,s,e)}}var rr=function(t,e,r){Ot=[];let i=EV(t),s=[],o="all",n=document,a=0,c=!1,l=!0,h="+",u=!1,d=!1;if(r===void 0&&typeof e=="function"&&(r=e),Object.prototype.toString.call(e)==="[object Object]"){let f=e;f.scope&&(o=f.scope),f.element&&(n=f.element),f.keyup&&(c=f.keyup),f.keydown!==void 0&&(l=f.keydown),f.capture!==void 0&&(u=f.capture),typeof f.splitKey=="string"&&(h=f.splitKey),f.single===!0&&(d=!0)}for(typeof e=="string"&&(o=e),d&&RV(t,o);a<i.length;a++){let f=i[a].split(h);s=[],f.length>1&&(s=wV(As,f));let p=f[f.length-1];p=p==="*"?"*":dh(p),p in Gt||(Gt[p]=[]),Gt[p].push({keyup:c,keydown:l,scope:o,mods:s,shortcut:i[a],method:r,key:i[a],splitKey:h,element:n})}if(typeof n<"u"&&typeof window<"u"){if(!Zo.has(n)){let f=(m=window.event)=>TV(m,n),p=(m=window.event)=>{TV(m,n),pK(m)};Zo.set(n,{keydownListener:f,keyupListenr:p,capture:u}),LA(n,"keydown",f,u),LA(n,"keyup",p,u)}if(!ym){let f=()=>{Ot=[]};ym={listener:f,capture:u},LA(window,"focus",f,u)}}};function mK(t,e="all"){Object.keys(Gt).forEach(r=>{Gt[r].filter(i=>i.scope===e&&i.shortcut===t).forEach(i=>{i&&i.method&&i.method({},i)})})}function DA(t){let e=Object.values(Gt).flat();if(e.findIndex(({element:r})=>r===t)<0&&t){let{keydownListener:r,keyupListenr:i,capture:s}=Zo.get(t)||{};r&&i&&(gm(t,"keyup",i,s),gm(t,"keydown",r,s),Zo.delete(t))}if((e.length<=0||Zo.size<=0)&&(Array.from(Zo.keys()).forEach(r=>{let{keydownListener:i,keyupListenr:s,capture:o}=Zo.get(r)||{};i&&s&&(gm(r,"keyup",s,o),gm(r,"keydown",i,o),Zo.delete(r))}),Zo.clear(),Object.keys(Gt).forEach(r=>delete Gt[r]),ym)){let{listener:r,capture:i}=ym;gm(window,"focus",r,i),ym=null}}var OA={getPressedKeyString:uK,setScope:PV,getScope:bm,deleteScope:fK,getPressedKeyCodes:lK,getAllKeyCodes:hK,isPressed:dK,filter:CV,trigger:mK,unbind:RV,keyMap:_m,modifier:As,modifierMap:xm};for(let t in OA){let e=t;Object.prototype.hasOwnProperty.call(OA,e)&&(rr[e]=OA[e])}if(typeof window<"u"){let t=window.hotkeys;rr.noConflict=e=>(e&&window.hotkeys===rr&&(window.hotkeys=t),rr),window.hotkeys=rr}var IV=",",gK="+",xK=new Set([93,224]),yK="\0",GA=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),BV=t=>GA(t)?{payload:GA(t.payload)?t.payload:{}}:null,LV=t=>{if(typeof t!="string"||t.length===0)return null;let e=t.toLowerCase();return typeof rr.modifier?.[e]=="number"?rr.modifier[e]:typeof rr.keyMap?.[e]=="number"?rr.keyMap[e]:t.length===1?t.toUpperCase().charCodeAt(0):null},OV=t=>xK.has(t)?91:t,FV=t=>{let e=null;return typeof t?.keyCode=="number"&&t.keyCode>0?e=t.keyCode:typeof t?.which=="number"&&t.which>0?e=t.which:typeof t?.charCode=="number"&&t.charCode>0&&(e=t.charCode),typeof t?.code=="string"&&/^Key[A-Z]$/.test(t.code)&&(e=t.code.charCodeAt(3)),typeof e=="number"?OV(e):LV(t?.key??"")},_K=t=>{if(typeof t!="string"||t.length===0)return[];let e=t.replace(/\s/g,"").split(IV),r=e.lastIndexOf("");for(;r>=0;)r>0&&(e[r-1]+=IV),e.splice(r,1),r=e.lastIndexOf("");return e.filter(Boolean)},bK=t=>typeof rr.modifierMap?.[t]=="string",vK=t=>_K(t).map(e=>{let r=new Set(e.split(gK).map(i=>LV(i)).filter(i=>typeof i=="number").map(i=>OV(i)));return r.size===0?null:{shortcut:e,releaseCodes:r,isModifierOnly:[...r].every(bK)}}).filter(Boolean),SK=(t,e)=>{for(let r of e)if(!t.has(r))return!1;return!0},kV=(t,e)=>`${t}${yK}${e.shortcut}`,UV=t=>{if(!t||typeof t!="object")return!1;let e=typeof t.tagName=="string"?t.tagName.toLowerCase():"";if(["input","textarea","select"].includes(e)||typeof HTMLInputElement<"u"&&t instanceof HTMLInputElement||typeof HTMLTextAreaElement<"u"&&t instanceof HTMLTextAreaElement||typeof HTMLSelectElement<"u"&&t instanceof HTMLSelectElement||t.isContentEditable===!0||t.contentEditable==="true"||t.contentEditable==="plaintext-only")return!0;if(typeof t.getAttribute=="function"){let i=t.getAttribute("contenteditable");if(i!==null&&i.toLowerCase()!=="false"||t.getAttribute("data-route-graphics-input-id")!==null)return!0}let r=typeof t.closest=="function"?t.closest.bind(t):typeof t.parentElement?.closest=="function"?t.parentElement.closest.bind(t.parentElement):null;return r?!!r('[data-route-graphics-input-id], [contenteditable]:not([contenteditable="false"])'):!1},TK=()=>typeof document>"u"?null:document.activeElement??null,NA=t=>UV(t?.target)?!0:UV(TK()),wK=t=>NA(t)?"editable-context":typeof rr.filter=="function"&&!rr.filter(t)?"hotkeys-filter":null,EK=({activeKeyupShortcuts:t,activeModifierShortcuts:e,pressedKeyCodes:r,releasedKeyCode:i})=>{for(let[s,o]of Array.from(t))o.releaseCodes.has(i)&&t.delete(s);for(let[s,o]of Array.from(e))o.releaseCodes.has(i)&&e.delete(s);r.delete(i)},AK=t=>{if(!GA(t))return null;let e={},r=BV(t.keydown),i=BV(t.keyup);return r&&(e.keydown=r),i&&(e.keyup=i),Object.keys(e).length>0?e:null},DV=t=>{let e=new Map,r=new Map,i=new Map,s=new Map,o=new Set,n=(g,_,y)=>{t&&t(g,{_event:{key:_},...y})},a=()=>{i.clear(),s.clear(),o.clear()},c=g=>{for(let[_,y]of Array.from(i))y.binding===g&&i.delete(_);for(let[_,y]of Array.from(s))y.binding===g&&s.delete(_);r.delete(g)},l=(g,_)=>{let y=r.get(g)??[],x=typeof _?.shortcut=="string"?_.shortcut:typeof _?.key=="string"?_.key:null;return y.find(S=>S.shortcut===x)??y[0]??null},h=(g,_)=>{!e.get(g)?.keyup||!_||i.set(kV(g,_),{binding:g,releaseCodes:new Set(_.releaseCodes)})},u=(g,_)=>{let y=kV(g,_),x=s.has(y);return s.set(y,{binding:g,releaseCodes:new Set(_.releaseCodes)}),x},d=g=>{if(wK(g)){a();return}let y=FV(g);if(typeof y=="number"){o.add(y);for(let[x,S]of e)(r.get(x)??[]).filter(b=>b.isModifierOnly).forEach(b=>{if(!SK(o,b.releaseCodes))return;let w=u(x,b);h(x,b),S.keydown&&!w&&n("keydown",x,S.keydown.payload)})}},f=g=>{let _=NA(g),y=FV(g);if(_){typeof y=="number"?EK({activeKeyupShortcuts:i,activeModifierShortcuts:s,pressedKeyCodes:o,releasedKeyCode:y}):a();return}if(typeof y=="number"){for(let[x,S]of Array.from(i)){let v=e.get(S.binding);!S.releaseCodes.has(y)||!v?.keyup||(i.delete(x),n("keyup",S.binding,v.keyup.payload))}for(let[x,S]of Array.from(s))S.releaseCodes.has(y)&&s.delete(x);o.delete(y)}};return typeof document<"u"&&(document.addEventListener("keydown",d),document.addEventListener("keyup",f)),typeof window<"u"&&window.addEventListener("blur",a),{registerHotkeys:(g={})=>{if(typeof g!="object"||g===null)return;let _=new Map,y=[],x=[],S=[];Object.keys(g).forEach(v=>{let b=AK(g[v]);b&&_.set(v,b)}),_.forEach((v,b)=>{let w=e.get(b);w?Me(w,v)||(x.push(b),rr.unbind(b)):y.push(b)}),e.forEach((v,b)=>{_.has(b)||S.push(b)}),S.forEach(v=>{rr.unbind(v),e.delete(v),c(v)}),[...y,...x].forEach(v=>{let b=_.get(v),w=vK(v);c(v),r.set(v,w),e.set(v,b),rr(v,(A,C)=>{if(NA(A)){a();return}let R=l(v,C);if(R?.isModifierOnly){let P=u(v,R);h(v,R),b.keydown&&!P&&n("keydown",v,b.keydown.payload);return}h(v,R),b.keydown&&n("keydown",v,b.keydown.payload)})})},destroy:()=>{typeof document<"u"&&(document.removeEventListener("keydown",d),document.removeEventListener("keyup",f)),typeof window<"u"&&window.removeEventListener("blur",a);for(let g of e.keys())rr.unbind(g);e.clear(),r.clear(),i.clear(),s.clear(),o.clear()}}};var HA=1,MK=(t={})=>Object.keys(t).some(Dn),PK=(t,e,r)=>{if(!t||!Object.prototype.hasOwnProperty.call(t,e))throw new Error(`Animation "${r}" cannot auto-resolve property "${e}" from targetState.`);return t[e]},CK=(t,e,r,i,s,o)=>Object.entries(e).map(([n,a])=>{if(!hy[n])throw new Error(`${n} is not a supported property for animation.`);let c=uL({object:t,property:n,propertyPathMap:r,subjectState:o,defaultValue:0});if(a.auto){let u=PK(i,n,s);if(c===u)return null;let d=ac([{value:c},{duration:a.auto.duration,value:u,easing:a.auto.easing}]);return{property:n,timeline:d}}let l=a.initialValue??c,h=ac([{value:l},...a.keyframes]);return{property:n,timeline:h}}).filter(Boolean),GV=()=>{let t=[],e=new Map,r=new Map,i=new Map,s=0,o=null,n=!1,a=(B,X)=>Math.min(Math.max(B,0),Math.max(X??0,0)),c=(B,X)=>{let Z=a(X*B.playbackSpeed,B.duration);return B.currentTime=Z,B.applyFrame(Z),Z>=B.duration},l=(B,X)=>{if(B==null)return HA;if(typeof B!="number"||!Number.isFinite(B)||B<=0)throw new Error(`Animation "${X}" playback speed must be a finite number greater than 0.`);return B},h=(B,X)=>{i.get(B)?.forEach(Z=>{try{Z(X)}catch{}})},u=B=>{if(h("completed",{id:B.id}),B.onComplete)try{B.onComplete()}catch{}},d=(B,X={})=>(B.animationType=X.animationType??B.animationType,B.targetId=X.targetId??B.targetId,B.signature=X.signature??B.signature,B.continuity=X.continuity??B.continuity??"render",B.playbackSpeed=l(X.playbackSpeed??B.playbackSpeed,B.id),B.onContinuationUpdate=X.onContinuationUpdate??B.onContinuationUpdate,B),f=B=>({id:B.id,type:B.animationType??null,targetId:B.targetId??null,signature:B.signature??null,continuity:B.continuity??"render",pending:B.pending===!0}),p=B=>{B.applyFrame(0),r.delete(B.id),e.set(B.id,B);let X=o!==null&&c(B,o);h("started",{id:B.id}),X&&(u(B),e.delete(B.id))},m=B=>{let{id:X,element:Z,properties:D,targetState:ve,onComplete:Ge,onCancel:qe,propertyPathMap:ot=dy,animationBaseState:nt}=B,Rt=nt??(MK(D)?Gn(Z):null),co=()=>(Rt||(Rt=Gn(Z)),Rt),ei=CK(Z,D,ot,ve,X,Rt);if(ei.length===0){u({id:X,onComplete:Ge});return}let Oi={id:X,kind:"property",element:Z,timelines:ei,duration:Au(ei),currentTime:0,playbackSpeed:HA,stateVersion:s,targetState:ve,onComplete:Ge,onCancel:qe,applyFrame:Di=>{for(let{property:wr,timeline:di}of ei){let Er=cc(di,Di);try{rp({object:Z,property:wr,propertyPathMap:ot,subjectState:Dn(wr)?co():Rt,value:Er})}catch{}}},applyTargetState:()=>{if(!(!Z||Z.destroyed)){if(ve===null){Z.destroy();return}if(ve)for(let[Di,wr]of Object.entries(ve))try{rp({object:Z,property:Di,propertyPathMap:ot,subjectState:Dn(Di)?co():Rt,value:wr})}catch{}}},isValid:()=>!!Z&&!Z.destroyed};p(d(Oi,B))},g=B=>{let X={id:B.id,kind:"custom",duration:B.duration??0,currentTime:0,playbackSpeed:HA,deferCompletionUntilNextFrame:B.deferCompletionUntilNextFrame===!0,pendingCompletion:!1,stateVersion:s,onComplete:B.onComplete,onCancel:B.onCancel,applyFrame:B.applyFrame??(()=>{}),applyTargetState:B.applyTargetState??(()=>{}),isValid:B.isValid??(()=>!0)};p(d(X,B))},_=B=>{if(B.driver==="custom"){g(B);return}m(B)},y=B=>{try{B.applyTargetState?.()}catch{}if(B.onCancel)try{B.onCancel()}catch{}},x=B=>{let X=r.get(B);X&&(y(X),r.delete(B),h("cancelled",{id:B}))},S=B=>{switch(B.type){case"START":_(B.payload);break;case"CANCEL":w(B.id);break}},v=()=>{let B=t.splice(0);for(let X of B)S(X)},b=()=>{o===null||n||(n=!0,queueMicrotask(()=>{n=!1,o!==null&&v()}))},w=B=>{let X=e.get(B);if(!X){x(B);return}y(X),e.delete(B),h("cancelled",{id:B})},A=B=>{t.push(B),b()},C=()=>{for(let[B,X]of e)y(X),h("cancelled",{id:B});for(let[B,X]of r)y(X),h("cancelled",{id:B});e.clear(),r.clear(),s++},R=(B=new Set)=>{let X=B instanceof Set?B:new Set(B??[]);for(let[Z,D]of e)X.has(Z)||(y(D),e.delete(Z),h("cancelled",{id:Z}));for(let[Z,D]of r)X.has(Z)||(y(D),r.delete(Z),h("cancelled",{id:Z}))},P=B=>{v();let X=[];for(let[Z,D]of e){if(D.stateVersion!==s){X.push(Z);continue}if(!D.isValid()){X.push(Z);continue}if(D.pendingCompletion){u(D),X.push(Z);continue}if(D.currentTime=a(D.currentTime+B*D.playbackSpeed,D.duration),D.currentTime>=D.duration){if(D.applyFrame(D.duration),D.deferCompletionUntilNextFrame===!0&&D.duration>0){D.pendingCompletion=!0;continue}u(D),X.push(Z);continue}D.applyFrame(D.currentTime)}for(let Z of X)e.delete(Z)},U=B=>{o=B,v();let X=[];for(let[Z,D]of e){if(D.stateVersion!==s){X.push(Z);continue}if(!D.isValid()){X.push(Z);continue}c(D,B)&&(u(D),X.push(Z))}for(let Z of X)e.delete(Z)},F=()=>{o=null},V=()=>{v()},z=(B,X)=>(i.has(B)||i.set(B,new Set),i.get(B).add(X),()=>H(B,X)),H=(B,X)=>{i.get(B)?.delete(X)};return{dispatch:A,cancelAll:C,cancelAllExcept:R,flush:V,tick:P,setTime:U,clearTime:F,on:z,off:H,registerPending:B=>{let X=d({id:B.id,kind:"pending",pending:!0,applyTargetState:B.applyTargetState??(()=>{}),onCancel:B.onCancel},B);r.set(X.id,X)},activatePending:(B,X)=>{let Z=r.get(B);return Z?(r.delete(B),_({...X,id:B,animationType:Z.animationType,targetId:Z.targetId,signature:Z.signature,continuity:Z.continuity,playbackSpeed:Z.playbackSpeed,onContinuationUpdate:X.onContinuationUpdate??Z.onContinuationUpdate}),!0):!1},removePending:B=>{r.delete(B)},getContinuableAnimations:()=>{let B=new Map;for(let[X,Z]of r)Z.continuity==="persistent"&&B.set(X,f(Z));for(let[X,Z]of e)Z.continuity==="persistent"&&B.set(X,f(Z));return B},getState:()=>({stateVersion:s,activeCount:e.size,pendingCount:r.size,animations:Array.from(e.entries()).map(([B,X])=>({id:B,currentTime:X.currentTime,duration:X.duration,playbackSpeed:X.playbackSpeed,progress:X.duration>0?X.currentTime/X.duration:0}))}),isAnimating:B=>e.has(B),hasContext:B=>e.has(B)||r.has(B),updateContinuation:(B,X)=>{let Z=e.get(B)??r.get(B);if(Z?.onContinuationUpdate)try{Z.onContinuationUpdate(X)}catch{}},destroy:()=>{C(),i.clear()}}};var NV=t=>{let e=0,r=0,i=null,s=!1,o=!1,n=d=>{o||(o=!0,t?.("renderComplete",d))};return{reset:d=>{e>0&&i!==null&&!o&&t?.("renderComplete",{id:i,aborted:!0}),r++,e=0,i=d,s=!0,o=!1},track:d=>{d===r&&e++},complete:d=>{d!==r||e===0||(e--,e===0&&!s&&n({id:i,aborted:!1}))},getVersion:()=>r,completeIfEmpty:()=>{s=!1,e===0&&n({id:i,aborted:!1})}}};var HV=new Set(["update","transition"]),VV=new Set(["render","persistent"]),RK="render",IK=1,BK=new Set(["alpha","x","y","translateX","translateY","scaleX","scaleY","rotation","blurX","blurY","uProgress"]),FK=new Set(["x","y","translateX","translateY","alpha","scaleX","scaleY","rotation"]),kK=new Set(["uProgress"]),WV=new Set(["single","sequence"]),zV=new Set(["red","green","blue","alpha"]),$V=new Set(["hold","linear"]),YV=new Set(Eu),Ms=(t,e)=>{if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${e} must be an object.`)},fh=(t,e)=>{if(typeof t!="string"||t.length===0)throw new Error(`${e} must be a non-empty string.`)},ph=(t,e)=>{if(typeof t!="number"||Number.isNaN(t))throw new Error(`${e} must be a number.`)},UK=(t,e)=>{if(typeof t!="number"||!Number.isFinite(t)||t<=0)throw new Error(`${e} must be a finite number greater than 0.`)},LK=(t,e)=>{Ms(t,e);let r=t.continuity??RK;if(!VV.has(r))throw new Error(`${e}.continuity must be one of: ${Array.from(VV).join(", ")}.`);let i={continuity:r};return t.speed!==void 0&&(UK(t.speed,`${e}.speed`),t.speed!==IK&&(i.speed=t.speed)),i},OK=(t,e)=>{if(Ms(t,e),ph(t.duration,`${e}.duration`),t.easing!==void 0&&typeof t.easing!="string")throw new Error(`${e}.easing must be a string.`);if(t.easing!==void 0&&!YV.has(t.easing))throw new Error(`${e}.easing must be one of: ${Eu.join(", ")}.`);return{duration:t.duration,easing:t.easing??"linear"}},zA=(t,e)=>{Ms(t,e);let r={};if(t.initialValue!==void 0&&(ph(t.initialValue,`${e}.initialValue`),r.initialValue=t.initialValue),!Array.isArray(t.keyframes)||t.keyframes.length===0)throw new Error(`${e}.keyframes must be a non-empty array.`);return r.keyframes=t.keyframes.map((i,s)=>{let o=`${e}.keyframes[${s}]`;if(Ms(i,o),ph(i.value,`${o}.value`),ph(i.duration,`${o}.duration`),i.easing!==void 0&&typeof i.easing!="string")throw new Error(`${o}.easing must be a string.`);if(i.easing!==void 0&&!YV.has(i.easing))throw new Error(`${o}.easing must be one of: ${Eu.join(", ")}.`);if(i.relative!==void 0&&typeof i.relative!="boolean")throw new Error(`${o}.relative must be a boolean.`);return{value:i.value,duration:i.duration,easing:i.easing??"linear",...i.relative!==void 0?{relative:i.relative}:{}}}),r},DK=(t,e)=>{Ms(t,e);let r=t.keyframes!==void 0,i=t.auto!==void 0;if(r&&i)throw new Error(`${e} cannot define both keyframes and auto.`);if(!r&&!i)throw new Error(`${e} must define keyframes or auto.`);if(i){if(t.initialValue!==void 0)throw new Error(`${e}.initialValue is not valid when auto is defined.`);return{auto:OK(t.auto,`${e}.auto`)}}return zA(t,e)},WA=(t,e,r,i=zA)=>{if(Ms(t,e),t.x!==void 0&&t.translateX!==void 0)throw new Error(`${e} cannot define both x and translateX.`);if(t.y!==void 0&&t.translateY!==void 0)throw new Error(`${e} cannot define both y and translateY.`);let s=Object.entries(t).map(([o,n])=>{if(!r.has(o))throw new Error(`${e}.${o} is not a supported animation property.`);return[o,i(n,`${e}.${o}`)]});if(s.length===0)throw new Error(`${e} must define at least one property.`);return Object.fromEntries(s)},GK=(t,e)=>{if(Ms(t,e),fh(t.texture,`${e}.texture`),ph(t.at,`${e}.at`),t.at<0||t.at>1)throw new Error(`${e}.at must be between 0 and 1.`);return{at:t.at,texture:t.texture}},NK=(t,e)=>{if(!Array.isArray(t)||t.length<2)throw new Error(`${e} must be an array with at least two frames.`);let r=t.map((s,o)=>GK(s,`${e}[${o}]`));if(r[0].at!==0)throw new Error(`${e}[0].at must be 0.`);let i=r.length-1;if(r[i].at!==1)throw new Error(`${e}[${i}].at must be 1.`);for(let s=1;s<r.length;s++)if(r[s].at<=r[s-1].at)throw new Error(`${e} must be sorted by ascending unique at values.`);return r},HK=(t,e)=>{if(Ms(t,e),!WV.has(t.kind))throw new Error(`${e}.kind must be one of: ${Array.from(WV).join(", ")}.`);let r={kind:t.kind};if(t.channel!==void 0){if(!zV.has(t.channel))throw new Error(`${e}.channel must be one of: ${Array.from(zV).join(", ")}.`);r.channel=t.channel}if(t.softness!==void 0&&(ph(t.softness,`${e}.softness`),r.softness=t.softness),t.invert!==void 0){if(typeof t.invert!="boolean")throw new Error(`${e}.invert must be a boolean.`);r.invert=t.invert}if(t.progress!==void 0&&(r.progress=zA(t.progress,`${e}.progress`)),t.kind==="single"){if(t.frames!==void 0)throw new Error(`${e}.frames is only valid for sequence masks.`);if(t.sample!==void 0)throw new Error(`${e}.sample is only valid for sequence masks.`);if(t.items!==void 0)throw new Error(`${e}.items is not supported.`);if(t.combine!==void 0)throw new Error(`${e}.combine is not supported.`);fh(t.texture,`${e}.texture`),r.texture=t.texture}if(t.kind==="sequence"){if(t.texture!==void 0)throw new Error(`${e}.texture is not valid for sequence masks. Use ${e}.frames[].texture instead.`);if(t.items!==void 0)throw new Error(`${e}.items is not supported.`);if(t.combine!==void 0)throw new Error(`${e}.combine is not supported.`);if(t.textures!==void 0)throw new Error(`${e}.textures is no longer supported. Use ${e}.frames with texture and at entries instead.`);if(t.softness!==void 0)throw new Error(`${e}.softness is not valid for sequence masks. Author feathering into ${e}.frames[].texture instead.`);if(r.frames=NK(t.frames,`${e}.frames`),t.sample!==void 0&&(fh(t.sample,`${e}.sample`),!$V.has(t.sample)))throw new Error(`${e}.sample must be one of: ${Array.from($V).join(", ")}.`);r.sample=t.sample??"hold"}return r.progress||(r.progress={initialValue:0,keyframes:[{duration:0,value:1,easing:"linear"}]}),r},XV=(t,e)=>{if(Ms(t,e),t.mask!==void 0)throw new Error(`${e}.mask is not valid. Define mask on ${e}.`);let r={};if(t.tween!==void 0&&(r.tween=WA(t.tween,`${e}.tween`,FK)),Object.keys(r).length===0)throw new Error(`${e} must define tween.`);return r},VK=(t,e)=>{let r={};if(t.shader!==void 0)throw new Error(`${e}.shader is not supported.`);if(t.prev!==void 0&&(r.prev=XV(t.prev,`${e}.prev`)),t.next!==void 0&&(r.next=XV(t.next,`${e}.next`)),t.mask!==void 0&&(r.mask=HK(t.mask,`${e}.mask`)),t.compositor!==void 0&&(r.compositor=OO(t.compositor,`${e}.compositor`)),r.mask!==void 0&&r.compositor!==void 0)throw new Error(`${e}.compositor cannot be combined with ${e}.mask in v1.`);if(r.prev===void 0&&r.next===void 0&&r.mask===void 0&&r.compositor===void 0)throw new Error(`${e} must define prev, next, mask, or compositor.`);return r},VA=(t,e,r)=>{if(t!==void 0)throw new Error(`${e} ${r}`)},jV=(t=[])=>{if(!Array.isArray(t))throw new Error("Input error: `animations` must be an array.");let e=t.map((s,o)=>{let n=`animations[${o}]`;if(Ms(s,n),fh(s.id,`${n}.id`),fh(s.targetId,`${n}.targetId`),fh(s.type,`${n}.type`),!HV.has(s.type))throw new Error(`${n}.type must be one of: ${Array.from(HV).join(", ")}.`);let a={id:s.id,targetId:s.targetId,type:s.type};if(s.complete!==void 0&&(Ms(s.complete,`${n}.complete`),a.complete=s.complete),s.playback!==void 0&&(a.playback=LK(s.playback,`${n}.playback`)),VA(s.operation,`${n}.operation`,"is no longer supported. Use `type: update | transition` instead."),VA(s.properties,`${n}.properties`,"is no longer supported. Use `tween` instead."),VA(s.subjects,`${n}.subjects`,"is no longer supported. Use `prev` / `next` instead."),s.type==="update"){if(a.tween=WA(s.tween,`${n}.tween`,BK,DK),s.replace!==void 0)throw new Error(`${n}.replace is no longer supported. Define \`prev\`, \`next\`, or \`mask\` directly on the animation.`);if(s.prev!==void 0)throw new Error(`${n}.prev is only valid for transition animations.`);if(s.next!==void 0)throw new Error(`${n}.next is only valid for transition animations.`);if(s.mask!==void 0)throw new Error(`${n}.mask is only valid for transition animations.`);if(s.compositor!==void 0)throw new Error(`${n}.compositor is only valid for transition animations.`);if(s.shader!==void 0)throw new Error(`${n}.shader is not supported.`);return a}if(s.tween!==void 0&&s.compositor===void 0)throw new Error(`${n}.tween is not valid for transition animations.`);if(s.replace!==void 0)throw new Error(`${n}.replace is no longer supported. Define \`prev\`, \`next\`, or \`mask\` directly on the animation.`);let c=VK(s,n);if(c.prev!==void 0&&(a.prev=c.prev),c.next!==void 0&&(a.next=c.next),c.mask!==void 0&&(a.mask=c.mask),c.compositor!==void 0){if(a.compositor=c.compositor,s.tween===void 0)throw new Error(`${n}.tween.uProgress is required when compositor is defined.`);a.tween=WA(s.tween,`${n}.tween`,kK)}return a}),r=new Map;for(let s of e){let o=r.get(s.targetId)??new Set;o.add(s.type),r.set(s.targetId,o)}for(let[s,o]of r)if(o.has("transition")&&o.size>1)throw new Error(`Animations targeting "${s}" cannot mix update and transition types in the same state.`);let i=new Set;for(let s of e)if(!(s.type!=="update"||s.tween?.uProgress===void 0)){if(i.has(s.targetId))throw new Error(`Animations targeting "${s.targetId}" cannot define multiple active uProgress update tweens in the same state.`);i.add(s.targetId)}return e};var $A=(t={})=>{if(t===null||typeof t!="object")throw new Error("Input error: render state must be an object.");if(t.transitions!==void 0)throw new Error("Input error: `transitions` is no longer supported. Use `animations` instead.");let e={...t,elements:t.elements??[],animations:t.animations??[],audio:t.audio??[],audioEffects:t.audioEffects??[]};if(!Array.isArray(e.elements))throw new Error("Input error: `elements` must be an array.");if(!Array.isArray(e.animations))throw new Error("Input error: `animations` must be an array.");if(!Array.isArray(e.audio))throw new Error("Input error: `audio` must be an array.");if(!Array.isArray(e.audioEffects))throw new Error("Input error: `audioEffects` must be an array.");return e.animations=jV(e.animations),Zn({audio:e.audio,audioEffects:e.audioEffects}),e};var WK="0",mh=(t,e)=>{let r=t?.[e];return typeof r=="number"?r:0},Li=t=>({value:t.element.value??"",selectionStart:mh(t.element,"selectionStart"),selectionEnd:mh(t.element,"selectionEnd"),focused:document.activeElement===t.element,composing:t.composing===!0}),zK=(t,e)=>!t||!e?!1:t.value===e.value&&t.selectionStart===e.selectionStart&&t.selectionEnd===e.selectionEnd&&t.focused===e.focused&&t.composing===e.composing,$K=t=>t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement,vm=t=>{t.element.style.pointerEvents="none"},XA=(t,e,r)=>{if(typeof t?.setSelectionRange=="function")try{t.setSelectionRange(e,r)}catch{}},XK=({app:t,geometry:e})=>{let r=t.canvas;if(!e||!r||e.visible===!1)return null;let i=r.getBoundingClientRect(),s=t.renderer?.width||i.width||1,o=t.renderer?.height||i.height||1,n=i.width/s,a=i.height/o,c=e.clipInsets??{top:0,right:0,bottom:0,left:0},l=i.left+(e.x+c.left)*n,h=i.top+(e.y+c.top)*a,u=i.left+(e.x+e.width-c.right)*n,d=i.top+(e.y+e.height-c.bottom)*a;return u<=l||d<=h?null:{left:l,top:h,right:u,bottom:d}},YK=({app:t,entry:e,event:r})=>{let i=e.options.getGeometry?.(),s=XK({app:t,geometry:i}),o=r.clientX,n=r.clientY;return!!s&&Number.isFinite(o)&&Number.isFinite(n)&&o>=s.left&&o<=s.right&&n>=s.top&&n<=s.bottom},qV=({app:t})=>{let e=new Map,r,i=null,s=()=>{r||(r=document.createElement("div"),r.dataset.routeGraphicsInputBridge="true",r.style.position="fixed",r.style.left="0",r.style.top="0",r.style.pointerEvents="none",r.style.zIndex="1000",r.style.width="0",r.style.height="0");let x=t.canvas?.parentNode??document.body;r.isConnected||x.appendChild(r)},o=(x,S=x.lastSnapshot)=>{let v=Li(x);v.focused&&i!==x.id?i=x.id:!v.focused&&i===x.id&&(i=null),vm(x,i),S?.value!==v.value&&x.callbacks.onValueChange?.(v),(S?.selectionStart!==v.selectionStart||S?.selectionEnd!==v.selectionEnd||S?.focused!==v.focused||S?.composing!==v.composing)&&x.callbacks.onSelectionChange?.(v),x.lastSnapshot=v},n=x=>{let{disabled:S=!1,multiline:v=!1,maxLength:b,textStyle:w,padding:A,placeholder:C="",autocomplete:R="off",autocapitalize:P="off",spellcheck:U=!1}=x.options,{element:F}=x;F instanceof HTMLInputElement&&(F.type="text"),F.disabled=S,F.placeholder=C,F.autocomplete=R,F.autocapitalize=P,F.spellcheck=!!U,F.style.opacity=WK,F.style.color="transparent",F.style.caretColor="transparent",F.style.background="transparent",F.style.paddingTop=`${A.top}px`,F.style.paddingRight=`${A.right}px`,F.style.paddingBottom=`${A.bottom}px`,F.style.paddingLeft=`${A.left}px`;let V=w?.fontFamily??"Arial";F.style.fontFamily=Array.isArray(V)?V.join(", "):V,F.style.fontSize=`${w?.fontSize??16}px`,F.style.fontWeight=w?.fontWeight??"400",F.style.textAlign=w?.align??"left",F.style.lineHeight=typeof w?.lineHeight=="number"?`${w.lineHeight}px`:"normal",F.style.whiteSpace=v?"pre":"nowrap",F.style.overflowWrap="normal",F.style.resize="none",F.style.overflow="hidden",typeof b=="number"?F.maxLength=b:F.removeAttribute("maxLength"),F.tabIndex=-1,v&&F instanceof HTMLTextAreaElement&&(F.wrap="off",F.rows=1),vm(x,i)},a=x=>{s();let S=t.canvas,v=x.options.getGeometry?.();if(!S||!v||v.visible===!1){x.element.style.display="none";return}let b=S.getBoundingClientRect(),w=t.renderer?.width||b.width||1,A=t.renderer?.height||b.height||1,C=b.width/w,R=b.height/A,P=v.clipInsets??{top:0,right:0,bottom:0,left:0},U={top:P.top*R,right:P.right*C,bottom:P.bottom*R,left:P.left*C};x.element.style.display="block",x.element.style.left=`${b.left+v.x*C}px`,x.element.style.top=`${b.top+v.y*R}px`,x.element.style.width=`${v.width*C}px`,x.element.style.height=`${v.height*R}px`;let F=Object.values(U).some(V=>V>0);x.element.style.clipPath=F?`inset(${U.top}px ${U.right}px ${U.bottom}px ${U.left}px)`:"none"},c=x=>{if(!i)return;let S=e.get(i),v=x.target;!S||v===S.element||S.element.contains(v)||$K(v)&&r?.contains(v)||YK({app:t,entry:S,event:x})||S.element.blur()},l=()=>{for(let x of e.values()){if(a(x),!x.lastSnapshot){x.lastSnapshot=Li(x);continue}let S=Li(x);zK(S,x.lastSnapshot)||o(x,x.lastSnapshot)}},h=({id:x,options:S})=>{let v=S.multiline===!0?document.createElement("textarea"):document.createElement("input");return v.dataset.routeGraphicsInputId=x,v.style.position="fixed",v.style.border="none",v.style.outline="none",v.style.margin="0",v.style.boxSizing="border-box",v.style.borderRadius="0",v.style.transformOrigin="top left",v.style.appearance="none",v.style.boxShadow="none",v.style.userSelect="none",v.style.webkitUserSelect="none",v},u=x=>{let{id:S,element:v}=x,b=()=>{o(x)};v.addEventListener("focus",()=>{x.pendingBlurTimer&&(clearTimeout(x.pendingBlurTimer),x.pendingBlurTimer=null),i=S,vm(x,i);let w=Li(x);x.lastSnapshot=w,x.callbacks.onFocus?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("blur",()=>{i===S&&(i=null),vm(x,i),x.pendingBlurTimer=setTimeout(()=>{x.pendingBlurTimer=null;let w=Li(x);if(w.focused){x.lastSnapshot=w;return}x.lastSnapshot=w,x.callbacks.onBlur?.(w),x.callbacks.onSelectionChange?.(w)},0)}),v.addEventListener("input",b),v.addEventListener("select",b),v.addEventListener("click",()=>queueMicrotask(b)),v.addEventListener("keyup",w=>{w.stopPropagation(),w.stopImmediatePropagation?.(),queueMicrotask(b)}),v.addEventListener("keydown",w=>{w.stopPropagation(),w.stopImmediatePropagation?.();let A=x.options.submitOnEnter!==!1,C=x.options.submitOnEnter===!1,R=typeof x.callbacks.onSubmit=="function",P=w.key==="Enter"&&x.options.multiline!==!0&&!w.shiftKey,U=P&&A&&R,F=w.key==="Enter"&&x.options.multiline===!0&&(w.ctrlKey||w.metaKey)&&A&&R;(P||F||w.key==="Enter"&&C)&&w.preventDefault(),(U||F)&&x.callbacks.onSubmit(Li(x),w),w.key==="Escape"&&v.blur(),queueMicrotask(b)}),v.addEventListener("compositionstart",()=>{x.composing=!0;let w=Li(x);x.lastSnapshot=w,x.callbacks.onCompositionStart?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("compositionupdate",()=>{let w=Li(x);x.lastSnapshot=w,x.callbacks.onCompositionUpdate?.(w),x.callbacks.onSelectionChange?.(w)}),v.addEventListener("compositionend",()=>{x.composing=!1,b(),x.callbacks.onCompositionEnd?.(Li(x))})};document.addEventListener("pointerdown",c,!0),t.ticker?.add?.(l);let d=(x,S)=>{s();let v=e.get(x);if(v)return v.options=S,v.callbacks=S.callbacks??{},n(v),a(v),typeof S.value=="string"&&v.element.value!==S.value&&(v.element.value=S.value),v.lastSnapshot=Li(v),v.element;let b={id:x,element:h({id:x,options:S}),options:S,callbacks:S.callbacks??{},composing:!1,pendingBlurTimer:null,lastSnapshot:null};return u(b),typeof S.value=="string"&&(b.element.value=S.value),n(b),r.appendChild(b.element),e.set(x,b),a(b),b.lastSnapshot=Li(b),b.element};return{mount:d,update:(x,S)=>{let v=e.get(x);if(!v)return d(x,S);let b=S.multiline===!0!=v.element instanceof HTMLTextAreaElement;if(v.options=S,v.callbacks=S.callbacks??{},b){let w=v.element,A=document.activeElement===w,C=mh(w,"selectionStart"),R=mh(w,"selectionEnd");return v.element=h({id:x,options:S}),u(v),w.replaceWith(v.element),v.element.value=typeof S.value=="string"?S.value:w.value,n(v),a(v),v.lastSnapshot=Li(v),A&&!S.disabled&&queueMicrotask(()=>{v.element.focus(),XA(v.element,C,R)}),v.element}return typeof S.value=="string"&&S.value!==v.element.value&&v.composing!==!0&&(v.element.value=S.value),n(v),a(v),v.lastSnapshot=Li(v),v.element},focus:(x,{selectAll:S=!1,selectionStart:v,selectionEnd:b}={})=>{let w=e.get(x);if(!w||w.element.disabled)return;let A=document.activeElement===w.element;if(i=x,vm(w,i),A||w.element.focus(),S){w.element.select?.(),o(w,w.lastSnapshot);return}if(typeof v=="number"||typeof b=="number"){let C=typeof v=="number"?v:mh(w.element,"selectionStart"),R=typeof b=="number"?b:typeof v=="number"?v:mh(w.element,"selectionEnd");XA(w.element,C,R)}o(w,w.lastSnapshot)},setSelection:(x,S,v=S,{focus:b=!1}={})=>{let w=e.get(x);if(!w||w.element.disabled)return;let A=()=>{XA(w.element,S,v),o(w,w.lastSnapshot)};if(b&&document.activeElement!==w.element){w.element.focus(),A();return}A()},blur:x=>{e.get(x)?.element.blur()},unmount:x=>{let S=e.get(x);S&&(i===x&&(i=null),S.pendingBlurTimer&&(clearTimeout(S.pendingBlurTimer),S.pendingBlurTimer=null),S.element.remove(),e.delete(x),e.size===0&&r?.remove())},destroy:()=>{document.removeEventListener("pointerdown",c,!0),t.ticker?.remove?.(l);for(let x of e.values())x.pendingBlurTimer&&(clearTimeout(x.pendingBlurTimer),x.pendingBlurTimer=null),x.element.remove();e.clear(),i=null,r?.remove(),r=void 0}}};var jK=new Set(["sprite","video","animated-sprite","spritesheet-animation"]),qK=t=>Number.isFinite(t?.x)&&Number.isFinite(t?.y),KK=t=>t&&t.destroyed!==!0&&t.visible!==!1&&t.renderable!==!1,Sm=({x:t=0,y:e=0,width:r,height:i})=>({x:t,y:e,width:r,height:i}),QK=t=>{if(Array.isArray(t.content)||t.__fixedWidth!==!0)return 0;let e=t.measuredWidth??t.width,r=Math.max(0,t.width-e),i=t.textStyle?.align;return i==="center"?r/2:i==="right"?r:0},JK=({displayObject:t,element:e})=>{let r=ZL(t);if(r)return Sm(r);if(jK.has(e.type)){let i=t.getLocalBounds?.(),s=i?.rectangle??i;if(Number.isFinite(s?.x)&&Number.isFinite(s?.y)&&Number.isFinite(s?.width)&&Number.isFinite(s?.height)&&s.width>0&&s.height>0)return Sm(s)}return e.type==="text"?Sm({x:-QK(e),width:e.width,height:e.height}):Sm({width:e.width,height:e.height})},QV=({displayObject:t,rectangle:e,point:r})=>{if(!Number.isFinite(e.width)||!Number.isFinite(e.height)||e.width<=0||e.height<=0||typeof t.toLocal!="function")return!1;let i=t.toLocal(r);return i.x>=e.x&&i.x<=e.x+e.width&&i.y>=e.y&&i.y<=e.y+e.height},ZK=({displayObject:t,rectangle:e})=>{if(typeof t.toGlobal!="function")return;let r=[t.toGlobal({x:e.x,y:e.y}),t.toGlobal({x:e.x+e.width,y:e.y}),t.toGlobal({x:e.x+e.width,y:e.y+e.height}),t.toGlobal({x:e.x,y:e.y+e.height})].map(({x:a,y:c})=>({x:a,y:c})),i=r.map(({x:a})=>a),s=r.map(({y:a})=>a),o=Math.min(...i),n=Math.min(...s);return{x:o,y:n,width:Math.max(...i)-o,height:Math.max(...s)-n,corners:r}},eQ=t=>t?.__routeGraphicsScrollController?.contentContainer?.children??t?.children??[],JV=({elements:t,parent:e})=>{let r=eQ(e),i=new Map,s=new Map,o=[],n=new Set,a=new Map(t.map((l,h)=>[l.id,h]));for(let l=0;l<r.length;l++){let h=r[l],u=Za(h);if(u){o.push({displayObject:h,element:u,elementIndex:a.get(u.id)??l,paintIndex:l}),n.add(h),s.set(h,l);continue}let d=i.get(h.label)??[];d.push(h),i.set(h.label,d),s.set(h,l)}let c=new Map;return o.concat(t.flatMap((l,h)=>{let u=i.get(l.id)??[],d=c.get(l.id)??0,f=u[d];if(c.set(l.id,d+1),!f||n.has(f))return[];let p=s.get(f)??-1;return[{displayObject:f,element:l,elementIndex:h,paintIndex:p}]}))},ZV=t=>t.sort((e,r)=>{let i=(r.displayObject.zIndex??r.elementIndex)-(e.displayObject.zIndex??e.elementIndex);return i!==0?i:r.paintIndex-e.paintIndex}),KV=({clips:t,point:e})=>t.every(({displayObject:r,rectangle:i})=>QV({displayObject:r,rectangle:i,point:e})),tQ=t=>{let e=t.__routeGraphicsScrollController;if(e)return{displayObject:t,rectangle:Sm({width:e.viewportWidth,height:e.viewportHeight})}},e4=({displayObject:t,element:e,point:r,path:i,clips:s})=>{if(!KK(t))return[];if(!KV({clips:s,point:r}))return[];let o=JK({displayObject:t,element:e}),n=ZK({displayObject:t,rectangle:o}),a={id:e.id,type:e.type,bounds:n},c=[...i,a],l=tQ(t),h=l?[...s,l]:s,d=ZV(JV({elements:e.children??[],parent:t})).flatMap(f=>e4({...f,point:r,path:c,clips:h}));return d.length>0?d:QV({displayObject:t,rectangle:o,point:r})&&(!l||KV({clips:[l],point:r}))?[{path:c}]:[]},t4=({stage:t,elements:e=[],x:r,y:i})=>{let s={x:r,y:i};return!t||!Array.isArray(e)||!qK(s)?[]:ZV(JV({elements:e,parent:t})).flatMap(o=>e4({...o,point:s,path:[],clips:[]}))};var Uc=new Map,Tm=new Map,wm=new Map,E0=new Map,r4=new Map,rQ=()=>{let e=M=>{let k=window.HTMLMediaElement?.HAVE_CURRENT_DATA??2;return M.readyState>=k&&M.videoWidth>0&&M.videoHeight>0},r=M=>Number.isFinite(M)&&M>0?M:1,i=M=>M.videoWidth>0&&M.videoHeight>0,s=(M,k)=>{if(M.width===k.videoWidth&&M.height===k.videoHeight)return;let O=fD(M);M.resize?.(k.videoWidth,k.videoHeight),pD(O)},o=(M,k)=>new mo({resource:M,width:r(M.videoWidth),height:r(M.videoHeight),autoLoad:!1,autoPlay:!1,alphaMode:k,crossorigin:"anonymous",muted:!1,playsinline:!0}),n=M=>{let k=M?.source,O=k?.resource;if(!(O instanceof HTMLVideoElement)||k.__routeGraphicsVideoTextureRuntime)return;let $,j,me=0,q=1e3/30,se=({force:Em=!1}={})=>k.destroyed||(Em?!i(O):!e(O))?!1:(s(k,O),k.update(),!0),pt=()=>{$!==void 0&&(window.cancelAnimationFrame($),$=void 0)},fi=()=>{j!==void 0&&typeof O.cancelVideoFrameCallback=="function"&&O.cancelVideoFrameCallback(j),j=void 0},mt=()=>{se({force:!0})},It=()=>j!==void 0||typeof O.requestVideoFrameCallback!="function"?!1:(j=O.requestVideoFrameCallback(()=>{j=void 0,mt(),!O.paused&&!O.ended&&!k.destroyed&&It()}),!0),ye=()=>{se()},At=()=>{pt(),fi(),se()},pi=Em=>{$=void 0,!(O.paused||O.ended||k.destroyed)&&(Em-me>=q&&(me=Em,se()),$=window.requestAnimationFrame(pi))},Ps=()=>{se(),!It()&&$===void 0&&(me=0,$=window.requestAnimationFrame(pi))},M0=()=>{pt(),fi(),O.removeEventListener("play",Ps),O.removeEventListener("playing",Ps),O.removeEventListener("pause",At),O.removeEventListener("ended",At),O.removeEventListener("loadeddata",ye),O.removeEventListener("canplay",ye),O.removeEventListener("canplaythrough",ye),O.removeEventListener("seeked",ye),O.removeEventListener("timeupdate",ye),dD(k),k.__routeGraphicsVideoTextureRuntime=void 0};O.addEventListener("play",Ps),O.addEventListener("playing",Ps),O.addEventListener("pause",At),O.addEventListener("ended",At),O.addEventListener("loadeddata",ye),O.addEventListener("canplay",ye),O.addEventListener("canplaythrough",ye),O.addEventListener("seeked",ye),O.addEventListener("timeupdate",ye),k.once("destroy",M0),M.once("destroy",M0),k.__routeGraphicsVideoTextureRuntime={cleanup:M0,requestUpdate:se},se()},a=M=>{if(M!=="auto"&&M!=="manual")throw new Error(`Invalid animation playback mode "${M}". Expected "auto" or "manual".`)},c,l=bV(),h={elements:[],animations:[],audio:[],audioEffects:[]},u,d={animations:[],elements:[],audio:[],parsers:[]},f,p,m,g,_=!1,y,x,S,v="auto",b=null,w=[],A,C,R,P,U=new Map,F=new Map,V=new Map,z,H=(M,k,O,$)=>{M.clear(),M.rect(0,0,k,O),M.fill($??0)},Q=M=>{if(!M)return"texture";let k=M.split(";")[0].trim().toLowerCase();return k.startsWith("audio/")||k==="application/ogg"?"audio":k.startsWith("font/")||["application/font-woff","application/font-woff2","application/x-font-ttf","application/x-font-otf"].includes(k)?"font":k.startsWith("video/")?"video":"texture"},I=M=>{if(typeof M!="string")return"audio/mpeg";let k=M.split("?")[0].split("#")[0].toLowerCase();return k.endsWith(".ogg")||k.endsWith(".oga")?"audio/ogg":k.endsWith(".m4a")?"audio/mp4":k.endsWith(".aac")?"audio/aac":k.endsWith(".wav")?"audio/wav":k.endsWith(".flac")?"audio/flac":"audio/mpeg"},L=M=>M?typeof M=="string"?M:M.message||String(M):"Unknown error",J=(M,k=180)=>{if(typeof M=="string")return M.length<=k?M:`${M.slice(0,k-1)}...`},te=M=>M&&typeof M.byteLength=="number"?M.byteLength:0,W=(M,k={})=>M==="texture"?k.type?.startsWith("image/")?"image":"visual asset":M||"asset",ne=M=>M.match(/HTTP\s+(\d{3})/)?.[1],ce=M=>{if(/Timed out loading video asset/i.test(M))return"Timed out while loading video metadata.";if(!/Failed to load video asset/i.test(M))return;let k=M.match(/\((.*)\)\.?$/)?.[1];return k?`Video element failed to load (${k}).`:"Video element failed to load."},be=({category:M,phase:k,error:O})=>{if(O?.rootCauseMessage)return O.rootCauseMessage;let $=L(O),j=ne($);return j==="404"?"File not found.":j==="401"||j==="403"?"Access denied.":j?.startsWith("5")?"File server error.":/URL is missing/i.test($)?"Missing file URL.":/missing or empty/i.test($)?"Missing file data.":M==="audio"||/decode/i.test($)?"Unsupported or damaged audio file.":M==="font"?"Unsupported or damaged font file.":M==="video"?ce($)??"Unsupported, damaged, or inaccessible video file.":M==="texture"&&k==="image bitmap creation"?"Unsupported or damaged image file.":M==="texture"?"Missing, inaccessible, or unsupported image file.":"File could not be loaded."},B=({key:M,kind:k,category:O,phase:$,asset:j,error:me})=>{let q={assetKey:M,assetKind:k,assetCategory:O,phase:$,cause:L(me)};return j?.type&&(q.type=j.type),j?.source&&(q.source=j.source),j?.url&&(q.url=J(j.url)),j?.buffer&&(q.bufferBytes=te(j.buffer)),q},X=({key:M,category:k,phase:O,asset:$,error:j})=>{let me=W(k,$),q=be({category:k,phase:O,error:j}),se=`Could not load ${me} "${M}". ${q}`,pt=new Error(se,{cause:j});return pt.userMessage=se,pt.rootCauseMessage=q,pt.details=B({key:M,kind:me,category:k,phase:O,asset:$,error:j}),pt},Z=async({key:M,category:k,phase:O,asset:$},j)=>{try{return await j()}catch(me){throw X({key:M,category:k,phase:O,asset:$,error:me})}},D=(M,k)=>{if(te(M?.buffer)===0)throw new Error(`${k} asset data is missing or empty.`)},ve=M=>M?`"${String(M).replaceAll('"','\\"')}"`:"unknown",Ge=M=>{let{assetKind:k,assetKey:O}=M?.details||{};return O?k?`${k} ${ve(O)}`:ve(O):"unknown asset"},qe=M=>{let O=M.slice(0,3).map(Ge),$=M.length-O.length,j=$>0?`, and ${$} more`:"";return`${O.join(", ")}${j}`},ot=M=>{let O=M.slice(0,3).map(me=>{let q=Ge(me),se=me?.rootCauseMessage||me?.details?.cause||L(me);return`${q}: ${J(se)}`}),$=M.length-O.length,j=$>0?`, and ${$} more`:"";return`${O.join("; ")}${j}`},nt=M=>{let k=M.filter(me=>me.status==="rejected").map(me=>me.reason);if(k.length===0)return;if(k.length===1)throw k[0];let O=ot(k),$=`Could not load ${k.length} assets: ${qe(k)}. ${O}`,j=new AggregateError(k,$);throw j.userMessage=$,j.rootCauseMessage=O,j.details={failures:k.map(me=>me?.details||{cause:L(me)})},j},Rt=(M,k,{revokable:O=!1}={})=>{V.set(M,{url:k,revokable:O})},co=M=>{let k=V.get(M);k?.revokable===!0&&typeof k?.url=="string"&&URL.revokeObjectURL(k.url),V.delete(M)},ei=(M,k)=>(U.set(M,k),k.value),Oi=(M,k)=>{let O=F.get(M);if(O)return O;let $,j,me=new Promise((se,pt)=>{$=se,j=pt});F.set(M,me);let q=()=>{F.get(M)===me&&F.delete(M)};me.then(q,q);try{Promise.resolve(k()).then($,j)}catch(se){j(se)}return me},Di=(M,k)=>{let O=E0.get(M);if(O)return O;let $,j,me=new Promise((se,pt)=>{$=se,j=pt});E0.set(M,me);let q=()=>{E0.get(M)===me&&E0.delete(M)};me.then(q,q);try{Promise.resolve(k()).then($,j)}catch(se){j(se)}return me},wr=M=>(M.referenceCount+=1,M),di=({registry:M,identity:k,dispose:O})=>{let $=M.get(k);return $||($={registry:M,identity:k,referenceCount:0,dispose:O,unregister:()=>{M.get(k)===$&&M.delete(k)}},M.set(k,$)),wr($)},Er=async M=>{if(M.referenceCount-=1,!(M.referenceCount>0)){if(M.onZeroReferences){await M.onZeroReferences();return}M.unregister?.(),await M.dispose?.()}},na=(M,k,{dispose:O}={})=>{let $={category:"audio",value:k,sharedOwnership:di({registry:r4,identity:M,dispose:O})};return ei(M,$)},ls=M=>Array.isArray(M)?M[0]:M,aa=(M,k,{dispose:O,ownership:$,ownershipAlreadyRetained:j=!1,cacheAliasInstalled:me=!1}={})=>{let q=$?j?$:wr($):di({registry:Uc,identity:k.value,dispose:O});q.aliasRecords??=new Map;let se=q.aliasRecords.get(M);return se||(se={referenceCount:0,cacheAliasInstalled:!1,primaryValue:ls(k.value)},q.aliasRecords.set(M,se)),se.referenceCount+=1,me&&(se.cacheAliasInstalled=!0,se.primaryValue=ls(k.value)),Tm.set(M,q),k.sharedOwnership=q,ei(M,k)},YA=(M,k,O)=>{let $=Tm.get(M),j=($&&ls($.value)===ls(O.value)?$:void 0)??Uc.get(O.value);return!O.created&&!j?O.value:aa(M,{category:k,value:j?.value??O.value},j?{ownership:j,cacheAliasInstalled:O.cacheAliasInstalled}:{dispose:O.dispose,cacheAliasInstalled:O.cacheAliasInstalled})},A0=M=>{if(M?.nodeName==="VIDEO"||typeof HTMLVideoElement<"u"&&M instanceof HTMLVideoElement){M.pause(),M.removeAttribute("src"),M.querySelectorAll("source").forEach(O=>O.remove()),M.load();return}typeof M?.close=="function"&&M.close()},s4=M=>{let k=new Set,O=Array.isArray(M)?M:[M];for(let $ of O){let j=$?.source?.resource;j&&k.add(j)}return k},jA=M=>{let k=M;try{k=Ze.resolver?.resolve?.(M)?.src??M}catch{}try{let O=(typeof document<"u"?document.baseURI:void 0)??globalThis.location?.href;return new URL(k,O).href}catch{return k}},o4=(M,k,O)=>{let $={sourceUrl:M,sourceIdentity:k,referenceCount:0,aliasRecords:new Map,disposing:!1};return wm.set(k,$),$.loadPromise=(async()=>{if(O)try{await O}catch{}let j=Ze.cache.has(M),me=await Ze.load(M),q=s4(me);return $.value=me,Uc.set(me,$),j||($.dispose=async()=>{try{await Ze.unload(M)}finally{for(let se of q)A0(se)}}),me})(),$.onZeroReferences=async()=>{$.disposing=!0,$.value!==void 0&&Uc.get($.value)===$&&Uc.delete($.value);let j=Promise.resolve().then(()=>$.dispose?.());$.disposalPromise=j;try{await j}finally{wm.get(k)===$&&wm.delete(k)}},$},n4=M=>{let k=jA(M),O=wm.get(k);return(!O||O.disposing)&&(O=o4(M,k,O?.disposalPromise)),wr(O)},a4=async(M,k)=>{let O=k.sharedOwnership,$=O.aliasRecords.get(M),j=($?.referenceCount??1)-1;j>0?$.referenceCount=j:(O.aliasRecords.delete(M),Tm.get(M)===O&&Tm.delete(M),$?.cacheAliasInstalled===!0&&Ze.cache.has(M)&&Ze.cache.get(M)===$.primaryValue&&Ze.cache.remove(M)),await Er(O)},qA=async M=>{let k=F.get(M);if(k)try{await k}catch{return!1}let O=U.get(M);return!O||O.released===!0?!1:(O.released=!0,U.get(M)===O&&U.delete(M),O.category==="audio"?await Er(O.sharedOwnership):O.category==="font"?document.fonts?.delete?.(O.value):(O.category==="texture"||O.category==="video")&&await a4(M,O),!0)},c4=async({sourceUrl:M,mimeType:k})=>{let O=document.createElement("video");O.crossOrigin="anonymous",O.preload="metadata",O.playsInline=!0,O.setAttribute("playsinline",""),O.setAttribute("webkit-playsinline","");let $=document.createElement("source");$.src=M,typeof k=="string"&&k.length>0&&($.type=k),O.appendChild($),O.load();let j=await ya(),me=new G({source:o(O,j)});return n(me),me},l4=(M,k,O)=>{f&&f.registerHotkeys(O?.keyboard??{}),M.renderer.events.cursorStyles||(M.renderer.events.cursorStyles={}),M.renderer.events.cursorStyles.default||(M.renderer.events.cursorStyles.default="default"),M.renderer.events.cursorStyles.hover||(M.renderer.events.cursorStyles.hover="pointer");let $=k?.cursorStyles,j=O?.cursorStyles;Me($,j)||(j?(j.default&&(M.renderer.events.cursorStyles.default=j.default,M.canvas.style.cursor=j.default),j.hover&&(M.renderer.events.cursorStyles.hover=j.hover)):$&&(M.renderer.events.cursorStyles.default="default",M.renderer.events.cursorStyles.hover="pointer"))},u4=(M,k,O,$)=>{if(Me(h,O)){typeof M.render=="function"&&M.render();return}let j=zL({prevState:h,nextState:O,activeAnimations:p.getContinuableAnimations()});y&&y.abort(),y=new AbortController;let me=y.signal;m.reset(O.id),l4(M,h.global,O.global),p.cancelAllExcept(j.continuedAnimationIds),lc({app:M,parent:k,prevComputedTree:h.elements,nextComputedTree:O.elements,animations:O.animations,elementPlugins:d.elements,animationBus:p,completionTracker:m,eventHandler:$,signal:me}),p.flush(),v==="manual"&&b!==null&&p.setTime(b),aE({app:M,prevAudioTree:h.audio,nextAudioTree:O.audio,prevAudioEffects:h.audioEffects,nextAudioEffects:O.audioEffects,audioPlugins:d.audio}),h=O,typeof M.render=="function"&&M.render(),m.completeIfEmpty(),_||(_=!0,g&&g())},KA={rendererName:"pixi",get canvas(){return c.canvas},findElementByLabel:M=>c.stage.getChildByLabel(M,!0)??null,hitTestElementBounds:({x:M,y:k})=>t4({stage:c.stage,x:M,y:k}),extractBase64:async M=>{typeof c.render=="function"&&c.render();let k=new ue(0,0,c.renderer.width,c.renderer.height);if(!M)return await c.renderer.extract.base64({target:c.stage,frame:k});let O=c.stage.getChildByLabel(M,!0);if(!O)throw new Error(`Element with label '${M}' not found`);return await c.renderer.extract.base64({target:O,frame:k})},assignStageEvent:(M,k)=>{c.stage.eventMode="static",c.stage.on(M,k)},resumeAudio:()=>l.resume(),setAnimationPlaybackMode:M=>{a(M),v=M,v!=="manual"&&(b=null,p?.clearTime?.())},setAnimationTime:M=>{let k=Number(M);if(!Number.isFinite(k))throw new Error("Animation time must be a finite number.");v==="manual"&&(b=k),p.flush(),p.setTime(k),v!=="manual"&&(b=null,p.clearTime()),typeof c.render=="function"&&c.render()},init:async M=>{let{eventHandler:k,plugins:O,width:$,height:j,backgroundColor:me,debug:q=!1,onFirstRender:se,animationPlaybackMode:pt="auto"}=M;g=se,a(pt),v=pt,b=null,w.forEach(ye=>ye()),w=[];let fi=[];O?.elements?.forEach(ye=>{ye?.parse&&fi.push(vV({type:ye.type,parse:ye.parse}))}),d={animations:O?.animations??[],elements:O?.elements??[],audio:O?.audio??[],parsers:fi},u=k,f=DV(k),m=NV(k),c=new cf,c.audioStage=l,await c.init({width:$,height:j,backgroundColor:me,preference:"webgl",preserveDrawingBuffer:q===!0}),typeof c.ticker?.remove=="function"&&c.ticker.remove(c.render,c),c.debug=q,c.inputDomBridge=qV({app:c}),A=ye=>{ye.preventDefault()},c.canvas.addEventListener("contextmenu",A),C=ye=>{ye.preventDefault();let At={};typeof ye.statusMessage=="string"&&ye.statusMessage.length>0&&(At.statusMessage=ye.statusMessage),u?.("rendererContextLost",At)},R=()=>{u?.("rendererContextRestored",{})},c.canvas.addEventListener("webglcontextlost",C),c.canvas.addEventListener("webglcontextrestored",R);let mt=c.renderer?.gpu?.device?.lost;if(mt&&typeof mt.then=="function"){let ye={};P=ye,Promise.resolve(mt).then(At=>{if(P!==ye)return;let pi={};typeof At?.reason=="string"&&At.reason.length>0&&(pi.reason=At.reason),typeof At?.message=="string"&&At.message.length>0&&(pi.statusMessage=At.message),u?.("rendererContextLost",pi)},()=>{})}z=new wt,z.label="__route_graphics_background__",H(z,$,j,me),c.stage.addChild(z),c.stage.width=$,c.stage.height=j,c.ticker.add(c.audioStage.tick),p=GV();let It=()=>{v==="manual"&&typeof c.render=="function"&&c.render()};return w=[p.on("started",It),p.on("completed",It),p.on("cancelled",It)],q?(x=ye=>{v==="auto"&&ye?.detail?.deltaMS&&(p.tick(Number(ye.detail.deltaMS)),typeof c.render=="function"&&c.render())},window.addEventListener("snapShotKeyFrame",x)):(S=ye=>{v==="auto"&&(p.tick(ye.deltaMS),typeof c.render=="function"&&c.render())},c.ticker.add(S)),KA},destroy:()=>{y&&(y.abort(),y=void 0),x&&(window.removeEventListener("snapShotKeyFrame",x),x=void 0),S&&typeof c?.ticker?.remove=="function"&&(c.ticker.remove(S),S=void 0),A&&c?.canvas&&(c.canvas.removeEventListener("contextmenu",A),A=void 0),C&&c?.canvas&&(c.canvas.removeEventListener("webglcontextlost",C),C=void 0),R&&c?.canvas&&(c.canvas.removeEventListener("webglcontextrestored",R),R=void 0),P=void 0;let M=new Set([...U.keys(),...F.keys()]);for(let O of M)qA(O).catch(()=>{});c?.inputDomBridge?.destroy?.(),f?.destroy(),Kw(),w.forEach(O=>O()),w=[],p&&p.destroy(),c?.audioStage&&c.audioStage.destroy();let k=O=>{for(let $ of O.children){let j=$.texture?.source?.resource;j instanceof HTMLVideoElement&&j.pause(),$.children&&k($)}};c?.stage&&(k(c.stage),pr({app:c,root:c.stage})),c&&c.destroy(),v="auto",b=null,z=void 0},loadAssets:async M=>{if(!M)throw new Error("assetBufferMap is required");let k={audio:{},font:{},video:{},texture:{}};for(let[q,se]of Object.entries(M)){let pt=Q(se.type);k[pt][q]=se}let O=Object.entries(k.audio),$=O.length>0&&typeof Mi.prepareDecoders=="function"?Mi.prepareDecoders(k.audio):void 0,j=[];O.forEach(([q,se])=>{j.push({includeInReturn:!1,promise:Oi(q,()=>Z({key:q,category:"audio",phase:"decode",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="audio")return pt.value;D(se,"Audio"),await $;let fi=!r4.has(q)&&Mi.getAsset(q)!==void 0,mt=await Mi.load(q,se.buffer,se.type);return na(q,mt,{dispose:fi?void 0:()=>Mi.unload(q)})}))})}),Object.entries(k.font).forEach(([q,se])=>{j.push({includeInReturn:!1,promise:Oi(q,()=>Z({key:q,category:"font",phase:"font face load",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="font")return pt.value;D(se,"Font");let fi=new Blob([se.buffer],{type:se.type}),mt=URL.createObjectURL(fi),It=new FontFace(q,`url(${mt})`);try{return await It.load(),document.fonts.add(It),ei(q,{category:"font",value:It})}finally{URL.revokeObjectURL(mt)}}))})}),Object.entries(k.texture).forEach(([q,se])=>j.push({includeInReturn:!0,promise:Oi(q,()=>Z({key:q,category:"texture",phase:se?.source==="url"&&typeof se?.url=="string"?"Pixi URL load":"image bitmap creation",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="texture")return pt.value;if(Ze.cache.has(q)){let mt=Ze.cache.get(q),It=se?.source==="url"&&typeof se?.url=="string"?se.url:void 0,ye=It?wm.get(jA(It)):void 0;if(!(ye&&(ye.disposing||ye.value===void 0))){let pi=Tm.get(q),Ps=(pi&&ls(pi.value)===mt?pi:void 0)??(ye&&ls(ye.value)===mt?ye:void 0)??Uc.get(mt);return Ps?aa(q,{category:"texture",value:Ps.value},{ownership:Ps}):mt}}if(se?.source==="url"&&typeof se?.url=="string"){let mt=se.url,It=n4(mt),ye=!1;try{let At=await It.loadPromise;return q!==mt&&(Ze.cache.set(q,At),ye=!0),aa(q,{category:"texture",value:At},{ownership:It,ownershipAlreadyRetained:!0,cacheAliasInstalled:ye})}catch(At){throw ye&&Ze.cache.has(q)&&Ze.cache.get(q)===ls(It.value)&&Ze.cache.remove(q),await Er(It),At}}let fi=await Di(`texture:${q}`,async()=>{if(Ze.cache.has(q))return{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1};D(se,"Texture");let mt=new Blob([se.buffer],{type:se.type}),It=await createImageBitmap(mt),ye=G.from(It),At=()=>{try{ye?.destroyed||ye?.destroy?.(!0)}finally{A0(It)}};return Ze.cache.has(q)?(At(),{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1}):(Ze.cache.set(q,ye),{value:ye,created:!0,cacheAliasInstalled:!0,dispose:At})});return YA(q,"texture",fi)}))})),Object.entries(k.video).forEach(([q,se])=>{j.push({includeInReturn:!0,promise:Oi(q,()=>Z({key:q,category:"video",phase:"video texture load",asset:se},async()=>{let pt=U.get(q);if(pt?.category==="video")return pt.value;if(Ze.cache.has(q)){let mt=Ze.cache.get(q);return Uc.has(mt)?aa(q,{category:"video",value:mt}):mt}se?.source!=="url"&&D(se,"Video");let fi=await Di(`video:${q}`,async()=>{if(Ze.cache.has(q))return{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1};let mt=se?.source==="url"&&typeof se?.url=="string"?se.url:URL.createObjectURL(new Blob([se.buffer],{type:se.type})),It=se?.source!=="url";Rt(q,mt,{revokable:It});let ye;try{ye=await c4({sourceUrl:mt,mimeType:se?.type})}catch(Ps){throw V.delete(q),It&&URL.revokeObjectURL(mt),Ps}let At=ye?.source?.resource,pi=()=>{try{ye?.destroyed||ye?.destroy?.(!0),A0(At)}finally{co(q)}};return Ze.cache.has(q)?(pi(),{value:Ze.cache.get(q),created:!1,cacheAliasInstalled:!1}):(Ze.cache.set(q,ye),{value:ye,created:!0,cacheAliasInstalled:!0,dispose:pi})});return YA(q,"video",fi)}))})});let me=await Promise.allSettled(j.map(q=>q.promise));return nt(me),me.map((q,se)=>j[se].includeInReturn&&q.status==="fulfilled"?q.value:void 0).filter(Boolean)},unloadAssets:async M=>{if(!Array.isArray(M))throw new Error("assetIds must be an array");let k=Array.from(new Set(M.filter(j=>typeof j=="string"&&j.length>0))),O=[],$=[];for(let j of k)try{await qA(j)&&O.push(j)}catch(me){let q=new Error(`Could not unload asset "${j}".`,{cause:me});q.details={assetKey:j,phase:"unload",cause:L(me)},$.push(q)}if($.length===1)throw $[0];if($.length>1)throw new AggregateError($,`Could not unload ${$.length} assets.`);return O},loadAudioAssets:async M=>Promise.all(M.map(k=>Oi(k,async()=>{let O=U.get(k);if(O?.category==="audio")return O.value;let $=Mi.getAsset(k);if($!==void 0)return na(k,$);let me=await(await fetch(k)).arrayBuffer(),q=I(k);await Mi.prepareDecoders?.({[k]:{buffer:me,type:q}});let se=await Mi.load(k,me,q);return na(k,se,{dispose:()=>Mi.unload(k)})}))),updatedBackgroundColor:M=>{c.renderer.background.color=M,z&&H(z,c.renderer.width,c.renderer.height,M),typeof c.render=="function"&&c.render()},render:M=>{let k=$A(M),O=kA({JSONObject:k.elements,parserPlugins:d.parsers}),$={...k,elements:O};u4(c,c.stage,$,u)},parse:M=>{let k=$A(M),O=kA({JSONObject:k.elements,parserPlugins:d.parsers});return{...k,elements:O}}};return KA},i4=rQ;var J6e=i4;export{cf as Application,Ze as Assets,Mi as AudioAsset,wY as animatedSpritePlugin,vY as containerPlugin,FT as createAnimationPlugin,x4 as createAssetBufferManager,kT as createAudioPlugin,Yt as createElementPlugin,J6e as default,kX as inputPlugin,fj as particlesPlugin,q6 as rectPlugin,aE as renderAudio,lc as renderElements,_X as sliderPlugin,MY as soundPlugin,tX as spritePlugin,wG as spritesheetAnimationPlugin,W6 as textPlugin,TY as textRevealingPlugin,EY as tweenPlugin,sX as videoPlugin};
|
|
2435
2435
|
/*! Bundled license information:
|
|
2436
2436
|
|
|
2437
2437
|
punycode/punycode.js:
|
package/package.json
CHANGED
package/src/cli/renderConfig.js
CHANGED
|
@@ -273,15 +273,21 @@ const collectAssetReferences = ({ states, assetAliases }) => {
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
if (
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
276
|
+
if (FONT_ASSET_KEYS.has(key)) {
|
|
277
|
+
const fontFamilies = Array.isArray(value) ? value : [value];
|
|
278
|
+
|
|
279
|
+
fontFamilies.forEach((fontFamily, index) => {
|
|
280
|
+
if (typeof fontFamily !== "string" || !assetAliases.has(fontFamily)) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
registerReference({
|
|
285
|
+
alias: fontFamily,
|
|
286
|
+
fallbackType: "font/ttf",
|
|
287
|
+
nodePath: Array.isArray(value)
|
|
288
|
+
? getNextNodePath(nextPath, index)
|
|
289
|
+
: nextPath,
|
|
290
|
+
});
|
|
285
291
|
});
|
|
286
292
|
}
|
|
287
293
|
|