framefields 2.4.3 → 2.5.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 +26 -1
- package/dist/audio/index.d.mts +4 -4
- package/dist/audio/index.mjs +13 -13
- package/dist/{audio-DJeVoE8b.mjs → audio-BluXgSeG.mjs} +1 -1
- package/dist/{audio-DJeVoE8b.mjs.map → audio-BluXgSeG.mjs.map} +1 -1
- package/dist/{audio-BymXfAvH.d.mts → audio-C1A4N3Wh.d.mts} +3 -3
- package/dist/{audio-BymXfAvH.d.mts.map → audio-C1A4N3Wh.d.mts.map} +1 -1
- package/dist/{audio-BzHHpImj.mjs → audio-CMHpfOoS.mjs} +4 -4
- package/dist/{audio-BzHHpImj.mjs.map → audio-CMHpfOoS.mjs.map} +1 -1
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +221 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/components/index.d.mts +12 -0
- package/dist/components/index.mjs +49 -0
- package/dist/{dist-hmWTJPik.mjs → dist-BBUrGwqd.mjs} +24 -3
- package/dist/{dist-hmWTJPik.mjs.map → dist-BBUrGwqd.mjs.map} +1 -1
- package/dist/{dist-Bo2_zeCn.mjs → dist-CQZ5_60A.mjs} +2 -2
- package/dist/{dist-Bo2_zeCn.mjs.map → dist-CQZ5_60A.mjs.map} +1 -1
- package/dist/{dist-0QGroRYZ.mjs → dist-C_SMBmHr.mjs} +1 -1
- package/dist/{dist-0QGroRYZ.mjs.map → dist-C_SMBmHr.mjs.map} +1 -1
- package/dist/{dist-TrtLGPvc.mjs → dist-DFeF-ygz.mjs} +1 -1
- package/dist/{dist-TrtLGPvc.mjs.map → dist-DFeF-ygz.mjs.map} +1 -1
- package/dist/{dist-DMa2BbYs.mjs → dist-QMVy31gR.mjs} +23 -4
- package/dist/dist-QMVy31gR.mjs.map +1 -0
- package/dist/effects/index.d.mts +4 -4
- package/dist/effects/index.mjs +36 -36
- package/dist/{effects-CiZjSwIh.mjs → effects-mRe-rLte.mjs} +3 -3
- package/dist/{effects-CiZjSwIh.mjs.map → effects-mRe-rLte.mjs.map} +1 -1
- package/dist/fonts/index.d.mts +1 -1
- package/dist/fonts/index.mjs +3 -3
- package/dist/{fonts-Da1JDKpc.mjs → fonts-wI3CUYHM.mjs} +2 -2
- package/dist/{fonts-Da1JDKpc.mjs.map → fonts-wI3CUYHM.mjs.map} +1 -1
- package/dist/{gpu-CHIgM_YH.mjs → gpu-I5fdrflL.mjs} +2 -2
- package/dist/{gpu-CHIgM_YH.mjs.map → gpu-I5fdrflL.mjs.map} +1 -1
- package/dist/{index-DIvWBm-q.d.mts → index-B-KVpJMb.d.mts} +2 -2
- package/dist/{index-DIvWBm-q.d.mts.map → index-B-KVpJMb.d.mts.map} +1 -1
- package/dist/index-BJe_GEyj.d.mts +5968 -0
- package/dist/index-BJe_GEyj.d.mts.map +1 -0
- package/dist/{index-WMofVN02.d.mts → index-BpdVOlsV.d.mts} +3 -3
- package/dist/{index-WMofVN02.d.mts.map → index-BpdVOlsV.d.mts.map} +1 -1
- package/dist/index-C2f4Hm-p.d.mts +89 -0
- package/dist/index-C2f4Hm-p.d.mts.map +1 -0
- package/dist/{index-B-55dXDu.d.mts → index-CalU-mpZ.d.mts} +1 -1
- package/dist/{index-B-55dXDu.d.mts.map → index-CalU-mpZ.d.mts.map} +1 -1
- package/dist/{index-CJkihekp.d.mts → index-D6-lH1Mx.d.mts} +189 -189
- package/dist/index-D6-lH1Mx.d.mts.map +1 -0
- package/dist/{index-Dwf76Qep.d.mts → index-DNKM3to5.d.mts} +3 -3
- package/dist/{index-Dwf76Qep.d.mts.map → index-DNKM3to5.d.mts.map} +1 -1
- package/dist/{index-DGe83M-p.d.mts → index-fymoeGNW.d.mts} +6 -1
- package/dist/index-fymoeGNW.d.mts.map +1 -0
- package/dist/index.d.mts +13 -4659
- package/dist/index.mjs +59 -6654
- package/dist/preview/index.d.mts +4 -90
- package/dist/preview/index.mjs +12 -12
- package/dist/{preview-5E4B96RD.mjs → preview--DEgW67P.mjs} +3 -3
- package/dist/{preview-5E4B96RD.mjs.map → preview--DEgW67P.mjs.map} +1 -1
- package/dist/preview-engine/audio.mjs +1 -1
- package/dist/preview-engine/{chunk-TFFG5YFI.mjs → chunk-24H3QVYB.mjs} +1 -1
- package/dist/preview-engine/{chunk-7J4OK4VE.mjs → chunk-25T3M6MI.mjs} +1 -1
- package/dist/preview-engine/{chunk-YJ6GWVL4.mjs → chunk-2AV7HRRL.mjs} +1 -1
- package/dist/preview-engine/{chunk-U4SQUTDV.mjs → chunk-4EOS6ZWW.mjs} +1 -1
- package/dist/preview-engine/{chunk-O3NOB5IB.mjs → chunk-4UI3S3UG.mjs} +1 -1
- package/dist/preview-engine/{chunk-YQYLBXOX.mjs → chunk-5N3GW3NE.mjs} +1 -1
- package/dist/preview-engine/{chunk-JJYNYYPA.mjs → chunk-5P764TTF.mjs} +1 -1
- package/dist/preview-engine/{chunk-5CWQHYQP.mjs → chunk-7BUKVFWB.mjs} +1 -1
- package/dist/preview-engine/{chunk-6WKWYUOM.mjs → chunk-7EHUT5A3.mjs} +1 -1
- package/dist/preview-engine/{chunk-A2775RSO.mjs → chunk-7HTTYP6T.mjs} +1 -1
- package/dist/preview-engine/{chunk-AWX4YGC5.mjs → chunk-7JYMNGNK.mjs} +1 -1
- package/dist/preview-engine/{chunk-JTUK7ZXK.mjs → chunk-A5OUYV3I.mjs} +1 -1
- package/dist/preview-engine/{chunk-5JSSXOBB.mjs → chunk-AJLPRIXB.mjs} +1 -1
- package/dist/preview-engine/{chunk-KJ2DTA77.mjs → chunk-ANZDLSSM.mjs} +1 -1
- package/dist/preview-engine/{chunk-OZDZQMTB.mjs → chunk-C2TA65CH.mjs} +1 -1
- package/dist/preview-engine/{chunk-C45ROXI6.mjs → chunk-CBQOJAIS.mjs} +11 -11
- package/dist/preview-engine/{chunk-E7DH7EPX.mjs → chunk-DKXKOUQR.mjs} +1 -1
- package/dist/preview-engine/{chunk-5SVJIGPK.mjs → chunk-DPIED3EG.mjs} +1 -1
- package/dist/preview-engine/{chunk-AY2ZIXST.mjs → chunk-ENS4KUJV.mjs} +1 -1
- package/dist/preview-engine/{chunk-5EVEGKWT.mjs → chunk-HXHP3UHZ.mjs} +1 -1
- package/dist/preview-engine/chunk-I6E3AKLS.mjs +1 -0
- package/dist/preview-engine/{chunk-JJA4G3OU.mjs → chunk-ILKBHDFB.mjs} +1 -1
- package/dist/preview-engine/{chunk-7QE6II7R.mjs → chunk-JMOJKT5W.mjs} +1 -1
- package/dist/preview-engine/{chunk-ILBZQLUF.mjs → chunk-KKBJ7X3T.mjs} +1 -1
- package/dist/preview-engine/{chunk-EEOUHDUD.mjs → chunk-KRVXRP5F.mjs} +1 -1
- package/dist/preview-engine/{chunk-UVWGZUKZ.mjs → chunk-MLW6Y4RN.mjs} +1 -1
- package/dist/preview-engine/{chunk-UMF7NNUA.mjs → chunk-MRDJNDYV.mjs} +1 -1
- package/dist/preview-engine/{chunk-XTPEGKOZ.mjs → chunk-MZAAJXUL.mjs} +1 -1
- package/dist/preview-engine/{chunk-AKYUVDKM.mjs → chunk-NB55FW7D.mjs} +1 -1
- package/dist/preview-engine/{chunk-UDDK5QZF.mjs → chunk-NG5WSR3A.mjs} +1 -1
- package/dist/preview-engine/{chunk-FDNR4PRC.mjs → chunk-NXKXOSE6.mjs} +1 -1
- package/dist/preview-engine/{chunk-N3PRZLZJ.mjs → chunk-NYEDWUFS.mjs} +1 -1
- package/dist/preview-engine/{chunk-6TGNQ5FD.mjs → chunk-O6LGKH4S.mjs} +1 -1
- package/dist/preview-engine/{chunk-LSBCFJZM.mjs → chunk-OOJAQBS3.mjs} +1 -1
- package/dist/preview-engine/{chunk-6AEU4DC7.mjs → chunk-PJN7DD55.mjs} +3 -3
- package/dist/preview-engine/{chunk-V6LCSK6Q.mjs → chunk-QCUGWPYP.mjs} +1 -1
- package/dist/preview-engine/{chunk-BIS3W4Z5.mjs → chunk-QQJPPGH5.mjs} +1 -1
- package/dist/preview-engine/{chunk-37P2KIFE.mjs → chunk-QVUT3QNF.mjs} +1 -1
- package/dist/preview-engine/{chunk-FSAELHVT.mjs → chunk-RNFYEZLL.mjs} +1 -1
- package/dist/preview-engine/{chunk-3SOD7OTO.mjs → chunk-TA5OBYRR.mjs} +1 -1
- package/dist/preview-engine/{chunk-6MBYREBG.mjs → chunk-VRNN6H6Y.mjs} +1 -1
- package/dist/preview-engine/{chunk-GIH5QURF.mjs → chunk-VTE3IISK.mjs} +1 -1
- package/dist/preview-engine/{chunk-GQN35VLT.mjs → chunk-VZGDX7II.mjs} +1 -1
- package/dist/preview-engine/{chunk-54HE34HO.mjs → chunk-XJ4CQIZZ.mjs} +1 -1
- package/dist/preview-engine/{chunk-LMZHCWXP.mjs → chunk-XYRBFLFF.mjs} +1 -1
- package/dist/preview-engine/{chunk-O5LA63CK.mjs → chunk-YMQMPBTL.mjs} +1 -1
- package/dist/preview-engine/{chunk-S7NG26UG.mjs → chunk-Z4ZO4RVT.mjs} +1 -1
- package/dist/preview-engine/{chunk-W3QGP5XF.mjs → chunk-ZFURUTVW.mjs} +1 -1
- package/dist/preview-engine/effects.mjs +1 -1
- package/dist/preview-engine/framefields.mjs +33 -31
- package/dist/preview-engine/player.mjs +5 -5
- package/dist/preview-engine/renderers-2CBJYNOC.mjs +1 -0
- package/dist/preview-engine/renderers-37CN7O4S.mjs +1 -0
- package/dist/preview-engine/renderers-3AZ5PMGC.mjs +1 -0
- package/dist/preview-engine/renderers-3UGG2IMP.mjs +1 -0
- package/dist/preview-engine/{renderers-ELARGDRC.mjs → renderers-3VXNHICC.mjs} +1 -1
- package/dist/preview-engine/{renderers-WNMRLGZS.mjs → renderers-3ZYXHUSW.mjs} +1 -1
- package/dist/preview-engine/{renderers-43LBWRY2.mjs → renderers-4FONYSBA.mjs} +1 -1
- package/dist/preview-engine/renderers-54I5SFXR.mjs +1 -0
- package/dist/preview-engine/renderers-5LXALKB4.mjs +1 -0
- package/dist/preview-engine/renderers-5TICPV2K.mjs +1 -0
- package/dist/preview-engine/{renderers-X2XGDF3R.mjs → renderers-5YS5WHAV.mjs} +1 -1
- package/dist/preview-engine/renderers-6UTRYW7Z.mjs +1 -0
- package/dist/preview-engine/{renderers-XPO2WQNF.mjs → renderers-6ZCFR7BL.mjs} +1 -1
- package/dist/preview-engine/renderers-AYEWAW7F.mjs +1 -0
- package/dist/preview-engine/{renderers-QJNGN722.mjs → renderers-BOT4H6KJ.mjs} +1 -1
- package/dist/preview-engine/{renderers-FNPXT2EH.mjs → renderers-C44CEIYB.mjs} +1 -1
- package/dist/preview-engine/{renderers-KW75FYFG.mjs → renderers-C4G7X7LD.mjs} +1 -1
- package/dist/preview-engine/renderers-CLCPP3TZ.mjs +1 -0
- package/dist/preview-engine/{renderers-7M3YOI7E.mjs → renderers-DBRC3SQE.mjs} +1 -1
- package/dist/preview-engine/{renderers-PM4Q5QOW.mjs → renderers-DSICQMRF.mjs} +1 -1
- package/dist/preview-engine/renderers-DTZ2AER5.mjs +1 -0
- package/dist/preview-engine/renderers-DUF2CTX6.mjs +1 -0
- package/dist/preview-engine/{renderers-5OGAF66H.mjs → renderers-EOIMH7UE.mjs} +1 -1
- package/dist/preview-engine/renderers-EOMMSENQ.mjs +1 -0
- package/dist/preview-engine/{renderers-K23EAM2J.mjs → renderers-GSRKNT75.mjs} +1 -1
- package/dist/preview-engine/{renderers-J6DEIWTU.mjs → renderers-GUJTPO37.mjs} +1 -1
- package/dist/preview-engine/{renderers-VD5GHHK6.mjs → renderers-HE42AT5T.mjs} +1 -1
- package/dist/preview-engine/{renderers-Q6AO5M54.mjs → renderers-JM7JEVBN.mjs} +1 -1
- package/dist/preview-engine/{renderers-WOLTH5VI.mjs → renderers-JRU2GNPE.mjs} +1 -1
- package/dist/preview-engine/{renderers-TFEDHXPY.mjs → renderers-K6J77OI5.mjs} +1 -1
- package/dist/preview-engine/{renderers-U2ZWRL25.mjs → renderers-L7EITUCD.mjs} +1 -1
- package/dist/preview-engine/renderers-LGUHDWWB.mjs +1 -0
- package/dist/preview-engine/renderers-LGXD24IJ.mjs +1 -0
- package/dist/preview-engine/renderers-MCTBJEL7.mjs +1 -0
- package/dist/preview-engine/{renderers-3YHETAPE.mjs → renderers-OBXNUQMP.mjs} +1 -1
- package/dist/preview-engine/renderers-OZGEXW2X.mjs +1 -0
- package/dist/preview-engine/{renderers-ZRR7BLB7.mjs → renderers-PJGFJGJS.mjs} +1 -1
- package/dist/preview-engine/{renderers-35G4KCQ2.mjs → renderers-PPGOYOID.mjs} +1 -1
- package/dist/preview-engine/{renderers-7UKFQ75V.mjs → renderers-PUJRHBUW.mjs} +1 -1
- package/dist/preview-engine/renderers-PVUROEGR.mjs +1 -0
- package/dist/preview-engine/renderers-QBVVTQV6.mjs +1 -0
- package/dist/preview-engine/{renderers-2GE5HE56.mjs → renderers-QPHOG7QR.mjs} +1 -1
- package/dist/preview-engine/{renderers-2A7YDJMJ.mjs → renderers-RV62K5JC.mjs} +1 -1
- package/dist/preview-engine/{renderers-6GYRMHGQ.mjs → renderers-SBX64ERA.mjs} +1 -1
- package/dist/preview-engine/renderers-SCJTTOEJ.mjs +1 -0
- package/dist/preview-engine/{renderers-MHDLRY3S.mjs → renderers-SD35PBEM.mjs} +1 -1
- package/dist/preview-engine/{renderers-XTRFEQO4.mjs → renderers-SIHL5GLI.mjs} +1 -1
- package/dist/preview-engine/{renderers-UBO4ZNE6.mjs → renderers-SNUVYUDE.mjs} +1 -1
- package/dist/preview-engine/renderers-SPW4SWZ2.mjs +228 -0
- package/dist/preview-engine/renderers-SRKCF3LD.mjs +1 -0
- package/dist/preview-engine/{renderers-LF6W5P2I.mjs → renderers-T3S7QVM4.mjs} +1 -1
- package/dist/preview-engine/renderers-TBP2EKJ4.mjs +1 -0
- package/dist/preview-engine/renderers-UN6YLFHW.mjs +1 -0
- package/dist/preview-engine/renderers-UTWKTBZI.mjs +1 -0
- package/dist/preview-engine/{renderers-DKOWLKDE.mjs → renderers-V5MJJH33.mjs} +1 -1
- package/dist/preview-engine/{renderers-NJAKGI25.mjs → renderers-V67L3MCY.mjs} +1 -1
- package/dist/preview-engine/{renderers-XTCBHTHC.mjs → renderers-VYK2BJID.mjs} +1 -1
- package/dist/preview-engine/renderers-W6762MNW.mjs +1 -0
- package/dist/preview-engine/{renderers-NPKRNXAT.mjs → renderers-W6ZTVA2I.mjs} +1 -1
- package/dist/preview-engine/renderers-WDV7ENJA.mjs +1 -0
- package/dist/preview-engine/{renderers-ATL5ARUV.mjs → renderers-WPBTAU2E.mjs} +1 -1
- package/dist/preview-engine/{renderers-C4XIAG3F.mjs → renderers-XP7YFWBV.mjs} +1 -1
- package/dist/preview-engine/renderers-XVUOO7B6.mjs +1 -0
- package/dist/preview-engine/renderers-YPFM5UJO.mjs +1 -0
- package/dist/preview-engine/renderers-YW3LBALW.mjs +1 -0
- package/dist/preview-engine/{renderers-DFJDEPCU.mjs → renderers-ZAPIBQZC.mjs} +1 -1
- package/dist/preview-engine/renderers-ZRR4TUVQ.mjs +1 -0
- package/dist/preview-engine/{renderers-4H34AFW2.mjs → renderers-ZVKXIQ3E.mjs} +1 -1
- package/dist/preview-engine/signals.mjs +1 -1
- package/dist/{program-KwDdbC0-.mjs → program-CEHCeDpG.mjs} +133 -30
- package/dist/program-CEHCeDpG.mjs.map +1 -0
- package/dist/registry/annotate.json +30 -0
- package/dist/registry/app-frame.json +38 -0
- package/dist/registry/backdrop.json +37 -0
- package/dist/registry/before-after.json +33 -0
- package/dist/registry/callout.json +30 -0
- package/dist/registry/captions.json +37 -0
- package/dist/registry/card-stack.json +30 -0
- package/dist/registry/chat-thread.json +32 -0
- package/dist/registry/code-block.json +45 -0
- package/dist/registry/confetti.json +29 -0
- package/dist/registry/counter.json +36 -0
- package/dist/registry/device-frame.json +36 -0
- package/dist/registry/focus-zoom.json +32 -0
- package/dist/registry/index.json +408 -0
- package/dist/registry/logo-reveal.json +37 -0
- package/dist/registry/lower-third.json +34 -0
- package/dist/registry/meter.json +35 -0
- package/dist/registry/mouse-pointer.json +44 -0
- package/dist/registry/selection.json +31 -0
- package/dist/registry/spotlight.json +28 -0
- package/dist/registry/terminal.json +40 -0
- package/dist/registry/text-reveal.json +39 -0
- package/dist/registry/title-card.json +34 -0
- package/dist/registry/toasts.json +28 -0
- package/dist/registry/touch-point.json +33 -0
- package/dist/registry/waveform.json +29 -0
- package/dist/registry/word-cycle.json +32 -0
- package/dist/renderer/index.d.mts +2 -2
- package/dist/renderer/index.mjs +3 -3
- package/dist/{renderer-DcOT5c0t.mjs → renderer--wMbTRFg.mjs} +4 -4
- package/dist/{renderer-DcOT5c0t.mjs.map → renderer--wMbTRFg.mjs.map} +1 -1
- package/dist/{renderer-Ci6YMa4u.mjs → renderer-3aLw-la1.mjs} +5 -5
- package/dist/{renderer-Ci6YMa4u.mjs.map → renderer-3aLw-la1.mjs.map} +1 -1
- package/dist/renderer-7vCBWQVP.mjs +5 -0
- package/dist/{renderer-CUPWHfEY.mjs → renderer-AkRxGnFU.mjs} +5 -5
- package/dist/{renderer-CUPWHfEY.mjs.map → renderer-AkRxGnFU.mjs.map} +1 -1
- package/dist/renderer-B-XgGMCq.mjs +5 -0
- package/dist/renderer-B0yabPlf.mjs +5 -0
- package/dist/{renderer-CLxQ4rU6.mjs → renderer-B1yPBJQc.mjs} +74 -74
- package/dist/{renderer-CLxQ4rU6.mjs.map → renderer-B1yPBJQc.mjs.map} +1 -1
- package/dist/{renderer-DWG4Podv.mjs → renderer-B41jTHFs.mjs} +6 -6
- package/dist/{renderer-DWG4Podv.mjs.map → renderer-B41jTHFs.mjs.map} +1 -1
- package/dist/{renderer-BtWWpFvl.mjs → renderer-B5HG6Czb.mjs} +4 -4
- package/dist/{renderer-BtWWpFvl.mjs.map → renderer-B5HG6Czb.mjs.map} +1 -1
- package/dist/{renderer-OEpwc9Zk.mjs → renderer-B5oJN3A5.mjs} +5 -5
- package/dist/{renderer-OEpwc9Zk.mjs.map → renderer-B5oJN3A5.mjs.map} +1 -1
- package/dist/renderer-B9MYevrF.mjs +5 -0
- package/dist/renderer-BA2Ko4H1.mjs +3 -0
- package/dist/renderer-BCGosndi.mjs +5 -0
- package/dist/{renderer-CwO8T8l8.mjs → renderer-BEmDSqXg.mjs} +4 -4
- package/dist/{renderer-CwO8T8l8.mjs.map → renderer-BEmDSqXg.mjs.map} +1 -1
- package/dist/{renderer-B4ydDdo6.mjs → renderer-BG8jNTHr.mjs} +3 -3
- package/dist/{renderer-B4ydDdo6.mjs.map → renderer-BG8jNTHr.mjs.map} +1 -1
- package/dist/{renderer-Du8eOWWU.mjs → renderer-BMnrBPh1.mjs} +4 -4
- package/dist/{renderer-Du8eOWWU.mjs.map → renderer-BMnrBPh1.mjs.map} +1 -1
- package/dist/{renderer-CE83KHgr.mjs → renderer-BORzpTQP.mjs} +3 -3
- package/dist/{renderer-CE83KHgr.mjs.map → renderer-BORzpTQP.mjs.map} +1 -1
- package/dist/{renderer-BUwHWIf7.mjs → renderer-BWtI3wKu.mjs} +4 -4
- package/dist/{renderer-BUwHWIf7.mjs.map → renderer-BWtI3wKu.mjs.map} +1 -1
- package/dist/renderer-BXTHDEnd.mjs +5 -0
- package/dist/{renderer-gm0zoV4t.mjs → renderer-Baw30QRI.mjs} +3 -3
- package/dist/{renderer-gm0zoV4t.mjs.map → renderer-Baw30QRI.mjs.map} +1 -1
- package/dist/renderer-BbJoZ-zL.mjs +5 -0
- package/dist/{renderer-Bhfl-WFX.mjs → renderer-BbdgwkDB.mjs} +5 -5
- package/dist/{renderer-Bhfl-WFX.mjs.map → renderer-BbdgwkDB.mjs.map} +1 -1
- package/dist/{renderer-qYhNf6iB.mjs → renderer-BgOEqtZu.mjs} +3 -3
- package/dist/{renderer-qYhNf6iB.mjs.map → renderer-BgOEqtZu.mjs.map} +1 -1
- package/dist/{renderer-I3Wxk1tL.mjs → renderer-Bv0-WmP4.mjs} +4 -4
- package/dist/{renderer-I3Wxk1tL.mjs.map → renderer-Bv0-WmP4.mjs.map} +1 -1
- package/dist/renderer-BvcqncI2.mjs +3 -0
- package/dist/{renderer-DXSIstnn.mjs → renderer-Bvhj-05p.mjs} +4 -4
- package/dist/{renderer-DXSIstnn.mjs.map → renderer-Bvhj-05p.mjs.map} +1 -1
- package/dist/renderer-BxAZKOQy.mjs +5 -0
- package/dist/{renderer-C-z6bxj9.mjs → renderer-BxDhx8KM.mjs} +5 -5
- package/dist/{renderer-C-z6bxj9.mjs.map → renderer-BxDhx8KM.mjs.map} +1 -1
- package/dist/renderer-BxgkH__7.mjs +5 -0
- package/dist/{renderer-GapR_An3.mjs → renderer-C1XZ0fQ-.mjs} +4 -4
- package/dist/{renderer-GapR_An3.mjs.map → renderer-C1XZ0fQ-.mjs.map} +1 -1
- package/dist/{renderer-BAoKytKL.mjs → renderer-C8KEfda3.mjs} +4 -4
- package/dist/{renderer-BAoKytKL.mjs.map → renderer-C8KEfda3.mjs.map} +1 -1
- package/dist/{renderer-BSitV56h.mjs → renderer-C9r0-KY4.mjs} +10 -1
- package/dist/{renderer-BSitV56h.mjs.map → renderer-C9r0-KY4.mjs.map} +1 -1
- package/dist/{renderer-B9ssmkbx.mjs → renderer-CF25oNd3.mjs} +5 -5
- package/dist/{renderer-B9ssmkbx.mjs.map → renderer-CF25oNd3.mjs.map} +1 -1
- package/dist/renderer-CFEvikBH.mjs +5 -0
- package/dist/{renderer-DGT141pN.mjs → renderer-CHFUJyul.mjs} +5 -5
- package/dist/{renderer-DGT141pN.mjs.map → renderer-CHFUJyul.mjs.map} +1 -1
- package/dist/{renderer-C5WkQZGR.mjs → renderer-CKGOKBZi.mjs} +5 -5
- package/dist/{renderer-C5WkQZGR.mjs.map → renderer-CKGOKBZi.mjs.map} +1 -1
- package/dist/{renderer-CzgDJcot.mjs → renderer-CNs1vBUy.mjs} +4 -4
- package/dist/{renderer-CzgDJcot.mjs.map → renderer-CNs1vBUy.mjs.map} +1 -1
- package/dist/{index-B0BZMhtw.d.mts → renderer-COXKPofU.d.mts} +13 -13
- package/dist/renderer-COXKPofU.d.mts.map +1 -0
- package/dist/{renderer-QaN-aejD.mjs → renderer-COZCwiIr.mjs} +3 -3
- package/dist/{renderer-QaN-aejD.mjs.map → renderer-COZCwiIr.mjs.map} +1 -1
- package/dist/{renderer-DP_In2uT.mjs → renderer-CPmoA87K.mjs} +4 -4
- package/dist/{renderer-DP_In2uT.mjs.map → renderer-CPmoA87K.mjs.map} +1 -1
- package/dist/{renderer-BCLmYH4S.mjs → renderer-CYZb9uoO.mjs} +4 -4
- package/dist/{renderer-BCLmYH4S.mjs.map → renderer-CYZb9uoO.mjs.map} +1 -1
- package/dist/renderer-C_u9B-_7.mjs +5 -0
- package/dist/{renderer-PuN2_AL_.mjs → renderer-CaUJlGoB.mjs} +5 -5
- package/dist/{renderer-PuN2_AL_.mjs.map → renderer-CaUJlGoB.mjs.map} +1 -1
- package/dist/{renderer-Blm4Dv_h.mjs → renderer-CcS3Zntx.mjs} +3 -3
- package/dist/{renderer-DZhIe8Gj.mjs → renderer-CddpdCL3.mjs} +4 -4
- package/dist/{renderer-DZhIe8Gj.mjs.map → renderer-CddpdCL3.mjs.map} +1 -1
- package/dist/{renderer-GbVNyv-E.mjs → renderer-Cg-d78nf.mjs} +192 -27
- package/dist/renderer-Cg-d78nf.mjs.map +1 -0
- package/dist/renderer-Cgx_qzGT.mjs +5 -0
- package/dist/{renderer-kNjMhwiZ.mjs → renderer-ChNCtBMR.mjs} +3 -3
- package/dist/{renderer-kNjMhwiZ.mjs.map → renderer-ChNCtBMR.mjs.map} +1 -1
- package/dist/renderer-ClOkY1Ny.mjs +5 -0
- package/dist/{renderer-plx7_lUQ.mjs → renderer-CrU0kbiB.mjs} +5 -5
- package/dist/{renderer-plx7_lUQ.mjs.map → renderer-CrU0kbiB.mjs.map} +1 -1
- package/dist/renderer-CtDub_ig.mjs +5 -0
- package/dist/{renderer-DQeUc1yY.mjs → renderer-CyhSWLKq.mjs} +4 -4
- package/dist/{renderer-DQeUc1yY.mjs.map → renderer-CyhSWLKq.mjs.map} +1 -1
- package/dist/{renderer-D96Pu8yX.mjs → renderer-D-bmSKv4.mjs} +5 -5
- package/dist/{renderer-D96Pu8yX.mjs.map → renderer-D-bmSKv4.mjs.map} +1 -1
- package/dist/renderer-D0duAhCo.mjs +5 -0
- package/dist/{renderer-CPLfsRe1.mjs → renderer-D2tdNoM6.mjs} +6 -6
- package/dist/{renderer-CPLfsRe1.mjs.map → renderer-D2tdNoM6.mjs.map} +1 -1
- package/dist/renderer-D4wM1dqg.mjs +6 -0
- package/dist/renderer-D5U3d09T.mjs +5 -0
- package/dist/{renderer-DOxmmN6Q.mjs → renderer-D86Y5YYi.mjs} +5 -5
- package/dist/{renderer-DOxmmN6Q.mjs.map → renderer-D86Y5YYi.mjs.map} +1 -1
- package/dist/{renderer-mqUBkx-a.mjs → renderer-D8D7dKxq.mjs} +4 -4
- package/dist/{renderer-mqUBkx-a.mjs.map → renderer-D8D7dKxq.mjs.map} +1 -1
- package/dist/{renderer-CTYKUnDq.mjs → renderer-DATAjI6x.mjs} +3 -3
- package/dist/{renderer-CTYKUnDq.mjs.map → renderer-DATAjI6x.mjs.map} +1 -1
- package/dist/{renderer-C4vHq0X8.mjs → renderer-DGhCIVI4.mjs} +5 -5
- package/dist/{renderer-C4vHq0X8.mjs.map → renderer-DGhCIVI4.mjs.map} +1 -1
- package/dist/{renderer-CrwYWVsV.mjs → renderer-DILjs1tz.mjs} +3 -3
- package/dist/{renderer-DYbgd6Ye.mjs → renderer-DIyzKouj.mjs} +4 -4
- package/dist/{renderer-DYbgd6Ye.mjs.map → renderer-DIyzKouj.mjs.map} +1 -1
- package/dist/{renderer-f7A01ArI.mjs → renderer-DJ78Bgv7.mjs} +5 -5
- package/dist/{renderer-f7A01ArI.mjs.map → renderer-DJ78Bgv7.mjs.map} +1 -1
- package/dist/renderer-DKqFxYfP.mjs +5 -0
- package/dist/renderer-DQZNI1zf.mjs +5 -0
- package/dist/{renderer-C1U85w9f.mjs → renderer-DVnrUnkh.mjs} +3 -3
- package/dist/{renderer-C1U85w9f.mjs.map → renderer-DVnrUnkh.mjs.map} +1 -1
- package/dist/{renderer-1P3yS8YM.mjs → renderer-DWtquP0s.mjs} +4 -4
- package/dist/{renderer-1P3yS8YM.mjs.map → renderer-DWtquP0s.mjs.map} +1 -1
- package/dist/renderer-DXITcVbS.mjs +5 -0
- package/dist/renderer-DY1QgdDC.mjs +5 -0
- package/dist/renderer-DYEz06xn.mjs +5 -0
- package/dist/renderer-D_2OrSMc.mjs +5 -0
- package/dist/renderer-DcCl9CO6.mjs +5 -0
- package/dist/{renderer-OsA-Lg4d.mjs → renderer-DetTl6bQ.mjs} +3 -3
- package/dist/{renderer-OsA-Lg4d.mjs.map → renderer-DetTl6bQ.mjs.map} +1 -1
- package/dist/{renderer-Bkq1PT0g.mjs → renderer-DfxwJVjW.mjs} +3 -3
- package/dist/{renderer-DK9etIAz.mjs → renderer-DhQZiRL3.mjs} +5 -5
- package/dist/{renderer-DK9etIAz.mjs.map → renderer-DhQZiRL3.mjs.map} +1 -1
- package/dist/{renderer-C0ds-UfM.mjs → renderer-Djn4BYtz.mjs} +5 -5
- package/dist/{renderer-C0ds-UfM.mjs.map → renderer-Djn4BYtz.mjs.map} +1 -1
- package/dist/{renderer-B4jxP8vF.mjs → renderer-DkS6cblv.mjs} +5 -5
- package/dist/{renderer-B4jxP8vF.mjs.map → renderer-DkS6cblv.mjs.map} +1 -1
- package/dist/{renderer-CjQAYeYz.mjs → renderer-DkeJefRk.mjs} +5 -5
- package/dist/{renderer-CjQAYeYz.mjs.map → renderer-DkeJefRk.mjs.map} +1 -1
- package/dist/renderer-DotZXhrh.mjs +5 -0
- package/dist/renderer-DpYDVTzs.mjs +5 -0
- package/dist/renderer-DpZxLVQF.mjs +5 -0
- package/dist/{renderer-BHLYKy8b.mjs → renderer-DqabtpGN.mjs} +5 -5
- package/dist/{renderer-BHLYKy8b.mjs.map → renderer-DqabtpGN.mjs.map} +1 -1
- package/dist/{renderer-DVFFVy9v.mjs → renderer-DqdD8gzX.mjs} +5 -5
- package/dist/{renderer-DVFFVy9v.mjs.map → renderer-DqdD8gzX.mjs.map} +1 -1
- package/dist/{renderer-CDky5Gva.mjs → renderer-DstROEvX.mjs} +4 -4
- package/dist/{renderer-CDky5Gva.mjs.map → renderer-DstROEvX.mjs.map} +1 -1
- package/dist/{renderer-Cy4a31rZ.mjs → renderer-DuawUm8D.mjs} +3 -3
- package/dist/{renderer-Cy4a31rZ.mjs.map → renderer-DuawUm8D.mjs.map} +1 -1
- package/dist/{renderer-CS8VMTp1.mjs → renderer-DvIWhLnY.mjs} +5 -5
- package/dist/{renderer-CS8VMTp1.mjs.map → renderer-DvIWhLnY.mjs.map} +1 -1
- package/dist/renderer-DvJbouz0.mjs +5 -0
- package/dist/{renderer-BI8QhEj9.mjs → renderer-Dw2ZFwDT.mjs} +5 -5
- package/dist/{renderer-BI8QhEj9.mjs.map → renderer-Dw2ZFwDT.mjs.map} +1 -1
- package/dist/{renderer-DBtt-7wt.d.mts → renderer-Dx28wTi1.d.mts} +2 -2
- package/dist/{renderer-DBtt-7wt.d.mts.map → renderer-Dx28wTi1.d.mts.map} +1 -1
- package/dist/{renderer-BT0x6KPK.mjs → renderer-DxLkZGUK.mjs} +4 -4
- package/dist/{renderer-BT0x6KPK.mjs.map → renderer-DxLkZGUK.mjs.map} +1 -1
- package/dist/{renderer-y6k54AM6.mjs → renderer-GY7D1oAn.mjs} +4 -4
- package/dist/{renderer-y6k54AM6.mjs.map → renderer-GY7D1oAn.mjs.map} +1 -1
- package/dist/{renderer-D4No_jA4.mjs → renderer-JaSEubRQ.mjs} +4 -4
- package/dist/{renderer-D4No_jA4.mjs.map → renderer-JaSEubRQ.mjs.map} +1 -1
- package/dist/{renderer-CAi-lhR2.mjs → renderer-MrvH4L7b.mjs} +4 -4
- package/dist/{renderer-CAi-lhR2.mjs.map → renderer-MrvH4L7b.mjs.map} +1 -1
- package/dist/{renderer-DO5r7ZV-.mjs → renderer-PNIgmWft.mjs} +2 -2
- package/dist/{renderer-DO5r7ZV-.mjs.map → renderer-PNIgmWft.mjs.map} +1 -1
- package/dist/renderer-S305xm67.mjs +5 -0
- package/dist/renderer-TgUloP-y.mjs +5 -0
- package/dist/{renderer-DSbRWfgl.mjs → renderer-VcPoZAM2.mjs} +3 -3
- package/dist/{renderer-DSbRWfgl.mjs.map → renderer-VcPoZAM2.mjs.map} +1 -1
- package/dist/{renderer-DCsTCvdo.mjs → renderer-ZGJWn-_L.mjs} +4 -4
- package/dist/{renderer-DCsTCvdo.mjs.map → renderer-ZGJWn-_L.mjs.map} +1 -1
- package/dist/{renderer-B_b8-ztW.mjs → renderer-aXwxbXcE.mjs} +5 -5
- package/dist/{renderer-B_b8-ztW.mjs.map → renderer-aXwxbXcE.mjs.map} +1 -1
- package/dist/renderer-gZ5SMvbU.mjs +5 -0
- package/dist/{renderer-BMLJgnbU.mjs → renderer-gniIzAsk.mjs} +3 -3
- package/dist/renderer-kEpx7pUy.mjs +5 -0
- package/dist/{renderer-DOvzHN60.mjs → renderer-mSlww_MA.mjs} +4 -4
- package/dist/{renderer-DOvzHN60.mjs.map → renderer-mSlww_MA.mjs.map} +1 -1
- package/dist/{renderer-DBKyuPl1.mjs → renderer-mWfgWQy_.mjs} +5 -5
- package/dist/{renderer-DBKyuPl1.mjs.map → renderer-mWfgWQy_.mjs.map} +1 -1
- package/dist/{renderer-BajIOuZH.mjs → renderer-nLPfvY3-.mjs} +2 -2
- package/dist/{renderer-BajIOuZH.mjs.map → renderer-nLPfvY3-.mjs.map} +1 -1
- package/dist/renderer-oPWZmzua.mjs +5 -0
- package/dist/{renderer-C4xvz_Ft.mjs → renderer-pcpDwv3K.mjs} +4 -4
- package/dist/{renderer-C4xvz_Ft.mjs.map → renderer-pcpDwv3K.mjs.map} +1 -1
- package/dist/renderer-qCNOffLy.mjs +5 -0
- package/dist/{renderer-BaJQx0Bp.mjs → renderer-vPJRRVNN.mjs} +5 -5
- package/dist/{renderer-BaJQx0Bp.mjs.map → renderer-vPJRRVNN.mjs.map} +1 -1
- package/dist/{renderer-DHUlVqST.mjs → renderer-vQrX7Qsw.mjs} +3 -3
- package/dist/{renderer-DHUlVqST.mjs.map → renderer-vQrX7Qsw.mjs.map} +1 -1
- package/dist/{renderer-P4OPsD82.mjs → renderer-wld_ZR0-.mjs} +3 -3
- package/dist/{renderer-P4OPsD82.mjs.map → renderer-wld_ZR0-.mjs.map} +1 -1
- package/dist/renderer-xEVoeq12.mjs +5 -0
- package/dist/renderer-ypw8fzVD.mjs +5 -0
- package/dist/{renderers-CP8CFWDs-D1FHpA7I.mjs → renderers-CP8CFWDs-DgKdGMvS.mjs} +4 -4
- package/dist/{renderers-CP8CFWDs-D1FHpA7I.mjs.map → renderers-CP8CFWDs-DgKdGMvS.mjs.map} +1 -1
- package/dist/signals/index.d.mts +6 -6
- package/dist/signals/index.mjs +8 -8
- package/dist/{signals-BwdVfK3p.mjs → signals-Cf9mfNGE.mjs} +4 -4
- package/dist/{signals-BwdVfK3p.mjs.map → signals-Cf9mfNGE.mjs.map} +1 -1
- package/dist/src-CU_7ui4I.mjs +8373 -0
- package/dist/src-CU_7ui4I.mjs.map +1 -0
- package/package.json +68 -58
- package/dist/dist-DMa2BbYs.mjs.map +0 -1
- package/dist/index-B0BZMhtw.d.mts.map +0 -1
- package/dist/index-CJkihekp.d.mts.map +0 -1
- package/dist/index-DGe83M-p.d.mts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/preview/index.d.mts.map +0 -1
- package/dist/preview-engine/chunk-PCWWKYFO.mjs +0 -1
- package/dist/preview-engine/renderers-2AD6AHAO.mjs +0 -1
- package/dist/preview-engine/renderers-37UYW266.mjs +0 -1
- package/dist/preview-engine/renderers-4I4UDLDR.mjs +0 -1
- package/dist/preview-engine/renderers-5EITT2FW.mjs +0 -1
- package/dist/preview-engine/renderers-AIRDDXRB.mjs +0 -1
- package/dist/preview-engine/renderers-BUOGMWAA.mjs +0 -1
- package/dist/preview-engine/renderers-EU5VM2S2.mjs +0 -1
- package/dist/preview-engine/renderers-GEPP3YKK.mjs +0 -1
- package/dist/preview-engine/renderers-IQNZQWYU.mjs +0 -1
- package/dist/preview-engine/renderers-JQ7AI473.mjs +0 -228
- package/dist/preview-engine/renderers-JTVCE5PV.mjs +0 -1
- package/dist/preview-engine/renderers-KCNUETAD.mjs +0 -1
- package/dist/preview-engine/renderers-KKBHXAWS.mjs +0 -1
- package/dist/preview-engine/renderers-LER7SUT2.mjs +0 -1
- package/dist/preview-engine/renderers-MOERLDWF.mjs +0 -1
- package/dist/preview-engine/renderers-O57YIIAO.mjs +0 -1
- package/dist/preview-engine/renderers-OPUIAD7I.mjs +0 -1
- package/dist/preview-engine/renderers-PENUAXDD.mjs +0 -1
- package/dist/preview-engine/renderers-PFCI7ZFW.mjs +0 -1
- package/dist/preview-engine/renderers-Q4HDP2IE.mjs +0 -1
- package/dist/preview-engine/renderers-QMHUOKMM.mjs +0 -1
- package/dist/preview-engine/renderers-R26YPECG.mjs +0 -1
- package/dist/preview-engine/renderers-TAFDMFEA.mjs +0 -1
- package/dist/preview-engine/renderers-TMZLWQP2.mjs +0 -1
- package/dist/preview-engine/renderers-TP6ZMGU4.mjs +0 -1
- package/dist/preview-engine/renderers-TY63VTZB.mjs +0 -1
- package/dist/preview-engine/renderers-UCNQ536S.mjs +0 -1
- package/dist/preview-engine/renderers-WOZQDE4A.mjs +0 -1
- package/dist/preview-engine/renderers-XG3BDROH.mjs +0 -1
- package/dist/preview-engine/renderers-XS4CFZWR.mjs +0 -1
- package/dist/preview-engine/renderers-ZQDMRWN7.mjs +0 -1
- package/dist/program-KwDdbC0-.mjs.map +0 -1
- package/dist/renderer-5C41E6gT.mjs +0 -5
- package/dist/renderer-6SXF9Ykm.mjs +0 -5
- package/dist/renderer-B2C2w3Wr.mjs +0 -5
- package/dist/renderer-B2QSfPYZ.mjs +0 -5
- package/dist/renderer-B5cQcMl1.mjs +0 -5
- package/dist/renderer-BDhD8Yab.mjs +0 -3
- package/dist/renderer-BSDdTHDh.mjs +0 -5
- package/dist/renderer-BTUjk8uY.mjs +0 -5
- package/dist/renderer-Bcey5Gvk.mjs +0 -5
- package/dist/renderer-Bd2MuOeJ.mjs +0 -5
- package/dist/renderer-Bd5A0zer.mjs +0 -5
- package/dist/renderer-CC-WlYa2.mjs +0 -5
- package/dist/renderer-Cb0qf1UG.mjs +0 -5
- package/dist/renderer-CfX13dgQ.mjs +0 -5
- package/dist/renderer-ChFkRLrv.mjs +0 -5
- package/dist/renderer-CjkfJj5R.mjs +0 -5
- package/dist/renderer-Ck7Lu6c9.mjs +0 -5
- package/dist/renderer-CuquqG_c.mjs +0 -5
- package/dist/renderer-Cwz2E4QD.mjs +0 -5
- package/dist/renderer-Czkt9YYp.mjs +0 -5
- package/dist/renderer-DFTIhSdJ.mjs +0 -5
- package/dist/renderer-DFaa-Ats.mjs +0 -5
- package/dist/renderer-DIHXKvPl.mjs +0 -5
- package/dist/renderer-DMzOqVM3.mjs +0 -5
- package/dist/renderer-DOId5U8x.mjs +0 -5
- package/dist/renderer-DQXFOup8.mjs +0 -5
- package/dist/renderer-DRt3BSTj.mjs +0 -5
- package/dist/renderer-Di_5vQ81.mjs +0 -6
- package/dist/renderer-DkmpsPIa.mjs +0 -5
- package/dist/renderer-Ds6wd9Gk.mjs +0 -5
- package/dist/renderer-DuuOlYIG.mjs +0 -3
- package/dist/renderer-Dv4p0lp9.mjs +0 -5
- package/dist/renderer-DzWoOlVc.mjs +0 -5
- package/dist/renderer-GbVNyv-E.mjs.map +0 -1
- package/dist/renderer-IOz63OWg.mjs +0 -5
- package/dist/renderer-JkSrsUa5.mjs +0 -5
- package/dist/renderer-Ocs1Djwu.mjs +0 -5
- package/dist/renderer-Wdn7m_uN.mjs +0 -5
- package/dist/renderer-mKpjaoE3.mjs +0 -5
- /package/dist/{chunk-GBe2k3y8.mjs → chunk-D7gtBK74.mjs} +0 -0
- /package/dist/{renderer-B-BcgA6d.mjs → renderer-B7fX0C62.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{o as st,r as sr}from"./chunk-RQLMW6MA.mjs";import{c as ot}from"./chunk-OLLY3Q7M.mjs";import{b as jt}from"./chunk-2SJ4BBMT.mjs";import{h as $n,l as Ar}from"./chunk-24P6DAB3.mjs";import{d as nr}from"./chunk-6YJP57MZ.mjs";import{e as te,q as rr,r as ir,s as NA,t as or,u as ar}from"./chunk-LQENNFBA.mjs";import{r as cA}from"./chunk-MTJHQATU.mjs";import{a as at}from"./chunk-IQC2I5A5.mjs";import{c as er,e as tr}from"./chunk-IQKIHFNZ.mjs";import{o as MA}from"./chunk-YAQFFQPG.mjs";import{a as _n,c as jn,e as k}from"./chunk-BVF64D6H.mjs";var Er=_n((xs,fr)=>{k();var It=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":It(),apply:()=>It(),construct:()=>It()});fr.exports=It()});var qr=_n((nu,Zr)=>{k();var Ut=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":Ut(),apply:()=>Ut(),construct:()=>Ut()});Zr.exports=Ut()});k();var lr=new Float32Array(2048);for(let A=0;A<2048;A++)lr[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var ur=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;ur[A]=e}var cr=new Float32Array(2048/2),Ir=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;cr[A]=Math.cos(e),Ir[A]=Math.sin(e)}function Yi(A,e){for(let t=0;t<2048;t++){let n=ur[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=cr[a]??1,g=Ir[a]??0,l=A[i+o]??0,u=e[i+o]??0,c=A[i+o+n]??0,B=e[i+o+n]??0,E=c*s-B*g,d=c*g+B*s;A[i+o]=l+E,e[i+o]=u+d,A[i+o+n]=l-E,e[i+o+n]=u-d}}}var gt=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let N=a+G,w=0;N>=0&&N<i&&(r===1?w=e[0]?.[N]??0:r>=2&&(w=((e[0]?.[N]??0)+(e[1]?.[N]??0))*.5)),this.tempReal[G]=w*(lr[G]??1),this.tempImag[G]=0}Yi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let N=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(N*N+w*w)*g*2}let l=t/2048,u=Math.max(1,Math.round(20/l)),c=Math.max(u+1,Math.round(150/l)),B=0;for(let G=u;G<=c&&G<1024;G++)B+=(s[G]??0)*(s[G]??0);let E=Math.min(1,Math.sqrt(B/(c-u+1))*4),d=0;for(let G=0;G<1024;G++){let N=(s[G]??0)-(this.previousBins[G]??0);N>0&&(d+=N),this.previousBins[G]=s[G]??0}let h=Math.min(1,d*.15),Q=Math.round(300/l),m=Math.min(1023,Math.round(3400/l)),D=0;for(let G=Q;G<=m;G++)D+=(s[G]??0)*(s[G]??0);let p=Math.min(1,Math.sqrt(D/(m-Q+1))*3.5);return{fftBins:s,bassEnergy:E,drumTransient:h,vocalEnergy:p,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},gr=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new gt,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let u=0;u<l;u++){let c=u/a;this.frames[u]=i.extractAtTime(e,o,c)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=gt.createGpuBuffer(e,o),n.set(r,i)}return i}};k();var H={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};k();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=H.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=H.subtract(e,A);H.lengthSq(n)===0?n=[0,0,1]:n=H.normalize(n);let r=H.cross(n,t);H.lengthSq(r)===0?r=[1,0,0]:r=H.normalize(r);let i=H.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-H.dot(r,A),-H.dot(i,A),-H.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};k();function Se(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var fe={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=fe.computeViewMatrix(A),t=fe.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=H.normalize(H.subtract(e,A)),r=H.multiplyScalar(n,t);return{eye:H.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=H.normalize(H.subtract(e,A)),o=H.normalize(H.cross(i,t)),a=H.cross(o,i),s=H.multiplyScalar(o,n),g=H.multiplyScalar(a,r),l=H.add(s,g);return{eye:H.add(A,l),target:H.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,u=A[1]-e*a,c=A[2]-e*o*s;return[l,u,c]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=H.normalize(H.subtract(A.target,A.eye)),i=H.normalize(H.cross(r,A.up)),o=H.cross(i,r),a=H.distance(A.eye,A.target),s=r,g=o;if(t!==0){let c=t*Math.PI/180,B=Math.cos(c),E=Math.sin(c);s=H.normalize(H.subtract(H.multiplyScalar(s,B),H.multiplyScalar(i,E)))}let l=H.normalize(H.cross(s,g));if(e!==0){let c=e*Math.PI/180,B=Math.cos(c),E=Math.sin(c);s=H.normalize(H.add(H.multiplyScalar(s,B),H.multiplyScalar(g,E))),g=H.normalize(H.cross(l,s))}if(n!==0){let c=n*Math.PI/180,B=Math.cos(c),E=Math.sin(c);g=H.normalize(H.add(H.multiplyScalar(g,B),H.multiplyScalar(l,E)))}let u=H.add(A.eye,H.multiplyScalar(s,a));return{...A,target:u,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Se(s,a,o)*n,l=Se(s,a+101.5,o)*n,u=Se(s,a+203.7,o)*(n*.5),c=Se(s,a+307.1,o)*r,B=Se(s,a+409.3,o)*r,E=H.normalize(H.subtract(A.target,A.eye)),d=H.normalize(H.cross(E,A.up)),h=H.cross(d,E),Q=H.add(H.multiplyScalar(d,g),H.add(H.multiplyScalar(h,l),H.multiplyScalar(E,u))),m=H.add(A.eye,Q),D=H.add(A.target,H.add(H.multiplyScalar(d,B*10),H.multiplyScalar(h,c*10)));return{...A,eye:m,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};k();var Wi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},zi={none:0,aces:1,agx:2,neutral:3};function lt(A){let e=er(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function Br(A){let e=Wi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(lt(A.top??e.top)),horizon:n(lt(A.horizon??e.horizon)),bottom:n(lt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:zi[A.toneMapping??"neutral"],fog:A.fog?{color:lt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}k();var ut=8,An=736;function $t(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Xi(r,i,o)}return[1,1,1]}function Xi(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=$t(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=H.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let Q=A.target?A.target[0]:A.targetX??n,m=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,p=[Q,m,D],G=H.subtract(p,[n,r,i]);H.length(G)>1e-4&&(s=H.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,u=Math.max(.1,Math.min(180,A.angle??45)),c=Math.max(0,Math.min(1,A.penumbra??.2)),B=u*Math.PI/180,E=B*(1-c),d=Math.cos(B),h=Math.cos(E);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[d,h,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array(An/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let u=$t(g.color),c=g.intensity??1;r+=u[0]*c,i+=u[1]*c,o+=u[2]*c}else a.length<ut&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<ut;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=ut)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+ut*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,u]=$t(s.color),c=s.intensity??1,B=E=>E<=.04045?E/12.92:((E+.055)/1.055)**2.4;i+=B(g)*c,o+=B(l)*c,a+=B(u)*c}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=Br(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};k();k();var en={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Ue(A){return en[MA.extname(A).toLowerCase()]??"image/png"}function ct(A){let e=MA.extname(A.replace(/\\/g,"/")).toLowerCase();return!e||e in en}function ve(A,e){if(!A||typeof cA>"u"||!cA.existsSync||!ct(A))return;let t=A.trim().replace(/^file:\/\//,"");try{t=decodeURIComponent(t)}catch{}let n=t.replace(/\\/g,"/"),r=n.split("/").pop()??n,i=[];if(MA.isAbsolute(n)&&i.push(n),e){i.push(MA.resolve(e,n)),i.push(MA.join(e,r)),i.push(MA.join(e,"textures",r));try{for(let o of cA.readdirSync(e))o.toLowerCase().endsWith(".fbm")&&i.push(MA.join(e,o,r))}catch{}}for(let o of i)try{if(cA.existsSync(o)&&cA.statSync(o).isFile())return{bytes:new Uint8Array(cA.readFileSync(o)),mime:Ue(o)}}catch{}}function Ee(A,e,t){let n=ct(t)?"was not found":`is in an unsupported format (use ${Object.keys(en).join(", ")})`;console.warn(`[${A}] Texture "${t}" for material "${e}" ${n}; the material renders without it.`)}var Re=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let u={};i&&Object.assign(u,A.loadTextures(A.parseMtl(i),r.basePath));let c=e.split(/\r?\n/);for(let P=0;P<c.length;P++){let nA=c[P]?.trim();if(!nA||nA.startsWith("#"))continue;let tA=nA.split(/\s+/),rA=tA[0]?.toLowerCase();if(rA==="mtllib"){let AA=tA.slice(1).join(" ").trim();if(r.basePath&&typeof cA<"u"&&cA.existsSync)try{let eA=MA.resolve(r.basePath,AA);if(cA.existsSync(eA)){let gA=cA.readFileSync(eA,"utf-8");Object.assign(u,A.loadTextures(A.parseMtl(gA),MA.dirname(eA)))}}catch{}}else if(rA==="v"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");o.push([AA,eA,gA])}else if(rA==="vn"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");a.push([AA,eA,gA])}else if(rA==="vt"){let AA=Number.parseFloat(tA[1]??"0"),eA=tA[2]!==void 0?Number.parseFloat(tA[2]):0;s.push([AA,eA])}else if(rA==="usemtl"){let AA=tA[1]??"default";l.faces.length>0?(l={materialName:AA,faces:[]},g.push(l)):l.materialName=AA}else if(rA==="f"){let AA=[];for(let eA=1;eA<tA.length;eA++){let gA=tA[eA];if(!gA)continue;let lA=gA.split("/"),BA=Number.parseInt(lA[0]??"0",10),EA=lA[1]&&lA[1].length>0?Number.parseInt(lA[1],10):0,QA=lA[2]&&lA[2].length>0?Number.parseInt(lA[2],10):0;BA<0&&(BA=o.length+BA+1),EA<0&&(EA=s.length+EA+1),QA<0&&(QA=a.length+QA+1),AA.push({v:BA-1,vt:EA-1,vn:QA-1})}if(AA.length>=3)for(let eA=1;eA<AA.length-1;eA++){let gA=AA[0],lA=AA[eA],BA=AA[eA+1];gA&&lA&&BA&&l.faces.push([gA,lA,BA])}}}let B=1/0,E=1/0,d=1/0,h=-1/0,Q=-1/0,m=-1/0;for(let P of o){let[nA,tA,rA]=P;nA===void 0||tA===void 0||rA===void 0||(nA<B&&(B=nA),tA<E&&(E=tA),rA<d&&(d=rA),nA>h&&(h=nA),tA>Q&&(Q=tA),rA>m&&(m=rA))}Number.isFinite(B)||(B=-1,E=-1,d=-1,h=1,Q=1,m=1);let D=(B+h)*.5,p=(E+Q)*.5,G=(d+m)*.5,N=Math.max(1e-4,h-B),w=Math.max(1e-4,Q-E),U=Math.max(1e-4,m-d),b=Math.max(N,w,U),M=1;r.normalizeSize&&r.normalizeSize>0&&(M=r.normalizeSize/b),typeof r.scale=="number"&&(M*=r.scale);let v=r.center??!1,R=v?D:0,S=v?p:0,K=v?G:0,F=[];for(let P=0;P<g.length;P++){let nA=g[P];if(!nA||nA.faces.length===0)continue;let tA=new Map,rA=[],AA=[],eA=[],gA=[],lA=!1;for(let QA of nA.faces)for(let sA of QA){let yA=`${sA.v}_${sA.vt}_${sA.vn}`,bA=tA.get(yA);if(bA===void 0){bA=rA.length/3,tA.set(yA,bA);let wA=o[sA.v]??[0,0,0],hA=((wA[0]??0)-R)*M,VA=((wA[1]??0)-S)*M,YA=((wA[2]??0)-K)*M;if(rA.push(hA,VA,YA),sA.vt>=0&&s[sA.vt]){let FA=s[sA.vt];eA.push(FA[0]??0,1-(FA[1]??0))}else eA.push(0,0);if(sA.vn>=0&&a[sA.vn]){lA=!0;let FA=a[sA.vn];AA.push(FA[0]??0,FA[1]??0,FA[2]??0)}else AA.push(0,0,0)}gA.push(bA)}if(!lA||r.smoothNormals){let QA=new Float32Array(rA.length);for(let sA=0;sA<gA.length;sA+=3){let yA=gA[sA],bA=gA[sA+1],wA=gA[sA+2],hA=[rA[yA*3],rA[yA*3+1],rA[yA*3+2]],VA=[rA[bA*3],rA[bA*3+1],rA[bA*3+2]],YA=[rA[wA*3],rA[wA*3+1],rA[wA*3+2]],FA=H.subtract(VA,hA),Jt=H.subtract(YA,hA),vA=H.cross(FA,Jt);QA[yA*3]+=vA[0],QA[yA*3+1]+=vA[1],QA[yA*3+2]+=vA[2],QA[bA*3]+=vA[0],QA[bA*3+1]+=vA[1],QA[bA*3+2]+=vA[2],QA[wA*3]+=vA[0],QA[wA*3+1]+=vA[1],QA[wA*3+2]+=vA[2]}for(let sA=0;sA<rA.length/3;sA++){let yA=QA[sA*3],bA=QA[sA*3+1],wA=QA[sA*3+2],hA=Math.hypot(yA,bA,wA)||1;AA[sA*3]=yA/hA,AA[sA*3+1]=bA/hA,AA[sA*3+2]=wA/hA}}let EA=rA.length/3>65535?new Uint32Array(gA):new Uint16Array(gA);F.push({id:`mesh_${P}`,name:nA.materialName,positions:new Float32Array(rA),normals:new Float32Array(AA),uvs:new Float32Array(eA),indices:EA,materialName:nA.materialName})}let z=(B-R)*M,Z=(E-S)*M,$=(d-K)*M,aA=(h-R)*M,W=(Q-S)*M,Y=(m-K)*M,j=aA-z,IA=W-Z,dA=Y-$,uA=(z+aA)*.5,mA=(Z+W)*.5,pA=($+Y)*.5,X=Math.hypot(j,IA,dA)*.5;return{meshes:F,materials:u,animations:[],bounds:{min:[z,Z,$],max:[aA,W,Y],center:[uA,mA,pA],size:[j,IA,dA],boundingSphereRadius:X}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,u],n.specularIntensity=(g+l+u)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=A.mapFileName(a);let g=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=g>0&&a[g+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=A.mapFileName(a))}return t}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(e){let t=1;for(;t<e.length&&e[t]?.startsWith("-");){let n=e[t].toLowerCase();if(t++,n==="-o"||n==="-s"||n==="-t")for(let r=0;r<3&&t<e.length&&!Number.isNaN(Number(e[t]));r++)t++;else t+=A.MAP_OPTION_ARGS[n]??0}return e.slice(t).join(" ")}static loadTextures(e,t){if(!t)return e;for(let n of Object.values(e)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let r=ve(n.diffuseTexture,t);r?(n.diffuseTextureBuffer=r.bytes,n.diffuseTextureMime=r.mime):Ee("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let r=ve(n.normalTexture,t);r?n.normalTextureBuffer=r.bytes:Ee("ObjLoader",n.name,n.normalTexture)}}return e}};function ys(A,e,t={}){return Re.parse(A,e,t)}function bs(A){return Re.parseMtl(A)}function Le(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
2
|
-
v `)||r.includes("\rv "))&&typeof cA<"u"&&cA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}cA.existsSync(o)?(n=cA.readFileSync(o,"utf-8"),t={basePath:t.basePath??MA.dirname(o),...t}):n=A}catch{n=A}else n=A}return Re.parse(n,e,t)}k();var pr=jn(Er(),1);k();function ne(A,e,t){let n=r=>[A[r*3],A[r*3+1],A[r*3+2]];for(let r=0;r<e.length;r+=3){let i=e[r],o=e[r+1],a=e[r+2],s=n(i),g=H.cross(H.subtract(n(o),s),H.subtract(n(a),s));for(let l of[i,o,a])t[l*3]+=g[0],t[l*3+1]+=g[1],t[l*3+2]+=g[2]}for(let r=0;r<t.length;r+=3){let i=t[r],o=t[r+1],a=t[r+2],s=Math.hypot(i,o,a)||1;t[r]=i/s,t[r+1]=o/s,t[r+2]=a/s}}function HA(...A){let e=1/0,t=1/0,n=1/0,r=-1/0,i=-1/0,o=-1/0;for(let a of A)for(let s=0;s<a.length;s+=3){let g=a[s],l=a[s+1],u=a[s+2];g<e&&(e=g),g>r&&(r=g),l<t&&(t=l),l>i&&(i=l),u<n&&(n=u),u>o&&(o=u)}return Number.isFinite(e)||(e=t=n=0,r=i=o=0),{min:[e,t,n],max:[r,i,o],center:[(e+r)*.5,(t+i)*.5,(n+o)*.5],size:[r-e,i-t,o-n]}}function RA(A,e){let t=Math.max(...A.size,1e-4),n=1;e.normalizeSize&&e.normalizeSize>0&&(n=e.normalizeSize/t);let r=[n,n,n];return typeof e.scale=="number"?(r[0]*=e.scale,r[1]*=e.scale,r[2]*=e.scale):Array.isArray(e.scale)&&(r[0]*=e.scale[0],r[1]*=e.scale[1],r[2]*=e.scale[2]),{offset:e.center?A.center:[0,0,0],scale:r}}function JA(A,{offset:e,scale:t}){let n=new Float32Array(A.length);for(let r=0;r<A.length;r+=3)n[r]=(A[r]-e[0])*t[0],n[r+1]=(A[r+1]-e[1])*t[1],n[r+2]=(A[r+2]-e[2])*t[2];return n}function OA(A,e){return e>65535?new Uint32Array(A):new Uint16Array(A)}function KA(A,{offset:e,scale:t}){let n=[(A.min[0]-e[0])*t[0],(A.min[1]-e[1])*t[1],(A.min[2]-e[2])*t[2]],r=[(A.max[0]-e[0])*t[0],(A.max[1]-e[1])*t[1],(A.max[2]-e[2])*t[2]];return{min:n,max:r,center:[(n[0]+r[0])*.5,(n[1]+r[1])*.5,(n[2]+r[2])*.5],size:[r[0]-n[0],r[1]-n[1],r[2]-n[2]],boundingSphereRadius:Math.hypot(r[0]-n[0],r[1]-n[1],r[2]-n[2])*.5}}k();var re=128;function Zi(A,e,t){let[n,r,i,o]=e,a=n*n,s=r*r,g=i*i,l=n*r,u=n*i,c=r*i,B=o*n,E=o*r,d=o*i;return[(1-2*(s+g))*t[0],2*(l+d)*t[0],2*(u-E)*t[0],0,2*(l-d)*t[1],(1-2*(a+g))*t[1],2*(c+B)*t[1],0,2*(u+E)*t[2],2*(c-B)*t[2],(1-2*(a+s))*t[2],0,A[0],A[1],A[2],1]}function dr(A){let e=Math.hypot(A[0],A[1],A[2],A[3])||1;return[A[0]/e,A[1]/e,A[2]/e,A[3]/e]}function qi(A,e,t){let n=A[0]*e[0]+A[1]*e[1]+A[2]*e[2]+A[3]*e[3],r=n<0?-1:1;if(n*=r,n>.9995)return dr([A[0]+(r*e[0]-A[0])*t,A[1]+(r*e[1]-A[1])*t,A[2]+(r*e[2]-A[2])*t,A[3]+(r*e[3]-A[3])*t]);let i=Math.acos(n),o=Math.sin(i),a=Math.sin((1-t)*i)/o,s=r*Math.sin(t*i)/o;return[A[0]*a+e[0]*s,A[1]*a+e[1]*s,A[2]*a+e[2]*s,A[3]*a+e[3]*s]}function _i(A,e){let t=0,n=A.length-1;for(;t<n;){let r=t+n+1>>1;(A[r]??0)<=e?t=r:n=r-1}return t}function oe(A,e,t,n,r=1){let i=n?(e*3+r)*t:e*t;return Array.from(A.subarray(i,i+t))}function tn(A,e,t,n){let{times:r}=A,i=A.interpolation==="cubic",o=r.length-1;if(n<=(r[0]??0))return oe(e,0,t,i);if(n>=(r[o]??0))return oe(e,o,t,i);let a=_i(r,n);if(A.interpolation==="step")return oe(e,a,t,i);let s=r[a]??0,g=(r[a+1]??s)-s,l=g>0?(n-s)/g:0,u=oe(e,a,t,i),c=oe(e,a+1,t,i);if(i){let B=oe(e,a,t,!0,2),E=oe(e,a+1,t,!0,0),d=l*l,h=d*l,Q=u.map((m,D)=>(2*h-3*d+1)*m+(h-2*d+l)*g*(B[D]??0)+(-2*h+3*d)*(c[D]??0)+(h-d)*g*(E[D]??0));return t===4?dr(Q):Q}return t===4?qi(u,c,l):u.map((B,E)=>B+((c[E]??B)-B)*l)}function ji(A,e,t){let n=A.map(a=>[...a.translation]),r=A.map(a=>[...a.rotation]),i=A.map(a=>[...a.scale]),o=new Map(A.map((a,s)=>[a.name,s]));for(let a of e?.tracks??[]){let s=a.node??o.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=tn(a,a.translations,3,t)),a.rotations&&(r[s]=tn(a,a.rotations,4,t)),a.scales&&(i[s]=tn(a,a.scales,3,t)))}return A.map((a,s)=>a.matrix??Zi(n[s],r[s],i[s]))}function Bt(A,e,t){let n=A.nodes??[],r=ji(n,e,t),i=new Array(n.length),o=a=>{let s=i[a];if(s)return s;let g=n[a].parent,l=g<0?r[a]:_.multiply(o(g),r[a]);return i[a]=l,l};return n.map((a,s)=>o(s))}function Us(A,e,t){let n=A.skins?.[e];if(!n)throw new Error(`model has no skin ${e}`);let r=new Float32Array(re*16);for(let i=0;i<re;i++){let o=n.joints[i];if(o===void 0){r.set(_.identity(),i*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(i*16,i*16+16));r.set(_.multiply(t[o],a),i*16)}return r}var ae=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(23,!0)>=7500,o=27,a={name:"Root",props:[],children:[]},s=()=>{if(o>=t.byteLength)return null;let g,l,u;if(i){if(o+25>t.byteLength)return null;g=Number(n.getBigUint64(o,!0)),l=Number(n.getBigUint64(o+8,!0)),u=n.getUint8(o+24),o+=25}else{if(o+13>t.byteLength)return null;g=n.getUint32(o,!0),l=n.getUint32(o+4,!0),u=n.getUint8(o+12),o+=13}if(g===0)return null;let c=new TextDecoder().decode(t.subarray(o,o+u));o+=u;let B=[];for(let d=0;d<l;d++){let h=String.fromCharCode(t[o]);switch(o+=1,h){case"Y":{B.push(n.getInt16(o,!0)),o+=2;break}case"C":case"B":{B.push(n.getUint8(o)!==0),o+=1;break}case"I":{B.push(n.getInt32(o,!0)),o+=4;break}case"F":{B.push(n.getFloat32(o,!0)),o+=4;break}case"D":{B.push(n.getFloat64(o,!0)),o+=8;break}case"L":{B.push(Number(n.getBigInt64(o,!0))),o+=8;break}case"S":{let Q=n.getUint32(o,!0);o+=4;let m=new TextDecoder().decode(t.subarray(o,o+Q));B.push(m),o+=Q;break}case"R":{let Q=n.getUint32(o,!0);o+=4;let m=t.subarray(o,o+Q);B.push(m),o+=Q;break}case"f":case"d":case"i":case"l":case"b":case"c":{let Q=n.getUint32(o,!0),m=n.getUint32(o+4,!0),D=n.getUint32(o+8,!0);o+=12;let p;if(m===1){let N=t.subarray(o,o+D);p=(0,pr.inflateSync)(N),o+=D}else{let w=Q*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);p=t.subarray(o,o+w),o+=w}let G=new DataView(p.buffer,p.byteOffset,p.byteLength);if(h==="f"){let N=new Float32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat32(w*4,!0);B.push(N)}else if(h==="d"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat64(w*8,!0);B.push(N)}else if(h==="i"){let N=new Int32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getInt32(w*4,!0);B.push(N)}else if(h==="l"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=Number(G.getBigInt64(w*8,!0));B.push(N)}else if(h==="b"){let N=new Uint8Array(Q);for(let w=0;w<Q;w++)N[w]=G.getUint8(w);B.push(N)}else B.push(p);break}default:break}}let E=[];for(;o<g;){let d=s();if(d)E.push(d);else break}return o=g,{name:c,props:B,children:E}};for(;o<t.byteLength-(i?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let i=0;i<r.length;i++){let o=r[i]?.trim();if(!o||o.startsWith(";"))continue;if(o==="}"){n.length>1&&n.pop();continue}let a=o.indexOf(":");if(a===-1)continue;let s=o.substring(0,a).trim(),g=o.substring(a+1).trim(),l=g.endsWith("{"),u=l?g.slice(0,-1).trim():g,c=[];if(u){let d=u.split(",").map(h=>h.trim());for(let h of d)h.startsWith('"')&&h.endsWith('"')?c.push(h.slice(1,-1)):Number.isNaN(Number(h))?c.push(h):c.push(Number(h))}let B={name:s,props:c,children:[]},E=n[n.length-1];E&&E.children.push(B),l&&n.push(B)}return t}static textureSlot(e){let t=e.toLowerCase();if(t==="diffusecolor"||t==="diffuse"||t.endsWith("|basecolor")||t.endsWith("|base_color")||t==="basecolor")return"diffuse";if(t==="normalmap"||t.endsWith("|normalcamera")||t.endsWith("|bump_map"))return"normal"}static attachTextures(e,t,n,r,i){let o=(a,s)=>{let g=a?.children.find(l=>l.name===s)?.props[0];return typeof g=="string"&&g?g:void 0};for(let a of r){if(a.parentId!==t||!a.propName)continue;let s=A.textureSlot(a.propName),g=n.get(a.childId);if(!s||g?.node.name!=="Texture"||(s==="diffuse"?e.diffuseTextureBuffer:e.normalTextureBuffer))continue;let l=r.filter(E=>E.parentId===a.childId&&!E.propName).map(E=>n.get(E.childId)?.node).find(E=>E?.name==="Video"),u=o(g.node,"RelativeFilename")??o(g.node,"FileName")??o(l,"RelativeFilename")??o(l,"Filename");if(u&&!ct(u)){Ee("FbxLoader",e.name,u);continue}let c,B=l?.children.find(E=>E.name==="Content")?.props[0];if(B instanceof Uint8Array&&B.length>0?c=B:u&&(c=ve(u,i)?.bytes),!c){u&&Ee("FbxLoader",e.name,u);continue}s==="diffuse"?(e.diffuseTextureBuffer=c,e.diffuseTextureMime=Ue(u??""),u&&(e.diffuseTexture=u),e.textureWrap="repeat"):(e.normalTextureBuffer=c,u&&(e.normalTexture=u))}}static buildModelFromTree(e,t={}){let n=e.children.find(b=>b.name==="Objects"),r=e.children.find(b=>b.name==="Connections"),i=new Map;if(n)for(let b of n.children){let M=b.props[0]??0,R=String(b.props[1]??"").split("::"),S=R.length>1?R[1]:R[0],K=String(b.props[2]??b.name);i.set(M,{id:M,name:S,type:K,node:b})}let o=[];if(r){for(let b of r.children)if(b.name==="C"||b.name==="Connect"){let M=String(b.props[0]),v=b.props[1]??0,R=b.props[2]??0,S=M==="OP"?String(b.props[3]):void 0;o.push({childId:v,parentId:R,propName:S})}}let a=b=>{for(let M of o){let v=M.parentId===b?i.get(M.childId):void 0;if(v?.node.name==="Material"&&!M.propName)return v.name}for(let M of o)if(!(M.childId!==b||M.propName))for(let v of o){if(v.parentId!==M.parentId||v.propName)continue;let R=i.get(v.childId);if(R?.node.name==="Material")return R.name}},s=[],g={};function l(b){if(!b)return[];if(b.props[0]instanceof Float32Array||b.props[0]instanceof Float64Array||b.props[0]instanceof Int32Array||Array.isArray(b.props[0]))return b.props[0];let M=b.children.find(v=>v.name==="a");return M&&M.props.length>0?M.props:Array.isArray(b.props)&&b.props.length>0&&typeof b.props[0]=="number"?b.props:[]}let u=[...i.values()].filter(b=>b.node.name==="Model").map(b=>b.id),c=new Map(u.map((b,M)=>[b,M])),B=u.map(b=>{let M=i.get(b),v=o.find(R=>R.childId===b&&!R.propName&&c.has(R.parentId));return{name:M.name,parent:v?c.get(v.parentId):-1,translation:ke(M.node,"Lcl Translation",0),rotation:Qr(M.node,ft(ke(M.node,"Lcl Rotation",0),yr(M.node))),scale:ke(M.node,"Lcl Scaling",1)}}),E=b=>o.find(M=>M.childId===b&&!M.propName&&c.has(M.parentId))?.parentId,d=[];for(let[b,M]of i)if(M.node.name==="Geometry"&&(M.type==="Mesh"||M.node.props[2]==="Mesh"||M.type==="")){let v=M.node,R=v.children.find(AA=>AA.name==="Vertices"),S=v.children.find(AA=>AA.name==="PolygonVertexIndex");if(!R||!S)continue;let K=l(R),F=l(S),z=(AA,eA,gA,lA)=>{let BA=v.children.find(EA=>EA.name===AA);if(BA)return $i(BA,l(BA.children.find(EA=>EA.name===eA)),l(BA.children.find(EA=>EA.name===gA)),lA)},Z=z("LayerElementNormal","Normals","NormalsIndex",3),$=z("LayerElementUV","UV","UVIndex",2),aA=[],W=[],Y=0;for(let AA=0;AA<F.length;AA++){let eA=F[AA];if(W.push({cp:eA<0?-(eA+1):eA,pv:AA}),!(eA>=0)){for(let gA=1;gA<W.length-1;gA++)for(let lA of[W[0],W[gA],W[gA+1]])aA.push({...lA,poly:Y});W=[],Y++}}let j=aA.length,IA=new Float32Array(j*3),dA=new Float32Array(j*3),uA=new Float32Array(j*2),mA=new Array(j);aA.forEach(({cp:AA,pv:eA,poly:gA},lA)=>{IA[lA*3]=K[AA*3]??0,IA[lA*3+1]=K[AA*3+1]??0,IA[lA*3+2]=K[AA*3+2]??0;let BA=Z?.(AA,eA,gA);dA.set(BA??[0,0,1],lA*3);let EA=$?.(AA,eA,gA);uA[lA*2]=EA?.[0]??0,uA[lA*2+1]=1-(EA?.[1]??0),mA[lA]=lA}),(!Z||t.smoothNormals)&&(dA.fill(0),ne(IA,mA,dA));let pA=o.find(AA=>AA.parentId===b&&i.get(AA.childId)?.node.name==="Deformer"&&i.get(AA.childId)?.node.props[2]==="Skin"),X,P,nA;if(pA){let AA=[],eA=[],gA=new Map;for(let lA of o){let BA=i.get(lA.childId);if(lA.parentId!==pA.childId||BA?.node.name!=="Deformer"||BA.node.props[2]!=="Cluster")continue;let EA=o.find(hA=>hA.parentId===BA.id&&c.has(hA.childId))?.childId;if(EA===void 0)continue;let QA=AA.length;AA.push(c.get(EA));let sA=mr(BA.node,"Transform"),yA=mr(BA.node,"TransformLink");eA.push(..._.multiply(_.invert(yA)??_.identity(),sA));let bA=l(BA.node.children.find(hA=>hA.name==="Indexes")),wA=l(BA.node.children.find(hA=>hA.name==="Weights"));for(let hA=0;hA<bA.length;hA++){let VA=Number(wA[hA]??0);if(!(VA>0))continue;let YA=Number(bA[hA]),FA=gA.get(YA)??[];FA.push([QA,VA]),gA.set(YA,FA)}}if(AA.length>re)throw new Error(`FBX skin has ${AA.length} bones; the mesh shader holds ${re}`);AA.length>0&&(nA=d.length,d.push({joints:AA,inverseBindMatrices:new Float32Array(eA)}),X=new Float32Array(j*4),P=new Float32Array(j*4),aA.forEach(({cp:lA},BA)=>{let EA=(gA.get(lA)??[]).sort((sA,yA)=>yA[1]-sA[1]).slice(0,4),QA=EA.reduce((sA,[,yA])=>sA+yA,0);EA.forEach(([sA,yA],bA)=>{X[BA*4+bA]=sA,P[BA*4+bA]=QA>0?yA/QA:0})}))}let tA=E(b),rA=j>65535;s.push({id:`fbx_mesh_${b}`,name:M.name,positions:IA,normals:dA,uvs:uA,indices:rA?new Uint32Array(mA):new Uint16Array(mA),jointIndices:X,jointWeights:P,materialName:a(b)??M.name,node:tA!==void 0?c.get(tA):void 0,skin:nA})}for(let[,b]of i)if(b.node.name==="Material"){let v=b.node.children.find(z=>z.name==="Properties70"),R=[1,1,1,1],S=32,K=1;if(v){for(let z of v.children)if(z.name==="P"){let Z=String(z.props[0]);if(Z==="DiffuseColor"||Z==="Color"){let $=Number(z.props[4]??1),aA=Number(z.props[5]??1),W=Number(z.props[6]??1);R=[$,aA,W,1]}else Z==="Shininess"||Z==="ShininessExponent"?S=Number(z.props[4]??32):Z==="Opacity"&&(K=Number(z.props[4]??1),R[3]=K)}}let F={name:b.name,diffuseColor:R,shininess:S,opacity:K};A.attachTextures(F,b.id,i,o,t.basePath),g[b.name]=F}let h=[];for(let[b,M]of i)if(M.node.name==="AnimationStack"){let v=M.name||"Take 001",R=[],S=o.find(F=>F.parentId===b&&i.get(F.childId)?.node.name==="AnimationLayer");if(S){let F=o.filter(Z=>Z.parentId===S.childId&&i.get(Z.childId)?.node.name==="AnimationCurveNode"),z=new Map;for(let Z of F){let $=i.get(Z.childId);if(!$)continue;let aA=o.find(uA=>uA.childId===$.id&&i.get(uA.parentId)?.node.name==="Model"),W=aA?i.get(aA.parentId):void 0,Y=hr(aA?.propName)??hr($.name);if(!Y)continue;let j=`${W?.id??$.id}|${Y}`,IA=z.get(j);if(!IA){let uA=W?.node;IA={nodeName:W?.name??$.name,modelId:W?.id,model:uA,kind:Y,defaults:eo(uA,$.node,Y),channels:[void 0,void 0,void 0]},z.set(j,IA)}o.filter(uA=>uA.parentId===$.id&&i.get(uA.childId)?.node.name==="AnimationCurve").forEach((uA,mA)=>{let pA=Ao(uA.propName)??mA;if(pA>2)return;let X=i.get(uA.childId)?.node,P=l(X?.children.find(rA=>rA.name==="KeyTime")),nA=l(X?.children.find(rA=>rA.name==="KeyValueFloat")),tA=Math.min(P.length,nA.length);tA!==0&&(IA.channels[pA]={times:Array.from(P.slice(0,tA),rA=>Number(rA)),values:Array.from(nA.slice(0,tA),rA=>Number(rA))})})}for(let Z of z.values()){let $=ro(Z);if($){if(Z.modelId!==void 0&&($.node=c.get(Z.modelId)),$.rotations&&Z.model)for(let aA=0;aA<$.rotations.length;aA+=4){let W=Array.from($.rotations.subarray(aA,aA+4));$.rotations.set(Qr(Z.model,W),aA)}R.push($)}}}let K=1;for(let F of R)if(F.times.length>0){let z=F.times[F.times.length-1]??0;z>K&&(K=z)}h.push({name:v,duration:K,fps:30,tracks:R})}let Q={meshes:s,materials:g,animations:h,nodes:B,skins:d,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},m=Bt(Q,void 0,0),D=[1/0,1/0,1/0],p=[-1/0,-1/0,-1/0];for(let b of s){let M=b.node!==void 0?m[b.node]:void 0;for(let v=0;v<b.positions.length;v+=3){let R=[b.positions[v],b.positions[v+1],b.positions[v+2]],S=M?_.projectPoint(M,R):R;for(let K=0;K<3;K++)S[K]<D[K]&&(D[K]=S[K]),S[K]>p[K]&&(p[K]=S[K])}}Number.isFinite(D[0])||(D.fill(-1),p.fill(1));let{offset:G,scale:N}=RA({min:D,max:p,center:[(D[0]+p[0])*.5,(D[1]+p[1])*.5,(D[2]+p[2])*.5],size:[p[0]-D[0],p[1]-D[1],p[2]-D[2]]},t);Q.rootTransform=_.multiply(_.scale(N[0],N[1],N[2]),_.translate(-G[0],-G[1],-G[2]));let w=[0,1,2].map(b=>(D[b]-G[b])*N[b]),U=[0,1,2].map(b=>(p[b]-G[b])*N[b]);return Q.bounds={min:w,max:U,center:[(w[0]+U[0])*.5,(w[1]+U[1])*.5,(w[2]+U[2])*.5],size:[U[0]-w[0],U[1]-w[1],U[2]-w[2]],boundingSphereRadius:Math.hypot(U[0]-w[0],U[1]-w[1],U[2]-w[2])*.5},Q}};function ke(A,e,t){let n=de(A,e);return[0,1,2].map(r=>{let i=n?.[r];return i!==void 0&&Number.isFinite(i)?i:t})}function Cr(A,e){return[A[3]*e[0]+A[0]*e[3]+A[1]*e[2]-A[2]*e[1],A[3]*e[1]-A[0]*e[2]+A[1]*e[3]+A[2]*e[0],A[3]*e[2]+A[0]*e[1]-A[1]*e[0]+A[2]*e[3],A[3]*e[3]-A[0]*e[0]-A[1]*e[1]-A[2]*e[2]]}function Qr(A,e){let t=de(A,"PreRotation"),n=de(A,"PostRotation"),r=e;if(t&&(r=Cr(ft(ke(A,"PreRotation",0)),r)),n){let i=ft(ke(A,"PostRotation",0));r=Cr(r,[-i[0],-i[1],-i[2],i[3]])}return r}function mr(A,e){let t=A.children.find(i=>i.name===e),n=t?.children.find(i=>i.name==="a")?.props??t?.props,r=n?.[0]instanceof Float64Array||n?.[0]instanceof Float32Array?Array.from(n[0]):(n??[]).map(Number);return r.length===16?r:_.identity()}function $i(A,e,t,n){if(e.length===0)return;let r=a=>String(A.children.find(s=>s.name===a)?.props[0]??""),i=r("MappingInformationType"),o=/^Index/.test(r("ReferenceInformationType"))&&t.length>0;return(a,s,g)=>{let l=i==="ByPolygonVertex"?s:i==="ByPolygon"?g:i==="AllSame"?0:a;return o&&(l=Number(t[l]??l)),Array.from({length:n},(u,c)=>Number(e[l*n+c]??0))}}function hr(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Ao(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function de(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function eo(A,e,t){let n=t==="S"?1:0,r=de(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),i=[n,n,n];for(let o=0;o<3;o++){let a=r?.[o],s=de(e,`d|${"XYZ"[o]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(i[o]=g)}return i}var to=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function yr(A){let e=de(A,"RotationOrder")?.[0]??0;return to[e]??"XYZ"}function ft(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),i=(A[r]??0)*Math.PI/360,o=Math.sin(i),a=[0,0,0,Math.cos(i)];a[r]=o,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function no(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let i=0;for(;i<r-1&&t[i+1]<=e;)i++;let o=t[i],a=t[i+1],s=a>o?(e-o)/(a-o):0;return n[i]+(n[i+1]-n[i])*s}function ro(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",i=new Float32Array(t.length*(r?4:3)),o=r?yr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/ae.FBX_KTIME;let l=[0,1,2].map(c=>{let B=A.channels[c];return B?no(B,s):A.defaults[c]});if(!r){i.set(l,g*3);return}let u=ft(l,o);if(a&&a[0]*u[0]+a[1]*u[1]+a[2]*u[2]+a[3]*u[3]<0)for(let c=0;c<4;c++)u[c]=-u[c];a=u,i.set(u,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?i:void 0,rotations:r?i:void 0,scales:A.kind==="S"?i:void 0}}function Os(A,e={}){return ae.parse(A,e)}function Pe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof cA<"u"&&cA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}if(cA.existsSync(i)){let o=cA.readFileSync(i);t=new Uint8Array(o.buffer,o.byteOffset,o.byteLength),e={basePath:MA.dirname(i),...e}}}catch{}}return ae.parse(t,e)}k();k();var br=`
|
|
1
|
+
import{o as at,r as sr}from"./chunk-RQLMW6MA.mjs";import{c as Ar}from"./chunk-OLLY3Q7M.mjs";import{b as _t}from"./chunk-2SJ4BBMT.mjs";import{h as jn,l as $n}from"./chunk-24P6DAB3.mjs";import{d as nr}from"./chunk-6YJP57MZ.mjs";import{e as te,q as rr,r as ir,s as NA,t as or,u as ar}from"./chunk-LQENNFBA.mjs";import{r as cA}from"./chunk-MTJHQATU.mjs";import{a as ot}from"./chunk-IQC2I5A5.mjs";import{c as er,e as tr}from"./chunk-IQKIHFNZ.mjs";import{o as MA}from"./chunk-YAQFFQPG.mjs";import{a as qn,c as _n,e as k}from"./chunk-BVF64D6H.mjs";var Er=qn((Ms,fr)=>{k();var ct=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":ct(),apply:()=>ct(),construct:()=>ct()});fr.exports=ct()});var qr=qn((ru,Zr)=>{k();var St=()=>new Proxy(function(){},{get:(A,e)=>e==="__esModule"?!0:e===Symbol.toPrimitive?()=>"":St(),apply:()=>St(),construct:()=>St()});Zr.exports=St()});k();var lr=new Float32Array(2048);for(let A=0;A<2048;A++)lr[A]=.5*(1-Math.cos(2*Math.PI*A/2047));var ur=new Uint16Array(2048);for(let A=0;A<2048;A++){let e=0,t=A;for(let n=0;n<11;n++)e=e<<1|t&1,t>>=1;ur[A]=e}var cr=new Float32Array(2048/2),Ir=new Float32Array(2048/2);for(let A=0;A<2048/2;A++){let e=-2*Math.PI*A/2048;cr[A]=Math.cos(e),Ir[A]=Math.sin(e)}function Yi(A,e){for(let t=0;t<2048;t++){let n=ur[t]??0;if(n>t){let r=A[t]??0;A[t]=A[n]??0,A[n]=r;let i=e[t]??0;e[t]=e[n]??0,e[n]=i}}for(let t=2;t<=2048;t<<=1){let n=t>>1,r=2048/t;for(let i=0;i<2048;i+=t)for(let o=0;o<n;o++){let a=o*r,s=cr[a]??1,g=Ir[a]??0,l=A[i+o]??0,u=e[i+o]??0,c=A[i+o+n]??0,I=e[i+o+n]??0,E=c*s-I*g,d=c*g+I*s;A[i+o]=l+E,e[i+o]=u+d,A[i+o+n]=l-E,e[i+o+n]=u-d}}}var st=class A{tempReal=new Float32Array(2048);tempImag=new Float32Array(2048);previousBins=new Float32Array(1024);extractAtTime(e,t,n){let r=e.length,i=r>0?e[0]?.length??0:0,a=Math.round(n*t)-1024;for(let G=0;G<2048;G++){let N=a+G,w=0;N>=0&&N<i&&(r===1?w=e[0]?.[N]??0:r>=2&&(w=((e[0]?.[N]??0)+(e[1]?.[N]??0))*.5)),this.tempReal[G]=w*(lr[G]??1),this.tempImag[G]=0}Yi(this.tempReal,this.tempImag);let s=new Float32Array(1024),g=2/2048;for(let G=0;G<1024;G++){let N=this.tempReal[G]??0,w=this.tempImag[G]??0;s[G]=Math.sqrt(N*N+w*w)*g*2}let l=t/2048,u=Math.max(1,Math.round(20/l)),c=Math.max(u+1,Math.round(150/l)),I=0;for(let G=u;G<=c&&G<1024;G++)I+=(s[G]??0)*(s[G]??0);let E=Math.min(1,Math.sqrt(I/(c-u+1))*4),d=0;for(let G=0;G<1024;G++){let N=(s[G]??0)-(this.previousBins[G]??0);N>0&&(d+=N),this.previousBins[G]=s[G]??0}let h=Math.min(1,d*.15),Q=Math.round(300/l),m=Math.min(1023,Math.round(3400/l)),D=0;for(let G=Q;G<=m;G++)D+=(s[G]??0)*(s[G]??0);let p=Math.min(1,Math.sqrt(D/(m-Q+1))*3.5);return{fftBins:s,bassEnergy:E,drumTransient:h,vocalEnergy:p,timeMs:n*1e3}}static packBufferData(e){let t=new Float32Array(1028);return t.set(e.fftBins,0),t[1024]=e.bassEnergy,t[1025]=e.drumTransient,t[1026]=e.vocalEnergy,t[1027]=e.timeMs,t}static createGpuBuffer(e,t){let n=t?A.packBufferData(t):new Float32Array(1028),r=e.createBuffer({label:"AudioLatentBuffer",size:4112,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});return new Float32Array(r.getMappedRange()).set(n),r.unmap(),r}static updateGpuBuffer(e,t,n){let r=A.packBufferData(n);e.queue.writeBuffer(t,0,r)}},gr=class{constructor(e,t,n,r){this.channels=e;this.sampleRate=t;this.fps=n;this.totalFrames=r;let i=new st,o=t||48e3,a=n||30,s=e[0]?.length??0,g=Math.max(10,Math.ceil(s/o*a)+10),l=typeof r=="number"&&Number.isFinite(r)&&r>0?Math.round(r):g;this.frames=new Array(l);for(let u=0;u<l;u++){let c=u/a;this.frames[u]=i.extractAtTime(e,o,c)}}channels;sampleRate;fps;totalFrames;frames=[];gpuBuffers=new WeakMap;getFrameData(e){let t=Math.max(0,Math.min(this.totalFrames-1,Math.round(e)));return this.frames[t]??{fftBins:new Float32Array(1024),bassEnergy:0,drumTransient:0,vocalEnergy:0,timeMs:t/this.fps*1e3}}getGpuBuffer(e,t){let n=this.gpuBuffers.get(e);n||(n=new Map,this.gpuBuffers.set(e,n));let r=Math.max(0,Math.min(this.totalFrames-1,Math.round(t))),i=n.get(r);if(!i){let o=this.getFrameData(r);i=st.createGpuBuffer(e,o),n.set(r,i)}return i}};k();var H={create(A=0,e=0,t=0){return[A,e,t]},copy(A){return[A[0],A[1],A[2]]},set(A,e,t,n){return A[0]=e,A[1]=t,A[2]=n,A},add(A,e){return[A[0]+e[0],A[1]+e[1],A[2]+e[2]]},subtract(A,e){return[A[0]-e[0],A[1]-e[1],A[2]-e[2]]},multiplyScalar(A,e){return[A[0]*e,A[1]*e,A[2]*e]},dot(A,e){return A[0]*e[0]+A[1]*e[1]+A[2]*e[2]},cross(A,e){return[A[1]*e[2]-A[2]*e[1],A[2]*e[0]-A[0]*e[2],A[0]*e[1]-A[1]*e[0]]},lengthSq(A){return A[0]*A[0]+A[1]*A[1]+A[2]*A[2]},length(A){return Math.hypot(A[0],A[1],A[2])},distance(A,e){return Math.hypot(A[0]-e[0],A[1]-e[1],A[2]-e[2])},normalize(A){let e=Math.hypot(A[0],A[1],A[2]);if(e===0)return[0,0,0];let t=1/e;return[A[0]*t,A[1]*t,A[2]*t]},lerp(A,e,t){return[A[0]+(e[0]-A[0])*t,A[1]+(e[1]-A[1])*t,A[2]+(e[2]-A[2])*t]},equals(A,e,t=1e-6){return Math.abs(A[0]-e[0])<=t&&Math.abs(A[1]-e[1])<=t&&Math.abs(A[2]-e[2])<=t}};k();var _={identity(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]},copy(A){return[...A]},multiply(A,e){let t=new Array(16);for(let n=0;n<4;n++)for(let r=0;r<4;r++)t[r*4+n]=A[0+n]*e[r*4+0]+A[4+n]*e[r*4+1]+A[8+n]*e[r*4+2]+A[12+n]*e[r*4+3];return t},translate(A,e,t=0){return[1,0,0,0,0,1,0,0,0,0,1,0,A,e,t,1]},scale(A,e,t=1){return[A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1]},rotateX(A){let e=Math.cos(A),t=Math.sin(A);return[1,0,0,0,0,e,t,0,0,-t,e,0,0,0,0,1]},rotateY(A){let e=Math.cos(A),t=Math.sin(A);return[e,0,-t,0,0,1,0,0,t,0,e,0,0,0,0,1]},rotateZ(A){let e=Math.cos(A),t=Math.sin(A);return[e,t,0,0,-t,e,0,0,0,0,1,0,0,0,0,1]},rotateAxis(A,e){let t=H.normalize(A),n=t[0],r=t[1],i=t[2],o=Math.cos(e),a=Math.sin(e),s=1-o;return[s*n*n+o,s*n*r+a*i,s*n*i-a*r,0,s*n*r-a*i,s*r*r+o,s*r*i+a*n,0,s*n*i+a*r,s*r*i-a*n,s*i*i+o,0,0,0,0,1]},lookAt(A,e,t=[0,-1,0]){let n=H.subtract(e,A);H.lengthSq(n)===0?n=[0,0,1]:n=H.normalize(n);let r=H.cross(n,t);H.lengthSq(r)===0?r=[1,0,0]:r=H.normalize(r);let i=H.cross(r,n);return[r[0],i[0],n[0],0,r[1],i[1],n[1],0,r[2],i[2],n[2],0,-H.dot(r,A),-H.dot(i,A),-H.dot(n,A),1]},perspective(A,e,t,n){let r=1/Math.tan(A/2),i=1/(n-t);return[r/e,0,0,0,0,r,0,0,0,0,n*i,1,0,0,-t*n*i,0]},orthographic(A,e,t,n,r,i){let o=1/(e-A),a=1/(n-t),s=1/(i-r);return[2*o,0,0,0,0,2*a,0,0,0,0,s,0,-(e+A)*o,-(n+t)*a,-r*s,1]},invert(A){let e=new Array(16);e[0]=A[5]*A[10]*A[15]-A[5]*A[11]*A[14]-A[9]*A[6]*A[15]+A[9]*A[7]*A[14]+A[13]*A[6]*A[11]-A[13]*A[7]*A[10],e[4]=-A[4]*A[10]*A[15]+A[4]*A[11]*A[14]+A[8]*A[6]*A[15]-A[8]*A[7]*A[14]-A[12]*A[6]*A[11]+A[12]*A[7]*A[10],e[8]=A[4]*A[9]*A[15]-A[4]*A[11]*A[13]-A[8]*A[5]*A[15]+A[8]*A[7]*A[13]+A[12]*A[5]*A[11]-A[12]*A[7]*A[9],e[12]=-A[4]*A[9]*A[14]+A[4]*A[10]*A[13]+A[8]*A[5]*A[14]-A[8]*A[6]*A[13]-A[12]*A[5]*A[10]+A[12]*A[6]*A[9],e[1]=-A[1]*A[10]*A[15]+A[1]*A[11]*A[14]+A[9]*A[2]*A[15]-A[9]*A[3]*A[14]-A[13]*A[2]*A[11]+A[13]*A[3]*A[10],e[5]=A[0]*A[10]*A[15]-A[0]*A[11]*A[14]-A[8]*A[2]*A[15]+A[8]*A[3]*A[14]+A[12]*A[2]*A[11]-A[12]*A[3]*A[10],e[9]=-A[0]*A[9]*A[15]+A[0]*A[11]*A[13]+A[8]*A[1]*A[15]-A[8]*A[3]*A[13]-A[12]*A[1]*A[11]+A[12]*A[3]*A[9],e[13]=A[0]*A[9]*A[14]-A[0]*A[10]*A[13]-A[8]*A[1]*A[14]+A[8]*A[2]*A[13]+A[12]*A[1]*A[10]-A[12]*A[2]*A[9],e[2]=A[1]*A[6]*A[15]-A[1]*A[7]*A[14]-A[5]*A[2]*A[15]+A[5]*A[3]*A[14]+A[13]*A[2]*A[7]-A[13]*A[3]*A[6],e[6]=-A[0]*A[6]*A[15]+A[0]*A[7]*A[14]+A[4]*A[2]*A[15]-A[4]*A[3]*A[14]-A[12]*A[2]*A[7]+A[12]*A[3]*A[6],e[10]=A[0]*A[5]*A[15]-A[0]*A[7]*A[13]-A[4]*A[1]*A[15]+A[4]*A[3]*A[13]+A[12]*A[1]*A[7]-A[12]*A[3]*A[5],e[14]=-A[0]*A[5]*A[14]+A[0]*A[6]*A[13]+A[4]*A[1]*A[14]-A[4]*A[2]*A[13]-A[12]*A[1]*A[6]+A[12]*A[2]*A[5],e[3]=-A[1]*A[6]*A[11]+A[1]*A[7]*A[10]+A[5]*A[2]*A[11]-A[5]*A[3]*A[10]-A[9]*A[2]*A[7]+A[9]*A[3]*A[6],e[7]=A[0]*A[6]*A[11]-A[0]*A[7]*A[10]-A[4]*A[2]*A[11]+A[4]*A[3]*A[10]+A[8]*A[2]*A[7]-A[8]*A[3]*A[6],e[11]=-A[0]*A[5]*A[11]+A[0]*A[7]*A[9]+A[4]*A[1]*A[11]-A[4]*A[3]*A[9]-A[8]*A[1]*A[7]+A[8]*A[3]*A[5],e[15]=A[0]*A[5]*A[10]-A[0]*A[6]*A[9]-A[4]*A[1]*A[10]+A[4]*A[2]*A[9]+A[8]*A[1]*A[6]-A[8]*A[2]*A[5];let t=A[0]*e[0]+A[1]*e[4]+A[2]*e[8]+A[3]*e[12];if(Math.abs(t)<1e-12)return null;t=1/t;for(let n=0;n<16;n++)e[n]*=t;return e},transpose(A){return[A[0],A[4],A[8],A[12],A[1],A[5],A[9],A[13],A[2],A[6],A[10],A[14],A[3],A[7],A[11],A[15]]},projectPoint(A,e){let t=e[0],n=e[1],r=e[2],i=A[0]*t+A[4]*n+A[8]*r+A[12],o=A[1]*t+A[5]*n+A[9]*r+A[13],a=A[2]*t+A[6]*n+A[10]*r+A[14],s=A[3]*t+A[7]*n+A[11]*r+A[15],g=Math.abs(s)>1e-6?1/s:1;return[i*g,o*g,a*g]},projectRectangle(A,e,t){return[_.projectPoint(A,[0,0,0]),_.projectPoint(A,[e,0,0]),_.projectPoint(A,[e,t,0]),_.projectPoint(A,[0,t,0])]},toFloat32Array(A){return new Float32Array(A)}};k();function Se(A,e,t=3){let n=0,r=1,i=1,o=0;for(let a=0;a<t;a++){let s=Math.sin(A*r*2*Math.PI+e+a*1.7),g=Math.cos(A*r*1.414*Math.PI+e*2.1+a*.9);n+=(s*.6+g*.4)*i,o+=i,r*=2,i*=.5}return o>0?n/o:0}var fe={createDefaultCamera(A,e,t=50){let n=t*Math.PI/180,r=e/2/Math.tan(n/2);return{eye:[A/2,e/2,-r],target:[A/2,e/2,0],up:[0,-1,0],fov:t,aspect:Math.max(1e-4,A/e),near:1,far:5e4,zoom:1,focusDistance:r,fStop:2.8,maxBlurRadius:32}},computeViewMatrix(A){return _.lookAt(A.eye,A.target,A.up)},computeProjectionMatrix(A){let e=A.fov*Math.PI/180,t=_.perspective(e,A.aspect,A.near,A.far);return A.zoom!==1&&A.zoom>0&&(t[0]*=A.zoom,t[5]*=A.zoom),t},computeViewProjectionMatrix(A){let e=fe.computeViewMatrix(A),t=fe.computeProjectionMatrix(A);return _.multiply(t,e)},dolly(A,e,t){let n=H.normalize(H.subtract(e,A)),r=H.multiplyScalar(n,t);return{eye:H.add(A,r),target:e}},truckPedestal(A,e,t,n,r){let i=H.normalize(H.subtract(e,A)),o=H.normalize(H.cross(i,t)),a=H.cross(o,i),s=H.multiplyScalar(o,n),g=H.multiplyScalar(a,r),l=H.add(s,g);return{eye:H.add(A,l),target:H.add(e,l)}},orbit(A,e,t,n){let r=t*Math.PI/180,i=n*Math.PI/180,o=Math.cos(i),a=Math.sin(i),s=Math.cos(r),g=Math.sin(r),l=A[0]+e*o*g,u=A[1]-e*a,c=A[2]-e*o*s;return[l,u,c]},applyOrientation(A,e,t,n){if(e===0&&t===0&&n===0)return A;let r=H.normalize(H.subtract(A.target,A.eye)),i=H.normalize(H.cross(r,A.up)),o=H.cross(i,r),a=H.distance(A.eye,A.target),s=r,g=o;if(t!==0){let c=t*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.subtract(H.multiplyScalar(s,I),H.multiplyScalar(i,E)))}let l=H.normalize(H.cross(s,g));if(e!==0){let c=e*Math.PI/180,I=Math.cos(c),E=Math.sin(c);s=H.normalize(H.add(H.multiplyScalar(s,I),H.multiplyScalar(g,E))),g=H.normalize(H.cross(l,s))}if(n!==0){let c=n*Math.PI/180,I=Math.cos(c),E=Math.sin(c);g=H.normalize(H.add(H.multiplyScalar(g,I),H.multiplyScalar(l,E)))}let u=H.add(A.eye,H.multiplyScalar(s,a));return{...A,target:u,up:g}},applyCameraShake(A,e,t){let{translationAmplitude:n,rotationAmplitude:r,frequency:i=2.5,octaves:o=3,seed:a=42}=t;if(n<=0&&r<=0)return A;let s=e*i,g=Se(s,a,o)*n,l=Se(s,a+101.5,o)*n,u=Se(s,a+203.7,o)*(n*.5),c=Se(s,a+307.1,o)*r,I=Se(s,a+409.3,o)*r,E=H.normalize(H.subtract(A.target,A.eye)),d=H.normalize(H.cross(E,A.up)),h=H.cross(d,E),Q=H.add(H.multiplyScalar(d,g),H.add(H.multiplyScalar(h,l),H.multiplyScalar(E,u))),m=H.add(A.eye,Q),D=H.add(A.target,H.add(H.multiplyScalar(d,I*10),H.multiplyScalar(h,c*10)));return{...A,eye:m,target:D}},computeCircleOfConfusion(A,e,t,n,r=32){if(e<=0||n<=0||A<=0)return 0;let i=Math.abs(A-e),o=t/n,a=i/A*o*.5;return Math.min(r,Math.max(0,a))},computeCameraFrustumPlanes(A){let e=t=>{let n=Math.hypot(t[0],t[1],t[2]);return n===0?t:[t[0]/n,t[1]/n,t[2]/n,t[3]/n]};return{left:e([A[3]+A[0],A[7]+A[4],A[11]+A[8],A[15]+A[12]]),right:e([A[3]-A[0],A[7]-A[4],A[11]-A[8],A[15]-A[12]]),bottom:e([A[3]+A[1],A[7]+A[5],A[11]+A[9],A[15]+A[13]]),top:e([A[3]-A[1],A[7]-A[5],A[11]-A[9],A[15]-A[13]]),near:e([A[2],A[6],A[10],A[14]]),far:e([A[3]-A[2],A[7]-A[6],A[11]-A[10],A[15]-A[14]])}},isBoxInFrustum(A,e,t){let n=[t.left,t.right,t.bottom,t.top,t.near,t.far];for(let r of n){let i=r[0]>0?e[0]:A[0],o=r[1]>0?e[1]:A[1],a=r[2]>0?e[2]:A[2];if(r[0]*i+r[1]*o+r[2]*a+r[3]<0)return!1}return!0}};k();var Wi={studio:{top:"#9da3ad",horizon:"#5d626b",bottom:"#202226",softboxes:3.5},soft:{top:"#f1efea",horizon:"#cfcac1",bottom:"#77726a",softboxes:1.2},sunset:{top:"#4d63a3",horizon:"#ff9a5c",bottom:"#3b2a28",softboxes:1},night:{top:"#121a3a",horizon:"#1f2950",bottom:"#05060b",softboxes:.5},neutral:{top:"#9a9a9a",horizon:"#808080",bottom:"#5c5c5c",softboxes:0}},zi={none:0,aces:1,agx:2,neutral:3};function gt(A){let e=er(A)??[0,0,0,1],t=n=>n<=.04045?n/12.92:((n+.055)/1.055)**2.4;return[t(e[0]),t(e[1]),t(e[2])]}function Br(A){let e=Wi[A.preset??"studio"],t=A.intensity??1,n=r=>[r[0]*t,r[1]*t,r[2]*t];return{top:n(gt(A.top??e.top)),horizon:n(gt(A.horizon??e.horizon)),bottom:n(gt(A.bottom??e.bottom)),softboxes:(A.softboxes??e.softboxes)*t,rotationRad:(A.rotation??0)*Math.PI/180,exposureMultiplier:2**(A.exposure??0),toneMapping:zi[A.toneMapping??"neutral"],fog:A.fog?{color:gt(A.fog.color),start:A.fog.start,end:A.fog.end,opacity:Math.max(0,Math.min(1,A.fog.opacity??1))}:void 0}}k();var lt=8,$t=736;function jt(A){if(!A)return[1,1,1];if(Array.isArray(A)){let r=A[0]??1,i=A[1]??1,o=A[2]??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A=="object"&&A!==null){let r=A.r??1,i=A.g??1,o=A.b??1;return[r>1?r/255:r,i>1?i/255:i,o>1?o/255:o]}if(typeof A!="string")return[1,1,1];let e=A.trim().toLowerCase();if(e.startsWith("#")){let r=e.slice(1);if(r.length===3){let i=Number.parseInt(r[0]+r[0],16)/255,o=Number.parseInt(r[1]+r[1],16)/255,a=Number.parseInt(r[2]+r[2],16)/255;return[i,o,a]}if(r.length>=6){let i=Number.parseInt(r.slice(0,2),16)/255,o=Number.parseInt(r.slice(2,4),16)/255,a=Number.parseInt(r.slice(4,6),16)/255;return[i,o,a]}}let t=e.match(/rgba?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/);if(t){let r=Number.parseFloat(t[1])/255,i=Number.parseFloat(t[2])/255,o=Number.parseFloat(t[3])/255;return[Math.max(0,Math.min(1,r)),Math.max(0,Math.min(1,i)),Math.max(0,Math.min(1,o))]}let n=e.match(/hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%?\s*,\s*([\d.]+)%?/);if(n){let r=Number.parseFloat(n[1])/360,i=Number.parseFloat(n[2])/100,o=Number.parseFloat(n[3])/100;return Xi(r,i,o)}return[1,1,1]}function Xi(A,e,t){if(e===0)return[t,t,t];let n=(o,a,s)=>{let g=s;return g<0&&(g+=1),g>1&&(g-=1),g<1/6?o+(a-o)*6*g:g<1/2?a:g<2/3?o+(a-o)*(2/3-g)*6:o},r=t<.5?t*(1+e):t+e-t*e,i=2*t-r;return[n(i,r,A+1/3),n(i,r,A),n(i,r,A-1/3)]}var qA={computeNormalMatrix(A){let e=_.invert(A);return e?[e[0],e[4],e[8],0,e[1],e[5],e[9],0,e[2],e[6],e[10],0,0,0,0,1]:_.identity()},processLight(A){let e=jt(A.color),t=A.intensity??1,n=A.position?A.position[0]:A.x??0,r=A.position?A.position[1]:A.y??0,i=A.position?A.position[2]:A.z??0,o=A.lightType??A.type??"directional",a=1;o==="ambient"?a=0:o==="directional"?a=1:o==="point"?a=2:o==="spot"&&(a=3);let s=[0,0,-1];if(A.direction)s=H.normalize(A.direction);else if(A.target||A.targetX!==void 0||A.targetY!==void 0||A.targetZ!==void 0){let Q=A.target?A.target[0]:A.targetX??n,m=A.target?A.target[1]:A.targetY??r,D=A.target?A.target[2]:A.targetZ??i,p=[Q,m,D],G=H.subtract(p,[n,r,i]);H.length(G)>1e-4&&(s=H.normalize(G))}let g=Math.max(1,A.radius??1e3),l=A.decay??2,u=Math.max(.1,Math.min(180,A.angle??45)),c=Math.max(0,Math.min(1,A.penumbra??.2)),I=u*Math.PI/180,E=I*(1-c),d=Math.cos(I),h=Math.cos(E);return{posType:[n,r,i,a],dirRadius:[s[0],s[1],s[2],g],colorIntensity:[e[0],e[1],e[2],t],spotParams:[d,h,l,0]}},packLightsUniforms(A,e,t){let n=new Float32Array($t/4);if(qA.packPhysicalBlock(n,A??[],e,t),(!A||A.length===0)&&!e)return n[4]=0,n[5]=0,n;let r=0,i=0,o=0,a=[];for(let g of A)if((g.lightType??g.type)==="ambient"){let u=jt(g.color),c=g.intensity??1;r+=u[0]*c,i+=u[1]*c,o+=u[2]*c}else a.length<lt&&a.push(qA.processLight(g));n[0]=r,n[1]=i,n[2]=o,n[3]=1,n[4]=a.length,n[5]=1;let s=8;for(let g=0;g<lt;g++){if(g<a.length){let l=a[g];n[s+0]=l.posType[0],n[s+1]=l.posType[1],n[s+2]=l.posType[2],n[s+3]=l.posType[3],n[s+4]=l.dirRadius[0],n[s+5]=l.dirRadius[1],n[s+6]=l.dirRadius[2],n[s+7]=l.dirRadius[3],n[s+8]=l.colorIntensity[0],n[s+9]=l.colorIntensity[1],n[s+10]=l.colorIntensity[2],n[s+11]=l.colorIntensity[3],n[s+12]=l.spotParams[0],n[s+13]=l.spotParams[1],n[s+14]=l.spotParams[2],n[s+15]=l.spotParams[3]}else for(let l=0;l<16;l++)n[s+l]=0;s+=16}return n},shadowCasterIndex(A){let e=0;for(let t of A){let n=t.lightType??t.type;if(n!=="ambient"){if(e>=lt)break;if(t.castShadow&&(n==="directional"||n==="spot"))return e;e++}}return-1},packPhysicalBlock(A,e,t,n){let r=8+lt*16,i=0,o=0,a=0;for(let s of e){if((s.lightType??s.type)!=="ambient")continue;let[g,l,u]=jt(s.color),c=s.intensity??1,I=E=>E<=.04045?E/12.92:((E+.055)/1.055)**2.4;i+=I(g)*c,o+=I(l)*c,a+=I(u)*c}if(A[r+0]=i,A[r+1]=o,A[r+2]=a,A[r+3]=1,t){let s=Br(t);A[6]=1,A[7]=s.toneMapping,A[r+3]=s.exposureMultiplier,A.set([...s.top,s.rotationRad],r+4),A.set([...s.horizon,s.softboxes],r+8),A.set([...s.bottom,1],r+12),s.fog&&(A.set([...s.fog.color,1],r+16),A.set([s.fog.start,s.fog.end,s.fog.opacity,0],r+20))}if(n&&n.lightIndex>=0){A.set([1,n.lightIndex,n.softness,n.mapSize],r+24),A.set([n.bias,n.normalOffset,n.darkness,0],r+28);for(let s=0;s<16;s++)A[r+32+s]=n.matrix[s]??0}}};k();k();var An={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".webp":"image/webp",".gif":"image/gif",".tif":"image/tiff",".tiff":"image/tiff",".avif":"image/avif"};function Ue(A){return An[MA.extname(A).toLowerCase()]??"image/png"}function ut(A){let e=MA.extname(A.replace(/\\/g,"/")).toLowerCase();return!e||e in An}function ve(A,e){if(!A||typeof cA>"u"||!cA.existsSync||!ut(A))return;let t=A.trim().replace(/^file:\/\//,"");try{t=decodeURIComponent(t)}catch{}let n=t.replace(/\\/g,"/"),r=n.split("/").pop()??n,i=[];if(MA.isAbsolute(n)&&i.push(n),e){i.push(MA.resolve(e,n)),i.push(MA.join(e,r)),i.push(MA.join(e,"textures",r));try{for(let o of cA.readdirSync(e))o.toLowerCase().endsWith(".fbm")&&i.push(MA.join(e,o,r))}catch{}}for(let o of i)try{if(cA.existsSync(o)&&cA.statSync(o).isFile())return{bytes:new Uint8Array(cA.readFileSync(o)),mime:Ue(o)}}catch{}}function Ee(A,e,t){let n=ut(t)?"was not found":`is in an unsupported format (use ${Object.keys(An).join(", ")})`;console.warn(`[${A}] Texture "${t}" for material "${e}" ${n}; the material renders without it.`)}var Re=class A{static parse(e,t,n){let r=typeof t=="object"&&t!==null?t:n??{},i=typeof t=="string"?t:r.mtlText,o=[],a=[],s=[],g=[],l={materialName:"default",faces:[]};g.push(l);let u={};i&&Object.assign(u,A.loadTextures(A.parseMtl(i),r.basePath));let c=e.split(/\r?\n/);for(let P=0;P<c.length;P++){let nA=c[P]?.trim();if(!nA||nA.startsWith("#"))continue;let tA=nA.split(/\s+/),rA=tA[0]?.toLowerCase();if(rA==="mtllib"){let AA=tA.slice(1).join(" ").trim();if(r.basePath&&typeof cA<"u"&&cA.existsSync)try{let eA=MA.resolve(r.basePath,AA);if(cA.existsSync(eA)){let gA=cA.readFileSync(eA,"utf-8");Object.assign(u,A.loadTextures(A.parseMtl(gA),MA.dirname(eA)))}}catch{}}else if(rA==="v"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");o.push([AA,eA,gA])}else if(rA==="vn"){let AA=Number.parseFloat(tA[1]??"0"),eA=Number.parseFloat(tA[2]??"0"),gA=Number.parseFloat(tA[3]??"0");a.push([AA,eA,gA])}else if(rA==="vt"){let AA=Number.parseFloat(tA[1]??"0"),eA=tA[2]!==void 0?Number.parseFloat(tA[2]):0;s.push([AA,eA])}else if(rA==="usemtl"){let AA=tA[1]??"default";l.faces.length>0?(l={materialName:AA,faces:[]},g.push(l)):l.materialName=AA}else if(rA==="f"){let AA=[];for(let eA=1;eA<tA.length;eA++){let gA=tA[eA];if(!gA)continue;let lA=gA.split("/"),BA=Number.parseInt(lA[0]??"0",10),EA=lA[1]&&lA[1].length>0?Number.parseInt(lA[1],10):0,QA=lA[2]&&lA[2].length>0?Number.parseInt(lA[2],10):0;BA<0&&(BA=o.length+BA+1),EA<0&&(EA=s.length+EA+1),QA<0&&(QA=a.length+QA+1),AA.push({v:BA-1,vt:EA-1,vn:QA-1})}if(AA.length>=3)for(let eA=1;eA<AA.length-1;eA++){let gA=AA[0],lA=AA[eA],BA=AA[eA+1];gA&&lA&&BA&&l.faces.push([gA,lA,BA])}}}let I=1/0,E=1/0,d=1/0,h=-1/0,Q=-1/0,m=-1/0;for(let P of o){let[nA,tA,rA]=P;nA===void 0||tA===void 0||rA===void 0||(nA<I&&(I=nA),tA<E&&(E=tA),rA<d&&(d=rA),nA>h&&(h=nA),tA>Q&&(Q=tA),rA>m&&(m=rA))}Number.isFinite(I)||(I=-1,E=-1,d=-1,h=1,Q=1,m=1);let D=(I+h)*.5,p=(E+Q)*.5,G=(d+m)*.5,N=Math.max(1e-4,h-I),w=Math.max(1e-4,Q-E),U=Math.max(1e-4,m-d),b=Math.max(N,w,U),M=1;r.normalizeSize&&r.normalizeSize>0&&(M=r.normalizeSize/b),typeof r.scale=="number"&&(M*=r.scale);let v=r.center??!1,R=v?D:0,S=v?p:0,K=v?G:0,F=[];for(let P=0;P<g.length;P++){let nA=g[P];if(!nA||nA.faces.length===0)continue;let tA=new Map,rA=[],AA=[],eA=[],gA=[],lA=!1;for(let QA of nA.faces)for(let sA of QA){let yA=`${sA.v}_${sA.vt}_${sA.vn}`,bA=tA.get(yA);if(bA===void 0){bA=rA.length/3,tA.set(yA,bA);let wA=o[sA.v]??[0,0,0],hA=((wA[0]??0)-R)*M,VA=((wA[1]??0)-S)*M,YA=((wA[2]??0)-K)*M;if(rA.push(hA,VA,YA),sA.vt>=0&&s[sA.vt]){let FA=s[sA.vt];eA.push(FA[0]??0,1-(FA[1]??0))}else eA.push(0,0);if(sA.vn>=0&&a[sA.vn]){lA=!0;let FA=a[sA.vn];AA.push(FA[0]??0,FA[1]??0,FA[2]??0)}else AA.push(0,0,0)}gA.push(bA)}if(!lA||r.smoothNormals){let QA=new Float32Array(rA.length);for(let sA=0;sA<gA.length;sA+=3){let yA=gA[sA],bA=gA[sA+1],wA=gA[sA+2],hA=[rA[yA*3],rA[yA*3+1],rA[yA*3+2]],VA=[rA[bA*3],rA[bA*3+1],rA[bA*3+2]],YA=[rA[wA*3],rA[wA*3+1],rA[wA*3+2]],FA=H.subtract(VA,hA),Ht=H.subtract(YA,hA),vA=H.cross(FA,Ht);QA[yA*3]+=vA[0],QA[yA*3+1]+=vA[1],QA[yA*3+2]+=vA[2],QA[bA*3]+=vA[0],QA[bA*3+1]+=vA[1],QA[bA*3+2]+=vA[2],QA[wA*3]+=vA[0],QA[wA*3+1]+=vA[1],QA[wA*3+2]+=vA[2]}for(let sA=0;sA<rA.length/3;sA++){let yA=QA[sA*3],bA=QA[sA*3+1],wA=QA[sA*3+2],hA=Math.hypot(yA,bA,wA)||1;AA[sA*3]=yA/hA,AA[sA*3+1]=bA/hA,AA[sA*3+2]=wA/hA}}let EA=rA.length/3>65535?new Uint32Array(gA):new Uint16Array(gA);F.push({id:`mesh_${P}`,name:nA.materialName,positions:new Float32Array(rA),normals:new Float32Array(AA),uvs:new Float32Array(eA),indices:EA,materialName:nA.materialName})}let z=(I-R)*M,Z=(E-S)*M,$=(d-K)*M,aA=(h-R)*M,W=(Q-S)*M,Y=(m-K)*M,j=aA-z,IA=W-Z,dA=Y-$,uA=(z+aA)*.5,mA=(Z+W)*.5,pA=($+Y)*.5,X=Math.hypot(j,IA,dA)*.5;return{meshes:F,materials:u,animations:[],bounds:{min:[z,Z,$],max:[aA,W,Y],center:[uA,mA,pA],size:[j,IA,dA],boundingSphereRadius:X}}}static parseMtl(e){let t={},n=null,r=e.split(/\r?\n/);for(let i of r){let o=i.trim();if(!o||o.startsWith("#"))continue;let a=o.split(/\s+/),s=a[0]?.toLowerCase();if(s==="newmtl"){let g=a[1]??"default";n={name:g,diffuseColor:[1,1,1,1],specularColor:[1,1,1],ambientColor:[.2,.2,.2],shininess:32,opacity:1},t[g]=n}else if(n)if(s==="kd"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.diffuseColor=[g,l,u,n.diffuseColor?.[3]??1]}else if(s==="ks"){let g=Number.parseFloat(a[1]??"1"),l=Number.parseFloat(a[2]??"1"),u=Number.parseFloat(a[3]??"1");n.specularColor=[g,l,u],n.specularIntensity=(g+l+u)/3}else if(s==="ka"){let g=Number.parseFloat(a[1]??"0.2"),l=Number.parseFloat(a[2]??"0.2"),u=Number.parseFloat(a[3]??"0.2");n.ambientColor=[g,l,u]}else if(s==="ns")n.shininess=Number.parseFloat(a[1]??"32");else if(s==="d"||s==="tr"){let g=Number.parseFloat(a[1]??"1");n.opacity=s==="d"?g:1-g,n.diffuseColor&&(n.diffuseColor[3]=n.opacity)}else if(s==="map_kd"){n.diffuseTexture=A.mapFileName(a);let g=a.findIndex(l=>l.toLowerCase()==="-clamp");n.textureWrap=g>0&&a[g+1]?.toLowerCase()==="on"?"clamp":"repeat"}else(s==="norm"||s==="map_kn")&&(n.normalTexture=A.mapFileName(a))}return t}static MAP_OPTION_ARGS={"-blendu":1,"-blendv":1,"-cc":1,"-clamp":1,"-texres":1,"-bm":1,"-boost":1,"-imfchan":1,"-type":1,"-mm":2};static mapFileName(e){let t=1;for(;t<e.length&&e[t]?.startsWith("-");){let n=e[t].toLowerCase();if(t++,n==="-o"||n==="-s"||n==="-t")for(let r=0;r<3&&t<e.length&&!Number.isNaN(Number(e[t]));r++)t++;else t+=A.MAP_OPTION_ARGS[n]??0}return e.slice(t).join(" ")}static loadTextures(e,t){if(!t)return e;for(let n of Object.values(e)){if(n.diffuseTexture&&!n.diffuseTextureBuffer){let r=ve(n.diffuseTexture,t);r?(n.diffuseTextureBuffer=r.bytes,n.diffuseTextureMime=r.mime):Ee("ObjLoader",n.name,n.diffuseTexture)}if(n.normalTexture&&!n.normalTextureBuffer){let r=ve(n.normalTexture,t);r?n.normalTextureBuffer=r.bytes:Ee("ObjLoader",n.name,n.normalTexture)}}return e}};function bs(A,e,t={}){return Re.parse(A,e,t)}function Ds(A){return Re.parseMtl(A)}function Le(A,e,t={}){let n;if(typeof A!="string")n=new TextDecoder().decode(A);else{let r=A.trim();if(!(r.startsWith("v ")||r.startsWith("#")||r.includes(`
|
|
2
|
+
v `)||r.includes("\rv "))&&typeof cA<"u"&&cA.existsSync)try{let o=A.startsWith("file://")?A.slice(7):A;try{o=decodeURIComponent(o)}catch{}cA.existsSync(o)?(n=cA.readFileSync(o,"utf-8"),t={basePath:t.basePath??MA.dirname(o),...t}):n=A}catch{n=A}else n=A}return Re.parse(n,e,t)}k();var pr=_n(Er(),1);k();function ne(A,e,t){let n=r=>[A[r*3],A[r*3+1],A[r*3+2]];for(let r=0;r<e.length;r+=3){let i=e[r],o=e[r+1],a=e[r+2],s=n(i),g=H.cross(H.subtract(n(o),s),H.subtract(n(a),s));for(let l of[i,o,a])t[l*3]+=g[0],t[l*3+1]+=g[1],t[l*3+2]+=g[2]}for(let r=0;r<t.length;r+=3){let i=t[r],o=t[r+1],a=t[r+2],s=Math.hypot(i,o,a)||1;t[r]=i/s,t[r+1]=o/s,t[r+2]=a/s}}function HA(...A){let e=1/0,t=1/0,n=1/0,r=-1/0,i=-1/0,o=-1/0;for(let a of A)for(let s=0;s<a.length;s+=3){let g=a[s],l=a[s+1],u=a[s+2];g<e&&(e=g),g>r&&(r=g),l<t&&(t=l),l>i&&(i=l),u<n&&(n=u),u>o&&(o=u)}return Number.isFinite(e)||(e=t=n=0,r=i=o=0),{min:[e,t,n],max:[r,i,o],center:[(e+r)*.5,(t+i)*.5,(n+o)*.5],size:[r-e,i-t,o-n]}}function RA(A,e){let t=Math.max(...A.size,1e-4),n=1;e.normalizeSize&&e.normalizeSize>0&&(n=e.normalizeSize/t);let r=[n,n,n];return typeof e.scale=="number"?(r[0]*=e.scale,r[1]*=e.scale,r[2]*=e.scale):Array.isArray(e.scale)&&(r[0]*=e.scale[0],r[1]*=e.scale[1],r[2]*=e.scale[2]),{offset:e.center?A.center:[0,0,0],scale:r}}function JA(A,{offset:e,scale:t}){let n=new Float32Array(A.length);for(let r=0;r<A.length;r+=3)n[r]=(A[r]-e[0])*t[0],n[r+1]=(A[r+1]-e[1])*t[1],n[r+2]=(A[r+2]-e[2])*t[2];return n}function OA(A,e){return e>65535?new Uint32Array(A):new Uint16Array(A)}function KA(A,{offset:e,scale:t}){let n=[(A.min[0]-e[0])*t[0],(A.min[1]-e[1])*t[1],(A.min[2]-e[2])*t[2]],r=[(A.max[0]-e[0])*t[0],(A.max[1]-e[1])*t[1],(A.max[2]-e[2])*t[2]];return{min:n,max:r,center:[(n[0]+r[0])*.5,(n[1]+r[1])*.5,(n[2]+r[2])*.5],size:[r[0]-n[0],r[1]-n[1],r[2]-n[2]],boundingSphereRadius:Math.hypot(r[0]-n[0],r[1]-n[1],r[2]-n[2])*.5}}k();var re=128;function Zi(A,e,t){let[n,r,i,o]=e,a=n*n,s=r*r,g=i*i,l=n*r,u=n*i,c=r*i,I=o*n,E=o*r,d=o*i;return[(1-2*(s+g))*t[0],2*(l+d)*t[0],2*(u-E)*t[0],0,2*(l-d)*t[1],(1-2*(a+g))*t[1],2*(c+I)*t[1],0,2*(u+E)*t[2],2*(c-I)*t[2],(1-2*(a+s))*t[2],0,A[0],A[1],A[2],1]}function dr(A){let e=Math.hypot(A[0],A[1],A[2],A[3])||1;return[A[0]/e,A[1]/e,A[2]/e,A[3]/e]}function qi(A,e,t){let n=A[0]*e[0]+A[1]*e[1]+A[2]*e[2]+A[3]*e[3],r=n<0?-1:1;if(n*=r,n>.9995)return dr([A[0]+(r*e[0]-A[0])*t,A[1]+(r*e[1]-A[1])*t,A[2]+(r*e[2]-A[2])*t,A[3]+(r*e[3]-A[3])*t]);let i=Math.acos(n),o=Math.sin(i),a=Math.sin((1-t)*i)/o,s=r*Math.sin(t*i)/o;return[A[0]*a+e[0]*s,A[1]*a+e[1]*s,A[2]*a+e[2]*s,A[3]*a+e[3]*s]}function _i(A,e){let t=0,n=A.length-1;for(;t<n;){let r=t+n+1>>1;(A[r]??0)<=e?t=r:n=r-1}return t}function oe(A,e,t,n,r=1){let i=n?(e*3+r)*t:e*t;return Array.from(A.subarray(i,i+t))}function en(A,e,t,n){let{times:r}=A,i=A.interpolation==="cubic",o=r.length-1;if(n<=(r[0]??0))return oe(e,0,t,i);if(n>=(r[o]??0))return oe(e,o,t,i);let a=_i(r,n);if(A.interpolation==="step")return oe(e,a,t,i);let s=r[a]??0,g=(r[a+1]??s)-s,l=g>0?(n-s)/g:0,u=oe(e,a,t,i),c=oe(e,a+1,t,i);if(i){let I=oe(e,a,t,!0,2),E=oe(e,a+1,t,!0,0),d=l*l,h=d*l,Q=u.map((m,D)=>(2*h-3*d+1)*m+(h-2*d+l)*g*(I[D]??0)+(-2*h+3*d)*(c[D]??0)+(h-d)*g*(E[D]??0));return t===4?dr(Q):Q}return t===4?qi(u,c,l):u.map((I,E)=>I+((c[E]??I)-I)*l)}function ji(A,e,t){let n=A.map(a=>[...a.translation]),r=A.map(a=>[...a.rotation]),i=A.map(a=>[...a.scale]),o=new Map(A.map((a,s)=>[a.name,s]));for(let a of e?.tracks??[]){let s=a.node??o.get(a.nodeName);s===void 0||!a.times.length||(a.translations&&(n[s]=en(a,a.translations,3,t)),a.rotations&&(r[s]=en(a,a.rotations,4,t)),a.scales&&(i[s]=en(a,a.scales,3,t)))}return A.map((a,s)=>a.matrix??Zi(n[s],r[s],i[s]))}function It(A,e,t){let n=A.nodes??[],r=ji(n,e,t),i=new Array(n.length),o=a=>{let s=i[a];if(s)return s;let g=n[a].parent,l=g<0?r[a]:_.multiply(o(g),r[a]);return i[a]=l,l};return n.map((a,s)=>o(s))}function vs(A,e,t){let n=A.skins?.[e];if(!n)throw new Error(`model has no skin ${e}`);let r=new Float32Array(re*16);for(let i=0;i<re;i++){let o=n.joints[i];if(o===void 0){r.set(_.identity(),i*16);continue}let a=Array.from(n.inverseBindMatrices.subarray(i*16,i*16+16));r.set(_.multiply(t[o],a),i*16)}return r}var ae=class A{static FBX_KTIME=46186158e3;static parse(e,t={}){let n=typeof e=="string"?A.parseAscii(e):A.isBinary(e)?A.parseBinary(e):A.parseAscii(new TextDecoder().decode(e));return A.buildModelFromTree(n,t)}static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<27)return!1;let n="Kaydara FBX Binary \0\0";for(let r=0;r<n.length;r++)if(t[r]!==n.charCodeAt(r))return!1;return!0}static parseBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(23,!0)>=7500,o=27,a={name:"Root",props:[],children:[]},s=()=>{if(o>=t.byteLength)return null;let g,l,u;if(i){if(o+25>t.byteLength)return null;g=Number(n.getBigUint64(o,!0)),l=Number(n.getBigUint64(o+8,!0)),u=n.getUint8(o+24),o+=25}else{if(o+13>t.byteLength)return null;g=n.getUint32(o,!0),l=n.getUint32(o+4,!0),u=n.getUint8(o+12),o+=13}if(g===0)return null;let c=new TextDecoder().decode(t.subarray(o,o+u));o+=u;let I=[];for(let d=0;d<l;d++){let h=String.fromCharCode(t[o]);switch(o+=1,h){case"Y":{I.push(n.getInt16(o,!0)),o+=2;break}case"C":case"B":{I.push(n.getUint8(o)!==0),o+=1;break}case"I":{I.push(n.getInt32(o,!0)),o+=4;break}case"F":{I.push(n.getFloat32(o,!0)),o+=4;break}case"D":{I.push(n.getFloat64(o,!0)),o+=8;break}case"L":{I.push(Number(n.getBigInt64(o,!0))),o+=8;break}case"S":{let Q=n.getUint32(o,!0);o+=4;let m=new TextDecoder().decode(t.subarray(o,o+Q));I.push(m),o+=Q;break}case"R":{let Q=n.getUint32(o,!0);o+=4;let m=t.subarray(o,o+Q);I.push(m),o+=Q;break}case"f":case"d":case"i":case"l":case"b":case"c":{let Q=n.getUint32(o,!0),m=n.getUint32(o+4,!0),D=n.getUint32(o+8,!0);o+=12;let p;if(m===1){let N=t.subarray(o,o+D);p=(0,pr.inflateSync)(N),o+=D}else{let w=Q*(h==="d"||h==="l"?8:h==="f"||h==="i"?4:1);p=t.subarray(o,o+w),o+=w}let G=new DataView(p.buffer,p.byteOffset,p.byteLength);if(h==="f"){let N=new Float32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat32(w*4,!0);I.push(N)}else if(h==="d"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=G.getFloat64(w*8,!0);I.push(N)}else if(h==="i"){let N=new Int32Array(Q);for(let w=0;w<Q;w++)N[w]=G.getInt32(w*4,!0);I.push(N)}else if(h==="l"){let N=new Float64Array(Q);for(let w=0;w<Q;w++)N[w]=Number(G.getBigInt64(w*8,!0));I.push(N)}else if(h==="b"){let N=new Uint8Array(Q);for(let w=0;w<Q;w++)N[w]=G.getUint8(w);I.push(N)}else I.push(p);break}default:break}}let E=[];for(;o<g;){let d=s();if(d)E.push(d);else break}return o=g,{name:c,props:I,children:E}};for(;o<t.byteLength-(i?25:13);){let g=s();if(g)a.children.push(g);else break}return a}static parseAscii(e){let t={name:"Root",props:[],children:[]},n=[t],r=e.split(/\r?\n/);for(let i=0;i<r.length;i++){let o=r[i]?.trim();if(!o||o.startsWith(";"))continue;if(o==="}"){n.length>1&&n.pop();continue}let a=o.indexOf(":");if(a===-1)continue;let s=o.substring(0,a).trim(),g=o.substring(a+1).trim(),l=g.endsWith("{"),u=l?g.slice(0,-1).trim():g,c=[];if(u){let d=u.split(",").map(h=>h.trim());for(let h of d)h.startsWith('"')&&h.endsWith('"')?c.push(h.slice(1,-1)):Number.isNaN(Number(h))?c.push(h):c.push(Number(h))}let I={name:s,props:c,children:[]},E=n[n.length-1];E&&E.children.push(I),l&&n.push(I)}return t}static textureSlot(e){let t=e.toLowerCase();if(t==="diffusecolor"||t==="diffuse"||t.endsWith("|basecolor")||t.endsWith("|base_color")||t==="basecolor")return"diffuse";if(t==="normalmap"||t.endsWith("|normalcamera")||t.endsWith("|bump_map"))return"normal"}static attachTextures(e,t,n,r,i){let o=(a,s)=>{let g=a?.children.find(l=>l.name===s)?.props[0];return typeof g=="string"&&g?g:void 0};for(let a of r){if(a.parentId!==t||!a.propName)continue;let s=A.textureSlot(a.propName),g=n.get(a.childId);if(!s||g?.node.name!=="Texture"||(s==="diffuse"?e.diffuseTextureBuffer:e.normalTextureBuffer))continue;let l=r.filter(E=>E.parentId===a.childId&&!E.propName).map(E=>n.get(E.childId)?.node).find(E=>E?.name==="Video"),u=o(g.node,"RelativeFilename")??o(g.node,"FileName")??o(l,"RelativeFilename")??o(l,"Filename");if(u&&!ut(u)){Ee("FbxLoader",e.name,u);continue}let c,I=l?.children.find(E=>E.name==="Content")?.props[0];if(I instanceof Uint8Array&&I.length>0?c=I:u&&(c=ve(u,i)?.bytes),!c){u&&Ee("FbxLoader",e.name,u);continue}s==="diffuse"?(e.diffuseTextureBuffer=c,e.diffuseTextureMime=Ue(u??""),u&&(e.diffuseTexture=u),e.textureWrap="repeat"):(e.normalTextureBuffer=c,u&&(e.normalTexture=u))}}static buildModelFromTree(e,t={}){let n=e.children.find(b=>b.name==="Objects"),r=e.children.find(b=>b.name==="Connections"),i=new Map;if(n)for(let b of n.children){let M=b.props[0]??0,R=String(b.props[1]??"").split("::"),S=R.length>1?R[1]:R[0],K=String(b.props[2]??b.name);i.set(M,{id:M,name:S,type:K,node:b})}let o=[];if(r){for(let b of r.children)if(b.name==="C"||b.name==="Connect"){let M=String(b.props[0]),v=b.props[1]??0,R=b.props[2]??0,S=M==="OP"?String(b.props[3]):void 0;o.push({childId:v,parentId:R,propName:S})}}let a=b=>{for(let M of o){let v=M.parentId===b?i.get(M.childId):void 0;if(v?.node.name==="Material"&&!M.propName)return v.name}for(let M of o)if(!(M.childId!==b||M.propName))for(let v of o){if(v.parentId!==M.parentId||v.propName)continue;let R=i.get(v.childId);if(R?.node.name==="Material")return R.name}},s=[],g={};function l(b){if(!b)return[];if(b.props[0]instanceof Float32Array||b.props[0]instanceof Float64Array||b.props[0]instanceof Int32Array||Array.isArray(b.props[0]))return b.props[0];let M=b.children.find(v=>v.name==="a");return M&&M.props.length>0?M.props:Array.isArray(b.props)&&b.props.length>0&&typeof b.props[0]=="number"?b.props:[]}let u=[...i.values()].filter(b=>b.node.name==="Model").map(b=>b.id),c=new Map(u.map((b,M)=>[b,M])),I=u.map(b=>{let M=i.get(b),v=o.find(R=>R.childId===b&&!R.propName&&c.has(R.parentId));return{name:M.name,parent:v?c.get(v.parentId):-1,translation:ke(M.node,"Lcl Translation",0),rotation:Qr(M.node,Bt(ke(M.node,"Lcl Rotation",0),yr(M.node))),scale:ke(M.node,"Lcl Scaling",1)}}),E=b=>o.find(M=>M.childId===b&&!M.propName&&c.has(M.parentId))?.parentId,d=[];for(let[b,M]of i)if(M.node.name==="Geometry"&&(M.type==="Mesh"||M.node.props[2]==="Mesh"||M.type==="")){let v=M.node,R=v.children.find(AA=>AA.name==="Vertices"),S=v.children.find(AA=>AA.name==="PolygonVertexIndex");if(!R||!S)continue;let K=l(R),F=l(S),z=(AA,eA,gA,lA)=>{let BA=v.children.find(EA=>EA.name===AA);if(BA)return $i(BA,l(BA.children.find(EA=>EA.name===eA)),l(BA.children.find(EA=>EA.name===gA)),lA)},Z=z("LayerElementNormal","Normals","NormalsIndex",3),$=z("LayerElementUV","UV","UVIndex",2),aA=[],W=[],Y=0;for(let AA=0;AA<F.length;AA++){let eA=F[AA];if(W.push({cp:eA<0?-(eA+1):eA,pv:AA}),!(eA>=0)){for(let gA=1;gA<W.length-1;gA++)for(let lA of[W[0],W[gA],W[gA+1]])aA.push({...lA,poly:Y});W=[],Y++}}let j=aA.length,IA=new Float32Array(j*3),dA=new Float32Array(j*3),uA=new Float32Array(j*2),mA=new Array(j);aA.forEach(({cp:AA,pv:eA,poly:gA},lA)=>{IA[lA*3]=K[AA*3]??0,IA[lA*3+1]=K[AA*3+1]??0,IA[lA*3+2]=K[AA*3+2]??0;let BA=Z?.(AA,eA,gA);dA.set(BA??[0,0,1],lA*3);let EA=$?.(AA,eA,gA);uA[lA*2]=EA?.[0]??0,uA[lA*2+1]=1-(EA?.[1]??0),mA[lA]=lA}),(!Z||t.smoothNormals)&&(dA.fill(0),ne(IA,mA,dA));let pA=o.find(AA=>AA.parentId===b&&i.get(AA.childId)?.node.name==="Deformer"&&i.get(AA.childId)?.node.props[2]==="Skin"),X,P,nA;if(pA){let AA=[],eA=[],gA=new Map;for(let lA of o){let BA=i.get(lA.childId);if(lA.parentId!==pA.childId||BA?.node.name!=="Deformer"||BA.node.props[2]!=="Cluster")continue;let EA=o.find(hA=>hA.parentId===BA.id&&c.has(hA.childId))?.childId;if(EA===void 0)continue;let QA=AA.length;AA.push(c.get(EA));let sA=mr(BA.node,"Transform"),yA=mr(BA.node,"TransformLink");eA.push(..._.multiply(_.invert(yA)??_.identity(),sA));let bA=l(BA.node.children.find(hA=>hA.name==="Indexes")),wA=l(BA.node.children.find(hA=>hA.name==="Weights"));for(let hA=0;hA<bA.length;hA++){let VA=Number(wA[hA]??0);if(!(VA>0))continue;let YA=Number(bA[hA]),FA=gA.get(YA)??[];FA.push([QA,VA]),gA.set(YA,FA)}}if(AA.length>re)throw new Error(`FBX skin has ${AA.length} bones; the mesh shader holds ${re}`);AA.length>0&&(nA=d.length,d.push({joints:AA,inverseBindMatrices:new Float32Array(eA)}),X=new Float32Array(j*4),P=new Float32Array(j*4),aA.forEach(({cp:lA},BA)=>{let EA=(gA.get(lA)??[]).sort((sA,yA)=>yA[1]-sA[1]).slice(0,4),QA=EA.reduce((sA,[,yA])=>sA+yA,0);EA.forEach(([sA,yA],bA)=>{X[BA*4+bA]=sA,P[BA*4+bA]=QA>0?yA/QA:0})}))}let tA=E(b),rA=j>65535;s.push({id:`fbx_mesh_${b}`,name:M.name,positions:IA,normals:dA,uvs:uA,indices:rA?new Uint32Array(mA):new Uint16Array(mA),jointIndices:X,jointWeights:P,materialName:a(b)??M.name,node:tA!==void 0?c.get(tA):void 0,skin:nA})}for(let[,b]of i)if(b.node.name==="Material"){let v=b.node.children.find(z=>z.name==="Properties70"),R=[1,1,1,1],S=32,K=1;if(v){for(let z of v.children)if(z.name==="P"){let Z=String(z.props[0]);if(Z==="DiffuseColor"||Z==="Color"){let $=Number(z.props[4]??1),aA=Number(z.props[5]??1),W=Number(z.props[6]??1);R=[$,aA,W,1]}else Z==="Shininess"||Z==="ShininessExponent"?S=Number(z.props[4]??32):Z==="Opacity"&&(K=Number(z.props[4]??1),R[3]=K)}}let F={name:b.name,diffuseColor:R,shininess:S,opacity:K};A.attachTextures(F,b.id,i,o,t.basePath),g[b.name]=F}let h=[];for(let[b,M]of i)if(M.node.name==="AnimationStack"){let v=M.name||"Take 001",R=[],S=o.find(F=>F.parentId===b&&i.get(F.childId)?.node.name==="AnimationLayer");if(S){let F=o.filter(Z=>Z.parentId===S.childId&&i.get(Z.childId)?.node.name==="AnimationCurveNode"),z=new Map;for(let Z of F){let $=i.get(Z.childId);if(!$)continue;let aA=o.find(uA=>uA.childId===$.id&&i.get(uA.parentId)?.node.name==="Model"),W=aA?i.get(aA.parentId):void 0,Y=hr(aA?.propName)??hr($.name);if(!Y)continue;let j=`${W?.id??$.id}|${Y}`,IA=z.get(j);if(!IA){let uA=W?.node;IA={nodeName:W?.name??$.name,modelId:W?.id,model:uA,kind:Y,defaults:eo(uA,$.node,Y),channels:[void 0,void 0,void 0]},z.set(j,IA)}o.filter(uA=>uA.parentId===$.id&&i.get(uA.childId)?.node.name==="AnimationCurve").forEach((uA,mA)=>{let pA=Ao(uA.propName)??mA;if(pA>2)return;let X=i.get(uA.childId)?.node,P=l(X?.children.find(rA=>rA.name==="KeyTime")),nA=l(X?.children.find(rA=>rA.name==="KeyValueFloat")),tA=Math.min(P.length,nA.length);tA!==0&&(IA.channels[pA]={times:Array.from(P.slice(0,tA),rA=>Number(rA)),values:Array.from(nA.slice(0,tA),rA=>Number(rA))})})}for(let Z of z.values()){let $=ro(Z);if($){if(Z.modelId!==void 0&&($.node=c.get(Z.modelId)),$.rotations&&Z.model)for(let aA=0;aA<$.rotations.length;aA+=4){let W=Array.from($.rotations.subarray(aA,aA+4));$.rotations.set(Qr(Z.model,W),aA)}R.push($)}}}let K=1;for(let F of R)if(F.times.length>0){let z=F.times[F.times.length-1]??0;z>K&&(K=z)}h.push({name:v,duration:K,fps:30,tracks:R})}let Q={meshes:s,materials:g,animations:h,nodes:I,skins:d,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},m=It(Q,void 0,0),D=[1/0,1/0,1/0],p=[-1/0,-1/0,-1/0];for(let b of s){let M=b.node!==void 0?m[b.node]:void 0;for(let v=0;v<b.positions.length;v+=3){let R=[b.positions[v],b.positions[v+1],b.positions[v+2]],S=M?_.projectPoint(M,R):R;for(let K=0;K<3;K++)S[K]<D[K]&&(D[K]=S[K]),S[K]>p[K]&&(p[K]=S[K])}}Number.isFinite(D[0])||(D.fill(-1),p.fill(1));let{offset:G,scale:N}=RA({min:D,max:p,center:[(D[0]+p[0])*.5,(D[1]+p[1])*.5,(D[2]+p[2])*.5],size:[p[0]-D[0],p[1]-D[1],p[2]-D[2]]},t);Q.rootTransform=_.multiply(_.scale(N[0],N[1],N[2]),_.translate(-G[0],-G[1],-G[2]));let w=[0,1,2].map(b=>(D[b]-G[b])*N[b]),U=[0,1,2].map(b=>(p[b]-G[b])*N[b]);return Q.bounds={min:w,max:U,center:[(w[0]+U[0])*.5,(w[1]+U[1])*.5,(w[2]+U[2])*.5],size:[U[0]-w[0],U[1]-w[1],U[2]-w[2]],boundingSphereRadius:Math.hypot(U[0]-w[0],U[1]-w[1],U[2]-w[2])*.5},Q}};function ke(A,e,t){let n=de(A,e);return[0,1,2].map(r=>{let i=n?.[r];return i!==void 0&&Number.isFinite(i)?i:t})}function Cr(A,e){return[A[3]*e[0]+A[0]*e[3]+A[1]*e[2]-A[2]*e[1],A[3]*e[1]-A[0]*e[2]+A[1]*e[3]+A[2]*e[0],A[3]*e[2]+A[0]*e[1]-A[1]*e[0]+A[2]*e[3],A[3]*e[3]-A[0]*e[0]-A[1]*e[1]-A[2]*e[2]]}function Qr(A,e){let t=de(A,"PreRotation"),n=de(A,"PostRotation"),r=e;if(t&&(r=Cr(Bt(ke(A,"PreRotation",0)),r)),n){let i=Bt(ke(A,"PostRotation",0));r=Cr(r,[-i[0],-i[1],-i[2],i[3]])}return r}function mr(A,e){let t=A.children.find(i=>i.name===e),n=t?.children.find(i=>i.name==="a")?.props??t?.props,r=n?.[0]instanceof Float64Array||n?.[0]instanceof Float32Array?Array.from(n[0]):(n??[]).map(Number);return r.length===16?r:_.identity()}function $i(A,e,t,n){if(e.length===0)return;let r=a=>String(A.children.find(s=>s.name===a)?.props[0]??""),i=r("MappingInformationType"),o=/^Index/.test(r("ReferenceInformationType"))&&t.length>0;return(a,s,g)=>{let l=i==="ByPolygonVertex"?s:i==="ByPolygon"?g:i==="AllSame"?0:a;return o&&(l=Number(t[l]??l)),Array.from({length:n},(u,c)=>Number(e[l*n+c]??0))}}function hr(A){switch(A){case"Lcl Translation":case"T":return"T";case"Lcl Rotation":case"R":return"R";case"Lcl Scaling":case"S":return"S";default:return}}function Ao(A){switch(A){case"d|X":return 0;case"d|Y":return 1;case"d|Z":return 2;default:return}}function de(A,e){let n=A?.children.find(r=>r.name==="Properties70")?.children.find(r=>r.name==="P"&&r.props[0]===e);if(n)return n.props.slice(4).map(r=>Number(r))}function eo(A,e,t){let n=t==="S"?1:0,r=de(A,t==="T"?"Lcl Translation":t==="R"?"Lcl Rotation":"Lcl Scaling"),i=[n,n,n];for(let o=0;o<3;o++){let a=r?.[o],s=de(e,`d|${"XYZ"[o]}`)?.[0],g=a??s;g!==void 0&&Number.isFinite(g)&&(i[o]=g)}return i}var to=["XYZ","XZY","YZX","YXZ","ZXY","ZYX"];function yr(A){let e=de(A,"RotationOrder")?.[0]??0;return to[e]??"XYZ"}function Bt(A,e="XYZ"){let t=[0,0,0,1];for(let n of e){let r="XYZ".indexOf(n),i=(A[r]??0)*Math.PI/360,o=Math.sin(i),a=[0,0,0,Math.cos(i)];a[r]=o,t=[a[3]*t[0]+a[0]*t[3]+a[1]*t[2]-a[2]*t[1],a[3]*t[1]-a[0]*t[2]+a[1]*t[3]+a[2]*t[0],a[3]*t[2]+a[0]*t[1]-a[1]*t[0]+a[2]*t[3],a[3]*t[3]-a[0]*t[0]-a[1]*t[1]-a[2]*t[2]]}return t}function no(A,e){let{times:t,values:n}=A,r=t.length-1;if(e<=t[0])return n[0];if(e>=t[r])return n[r];let i=0;for(;i<r-1&&t[i+1]<=e;)i++;let o=t[i],a=t[i+1],s=a>o?(e-o)/(a-o):0;return n[i]+(n[i+1]-n[i])*s}function ro(A){let e=new Set;for(let s of A.channels)for(let g of s?.times??[])e.add(g);if(e.size===0)return;let t=[...e].sort((s,g)=>s-g),n=new Float32Array(t.length),r=A.kind==="R",i=new Float32Array(t.length*(r?4:3)),o=r?yr(A.model):"XYZ",a;return t.forEach((s,g)=>{n[g]=s/ae.FBX_KTIME;let l=[0,1,2].map(c=>{let I=A.channels[c];return I?no(I,s):A.defaults[c]});if(!r){i.set(l,g*3);return}let u=Bt(l,o);if(a&&a[0]*u[0]+a[1]*u[1]+a[2]*u[2]+a[3]*u[3]<0)for(let c=0;c<4;c++)u[c]=-u[c];a=u,i.set(u,g*4)}),{nodeName:A.nodeName,times:n,translations:A.kind==="T"?i:void 0,rotations:r?i:void 0,scales:A.kind==="S"?i:void 0}}function Ks(A,e={}){return ae.parse(A,e)}function Pe(A,e={}){let t=A;if(typeof A=="string"){let n=A.trim();if(!(n.includes("FBXHeaderExtension")||n.includes("Kaydara FBX"))&&typeof cA<"u"&&cA.existsSync)try{let i=A.startsWith("file://")?A.slice(7):A;try{i=decodeURIComponent(i)}catch{}if(cA.existsSync(i)){let o=cA.readFileSync(i);t=new Uint8Array(o.buffer,o.byteOffset,o.byteLength),e={basePath:MA.dirname(i),...e}}}catch{}}return ae.parse(t,e)}k();k();var br=`
|
|
3
3
|
struct AudioLatentBuffer {
|
|
4
4
|
fftBins : array<f32, 1024>,
|
|
5
5
|
bassEnergy : f32,
|
|
@@ -138,9 +138,9 @@ fn cs_displace(@builtin(global_invocation_id) gid : vec3<u32>) {
|
|
|
138
138
|
|
|
139
139
|
dstVertices[idx] = outV;
|
|
140
140
|
}
|
|
141
|
-
`;var io={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},
|
|
142
|
-
`)?t.length>=84+r*50:!a.startsWith("solid")}static parse(e,t={}){if(typeof e=="string")return A.parseAscii(e,t);let n=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isBinary(n))return A.parseBinary(n,t);let r=new TextDecoder("utf-8").decode(n);return A.parseAscii(r,t)}static parseBinary(e,t={}){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(80,!0),i=[],o=[],a=[],s=84;for(let g=0;g<r&&!(s+50>e.byteLength);g++){let l=n.getFloat32(s,!0),u=n.getFloat32(s+4,!0),c=n.getFloat32(s+8,!0);s+=12;let
|
|
143
|
-
`,i);return o===-1?o=i+10:o+=1,{text:r.substring(0,o),endOffset:o}}static parseHeader(e){let t=e.split(/\r?\n/),n="ascii",r="1.0",i=[],o=null;for(let a of t){let s=a.trim();if(!s||s.startsWith("comment"))continue;let g=s.split(/\s+/),l=g[0]?.toLowerCase();if(l!=="ply"){if(l==="format"){let u=g[1]?.toLowerCase();u==="binary_little_endian"?n="binary_little_endian":u==="binary_big_endian"?n="binary_big_endian":n="ascii",r=g[2]??"1.0"}else if(l==="element"){let u=g[1]??"",c=Number.parseInt(g[2]??"0",10);o={name:u,count:c,properties:[]},i.push(o)}else if(l==="property"&&o)g[1]?.toLowerCase()==="list"?o.properties.push({name:g[4]??"",type:"list",isList:!0,countType:g[2]??"uchar",itemType:g[3]??"int"}):o.properties.push({name:g[2]??"",type:g[1]?.toLowerCase()??"float"});else if(l==="end_header")break}}return{format:n,version:r,elements:i}}static parseAsciiBody(e,t,n){let r=e.elements.find(F=>F.name==="vertex"),i=e.elements.find(F=>F.name==="face"),o=r?.count??0,a=i?.count??0,s=[],g=[],l=[],u=[],c=[],B=r?.properties??[],E=B.findIndex(F=>F.name==="x"),d=B.findIndex(F=>F.name==="y"),h=B.findIndex(F=>F.name==="z"),Q=B.findIndex(F=>F.name==="nx"),m=B.findIndex(F=>F.name==="ny"),D=B.findIndex(F=>F.name==="nz"),p=B.findIndex(F=>F.name==="u"||F.name==="s"||F.name==="texture_u"),G=B.findIndex(F=>F.name==="v"||F.name==="t"||F.name==="texture_v"),N=B.findIndex(F=>F.name==="red"||F.name==="r"),w=B.findIndex(F=>F.name==="green"||F.name==="g"),U=B.findIndex(F=>F.name==="blue"||F.name==="b"),b=B.findIndex(F=>F.name==="alpha"||F.name==="a"),M=Q!==-1&&m!==-1&&D!==-1,v=N!==-1&&w!==-1&&U!==-1,R=p!==-1&&G!==-1,S=t.trim().split(/\r?\n/),K=0;for(let F=0;F<o&&!(K>=S.length);F++){let z=S[K++]?.trim();if(!z)continue;let Z=z.split(/\s+/),$=Number.parseFloat(Z[E]??"0")||0,aA=Number.parseFloat(Z[d]??"0")||0,W=Number.parseFloat(Z[h]??"0")||0;if(s.push($,aA,W),M){let Y=Number.parseFloat(Z[Q]??"0")||0,j=Number.parseFloat(Z[m]??"0")||0,IA=Number.parseFloat(Z[D]??"0")||0;g.push(Y,j,IA)}else g.push(0,0,0);if(R){let Y=Number.parseFloat(Z[p]??"0")||0,j=Number.parseFloat(Z[G]??"0")||0;l.push(Y,1-j)}else l.push(0,0);if(v){let Y=(Number.parseFloat(Z[N]??"255")||0)/255,j=(Number.parseFloat(Z[w]??"255")||0)/255,IA=(Number.parseFloat(Z[U]??"255")||0)/255,dA=b!==-1?(Number.parseFloat(Z[b]??"255")||0)/255:1;u.push(Y,j,IA,dA)}}for(let F=0;F<a&&!(K>=S.length);F++){let z=S[K++]?.trim();if(!z)continue;let Z=z.split(/\s+/),$=Number.parseInt(Z[0]??"0",10);if($>=3){let aA=Number.parseInt(Z[1]??"0",10);for(let W=1;W<$-1;W++){let Y=Number.parseInt(Z[W+1]??"0",10),j=Number.parseInt(Z[W+2]??"0",10);c.push(aA,Y,j)}}}return A.finalizeModel(s,g,l,v?u:void 0,c,M,n)}static parseBinaryBody(e,t,n,r){let i=new DataView(t.buffer,t.byteOffset,t.byteLength),o=0,a=e.elements.find(N=>N.name==="vertex"),s=e.elements.find(N=>N.name==="face"),g=a?.count??0,l=s?.count??0,u=[],c=[],B=[],E=[],d=[],h=a?.properties??[],Q=h.some(N=>N.name==="nx"),m=h.some(N=>N.name==="red"||N.name==="r"),D=N=>{let w=0;switch(N.toLowerCase()){case"char":case"int8":w=i.getInt8(o),o+=1;break;case"uchar":case"uint8":w=i.getUint8(o),o+=1;break;case"short":case"int16":w=i.getInt16(o,n),o+=2;break;case"ushort":case"uint16":w=i.getUint16(o,n),o+=2;break;case"int":case"int32":w=i.getInt32(o,n),o+=4;break;case"uint":case"uint32":w=i.getUint32(o,n),o+=4;break;case"float":case"float32":w=i.getFloat32(o,n),o+=4;break;case"double":case"float64":w=i.getFloat64(o,n),o+=8;break;default:w=i.getFloat32(o,n),o+=4;break}return w};for(let N=0;N<g;N++){let w=0,U=0,b=0,M=0,v=0,R=0,S=0,K=0,F=1,z=1,Z=1,$=1;for(let aA of h){let W=D(aA.type),Y=aA.name.toLowerCase();Y==="x"?w=W:Y==="y"?U=W:Y==="z"?b=W:Y==="nx"?M=W:Y==="ny"?v=W:Y==="nz"?R=W:Y==="u"||Y==="s"?S=W:Y==="v"||Y==="t"?K=W:Y==="red"||Y==="r"?F=aA.type.includes("int")?W/255:W:Y==="green"||Y==="g"?z=aA.type.includes("int")?W/255:W:Y==="blue"||Y==="b"?Z=aA.type.includes("int")?W/255:W:(Y==="alpha"||Y==="a")&&($=aA.type.includes("int")?W/255:W)}u.push(w,U,b),c.push(M,v,R),B.push(S,1-K),m&&E.push(F,z,Z,$)}let G=(s?.properties??[]).find(N=>N.isList);for(let N=0;N<l&&!(o>=t.byteLength);N++)if(G){let w=D(G.countType??"uchar"),U=[];for(let b=0;b<w;b++)U.push(D(G.itemType??"int"));if(U.length>=3){let b=U[0];for(let M=1;M<U.length-1;M++)d.push(b,U[M],U[M+1])}}return A.finalizeModel(u,c,B,m?E:void 0,d,Q,r)}static finalizeModel(e,t,n,r,i,o,a){(!o||a.smoothNormals)&&ne(e,i,t);let s=HA(e),g=RA(s,a),l=JA(e,g),u=OA(i,l.length/3),c={name:"ply_default",diffuseColor:r?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial};return{name:"PLY_Model",meshes:[{id:"ply_mesh_0",name:"ply_geometry",positions:l,normals:new Float32Array(t),uvs:new Float32Array(n),colors:r?new Float32Array(r):void 0,indices:u,materialName:"ply_default"}],materials:{ply_default:c},animations:[],bounds:KA(s,g)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function Je(A,e={}){return nn.load(A,e)}k();var oo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ao={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function so(A,e=!1){switch(A){case 5120:return e?(t,n)=>Math.max(t.getInt8(n)/127,-1):(t,n)=>t.getInt8(n);case 5121:return e?(t,n)=>t.getUint8(n)/255:(t,n)=>t.getUint8(n);case 5122:return e?(t,n)=>Math.max(t.getInt16(n,!0)/32767,-1):(t,n)=>t.getInt16(n,!0);case 5123:return e?(t,n)=>t.getUint16(n,!0)/65535:(t,n)=>t.getUint16(n,!0);case 5125:return(t,n)=>t.getUint32(n,!0);default:return(t,n)=>t.getFloat32(n,!0)}}var go={KHR_draco_mesh_compression:"Draco mesh compression",EXT_meshopt_compression:"meshopt compression"},Dr=1179937895,lo=1313821514,uo=5130562,Ce=class A{static isGlb(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<12?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0)===Dr}static parse(e,t={},n){let r,i=[];if(typeof e=="string")try{r=JSON.parse(e)}catch(o){throw new Error(`Failed to parse glTF JSON: ${String(o)}`)}else{let o=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isGlb(o)){let a=A.unpackGlb(o);r=a.doc,a.binBuffer&&i.push(a.binBuffer)}else{let a=new TextDecoder("utf-8").decode(o);r=JSON.parse(a)}}if(r.buffers)for(let o=0;o<r.buffers.length;o++){if(o===0&&i.length>0)continue;let a=r.buffers[o];if(a.uri){if(a.uri.startsWith("data:")){let s=a.uri.indexOf("base64,");if(s!==-1){let g=a.uri.substring(s+7),l=Buffer.from(g,"base64");i[o]=new Uint8Array(l.buffer,l.byteOffset,l.byteLength)}}else if(n){let s=MA.isAbsolute(a.uri)?a.uri:MA.join(n,a.uri);if(cA.existsSync(s)){let g=cA.readFileSync(s);i[o]=new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}}}}for(let o of r.extensionsRequired??[]){let a=go[o];if(a)throw new Error(`glTF file requires ${o} (${a}), which framefields cannot decode. Re-export the model without mesh compression (in Blender's glTF exporter, turn off Compression).`)}return A.buildModel(r,i,t,n)}static unpackGlb(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0,!0),r=t.getUint32(8,!0);if(n!==Dr)throw new Error("Invalid GLB header: magic mismatch");let i=12,o=null,a;for(;i<r&&i<e.byteLength;){let s=t.getUint32(i,!0),g=t.getUint32(i+4,!0);i+=8;let l=e.subarray(i,i+s);if(i+=s,g===lo){let u=new TextDecoder("utf-8").decode(l);o=JSON.parse(u)}else g===uo&&(a=l)}if(!o)throw new Error("Invalid GLB: JSON chunk not found");return{doc:o,binBuffer:a}}static readFloats(e,t,n){let r=e.accessors?.[n];if(!r)throw new Error(`Accessor ${n} not found`);let i=oo[r.type]??1,o=new Float32Array(r.count*i);if(r.bufferView===void 0)return{data:o,itemSize:i,count:r.count};let a=e.bufferViews?.[r.bufferView];if(!a)throw new Error(`BufferView ${r.bufferView} not found`);let s=t[a.buffer];if(!s)throw new Error(`Binary buffer ${a.buffer} not loaded`);let g=ao[r.componentType]??4,l=a.byteStride??g*i,u=new DataView(s.buffer,s.byteOffset,s.byteLength),c=(a.byteOffset??0)+(r.byteOffset??0),B=so(r.componentType,r.normalized);for(let E=0;E<r.count;E++)for(let d=0;d<i;d++)o[E*i+d]=B(u,c+E*l+d*g);return{data:o,itemSize:i,count:r.count}}static readIndices(e,t,n){let{data:r}=A.readFloats(e,t,n);return r.reduce((o,a)=>a>o?a:o,0)>65535?Uint32Array.from(r):Uint16Array.from(r)}static imageBytes(e,t,n,r){let i=e.images?.[n];if(!i)return;if(i.bufferView!==void 0){let a=e.bufferViews?.[i.bufferView],s=a?t[a.buffer]:void 0;if(!a||!s)return;let g=a.byteOffset??0;return{bytes:s.subarray(g,g+a.byteLength),mime:i.mimeType??"image/png"}}if(!i.uri)return;if(i.uri.startsWith("data:")){let a=i.uri.indexOf(","),s=i.uri.slice(5,i.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(i.uri.slice(a+1),"base64")),mime:s}}if(!r)return;let o=MA.isAbsolute(i.uri)?i.uri:MA.join(r,decodeURIComponent(i.uri));if(!cA.existsSync(o)){A.warn(`Image "${i.uri}" was not found next to the model; textures using it are skipped.`);return}return{bytes:new Uint8Array(cA.readFileSync(o)),mime:i.mimeType??Ue(o)}}static warn(e){console.warn(`[GltfLoader] ${e}`)}static texCoordOf(e){return e.extensions?.KHR_texture_transform?.texCoord??e.texCoord??0}static uvPlan(e){let t=[e?.pbrMetallicRoughness?.baseColorTexture,e?.normalTexture,e?.pbrMetallicRoughness?.metallicRoughnessTexture,e?.occlusionTexture,e?.emissiveTexture].find(n=>n!==void 0);return t?{texCoord:A.texCoordOf(t),transform:t.extensions?.KHR_texture_transform}:{texCoord:0}}static textureImage(e,t,n,r,i){let o=e.textures?.[n];if(!o)return;let a=o.extensions?.EXT_texture_webp?.source??o.source;if(a===void 0){o.extensions?.KHR_texture_basisu&&A.warn(`${i} is a KTX2 / Basis texture, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let s=A.imageBytes(e,t,a,r);if(!s)return;if(!Io.has(s.mime)){A.warn(`${i} is ${s.mime}, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let g=o.sampler!==void 0?e.samplers?.[o.sampler]:void 0;return{...s,sampler:g}}static buildMaterial(e,t,n,r,i){let o=n.pbrMetallicRoughness,a=o?.baseColorFactor??[1,1,1,1],s={name:r,diffuseColor:a,roughness:o?.roughnessFactor??.5,metallic:o?.metallicFactor??0,shininess:32*(1-(o?.roughnessFactor??.5)),opacity:a[3]??1,twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},g=n.emissiveFactor;g&&(g[0]>0||g[1]>0||g[2]>0)&&(s.emissive=[g[0],g[1],g[2]],s.emissiveStrength=n.extensions?.KHR_materials_emissive_strength?.emissiveStrength??1);let l=n.extensions?.VRMC_materials_mtoon;l?(s.shading="toon",s.shadeColor=l.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let u=A.uvPlan(n),c=(D,p)=>{if(!D)return;let G=`The ${p} map of material "${r}"`,N=A.texCoordOf(D);if(N!==u.texCoord){A.warn(`${G} uses UV set ${N}, but the mesh draws with UV set ${u.texCoord}; the map is skipped.`);return}let w=D.extensions?.KHR_texture_transform;return JSON.stringify(w??null)!==JSON.stringify(u.transform??null)&&A.warn(`${G} has a different KHR_texture_transform than the mesh's first map; it is drawn with that one's.`),A.textureImage(e,t,D.index,i,G)},B=c(o?.baseColorTexture,"base color");if(B){s.diffuseTextureBuffer=B.bytes,s.diffuseTextureMime=B.mime;let D=B.sampler?.wrapS;s.textureWrap=D===33071?"clamp":D===33648?"mirror":"repeat",B.sampler?.magFilter===9728&&(s.textureFilter="nearest")}let E=(D,p)=>c(D,p)?.bytes,d=E(n.normalTexture,"normal");d&&(s.normalTextureBuffer=d,s.normalScale=n.normalTexture?.scale??1);let h=E(o?.metallicRoughnessTexture,"metallic-roughness");h&&(s.metallicRoughnessTextureBuffer=h,s.roughness=o?.roughnessFactor??1,s.metallic=o?.metallicFactor??1);let Q=E(n.occlusionTexture,"occlusion");Q&&(s.occlusionTextureBuffer=Q,s.occlusionStrength=n.occlusionTexture?.strength??1);let m=s.emissive&&E(n.emissiveTexture,"emissive");return m&&(s.emissiveTextureBuffer=m),s}static buildNodes(e){let t=(e.nodes??[]).map((n,r)=>({name:n.name??`node_${r}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(e.nodes??[]).forEach((n,r)=>{for(let i of n.children??[]){let o=t[i];o&&(o.parent=r)}}),t}static buildAnimations(e,t,n){return(e.animations??[]).map((r,i)=>{let o=[],a=0;for(let s of r.channels){let g=r.samplers[s.sampler],l=s.target.node;if(!g||l===void 0||s.target.path==="weights")continue;let u=A.readFloats(e,t,g.input).data,c=A.readFloats(e,t,g.output).data;a=Math.max(a,u[u.length-1]??0);let B={nodeName:n[l]?.name??`node_${l}`,node:l,times:u,interpolation:g.interpolation==="STEP"?"step":g.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?B.translations=c:s.target.path==="rotation"?B.rotations=c:B.scales=c,o.push(B)}return{name:r.name??`Animation_${i}`,duration:a>0?a:1,fps:30,tracks:o}})}static buildModel(e,t,n,r){let i=(e.materials??[]).map((S,K,F)=>{let z=S.name??`material_${K}`;return F.findIndex((Z,$)=>(Z.name??`material_${$}`)===z)===K?z:`${z}#${K}`}),o={};(e.materials??[]).forEach((S,K)=>{let F=i[K];o[F]=A.buildMaterial(e,t,S,F,r)});let a=(e.materials??[]).map(S=>A.uvPlan(S)),s=A.buildNodes(e),g=(e.skins??[]).map(S=>({joints:S.joints,inverseBindMatrices:S.inverseBindMatrices!==void 0?A.readFloats(e,t,S.inverseBindMatrices).data:Float32Array.from(S.joints.flatMap(()=>_.identity()))})),l=A.buildAnimations(e,t,s),u=(e.nodes??[]).flatMap((S,K)=>S.mesh!==void 0?[{mesh:S.mesh,node:K,skin:S.skin}]:[]),c=u.length>0?u:(e.meshes??[]).map((S,K)=>({mesh:K})),B={name:"glTF_Model",meshes:[],materials:o,nodes:s,skins:g,animations:l,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},E=Bt(B,void 0,0),d=1/0,h=1/0,Q=1/0,m=-1/0,D=-1/0,p=-1/0,G=(S,K,F)=>{S<d&&(d=S),S>m&&(m=S),K<h&&(h=K),K>D&&(D=K),F<Q&&(Q=F),F>p&&(p=F)};for(let S of c){let K=e.meshes?.[S.mesh];K&&K.primitives.forEach((F,z)=>{if(F.attributes.POSITION===void 0||F.mode!==void 0&&F.mode!==4)return;let Z=X=>X===void 0?void 0:A.readFloats(e,t,X),$=Z(F.attributes.POSITION),aA=$.count,W=F.material!==void 0?a[F.material]:void 0,Y=F.attributes,j=Z(Y[`TEXCOORD_${W?.texCoord??0}`])?.data??Z(F.attributes.TEXCOORD_0)?.data??new Float32Array(aA*2);W?.transform&&Bo(j,W.transform);let IA=Z(F.attributes.COLOR_0),dA;if(IA){dA=new Float32Array(aA*4).fill(1);for(let X=0;X<aA;X++)for(let P=0;P<IA.itemSize;P++){let nA=IA.data[X*IA.itemSize+P]??1;dA[X*4+P]=P<3?co(nA):nA}}let uA;if(F.indices!==void 0)uA=A.readIndices(e,t,F.indices);else{uA=aA>65535?new Uint32Array(aA):new Uint16Array(aA);for(let X=0;X<aA;X++)uA[X]=X}let mA=S.skin!==void 0&&F.attributes.JOINTS_0!==void 0,pA=!mA&&S.node!==void 0?E[S.node]:void 0;for(let X=0;X<aA;X++){let P=$.data[X*3],nA=$.data[X*3+1],tA=$.data[X*3+2];if(pA){let rA=_.projectPoint(pA,[P,nA,tA]);G(rA[0],rA[1],rA[2])}else G(P,nA,tA)}B.meshes.push({id:`gltf_mesh_${S.mesh}_${z}${S.node!==void 0?`_n${S.node}`:""}`,name:K.name??`Mesh_${S.mesh}`,positions:$.data,normals:Z(F.attributes.NORMAL)?.data??new Float32Array(aA*3),uvs:j,colors:dA,jointIndices:mA?Z(F.attributes.JOINTS_0)?.data:void 0,jointWeights:mA?Z(F.attributes.WEIGHTS_0)?.data:void 0,indices:uA,materialName:F.material!==void 0?i[F.material]:void 0,node:S.node,skin:mA?S.skin:void 0})})}for(let S of g)if(S.joints.length>re)throw new Error(`glTF skin has ${S.joints.length} joints; the mesh shader holds ${re}`);Number.isFinite(d)||(d=h=Q=0,m=D=p=0);let N=Math.max(m-d,D-h,p-Q,1e-4),w=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/N:1,U=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],b=[w*U[0],w*U[1],w*U[2]],M=n.center?[(d+m)*.5,(h+D)*.5,(Q+p)*.5]:[0,0,0];B.rootTransform=_.multiply(_.scale(b[0],b[1],b[2]),_.translate(-M[0],-M[1],-M[2]));let v=[(d-M[0])*b[0],(h-M[1])*b[1],(Q-M[2])*b[2]],R=[(m-M[0])*b[0],(D-M[1])*b[1],(p-M[2])*b[2]];return B.bounds={min:v,max:R,center:[(v[0]+R[0])*.5,(v[1]+R[1])*.5,(v[2]+R[2])*.5],size:[R[0]-v[0],R[1]-v[1],R[2]-v[2]],boundingSphereRadius:Math.hypot(R[0]-v[0],R[1]-v[1],R[2]-v[2])*.5},B}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);let n=e.startsWith("file://")?e.replace("file://",""):e;if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")||!e.trimStart().startsWith("{")&&cA.existsSync(n)){let r=cA.readFileSync(n),i=MA.dirname(n);return A.parse(r,t,i)}return A.parse(e,t)}};function dt(A,e={}){return Ce.load(A,e)}function wr(A,e={}){return Ce.load(A,e)}function co(A){let e=Math.min(Math.max(A,0),1);return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}var Io=new Set(["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/avif"]);function Bo(A,{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}){let r=Math.cos(t),i=Math.sin(t);for(let o=0;o<A.length;o+=2){let a=A[o]*n[0],s=A[o+1]*n[1];A[o]=r*a+i*s+e[0],A[o+1]=-i*a+r*s+e[1]}}k();var fo=[[0,0,0,0],...Array.from({length:255},(A,e)=>{let t=(e+1)/256;return[t,t,t,1]})],Oe=class A{static isVox(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<8?!1:new TextDecoder("ascii").decode(t.subarray(0,4))==="VOX "}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let o=8,a=16,s=16,g=16,l=[],u=[...fo];for(;o+12<=n.byteLength;){let c=new TextDecoder("ascii").decode(n.subarray(o,o+4)),B=r.getUint32(o+4,!0);o+=12;let E=o;if(c==="SIZE")a=r.getUint32(E,!0),s=r.getUint32(E+4,!0),g=r.getUint32(E+8,!0);else if(c==="XYZI"){let d=r.getUint32(E,!0),h=E+4;for(let Q=0;Q<d&&!(h+4>n.byteLength);Q++){let m=r.getUint8(h),D=r.getUint8(h+1),p=r.getUint8(h+2),G=r.getUint8(h+3);h+=4,l.push({x:m,y:D,z:p,colorIndex:G})}}else if(c==="RGBA")for(let d=0;d<256;d++){let h=E+d*4;if(h+4>n.byteLength)break;let Q=r.getUint8(h)/255,m=r.getUint8(h+1)/255,D=r.getUint8(h+2)/255,p=r.getUint8(h+3)/255,G=d===255?0:d+1;u[G]=[Q,m,D,p]}o+=B}return A.buildModel(l,u,a,s,g,t)}static buildModel(e,t,n,r,i,o){let a=new Set;e.forEach(p=>a.add(`${p.x},${p.y},${p.z}`));let s=[],g=[],l=[],u=[],c=[],B=(p,G,N,w,U,b)=>{let M=s.length/3;s.push(...p,...G,...N,...w),g.push(...U,...U,...U,...U),l.push(...b,...b,...b,...b),u.push(0,0,1,0,1,1,0,1),c.push(M,M+1,M+2,M,M+2,M+3)};for(let p of e){let{x:G,y:N,z:w,colorIndex:U}=p,b=t[U]??[.8,.8,.8,1],M=G,v=-w,R=N;a.has(`${G+1},${N},${w}`)||B([M+1,v,R],[M+1,v-1,R],[M+1,v-1,R+1],[M+1,v,R+1],[1,0,0],b),a.has(`${G-1},${N},${w}`)||B([M,v,R+1],[M,v-1,R+1],[M,v-1,R],[M,v,R],[-1,0,0],b),a.has(`${G},${N},${w+1}`)||B([M,v-1,R],[M+1,v-1,R],[M+1,v-1,R+1],[M,v-1,R+1],[0,-1,0],b),a.has(`${G},${N},${w-1}`)||B([M,v,R+1],[M+1,v,R+1],[M+1,v,R],[M,v,R],[0,1,0],b),a.has(`${G},${N+1},${w}`)||B([M+1,v,R+1],[M+1,v-1,R+1],[M,v-1,R+1],[M,v,R+1],[0,0,1],b),a.has(`${G},${N-1},${w}`)||B([M,v,R],[M,v-1,R],[M+1,v-1,R],[M+1,v,R],[0,0,-1],b)}let E=HA(s),d=RA(E,o),h=JA(s,d),Q=OA(c,h.length/3),m={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...o.defaultMaterial};return{name:"VOX_Model",meshes:[{id:"vox_mesh_0",name:"vox_geometry",positions:h,normals:new Float32Array(g),uvs:new Float32Array(u),colors:new Float32Array(l),indices:Q,materialName:"vox_default"}],materials:{vox_default:m},animations:[],bounds:KA(E,d)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}throw new Error("VOX files must be binary buffers or local file paths")}};function Ct(A,e={}){return Oe.load(A,e)}k();var rn=19789,Eo=15677,Co=16384,Qo=16640,mo=16656,ho=16672,po=16704,yo=45055,bo=40960,Do=40992,wo=16,xo=17,Ke=class A{static is3DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<6?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(0,!0)===rn}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(r.getUint16(0,!0)!==rn)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let o=[],a={};return A.readChunk(r,0,n.byteLength,o,a),A.buildModel(o,a,t)}static readChunk(e,t,n,r,i,o="Object"){let a=t;for(;a+6<=n&&a+6<=e.byteLength;){let s=e.getUint16(a,!0),g=e.getUint32(a+2,!0);if(g<6)break;let l=a+g,u=a+6,c=Math.min(l,n,e.byteLength);switch(s){case rn:case Eo:A.readChunk(e,u,c,r,i,o);break;case Co:{let B=u;for(;B<c&&e.getUint8(B)!==0;)B++;let E=new Uint8Array(e.buffer,e.byteOffset+u,B-u),d=new TextDecoder("ascii").decode(E)||"Object";A.readChunk(e,B+1,c,r,i,d);break}case Qo:{let B={name:o,positions:[],indices:[],uvs:[]};A.readTriMesh(e,u,c,B,i),B.positions.length>0&&B.indices.length>0&&r.push(B);break}case yo:A.readMaterial(e,u,c,i);break;default:break}a=l}}static readTriMesh(e,t,n,r,i){let o=t;for(;o+6<=n;){let a=e.getUint16(o,!0),s=e.getUint32(o+2,!0);if(s<6)break;let g=o+s,l=o+6;if(a===mo){let u=e.getUint16(l,!0),c=l+2;for(let B=0;B<u&&!(c+12>n);B++){let E=e.getFloat32(c,!0),d=e.getFloat32(c+4,!0),h=e.getFloat32(c+8,!0);r.positions.push(E,d,h),c+=12}}else if(a===ho){let u=e.getUint16(l,!0),c=l+2;for(let B=0;B<u&&!(c+8>n);B++){let E=e.getUint16(c,!0),d=e.getUint16(c+2,!0),h=e.getUint16(c+4,!0);r.indices.push(E,d,h),c+=8}}else if(a===po){let u=e.getUint16(l,!0),c=l+2;for(let B=0;B<u&&!(c+8>n);B++){let E=e.getFloat32(c,!0),d=e.getFloat32(c+4,!0);r.uvs.push(E,1-d),c+=8}}o=g}}static readMaterial(e,t,n,r){let i=t,o="Material",a=[.8,.8,.8,1];for(;i+6<=n;){let s=e.getUint16(i,!0),g=e.getUint32(i+2,!0);if(g<6)break;let l=i+g,u=i+6;if(s===bo){let c=u;for(;c<l&&e.getUint8(c)!==0;)c++;let B=new Uint8Array(e.buffer,e.byteOffset+u,c-u);o=new TextDecoder("ascii").decode(B)||o}else if(s===Do&&u+6<=l){let c=e.getUint16(u,!0);if(c===wo&&u+18<=l){let B=e.getFloat32(u+6,!0),E=e.getFloat32(u+10,!0),d=e.getFloat32(u+14,!0);a=[B,E,d,1]}else if(c===xo&&u+9<=l){let B=e.getUint8(u+6)/255,E=e.getUint8(u+7)/255,d=e.getUint8(u+8)/255;a=[B,E,d,1]}}i=l}r[o]={name:o,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(e,t,n){let r=HA(...e.map(a=>a.positions)),i=RA(r,n);return{name:"3DS_Model",meshes:e.map((a,s)=>{let g=JA(a.positions,i),l=new Float32Array(a.positions.length);ne(g,a.indices,l);let u=a.uvs.length===a.positions.length/3*2?new Float32Array(a.uvs):new Float32Array(a.positions.length/3*2),c=OA(a.indices,g.length/3);return{id:`3ds_mesh_${s}`,name:a.name,positions:g,normals:l,uvs:u,indices:c,materialName:a.materialName}}),materials:t,animations:[],bounds:KA(r,i)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}throw new Error("3DS files must be binary buffers or local file paths")}};function Qt(A,e={}){return Ke.load(A,e)}k();var on=class A{static parse(e,t={}){let r=(typeof e=="string"?e:new TextDecoder("utf-8").decode(e instanceof Uint8Array?e:new Uint8Array(e))).split(/\r?\n/),i=0;for(;i<r.length&&(!r[i].trim()||r[i].trim().startsWith("#"));)i++;if(i>=r.length)throw new Error("Empty OFF file");let o=r[i++].trim(),a=!1,s=!1;if(o.startsWith("NOFF")||o.startsWith("STOFF"))a=!0;else if(o.startsWith("COFF"))s=!0;else if(!o.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");o=o.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let g=0,l=0;if(o.length>0){let U=o.split(/\s+/);g=Number.parseInt(U[0]??"0",10),l=Number.parseInt(U[1]??"0",10)}else for(;i<r.length;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/);g=Number.parseInt(b[0]??"0",10),l=Number.parseInt(b[1]??"0",10);break}let u=[],c=[],B=[],E=[],d=[],h=0;for(;i<r.length&&h<g;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/),M=Number.parseFloat(b[0]??"0")||0,v=Number.parseFloat(b[1]??"0")||0,R=Number.parseFloat(b[2]??"0")||0;u.push(M,v,R);let S=3;if(a){let K=Number.parseFloat(b[S]??"0")||0,F=Number.parseFloat(b[S+1]??"0")||0,z=Number.parseFloat(b[S+2]??"0")||0;c.push(K,F,z),S+=3}else c.push(0,0,0);if(s&&b.length>S){let K=(Number.parseFloat(b[S]??"255")||0)/(Number.parseFloat(b[S]??"255")>1?255:1),F=(Number.parseFloat(b[S+1]??"255")||0)/(Number.parseFloat(b[S+1]??"255")>1?255:1),z=(Number.parseFloat(b[S+2]??"255")||0)/(Number.parseFloat(b[S+2]??"255")>1?255:1),Z=b.length>S+3&&Number.parseFloat(b[S+3]??"1")||1;B.push(K,F,z,Z)}E.push(0,0),h++}let Q=0;for(;i<r.length&&Q<l;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/),M=Number.parseInt(b[0]??"0",10);if(M>=3){let v=Number.parseInt(b[1]??"0",10);for(let R=1;R<M-1;R++){let S=Number.parseInt(b[R+1]??"0",10),K=Number.parseInt(b[R+2]??"0",10);d.push(v,S,K)}}Q++}(!a||t.smoothNormals)&&ne(u,d,c);let m=HA(u),D=RA(m,t),p=JA(u,D),G=OA(d,p.length/3),N={name:"off_default",diffuseColor:s?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...t.defaultMaterial};return{name:"OFF_Model",meshes:[{id:"off_mesh_0",name:"off_geometry",positions:p,normals:new Float32Array(c),uvs:new Float32Array(E),colors:s?new Float32Array(B):void 0,indices:G,materialName:"off_default"}],materials:{off_default:N},animations:[],bounds:KA(m,D)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n,"utf-8");return A.parse(r,t)}return A.parse(e,t)}};function mt(A,e={}){return on.load(A,e)}k();var xr=`
|
|
141
|
+
`;var io={normal_extrusion:0,radial_pulse:1,harmonic_wave:2,twist:3,ripple:4},ft=class{device;pipeline;bindGroupLayout;uniformPool;deformedBuffers=new WeakMap;uniformData=new ArrayBuffer(32);uniformUint32=new Uint32Array(this.uniformData);uniformFloat32=new Float32Array(this.uniformData);constructor(e){this.device=e,this.uniformPool=new NA(32,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.bindGroupLayout=e.createBindGroupLayout({label:"AudioMeshDeformBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:1,visibility:GPUShaderStage.COMPUTE,buffer:{type:"uniform"}},{binding:2,visibility:GPUShaderStage.COMPUTE,buffer:{type:"read-only-storage"}},{binding:3,visibility:GPUShaderStage.COMPUTE,buffer:{type:"storage"}}]});let t=e.createShaderModule({label:"audioMeshDisplace.wgsl",code:br}),n=e.createPipelineLayout({label:"AudioMeshDeformPipelineLayout",bindGroupLayouts:[this.bindGroupLayout]});this.pipeline=e.createComputePipeline({label:"AudioMeshDeformComputePipeline",layout:n,compute:{module:t,entryPoint:"cs_displace"}})}getOrCreateDeformedBuffer(e,t){let n=this.deformedBuffers.get(e);return(!n||n.size<t)&&(n?.destroy(),n=this.device.createBuffer({label:"DeformedMeshVertexBuffer",size:Math.max(64,Math.ceil(t/4)*4),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC}),this.deformedBuffers.set(e,n)),n}execute(e,t,n){let{config:r,audioLatentBuffer:i,vertexCount:o,timeMs:a=0,sampleRate:s=48e3}=n,g=o*64,l=this.getOrCreateDeformedBuffer(t,g),u=io[r.mode]??0,c=s/2048,I=r.frequencyRange?r.frequencyRange[0]:20,E=r.frequencyRange?r.frequencyRange[1]:120,d=Math.max(0,Math.min(1023,Math.round(I/c))),h=Math.max(d,Math.min(1023,Math.round(E/c))),Q=typeof r.amplitudeMultiplier=="number"?r.amplitudeMultiplier:typeof r.amplitudeMultiplier?.value=="number"?r.amplitudeMultiplier.value:1,m=r.damping??0;this.uniformUint32[0]=u,this.uniformUint32[1]=d,this.uniformUint32[2]=h,this.uniformUint32[3]=o,this.uniformFloat32[4]=Q,this.uniformFloat32[5]=m,this.uniformFloat32[6]=a,this.uniformFloat32[7]=0;let D=this.uniformPool.getBuffer(this.device,new Uint8Array(this.uniformData)),p=this.device.createBindGroup({layout:this.bindGroupLayout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:{buffer:D}},{binding:2,resource:{buffer:t}},{binding:3,resource:{buffer:l}}]}),G=e.beginComputePass({label:"AudioMeshDeformComputePass"});G.setPipeline(this.pipeline),G.setBindGroup(0,p);let N=Math.ceil(o/256);return G.dispatchWorkgroups(N),G.end(),l}resetPools(){this.uniformPool.reset()}destroy(){this.uniformPool.destroy()}};k();k();var Te=class A{static isBinary(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<84)return!1;let r=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(80,!0),i=84+r*50;if(t.length===i)return!0;let o=Math.min(t.length,512);for(let s=0;s<o;s++){let g=t[s];if(g>127||g<32&&g!==9&&g!==10&&g!==13)return!0}let a=new TextDecoder("utf-8").decode(t.subarray(0,80)).trim();return a.startsWith("solid")&&!a.includes(`
|
|
142
|
+
`)?t.length>=84+r*50:!a.startsWith("solid")}static parse(e,t={}){if(typeof e=="string")return A.parseAscii(e,t);let n=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isBinary(n))return A.parseBinary(n,t);let r=new TextDecoder("utf-8").decode(n);return A.parseAscii(r,t)}static parseBinary(e,t={}){let n=new DataView(e.buffer,e.byteOffset,e.byteLength),r=n.getUint32(80,!0),i=[],o=[],a=[],s=84;for(let g=0;g<r&&!(s+50>e.byteLength);g++){let l=n.getFloat32(s,!0),u=n.getFloat32(s+4,!0),c=n.getFloat32(s+8,!0);s+=12;let I=n.getFloat32(s,!0),E=n.getFloat32(s+4,!0),d=n.getFloat32(s+8,!0);s+=12;let h=n.getFloat32(s,!0),Q=n.getFloat32(s+4,!0),m=n.getFloat32(s+8,!0);s+=12;let D=n.getFloat32(s,!0),p=n.getFloat32(s+4,!0),G=n.getFloat32(s+8,!0);s+=12,s+=2;let N=l,w=u,U=c;if(N===0&&w===0&&U===0){let M=H.subtract([h,Q,m],[I,E,d]),v=H.subtract([D,p,G],[I,E,d]),R=H.normalize(H.cross(M,v));N=R[0],w=R[1],U=R[2]}let b=i.length/3;i.push(I,E,d,h,Q,m,D,p,G),o.push(N,w,U,N,w,U,N,w,U),a.push(b,b+1,b+2)}return A.finalizeModel(i,o,a,t)}static parseAscii(e,t={}){let n=[],r=[],i=[],o=e.split(/\r?\n/),a=[0,0,1],s=[];for(let g of o){let l=g.trim();if(l){if(l.startsWith("facet normal")){let u=l.split(/\s+/),c=Number.parseFloat(u[2]??"0")||0,I=Number.parseFloat(u[3]??"0")||0,E=Number.parseFloat(u[4]??"0")||0;a=[c,I,E],s=[]}else if(l.startsWith("vertex")){let u=l.split(/\s+/),c=Number.parseFloat(u[1]??"0")||0,I=Number.parseFloat(u[2]??"0")||0,E=Number.parseFloat(u[3]??"0")||0;s.push([c,I,E])}else if(l.startsWith("endfacet")){if(s.length>=3){let u=s[0],c=s[1],I=s[2],E=a;if(E[0]===0&&E[1]===0&&E[2]===0){let d=H.subtract(c,u),h=H.subtract(I,u);E=H.normalize(H.cross(d,h))}for(let d=1;d<s.length-1;d++){let h=s[d],Q=s[d+1],m=n.length/3;n.push(u[0],u[1],u[2],h[0],h[1],h[2],Q[0],Q[1],Q[2]),r.push(E[0],E[1],E[2],E[0],E[1],E[2],E[0],E[1],E[2]),i.push(m,m+1,m+2)}}s=[]}}}return A.finalizeModel(n,r,i,t)}static finalizeModel(e,t,n,r={}){let i=HA(e),o=RA(i,r),a=JA(e,o),[s,g]=i.min,[l,u]=i.size,c=new Float32Array(e.length/3*2);for(let h=0;h<e.length;h+=3){let Q=h/3*2;c[Q]=l>0?(e[h]-s)/l:0,c[Q+1]=u>0?(e[h+1]-g)/u:0}let I=OA(n,a.length/3),E={name:"stl_default",diffuseColor:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...r.defaultMaterial};return{name:"STL_Model",meshes:[{id:"stl_mesh_0",name:"stl_geometry",positions:a,normals:new Float32Array(t),uvs:c,indices:I,materialName:"stl_default"}],materials:{stl_default:E},animations:[],bounds:KA(i,o)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function He(A,e={}){return Te.load(A,e)}k();var tn=class A{static parse(e,t={}){let n=typeof e=="string"?new TextEncoder().encode(e):e instanceof Uint8Array?e:new Uint8Array(e),r=A.extractHeader(n),i=A.parseHeader(r.text);if(i.format==="ascii"){let a=new TextDecoder("utf-8").decode(n.subarray(r.endOffset));return A.parseAsciiBody(i,a,t)}let o=i.format==="binary_little_endian";return A.parseBinaryBody(i,n.subarray(r.endOffset),o,t)}static extractHeader(e){let t=Math.min(e.length,1e4),n=e.subarray(0,t),r=new TextDecoder("utf-8").decode(n),i=r.indexOf("end_header");if(i===-1)throw new Error("Invalid PLY file: 'end_header' marker not found");let o=r.indexOf(`
|
|
143
|
+
`,i);return o===-1?o=i+10:o+=1,{text:r.substring(0,o),endOffset:o}}static parseHeader(e){let t=e.split(/\r?\n/),n="ascii",r="1.0",i=[],o=null;for(let a of t){let s=a.trim();if(!s||s.startsWith("comment"))continue;let g=s.split(/\s+/),l=g[0]?.toLowerCase();if(l!=="ply"){if(l==="format"){let u=g[1]?.toLowerCase();u==="binary_little_endian"?n="binary_little_endian":u==="binary_big_endian"?n="binary_big_endian":n="ascii",r=g[2]??"1.0"}else if(l==="element"){let u=g[1]??"",c=Number.parseInt(g[2]??"0",10);o={name:u,count:c,properties:[]},i.push(o)}else if(l==="property"&&o)g[1]?.toLowerCase()==="list"?o.properties.push({name:g[4]??"",type:"list",isList:!0,countType:g[2]??"uchar",itemType:g[3]??"int"}):o.properties.push({name:g[2]??"",type:g[1]?.toLowerCase()??"float"});else if(l==="end_header")break}}return{format:n,version:r,elements:i}}static parseAsciiBody(e,t,n){let r=e.elements.find(F=>F.name==="vertex"),i=e.elements.find(F=>F.name==="face"),o=r?.count??0,a=i?.count??0,s=[],g=[],l=[],u=[],c=[],I=r?.properties??[],E=I.findIndex(F=>F.name==="x"),d=I.findIndex(F=>F.name==="y"),h=I.findIndex(F=>F.name==="z"),Q=I.findIndex(F=>F.name==="nx"),m=I.findIndex(F=>F.name==="ny"),D=I.findIndex(F=>F.name==="nz"),p=I.findIndex(F=>F.name==="u"||F.name==="s"||F.name==="texture_u"),G=I.findIndex(F=>F.name==="v"||F.name==="t"||F.name==="texture_v"),N=I.findIndex(F=>F.name==="red"||F.name==="r"),w=I.findIndex(F=>F.name==="green"||F.name==="g"),U=I.findIndex(F=>F.name==="blue"||F.name==="b"),b=I.findIndex(F=>F.name==="alpha"||F.name==="a"),M=Q!==-1&&m!==-1&&D!==-1,v=N!==-1&&w!==-1&&U!==-1,R=p!==-1&&G!==-1,S=t.trim().split(/\r?\n/),K=0;for(let F=0;F<o&&!(K>=S.length);F++){let z=S[K++]?.trim();if(!z)continue;let Z=z.split(/\s+/),$=Number.parseFloat(Z[E]??"0")||0,aA=Number.parseFloat(Z[d]??"0")||0,W=Number.parseFloat(Z[h]??"0")||0;if(s.push($,aA,W),M){let Y=Number.parseFloat(Z[Q]??"0")||0,j=Number.parseFloat(Z[m]??"0")||0,IA=Number.parseFloat(Z[D]??"0")||0;g.push(Y,j,IA)}else g.push(0,0,0);if(R){let Y=Number.parseFloat(Z[p]??"0")||0,j=Number.parseFloat(Z[G]??"0")||0;l.push(Y,1-j)}else l.push(0,0);if(v){let Y=(Number.parseFloat(Z[N]??"255")||0)/255,j=(Number.parseFloat(Z[w]??"255")||0)/255,IA=(Number.parseFloat(Z[U]??"255")||0)/255,dA=b!==-1?(Number.parseFloat(Z[b]??"255")||0)/255:1;u.push(Y,j,IA,dA)}}for(let F=0;F<a&&!(K>=S.length);F++){let z=S[K++]?.trim();if(!z)continue;let Z=z.split(/\s+/),$=Number.parseInt(Z[0]??"0",10);if($>=3){let aA=Number.parseInt(Z[1]??"0",10);for(let W=1;W<$-1;W++){let Y=Number.parseInt(Z[W+1]??"0",10),j=Number.parseInt(Z[W+2]??"0",10);c.push(aA,Y,j)}}}return A.finalizeModel(s,g,l,v?u:void 0,c,M,n)}static parseBinaryBody(e,t,n,r){let i=new DataView(t.buffer,t.byteOffset,t.byteLength),o=0,a=e.elements.find(N=>N.name==="vertex"),s=e.elements.find(N=>N.name==="face"),g=a?.count??0,l=s?.count??0,u=[],c=[],I=[],E=[],d=[],h=a?.properties??[],Q=h.some(N=>N.name==="nx"),m=h.some(N=>N.name==="red"||N.name==="r"),D=N=>{let w=0;switch(N.toLowerCase()){case"char":case"int8":w=i.getInt8(o),o+=1;break;case"uchar":case"uint8":w=i.getUint8(o),o+=1;break;case"short":case"int16":w=i.getInt16(o,n),o+=2;break;case"ushort":case"uint16":w=i.getUint16(o,n),o+=2;break;case"int":case"int32":w=i.getInt32(o,n),o+=4;break;case"uint":case"uint32":w=i.getUint32(o,n),o+=4;break;case"float":case"float32":w=i.getFloat32(o,n),o+=4;break;case"double":case"float64":w=i.getFloat64(o,n),o+=8;break;default:w=i.getFloat32(o,n),o+=4;break}return w};for(let N=0;N<g;N++){let w=0,U=0,b=0,M=0,v=0,R=0,S=0,K=0,F=1,z=1,Z=1,$=1;for(let aA of h){let W=D(aA.type),Y=aA.name.toLowerCase();Y==="x"?w=W:Y==="y"?U=W:Y==="z"?b=W:Y==="nx"?M=W:Y==="ny"?v=W:Y==="nz"?R=W:Y==="u"||Y==="s"?S=W:Y==="v"||Y==="t"?K=W:Y==="red"||Y==="r"?F=aA.type.includes("int")?W/255:W:Y==="green"||Y==="g"?z=aA.type.includes("int")?W/255:W:Y==="blue"||Y==="b"?Z=aA.type.includes("int")?W/255:W:(Y==="alpha"||Y==="a")&&($=aA.type.includes("int")?W/255:W)}u.push(w,U,b),c.push(M,v,R),I.push(S,1-K),m&&E.push(F,z,Z,$)}let G=(s?.properties??[]).find(N=>N.isList);for(let N=0;N<l&&!(o>=t.byteLength);N++)if(G){let w=D(G.countType??"uchar"),U=[];for(let b=0;b<w;b++)U.push(D(G.itemType??"int"));if(U.length>=3){let b=U[0];for(let M=1;M<U.length-1;M++)d.push(b,U[M],U[M+1])}}return A.finalizeModel(u,c,I,m?E:void 0,d,Q,r)}static finalizeModel(e,t,n,r,i,o,a){(!o||a.smoothNormals)&&ne(e,i,t);let s=HA(e),g=RA(s,a),l=JA(e,g),u=OA(i,l.length/3),c={name:"ply_default",diffuseColor:r?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...a.defaultMaterial};return{name:"PLY_Model",meshes:[{id:"ply_mesh_0",name:"ply_geometry",positions:l,normals:new Float32Array(t),uvs:new Float32Array(n),colors:r?new Float32Array(r):void 0,indices:u,materialName:"ply_default"}],materials:{ply_default:c},animations:[],bounds:KA(s,g)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}return A.parse(e,t)}};function Je(A,e={}){return tn.load(A,e)}k();var oo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ao={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};function so(A,e=!1){switch(A){case 5120:return e?(t,n)=>Math.max(t.getInt8(n)/127,-1):(t,n)=>t.getInt8(n);case 5121:return e?(t,n)=>t.getUint8(n)/255:(t,n)=>t.getUint8(n);case 5122:return e?(t,n)=>Math.max(t.getInt16(n,!0)/32767,-1):(t,n)=>t.getInt16(n,!0);case 5123:return e?(t,n)=>t.getUint16(n,!0)/65535:(t,n)=>t.getUint16(n,!0);case 5125:return(t,n)=>t.getUint32(n,!0);default:return(t,n)=>t.getFloat32(n,!0)}}var go={KHR_draco_mesh_compression:"Draco mesh compression",EXT_meshopt_compression:"meshopt compression"},Dr=1179937895,lo=1313821514,uo=5130562,Ce=class A{static isGlb(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<12?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0)===Dr}static parse(e,t={},n){let r,i=[];if(typeof e=="string")try{r=JSON.parse(e)}catch(o){throw new Error(`Failed to parse glTF JSON: ${String(o)}`)}else{let o=e instanceof Uint8Array?e:new Uint8Array(e);if(A.isGlb(o)){let a=A.unpackGlb(o);r=a.doc,a.binBuffer&&i.push(a.binBuffer)}else{let a=new TextDecoder("utf-8").decode(o);r=JSON.parse(a)}}if(r.buffers)for(let o=0;o<r.buffers.length;o++){if(o===0&&i.length>0)continue;let a=r.buffers[o];if(a.uri){if(a.uri.startsWith("data:")){let s=a.uri.indexOf("base64,");if(s!==-1){let g=a.uri.substring(s+7),l=Buffer.from(g,"base64");i[o]=new Uint8Array(l.buffer,l.byteOffset,l.byteLength)}}else if(n){let s=MA.isAbsolute(a.uri)?a.uri:MA.join(n,a.uri);if(cA.existsSync(s)){let g=cA.readFileSync(s);i[o]=new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}}}}for(let o of r.extensionsRequired??[]){let a=go[o];if(a)throw new Error(`glTF file requires ${o} (${a}), which framefields cannot decode. Re-export the model without mesh compression (in Blender's glTF exporter, turn off Compression).`)}return A.buildModel(r,i,t,n)}static unpackGlb(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(0,!0),r=t.getUint32(8,!0);if(n!==Dr)throw new Error("Invalid GLB header: magic mismatch");let i=12,o=null,a;for(;i<r&&i<e.byteLength;){let s=t.getUint32(i,!0),g=t.getUint32(i+4,!0);i+=8;let l=e.subarray(i,i+s);if(i+=s,g===lo){let u=new TextDecoder("utf-8").decode(l);o=JSON.parse(u)}else g===uo&&(a=l)}if(!o)throw new Error("Invalid GLB: JSON chunk not found");return{doc:o,binBuffer:a}}static readFloats(e,t,n){let r=e.accessors?.[n];if(!r)throw new Error(`Accessor ${n} not found`);let i=oo[r.type]??1,o=new Float32Array(r.count*i);if(r.bufferView===void 0)return{data:o,itemSize:i,count:r.count};let a=e.bufferViews?.[r.bufferView];if(!a)throw new Error(`BufferView ${r.bufferView} not found`);let s=t[a.buffer];if(!s)throw new Error(`Binary buffer ${a.buffer} not loaded`);let g=ao[r.componentType]??4,l=a.byteStride??g*i,u=new DataView(s.buffer,s.byteOffset,s.byteLength),c=(a.byteOffset??0)+(r.byteOffset??0),I=so(r.componentType,r.normalized);for(let E=0;E<r.count;E++)for(let d=0;d<i;d++)o[E*i+d]=I(u,c+E*l+d*g);return{data:o,itemSize:i,count:r.count}}static readIndices(e,t,n){let{data:r}=A.readFloats(e,t,n);return r.reduce((o,a)=>a>o?a:o,0)>65535?Uint32Array.from(r):Uint16Array.from(r)}static imageBytes(e,t,n,r){let i=e.images?.[n];if(!i)return;if(i.bufferView!==void 0){let a=e.bufferViews?.[i.bufferView],s=a?t[a.buffer]:void 0;if(!a||!s)return;let g=a.byteOffset??0;return{bytes:s.subarray(g,g+a.byteLength),mime:i.mimeType??"image/png"}}if(!i.uri)return;if(i.uri.startsWith("data:")){let a=i.uri.indexOf(","),s=i.uri.slice(5,i.uri.indexOf(";"));return{bytes:new Uint8Array(Buffer.from(i.uri.slice(a+1),"base64")),mime:s}}if(!r)return;let o=MA.isAbsolute(i.uri)?i.uri:MA.join(r,decodeURIComponent(i.uri));if(!cA.existsSync(o)){A.warn(`Image "${i.uri}" was not found next to the model; textures using it are skipped.`);return}return{bytes:new Uint8Array(cA.readFileSync(o)),mime:i.mimeType??Ue(o)}}static warn(e){console.warn(`[GltfLoader] ${e}`)}static texCoordOf(e){return e.extensions?.KHR_texture_transform?.texCoord??e.texCoord??0}static uvPlan(e){let t=[e?.pbrMetallicRoughness?.baseColorTexture,e?.normalTexture,e?.pbrMetallicRoughness?.metallicRoughnessTexture,e?.occlusionTexture,e?.emissiveTexture].find(n=>n!==void 0);return t?{texCoord:A.texCoordOf(t),transform:t.extensions?.KHR_texture_transform}:{texCoord:0}}static textureImage(e,t,n,r,i){let o=e.textures?.[n];if(!o)return;let a=o.extensions?.EXT_texture_webp?.source??o.source;if(a===void 0){o.extensions?.KHR_texture_basisu&&A.warn(`${i} is a KTX2 / Basis texture, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let s=A.imageBytes(e,t,a,r);if(!s)return;if(!Io.has(s.mime)){A.warn(`${i} is ${s.mime}, which framefields cannot decode; it is skipped (use PNG, JPEG or WebP).`);return}let g=o.sampler!==void 0?e.samplers?.[o.sampler]:void 0;return{...s,sampler:g}}static buildMaterial(e,t,n,r,i){let o=n.pbrMetallicRoughness,a=o?.baseColorFactor??[1,1,1,1],s={name:r,diffuseColor:a,roughness:o?.roughnessFactor??.5,metallic:o?.metallicFactor??0,shininess:32*(1-(o?.roughnessFactor??.5)),opacity:a[3]??1,twoSided:n.doubleSided??!0,alphaMode:n.alphaMode==="MASK"?"mask":n.alphaMode==="BLEND"?"blend":"opaque",alphaCutoff:n.alphaMode==="MASK"?n.alphaCutoff??.5:0},g=n.emissiveFactor;g&&(g[0]>0||g[1]>0||g[2]>0)&&(s.emissive=[g[0],g[1],g[2]],s.emissiveStrength=n.extensions?.KHR_materials_emissive_strength?.emissiveStrength??1);let l=n.extensions?.VRMC_materials_mtoon;l?(s.shading="toon",s.shadeColor=l.shadeColorFactor??[1,1,1]):n.extensions?.KHR_materials_unlit&&(s.shading="unlit");let u=A.uvPlan(n),c=(D,p)=>{if(!D)return;let G=`The ${p} map of material "${r}"`,N=A.texCoordOf(D);if(N!==u.texCoord){A.warn(`${G} uses UV set ${N}, but the mesh draws with UV set ${u.texCoord}; the map is skipped.`);return}let w=D.extensions?.KHR_texture_transform;return JSON.stringify(w??null)!==JSON.stringify(u.transform??null)&&A.warn(`${G} has a different KHR_texture_transform than the mesh's first map; it is drawn with that one's.`),A.textureImage(e,t,D.index,i,G)},I=c(o?.baseColorTexture,"base color");if(I){s.diffuseTextureBuffer=I.bytes,s.diffuseTextureMime=I.mime;let D=I.sampler?.wrapS;s.textureWrap=D===33071?"clamp":D===33648?"mirror":"repeat",I.sampler?.magFilter===9728&&(s.textureFilter="nearest")}let E=(D,p)=>c(D,p)?.bytes,d=E(n.normalTexture,"normal");d&&(s.normalTextureBuffer=d,s.normalScale=n.normalTexture?.scale??1);let h=E(o?.metallicRoughnessTexture,"metallic-roughness");h&&(s.metallicRoughnessTextureBuffer=h,s.roughness=o?.roughnessFactor??1,s.metallic=o?.metallicFactor??1);let Q=E(n.occlusionTexture,"occlusion");Q&&(s.occlusionTextureBuffer=Q,s.occlusionStrength=n.occlusionTexture?.strength??1);let m=s.emissive&&E(n.emissiveTexture,"emissive");return m&&(s.emissiveTextureBuffer=m),s}static buildNodes(e){let t=(e.nodes??[]).map((n,r)=>({name:n.name??`node_${r}`,parent:-1,translation:n.translation??[0,0,0],rotation:n.rotation??[0,0,0,1],scale:n.scale??[1,1,1],matrix:n.matrix?n.matrix:void 0}));return(e.nodes??[]).forEach((n,r)=>{for(let i of n.children??[]){let o=t[i];o&&(o.parent=r)}}),t}static buildAnimations(e,t,n){return(e.animations??[]).map((r,i)=>{let o=[],a=0;for(let s of r.channels){let g=r.samplers[s.sampler],l=s.target.node;if(!g||l===void 0||s.target.path==="weights")continue;let u=A.readFloats(e,t,g.input).data,c=A.readFloats(e,t,g.output).data;a=Math.max(a,u[u.length-1]??0);let I={nodeName:n[l]?.name??`node_${l}`,node:l,times:u,interpolation:g.interpolation==="STEP"?"step":g.interpolation==="CUBICSPLINE"?"cubic":"linear"};s.target.path==="translation"?I.translations=c:s.target.path==="rotation"?I.rotations=c:I.scales=c,o.push(I)}return{name:r.name??`Animation_${i}`,duration:a>0?a:1,fps:30,tracks:o}})}static buildModel(e,t,n,r){let i=(e.materials??[]).map((S,K,F)=>{let z=S.name??`material_${K}`;return F.findIndex((Z,$)=>(Z.name??`material_${$}`)===z)===K?z:`${z}#${K}`}),o={};(e.materials??[]).forEach((S,K)=>{let F=i[K];o[F]=A.buildMaterial(e,t,S,F,r)});let a=(e.materials??[]).map(S=>A.uvPlan(S)),s=A.buildNodes(e),g=(e.skins??[]).map(S=>({joints:S.joints,inverseBindMatrices:S.inverseBindMatrices!==void 0?A.readFloats(e,t,S.inverseBindMatrices).data:Float32Array.from(S.joints.flatMap(()=>_.identity()))})),l=A.buildAnimations(e,t,s),u=(e.nodes??[]).flatMap((S,K)=>S.mesh!==void 0?[{mesh:S.mesh,node:K,skin:S.skin}]:[]),c=u.length>0?u:(e.meshes??[]).map((S,K)=>({mesh:K})),I={name:"glTF_Model",meshes:[],materials:o,nodes:s,skins:g,animations:l,bounds:{min:[0,0,0],max:[0,0,0],center:[0,0,0],size:[0,0,0],boundingSphereRadius:0}},E=It(I,void 0,0),d=1/0,h=1/0,Q=1/0,m=-1/0,D=-1/0,p=-1/0,G=(S,K,F)=>{S<d&&(d=S),S>m&&(m=S),K<h&&(h=K),K>D&&(D=K),F<Q&&(Q=F),F>p&&(p=F)};for(let S of c){let K=e.meshes?.[S.mesh];K&&K.primitives.forEach((F,z)=>{if(F.attributes.POSITION===void 0||F.mode!==void 0&&F.mode!==4)return;let Z=X=>X===void 0?void 0:A.readFloats(e,t,X),$=Z(F.attributes.POSITION),aA=$.count,W=F.material!==void 0?a[F.material]:void 0,Y=F.attributes,j=Z(Y[`TEXCOORD_${W?.texCoord??0}`])?.data??Z(F.attributes.TEXCOORD_0)?.data??new Float32Array(aA*2);W?.transform&&Bo(j,W.transform);let IA=Z(F.attributes.COLOR_0),dA;if(IA){dA=new Float32Array(aA*4).fill(1);for(let X=0;X<aA;X++)for(let P=0;P<IA.itemSize;P++){let nA=IA.data[X*IA.itemSize+P]??1;dA[X*4+P]=P<3?co(nA):nA}}let uA;if(F.indices!==void 0)uA=A.readIndices(e,t,F.indices);else{uA=aA>65535?new Uint32Array(aA):new Uint16Array(aA);for(let X=0;X<aA;X++)uA[X]=X}let mA=S.skin!==void 0&&F.attributes.JOINTS_0!==void 0,pA=!mA&&S.node!==void 0?E[S.node]:void 0;for(let X=0;X<aA;X++){let P=$.data[X*3],nA=$.data[X*3+1],tA=$.data[X*3+2];if(pA){let rA=_.projectPoint(pA,[P,nA,tA]);G(rA[0],rA[1],rA[2])}else G(P,nA,tA)}I.meshes.push({id:`gltf_mesh_${S.mesh}_${z}${S.node!==void 0?`_n${S.node}`:""}`,name:K.name??`Mesh_${S.mesh}`,positions:$.data,normals:Z(F.attributes.NORMAL)?.data??new Float32Array(aA*3),uvs:j,colors:dA,jointIndices:mA?Z(F.attributes.JOINTS_0)?.data:void 0,jointWeights:mA?Z(F.attributes.WEIGHTS_0)?.data:void 0,indices:uA,materialName:F.material!==void 0?i[F.material]:void 0,node:S.node,skin:mA?S.skin:void 0})})}for(let S of g)if(S.joints.length>re)throw new Error(`glTF skin has ${S.joints.length} joints; the mesh shader holds ${re}`);Number.isFinite(d)||(d=h=Q=0,m=D=p=0);let N=Math.max(m-d,D-h,p-Q,1e-4),w=n.normalizeSize&&n.normalizeSize>0?n.normalizeSize/N:1,U=typeof n.scale=="number"?[n.scale,n.scale,n.scale]:n.scale??[1,1,1],b=[w*U[0],w*U[1],w*U[2]],M=n.center?[(d+m)*.5,(h+D)*.5,(Q+p)*.5]:[0,0,0];I.rootTransform=_.multiply(_.scale(b[0],b[1],b[2]),_.translate(-M[0],-M[1],-M[2]));let v=[(d-M[0])*b[0],(h-M[1])*b[1],(Q-M[2])*b[2]],R=[(m-M[0])*b[0],(D-M[1])*b[1],(p-M[2])*b[2]];return I.bounds={min:v,max:R,center:[(v[0]+R[0])*.5,(v[1]+R[1])*.5,(v[2]+R[2])*.5],size:[R[0]-v[0],R[1]-v[1],R[2]-v[2]],boundingSphereRadius:Math.hypot(R[0]-v[0],R[1]-v[1],R[2]-v[2])*.5},I}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);let n=e.startsWith("file://")?e.replace("file://",""):e;if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")||!e.trimStart().startsWith("{")&&cA.existsSync(n)){let r=cA.readFileSync(n),i=MA.dirname(n);return A.parse(r,t,i)}return A.parse(e,t)}};function Et(A,e={}){return Ce.load(A,e)}function wr(A,e={}){return Ce.load(A,e)}function co(A){let e=Math.min(Math.max(A,0),1);return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}var Io=new Set(["image/png","image/jpeg","image/webp","image/gif","image/tiff","image/avif"]);function Bo(A,{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}){let r=Math.cos(t),i=Math.sin(t);for(let o=0;o<A.length;o+=2){let a=A[o]*n[0],s=A[o+1]*n[1];A[o]=r*a+i*s+e[0],A[o+1]=-i*a+r*s+e[1]}}k();var fo=[[0,0,0,0],...Array.from({length:255},(A,e)=>{let t=(e+1)/256;return[t,t,t,1]})],Oe=class A{static isVox(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<8?!1:new TextDecoder("ascii").decode(t.subarray(0,4))==="VOX "}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(new TextDecoder("ascii").decode(n.subarray(0,4))!=="VOX ")throw new Error("Invalid VOX file: magic mismatch");let o=8,a=16,s=16,g=16,l=[],u=[...fo];for(;o+12<=n.byteLength;){let c=new TextDecoder("ascii").decode(n.subarray(o,o+4)),I=r.getUint32(o+4,!0);o+=12;let E=o;if(c==="SIZE")a=r.getUint32(E,!0),s=r.getUint32(E+4,!0),g=r.getUint32(E+8,!0);else if(c==="XYZI"){let d=r.getUint32(E,!0),h=E+4;for(let Q=0;Q<d&&!(h+4>n.byteLength);Q++){let m=r.getUint8(h),D=r.getUint8(h+1),p=r.getUint8(h+2),G=r.getUint8(h+3);h+=4,l.push({x:m,y:D,z:p,colorIndex:G})}}else if(c==="RGBA")for(let d=0;d<256;d++){let h=E+d*4;if(h+4>n.byteLength)break;let Q=r.getUint8(h)/255,m=r.getUint8(h+1)/255,D=r.getUint8(h+2)/255,p=r.getUint8(h+3)/255,G=d===255?0:d+1;u[G]=[Q,m,D,p]}o+=I}return A.buildModel(l,u,a,s,g,t)}static buildModel(e,t,n,r,i,o){let a=new Set;e.forEach(p=>a.add(`${p.x},${p.y},${p.z}`));let s=[],g=[],l=[],u=[],c=[],I=(p,G,N,w,U,b)=>{let M=s.length/3;s.push(...p,...G,...N,...w),g.push(...U,...U,...U,...U),l.push(...b,...b,...b,...b),u.push(0,0,1,0,1,1,0,1),c.push(M,M+1,M+2,M,M+2,M+3)};for(let p of e){let{x:G,y:N,z:w,colorIndex:U}=p,b=t[U]??[.8,.8,.8,1],M=G,v=-w,R=N;a.has(`${G+1},${N},${w}`)||I([M+1,v,R],[M+1,v-1,R],[M+1,v-1,R+1],[M+1,v,R+1],[1,0,0],b),a.has(`${G-1},${N},${w}`)||I([M,v,R+1],[M,v-1,R+1],[M,v-1,R],[M,v,R],[-1,0,0],b),a.has(`${G},${N},${w+1}`)||I([M,v-1,R],[M+1,v-1,R],[M+1,v-1,R+1],[M,v-1,R+1],[0,-1,0],b),a.has(`${G},${N},${w-1}`)||I([M,v,R+1],[M+1,v,R+1],[M+1,v,R],[M,v,R],[0,1,0],b),a.has(`${G},${N+1},${w}`)||I([M+1,v,R+1],[M+1,v-1,R+1],[M,v-1,R+1],[M,v,R+1],[0,0,1],b),a.has(`${G},${N-1},${w}`)||I([M,v,R],[M,v-1,R],[M+1,v-1,R],[M+1,v,R],[0,0,-1],b)}let E=HA(s),d=RA(E,o),h=JA(s,d),Q=OA(c,h.length/3),m={name:"vox_default",diffuseColor:[1,1,1,1],shininess:32,specularIntensity:.4,...o.defaultMaterial};return{name:"VOX_Model",meshes:[{id:"vox_mesh_0",name:"vox_geometry",positions:h,normals:new Float32Array(g),uvs:new Float32Array(u),colors:new Float32Array(l),indices:Q,materialName:"vox_default"}],materials:{vox_default:m},animations:[],bounds:KA(E,d)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}throw new Error("VOX files must be binary buffers or local file paths")}};function dt(A,e={}){return Oe.load(A,e)}k();var nn=19789,Eo=15677,Co=16384,Qo=16640,mo=16656,ho=16672,po=16704,yo=45055,bo=40960,Do=40992,wo=16,xo=17,Ke=class A{static is3DS(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);return t.length<6?!1:new DataView(t.buffer,t.byteOffset,t.byteLength).getUint16(0,!0)===nn}static parse(e,t={}){let n=e instanceof Uint8Array?e:new Uint8Array(e),r=new DataView(n.buffer,n.byteOffset,n.byteLength);if(r.getUint16(0,!0)!==nn)throw new Error("Invalid 3DS file: 0x4D4D magic mismatch");let o=[],a={};return A.readChunk(r,0,n.byteLength,o,a),A.buildModel(o,a,t)}static readChunk(e,t,n,r,i,o="Object"){let a=t;for(;a+6<=n&&a+6<=e.byteLength;){let s=e.getUint16(a,!0),g=e.getUint32(a+2,!0);if(g<6)break;let l=a+g,u=a+6,c=Math.min(l,n,e.byteLength);switch(s){case nn:case Eo:A.readChunk(e,u,c,r,i,o);break;case Co:{let I=u;for(;I<c&&e.getUint8(I)!==0;)I++;let E=new Uint8Array(e.buffer,e.byteOffset+u,I-u),d=new TextDecoder("ascii").decode(E)||"Object";A.readChunk(e,I+1,c,r,i,d);break}case Qo:{let I={name:o,positions:[],indices:[],uvs:[]};A.readTriMesh(e,u,c,I,i),I.positions.length>0&&I.indices.length>0&&r.push(I);break}case yo:A.readMaterial(e,u,c,i);break;default:break}a=l}}static readTriMesh(e,t,n,r,i){let o=t;for(;o+6<=n;){let a=e.getUint16(o,!0),s=e.getUint32(o+2,!0);if(s<6)break;let g=o+s,l=o+6;if(a===mo){let u=e.getUint16(l,!0),c=l+2;for(let I=0;I<u&&!(c+12>n);I++){let E=e.getFloat32(c,!0),d=e.getFloat32(c+4,!0),h=e.getFloat32(c+8,!0);r.positions.push(E,d,h),c+=12}}else if(a===ho){let u=e.getUint16(l,!0),c=l+2;for(let I=0;I<u&&!(c+8>n);I++){let E=e.getUint16(c,!0),d=e.getUint16(c+2,!0),h=e.getUint16(c+4,!0);r.indices.push(E,d,h),c+=8}}else if(a===po){let u=e.getUint16(l,!0),c=l+2;for(let I=0;I<u&&!(c+8>n);I++){let E=e.getFloat32(c,!0),d=e.getFloat32(c+4,!0);r.uvs.push(E,1-d),c+=8}}o=g}}static readMaterial(e,t,n,r){let i=t,o="Material",a=[.8,.8,.8,1];for(;i+6<=n;){let s=e.getUint16(i,!0),g=e.getUint32(i+2,!0);if(g<6)break;let l=i+g,u=i+6;if(s===bo){let c=u;for(;c<l&&e.getUint8(c)!==0;)c++;let I=new Uint8Array(e.buffer,e.byteOffset+u,c-u);o=new TextDecoder("ascii").decode(I)||o}else if(s===Do&&u+6<=l){let c=e.getUint16(u,!0);if(c===wo&&u+18<=l){let I=e.getFloat32(u+6,!0),E=e.getFloat32(u+10,!0),d=e.getFloat32(u+14,!0);a=[I,E,d,1]}else if(c===xo&&u+9<=l){let I=e.getUint8(u+6)/255,E=e.getUint8(u+7)/255,d=e.getUint8(u+8)/255;a=[I,E,d,1]}}i=l}r[o]={name:o,diffuseColor:a,shininess:32,specularIntensity:.5}}static buildModel(e,t,n){let r=HA(...e.map(a=>a.positions)),i=RA(r,n);return{name:"3DS_Model",meshes:e.map((a,s)=>{let g=JA(a.positions,i),l=new Float32Array(a.positions.length);ne(g,a.indices,l);let u=a.uvs.length===a.positions.length/3*2?new Float32Array(a.uvs):new Float32Array(a.positions.length/3*2),c=OA(a.indices,g.length/3);return{id:`3ds_mesh_${s}`,name:a.name,positions:g,normals:l,uvs:u,indices:c,materialName:a.materialName}}),materials:t,animations:[],bounds:KA(r,i)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n);return A.parse(r,t)}throw new Error("3DS files must be binary buffers or local file paths")}};function Ct(A,e={}){return Ke.load(A,e)}k();var rn=class A{static parse(e,t={}){let r=(typeof e=="string"?e:new TextDecoder("utf-8").decode(e instanceof Uint8Array?e:new Uint8Array(e))).split(/\r?\n/),i=0;for(;i<r.length&&(!r[i].trim()||r[i].trim().startsWith("#"));)i++;if(i>=r.length)throw new Error("Empty OFF file");let o=r[i++].trim(),a=!1,s=!1;if(o.startsWith("NOFF")||o.startsWith("STOFF"))a=!0;else if(o.startsWith("COFF"))s=!0;else if(!o.startsWith("OFF"))throw new Error("Invalid OFF header: missing 'OFF'");o=o.replace(/^(?:ST|CO|NO|C|N)?OFF\s*/i,"").trim();let g=0,l=0;if(o.length>0){let U=o.split(/\s+/);g=Number.parseInt(U[0]??"0",10),l=Number.parseInt(U[1]??"0",10)}else for(;i<r.length;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/);g=Number.parseInt(b[0]??"0",10),l=Number.parseInt(b[1]??"0",10);break}let u=[],c=[],I=[],E=[],d=[],h=0;for(;i<r.length&&h<g;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/),M=Number.parseFloat(b[0]??"0")||0,v=Number.parseFloat(b[1]??"0")||0,R=Number.parseFloat(b[2]??"0")||0;u.push(M,v,R);let S=3;if(a){let K=Number.parseFloat(b[S]??"0")||0,F=Number.parseFloat(b[S+1]??"0")||0,z=Number.parseFloat(b[S+2]??"0")||0;c.push(K,F,z),S+=3}else c.push(0,0,0);if(s&&b.length>S){let K=(Number.parseFloat(b[S]??"255")||0)/(Number.parseFloat(b[S]??"255")>1?255:1),F=(Number.parseFloat(b[S+1]??"255")||0)/(Number.parseFloat(b[S+1]??"255")>1?255:1),z=(Number.parseFloat(b[S+2]??"255")||0)/(Number.parseFloat(b[S+2]??"255")>1?255:1),Z=b.length>S+3&&Number.parseFloat(b[S+3]??"1")||1;I.push(K,F,z,Z)}E.push(0,0),h++}let Q=0;for(;i<r.length&&Q<l;){let U=r[i++].trim();if(!U||U.startsWith("#"))continue;let b=U.split(/\s+/),M=Number.parseInt(b[0]??"0",10);if(M>=3){let v=Number.parseInt(b[1]??"0",10);for(let R=1;R<M-1;R++){let S=Number.parseInt(b[R+1]??"0",10),K=Number.parseInt(b[R+2]??"0",10);d.push(v,S,K)}}Q++}(!a||t.smoothNormals)&&ne(u,d,c);let m=HA(u),D=RA(m,t),p=JA(u,D),G=OA(d,p.length/3),N={name:"off_default",diffuseColor:s?[1,1,1,1]:[.8,.8,.85,1],shininess:32,specularIntensity:.5,...t.defaultMaterial};return{name:"OFF_Model",meshes:[{id:"off_mesh_0",name:"off_geometry",positions:p,normals:new Float32Array(c),uvs:new Float32Array(E),colors:s?new Float32Array(I):void 0,indices:G,materialName:"off_default"}],materials:{off_default:N},animations:[],bounds:KA(m,D)}}static load(e,t={}){if(typeof e!="string")return A.parse(e,t);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("file://")){let n=e.startsWith("file://")?e.replace("file://",""):e,r=cA.readFileSync(n,"utf-8");return A.parse(r,t)}return A.parse(e,t)}};function Qt(A,e={}){return rn.load(A,e)}k();var xr=`
|
|
144
144
|
struct CameraUniforms {
|
|
145
145
|
viewMatrix : mat4x4<f32>,
|
|
146
146
|
projMatrix : mat4x4<f32>,
|
|
@@ -348,7 +348,7 @@ fn fs_composite(in : VsOut) -> @location(0) vec4<f32> {
|
|
|
348
348
|
}
|
|
349
349
|
return vec4<f32>(linearToSrgb(sum / a) * a, a);
|
|
350
350
|
}
|
|
351
|
-
`,
|
|
351
|
+
`,on="rgba16float",mt=class{device;layout;prefilterPipe;downPipe;upPipe;compositePipes=new Map;module;pipelineLayout;sampler;mips=[];mipKey="";placeholder;uniformPool=new NA(48,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);constructor(e){this.device=e,this.module=e.createShaderModule({label:"bloom.wgsl",code:Mo}),this.layout=e.createBindGroupLayout({label:"BloomLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.pipelineLayout=e.createPipelineLayout({bindGroupLayouts:[this.layout]});let t=(n,r)=>e.createRenderPipeline({label:`Bloom:${n}`,layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:n,targets:[{format:on,...r&&{blend:{color:{srcFactor:"one",dstFactor:"one",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one",operation:"add"}}}}]},primitive:{topology:"triangle-list"}});this.prefilterPipe=t("fs_prefilter",!1),this.downPipe=t("fs_down",!1),this.upPipe=t("fs_up",!0),this.sampler=e.createSampler({label:"BloomSampler",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholder=e.createTexture({size:{width:1,height:1},format:on,usage:GPUTextureUsage.TEXTURE_BINDING})}compositePipe(e){let t=this.compositePipes.get(e);return t||(t=this.device.createRenderPipeline({label:"Bloom:composite",layout:this.pipelineLayout,vertex:{module:this.module,entryPoint:"vs"},fragment:{module:this.module,entryPoint:"fs_composite",targets:[{format:e}]},primitive:{topology:"triangle-list"}}),this.compositePipes.set(e,t)),t}ensureMips(e,t,n){let r=`${e}x${t}x${n}`;if(r===this.mipKey)return;for(let a of this.mips)a.destroy();this.mips=[];let i=e,o=t;for(let a=0;a<n&&(i=Math.max(1,Math.floor(i/2)),o=Math.max(1,Math.floor(o/2)),this.mips.push(this.device.createTexture({label:`BloomMip${a}`,size:{width:i,height:o},format:on,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),!(i===1&&o===1));a++);this.mipKey=r}uniforms(e,t,n){let r=new Float32Array([e,t,n.threshold,n.knee,n.intensity,n.mode,0,0,n.tint[0],n.tint[1],n.tint[2],1]);return this.uniformPool.getBuffer(this.device,r)}pass(e,t,n,r,i,o,a){let s=this.device.createBindGroup({layout:this.layout,entries:[{binding:0,resource:{buffer:o}},{binding:1,resource:this.sampler},{binding:2,resource:r.createView()},{binding:3,resource:i.createView()}]}),g=e.beginRenderPass({colorAttachments:[{view:n,loadOp:a,storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});g.setPipeline(t),g.setBindGroup(0,s),g.draw(3),g.end()}apply(e,t,n,r={},i){let o=!i,a=E=>E<=.04045?E/12.92:((E+.055)/1.055)**2.4,s=r.threshold??(o?.85:2.5),g={intensity:r.intensity??.2,threshold:o?a(s):s,knee:r.knee??.4,tint:r.tint??[1,1,1],mode:o?1:0},l=Math.max(1,Math.min(8,Math.round(r.radius??6)));this.ensureMips(t.width,t.height,l);let u=this.mips,c=(E,d)=>this.uniforms(1/E,1/d,g),I=i??t;this.pass(e,this.prefilterPipe,u[0].createView(),I,this.placeholder,c(I.width,I.height),"clear");for(let E=1;E<u.length;E++){let d=u[E-1];this.pass(e,this.downPipe,u[E].createView(),d,this.placeholder,c(d.width,d.height),"clear")}for(let E=u.length-1;E>0;E--){let d=u[E];this.pass(e,this.upPipe,u[E-1].createView(),d,this.placeholder,c(d.width,d.height),"load")}this.pass(e,this.compositePipe(n.format),n.createView(),u[0],t,c(u[0].width,u[0].height),"clear")}resetPools(){this.uniformPool.reset()}destroy(){for(let e of this.mips)e.destroy();this.placeholder.destroy(),this.uniformPool.destroy()}};k();k();k();var Qe=`
|
|
352
352
|
struct CameraUniforms {
|
|
353
353
|
viewMatrix : mat4x4<f32>,
|
|
354
354
|
projMatrix : mat4x4<f32>,
|
|
@@ -1103,7 +1103,7 @@ fn fs_mrt_bloom(in: VertexOutput, @builtin(front_facing) isFront: bool) -> MrtBl
|
|
|
1103
1103
|
out.hdr = f.hdr;
|
|
1104
1104
|
return out;
|
|
1105
1105
|
}
|
|
1106
|
-
`;k();function se(A){return{binding:A,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}}var Gr=new WeakMap;function ge(A){let e=Gr.get(A);if(!e){let t=A.createTexture({label:"Matte3DFullCoverage",size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});A.queue.writeTexture({texture:t},new Uint8Array([255,255,255,255]),{bytesPerRow:4},[1,1]),e=t.createView(),Gr.set(A,e)}return e}k();var Nr="rgba16float",Go="rgba16float";function pe(A,e){let t=n=>A.createRenderPipeline({label:`${e.label}${n?"Mrt":"Single"}`,layout:e.layout,vertex:e.vertex,fragment:{module:e.module,entryPoint:n?"fs_mrt":"fs_single",targets:[{format:e.format,blend:
|
|
1106
|
+
`;k();function se(A){return{binding:A,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}}var Gr=new WeakMap;function ge(A){let e=Gr.get(A);if(!e){let t=A.createTexture({label:"Matte3DFullCoverage",size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});A.queue.writeTexture({texture:t},new Uint8Array([255,255,255,255]),{bytesPerRow:4},[1,1]),e=t.createView(),Gr.set(A,e)}return e}k();var Nr="rgba16float",Go="rgba16float";function pe(A,e){let t=n=>A.createRenderPipeline({label:`${e.label}${n?"Mrt":"Single"}`,layout:e.layout,vertex:e.vertex,fragment:{module:e.module,entryPoint:n?"fs_mrt":"fs_single",targets:[{format:e.format,blend:at},...n?[{format:Nr}]:[]]},depthStencil:e.depthStencil,primitive:e.primitive,multisample:e.multisample});return{single:t(!1),mrt:t(!0)}}var ie=class{constructor(e,t){this.device=e;this.base=t}device;base;cache=new Map;get(e){let t=this.cache.get(e);if(!t){let n=this.base;t=this.device.createRenderPipeline({label:`${n.label}${e?"MrtBloom":"Bloom"}`,layout:n.layout,vertex:n.vertex,fragment:{module:n.module,entryPoint:e?"fs_mrt_bloom":"fs_single_bloom",targets:[{format:n.format,blend:at},...e?[{format:Nr}]:[],{format:Go,blend:at}]},depthStencil:n.depthStencil,primitive:n.primitive,multisample:n.multisample}),this.cache.set(e,t)}return t}};function ht(A,e,t,n){let r=t??e,i=n??[1,1,1,1];for(let o=0;o<16;o++)A[o]=e[o]??0,A[16+o]=r[o]??0;A[32]=i[0],A[33]=i[1],A[34]=i[2],A[35]=i[3]}k();k();var Fr=`
|
|
1107
1107
|
${Qe}
|
|
1108
1108
|
struct ModelUniforms {
|
|
1109
1109
|
modelMatrix : mat4x4<f32>,
|
|
@@ -1318,7 +1318,7 @@ fn fs_shadow(in: VertexOutput) {
|
|
|
1318
1318
|
discard;
|
|
1319
1319
|
}
|
|
1320
1320
|
}
|
|
1321
|
-
`;k();var yt="depth32float",bt={format:yt,depthWriteEnabled:!0,depthCompare:"less-equal",depthBias:2,depthBiasSlopeScale:2.5,depthBiasClamp:.01};k();var _A=8;function ye(A,e,t){e[t]=A.roughness??-1,e[t+1]=A.metallic??0,e[t+2]=0,e[t+3]=0;let n=A.emissive;if(n==null){e.fill(0,t+4,t+8);return}let r;if(Array.isArray(n))r=[n[0],n[1],n[2]];else{let i=at(n);r=[i.r*i.a,i.g*i.a,i.b*i.a]}e[t+4]=r[0],e[t+5]=r[1],e[t+6]=r[2],e[t+7]=A.emissiveIntensity??1}function sn(A,e="Lights3DLayout"){return A.createBindGroupLayout({label:e,entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}}]})}function gn(A){let e=A.roughness!==void 0?Math.max(1,(1-A.roughness)*128):A.shininess??32,t=A.metallic!==void 0?A.metallic:A.specularIntensity??.5,n=A.ambientIntensity??1,r=A.material==="unlit"?0:1;return[e,t,n,r]}var Dt=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;vertexBuffer;indexBuffer;modelData=new Float32Array(52+_A);constructor(e,t,n="depth24plus",r=1){this.device=e,this.modelPool=new NA((52+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let i=e.createShaderModule({label:"quad3d.wgsl",code:Fr});this.cameraLayout=e.createBindGroupLayout({label:"Quad3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Quad3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},se(1)]}),this.textureLayout=e.createBindGroupLayout({label:"Quad3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=sn(e,"Quad3DLightsLayout");let o=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),a={module:i,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},s={label:"Quad3DPipeline",layout:o,vertex:a,module:i,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:r}},{single:g,mrt:l}=pe(e,s);this.pipelineSingle=g,this.pipelineMrt=l,this.bloomVariants=new ie(e,s),this.pipelineShadow=e.createRenderPipeline({label:"Quad3DPipelineShadow",layout:e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout]}),vertex:a,fragment:{module:i,entryPoint:"fs_shadow",targets:[]},depthStencil:bt,primitive:{topology:"triangle-list",cullMode:"none"}});let u=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),c=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=e.createBuffer({size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(u),this.vertexBuffer.unmap(),this.indexBuffer=e.createBuffer({size:c.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(c),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset()}packModel(e){pt(this.modelData,e.modelMatrix,e.normalMatrix,e.colorTint);let t=e.borderColor??[0,0,0,0];this.modelData[36]=t[0],this.modelData[37]=t[1],this.modelData[38]=t[2],this.modelData[39]=t[3],this.modelData[40]=e.opacity??1,this.modelData[41]=e.borderRadius??0,this.modelData[42]=e.twoSided?1:0,this.modelData[43]=e.borderWidth??0,this.modelData[44]=e.width??0,this.modelData[45]=e.height??0,this.modelData[46]=e.textureExtent?.[0]??0,this.modelData[47]=e.textureExtent?.[1]??0,this.modelData.set(gn(e),48),ye(e,this.modelData,52);let n=this.modelPool.getBuffer(this.device,this.modelData);return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:n}},{binding:1,resource:e.matte?.createView()??ge(this.device)}]})}textureBindGroup(e,t){return this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:t},{binding:1,resource:e.createView()}]})}draw(e,t,n,r,i,o,a=!1,s=!1){let g=this.packModel(o),l=this.textureBindGroup(r,i);e.setPipeline(s?this.bloomVariants.get(a):a?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,g),e.setBindGroup(2,l),e.setBindGroup(3,n),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}drawShadow(e,t,n,r,i){e.setPipeline(this.pipelineShadow),e.setBindGroup(0,t),e.setBindGroup(1,this.packModel(i)),e.setBindGroup(2,this.textureBindGroup(n,r)),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};var wt=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;flatNormalTexture;defaultSkinningBuffer;whiteColorBuffer=null;whiteColorCapacity=0;retiredColorBuffers=[];modelData=new Float32Array(52+_A);constructor(e,t,n="depth24plus",r,i,o=1){this.device=e,this.modelPool=new NA((52+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new NA(8192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"mesh3d.wgsl",code:Mr});this.cameraLayout=r??e.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform"}},se(2),se(3)]}),this.textureLayout=e.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},...[1,2,3,4,5].map(E=>({binding:E,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}))]}),this.lightsLayout=i??sn(e,"Mesh3DLightsLayout");let s=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),g={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]},{arrayStride:16,attributes:[{shaderLocation:5,offset:0,format:"float32x4"}]}]},l={label:"Mesh3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:u,mrt:c}=pe(e,l);this.pipelineSingle=u,this.pipelineMrt=c,this.bloomVariants=new ie(e,l),this.pipelineShadow=e.createRenderPipeline({label:"Mesh3DPipelineShadow",layout:e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:g,depthStencil:bt,primitive:{topology:"triangle-list",cullMode:"none"}}),this.defaultWhiteTexture=e.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1}),this.flatNormalTexture=e.createTexture({label:"Mesh3DFlatNormalTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.flatNormalTexture},new Uint8Array([128,128,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let B=new Float32Array(2048);for(let E=0;E<128;E++)B[E*16]=1,B[E*16+5]=1,B[E*16+10]=1,B[E*16+15]=1;this.defaultSkinningBuffer=e.createBuffer({size:8192,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(B),this.defaultSkinningBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}packModel(e){pt(this.modelData,e.modelMatrix,e.normalMatrix,e.colorTint),this.modelData[36]=e.opacity??1,this.modelData[37]=e.twoSided?1:0,this.modelData[38]=e.isSkinned?1:0,this.modelData[39]=e.wireframe?1:0;let t=e.roughness!==void 0?Math.max(1,(1-e.roughness)*128):e.shininess??32,n=e.metallic!==void 0?e.metallic:e.specularIntensity??.5,r=e.ambientIntensity??1,i=e.material==="unlit"?0:e.material==="toon"?2:1;this.modelData[40]=t,this.modelData[41]=n,this.modelData[42]=r,this.modelData[43]=i;let o=e.shadeColor??[1,1,1];this.modelData[44]=o[0],this.modelData[45]=o[1],this.modelData[46]=o[2],this.modelData[47]=e.alphaCutoff??0,ye(e,this.modelData,48);let a=e.maps;this.modelData[56]=a?.normal?a.normalScale??1:0,this.modelData[57]=a?.occlusion?a.occlusionStrength??1:0,this.modelData[58]=a?.metallicRoughness?1:0,this.modelData[59]=a?.emissive?1:0;let s=e.glass;s&&(this.modelData[44]=s.dispersion,this.modelData[45]=s.thickness,this.modelData[46]=s.frost,this.modelData[50]=1,this.modelData[51]=s.ior);let g=this.modelPool.getBuffer(this.device,this.modelData),l=e.isSkinned&&e.skinningMatrices?this.skinningPool.getBuffer(this.device,e.skinningMatrices):this.defaultSkinningBuffer;return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:g}},{binding:1,resource:{buffer:l}},{binding:2,resource:e.matte?.createView()??ge(this.device)},{binding:3,resource:e.glass&&e.backdrop?.createView()||ge(this.device)}]})}draw(e,t,n,r,i,o,a,s=!1,g=!1){let l=this.packModel(a),u=this.defaultWhiteTexture,c=a.maps,B=this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:o},{binding:1,resource:(i??u).createView()},{binding:2,resource:(c?.normal??this.flatNormalTexture).createView()},{binding:3,resource:(c?.metallicRoughness??u).createView()},{binding:4,resource:(c?.occlusion??u).createView()},{binding:5,resource:(c?.emissive??u).createView()}]});e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,l),e.setBindGroup(2,B),e.setBindGroup(3,n),e.setVertexBuffer(0,r.vertexBuffer),e.setVertexBuffer(1,this.colorsFor(r)),e.setIndexBuffer(r.indexBuffer,r.indexFormat),e.drawIndexed(r.indexCount)}drawShadow(e,t,n,r){e.setPipeline(this.pipelineShadow),e.setBindGroup(0,t),e.setBindGroup(1,this.packModel(r)),e.setVertexBuffer(0,n.vertexBuffer),e.setVertexBuffer(1,this.colorsFor(n)),e.setIndexBuffer(n.indexBuffer,n.indexFormat),e.drawIndexed(n.indexCount)}colorsFor(e){if(e.colorBuffer)return e.colorBuffer;let t=Math.max(1,Math.ceil(e.vertexBuffer.size/64));if(!this.whiteColorBuffer||this.whiteColorCapacity<t){this.whiteColorBuffer&&this.retiredColorBuffers.push(this.whiteColorBuffer);let n=2**Math.ceil(Math.log2(t));this.whiteColorBuffer=this.device.createBuffer({label:"Mesh3DWhiteVertexColors",size:n*16,usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(this.whiteColorBuffer.getMappedRange()).fill(1),this.whiteColorBuffer.unmap(),this.whiteColorCapacity=n}return this.whiteColorBuffer}destroy(){this.whiteColorBuffer?.destroy();for(let e of this.retiredColorBuffers)e.destroy();this.modelPool.destroy(),this.skinningPool.destroy(),this.defaultWhiteTexture.destroy(),this.flatNormalTexture.destroy(),this.defaultSkinningBuffer.destroy()}};k();function ln(A){let{min:e,max:t}=A;return[[e[0],e[1],e[2]],[t[0],e[1],e[2]],[e[0],t[1],e[2]],[t[0],t[1],e[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[e[0],t[1],t[2]],[t[0],t[1],t[2]]]}function un(A,e){let t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let[r,i,o]of ln(A)){let a=[e[0]*r+e[4]*i+e[8]*o+e[12],e[1]*r+e[5]*i+e[9]*o+e[13],e[2]*r+e[6]*i+e[10]*o+e[14]];for(let s=0;s<3;s++)a[s]<t[s]&&(t[s]=a[s]),a[s]>n[s]&&(n[s]=a[s])}return{min:t,max:n}}function xt(A,e){return[A[0]*e[0]+A[4]*e[1]+A[8]*e[2]+A[12],A[1]*e[0]+A[5]*e[1]+A[9]*e[2]+A[13],A[2]*e[0]+A[6]*e[1]+A[10]*e[2]+A[14]]}function Sr(A){return Math.abs(A[1])>.98?[0,0,1]:[0,-1,0]}function Ur(A,e,t,n){if(e.length===0)return null;let r=H.normalize(A.direction),i=e.flatMap(ln),o=[...i,...t.flatMap(ln)];if(A.type==="directional"){let E=[0,0,0];for(let R of i)E[0]+=R[0]/i.length,E[1]+=R[1]/i.length,E[2]+=R[2]/i.length;let d=H.subtract(E,H.multiplyScalar(r,1)),h=_.lookAt(d,E,Sr(r)),Q=1/0,m=-1/0,D=1/0,p=-1/0;for(let R of i){let S=xt(h,R);Q=Math.min(Q,S[0]),m=Math.max(m,S[0]),D=Math.min(D,S[1]),p=Math.max(p,S[1])}let G=1/0,N=-1/0;for(let R of o){let S=xt(h,R)[2];G=Math.min(G,S),N=Math.max(N,S)}let w=Math.max(m-Q,p-D)*.5*1.08+4,U=(Q+m)/2,b=(D+p)/2,M=Math.max(10,(N-G)*.02),v=_.orthographic(U-w,U+w,b-w,b+w,G-M,N+M);return{viewProj:_.multiply(v,h),texelWorldSize:2*w/n}}let a=A.position,s=_.lookAt(a,H.add(a,r),Sr(r)),g=1/0,l=0,u=0;for(let E of o){let d=xt(s,E)[2];d>0&&(g=Math.min(g,d),l=Math.max(l,d))}for(let E of i)u=Math.max(u,xt(s,E)[2]);if(!Number.isFinite(g)||l<=0)return null;g=Math.max(1,g*.9),l=l*1.05+1;let c=Math.min(170,2*(A.angle??45)+4)*Math.PI/180,B=_.perspective(c,1,g,l);return{viewProj:_.multiply(B,s),texelWorldSize:2*Math.tan(c/2)*Math.max(u,g)/n}}k();k();var vr=`
|
|
1321
|
+
`;k();var pt="depth32float",yt={format:pt,depthWriteEnabled:!0,depthCompare:"less-equal",depthBias:2,depthBiasSlopeScale:2.5,depthBiasClamp:.01};k();var _A=8;function ye(A,e,t){e[t]=A.roughness??-1,e[t+1]=A.metallic??0,e[t+2]=0,e[t+3]=0;let n=A.emissive;if(n==null){e.fill(0,t+4,t+8);return}let r;if(Array.isArray(n))r=[n[0],n[1],n[2]];else{let i=ot(n);r=[i.r*i.a,i.g*i.a,i.b*i.a]}e[t+4]=r[0],e[t+5]=r[1],e[t+6]=r[2],e[t+7]=A.emissiveIntensity??1}function an(A,e="Lights3DLayout"){return A.createBindGroupLayout({label:e,entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}}]})}function sn(A){let e=A.roughness!==void 0?Math.max(1,(1-A.roughness)*128):A.shininess??32,t=A.metallic!==void 0?A.metallic:A.specularIntensity??.5,n=A.ambientIntensity??1,r=A.material==="unlit"?0:1;return[e,t,n,r]}var bt=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;vertexBuffer;indexBuffer;modelData=new Float32Array(52+_A);constructor(e,t,n="depth24plus",r=1){this.device=e,this.modelPool=new NA((52+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let i=e.createShaderModule({label:"quad3d.wgsl",code:Fr});this.cameraLayout=e.createBindGroupLayout({label:"Quad3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Quad3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},se(1)]}),this.textureLayout=e.createBindGroupLayout({label:"Quad3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.lightsLayout=an(e,"Quad3DLightsLayout");let o=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),a={module:i,entryPoint:"vs_main",buffers:[{arrayStride:32,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"}]}]},s={label:"Quad3DPipeline",layout:o,vertex:a,module:i,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:r}},{single:g,mrt:l}=pe(e,s);this.pipelineSingle=g,this.pipelineMrt=l,this.bloomVariants=new ie(e,s),this.pipelineShadow=e.createRenderPipeline({label:"Quad3DPipelineShadow",layout:e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout]}),vertex:a,fragment:{module:i,entryPoint:"fs_shadow",targets:[]},depthStencil:yt,primitive:{topology:"triangle-list",cullMode:"none"}});let u=new Float32Array([-.5,-.5,0,0,0,0,0,-1,.5,-.5,0,1,0,0,0,-1,.5,.5,0,1,1,0,0,-1,-.5,.5,0,0,1,0,0,-1]),c=new Uint16Array([0,1,2,0,2,3]);this.vertexBuffer=e.createBuffer({size:u.byteLength,usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.vertexBuffer.getMappedRange()).set(u),this.vertexBuffer.unmap(),this.indexBuffer=e.createBuffer({size:c.byteLength,usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Uint16Array(this.indexBuffer.getMappedRange()).set(c),this.indexBuffer.unmap()}resetPools(){this.modelPool.reset()}packModel(e){ht(this.modelData,e.modelMatrix,e.normalMatrix,e.colorTint);let t=e.borderColor??[0,0,0,0];this.modelData[36]=t[0],this.modelData[37]=t[1],this.modelData[38]=t[2],this.modelData[39]=t[3],this.modelData[40]=e.opacity??1,this.modelData[41]=e.borderRadius??0,this.modelData[42]=e.twoSided?1:0,this.modelData[43]=e.borderWidth??0,this.modelData[44]=e.width??0,this.modelData[45]=e.height??0,this.modelData[46]=e.textureExtent?.[0]??0,this.modelData[47]=e.textureExtent?.[1]??0,this.modelData.set(sn(e),48),ye(e,this.modelData,52);let n=this.modelPool.getBuffer(this.device,this.modelData);return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:n}},{binding:1,resource:e.matte?.createView()??ge(this.device)}]})}textureBindGroup(e,t){return this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:t},{binding:1,resource:e.createView()}]})}draw(e,t,n,r,i,o,a=!1,s=!1){let g=this.packModel(o),l=this.textureBindGroup(r,i);e.setPipeline(s?this.bloomVariants.get(a):a?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,g),e.setBindGroup(2,l),e.setBindGroup(3,n),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}drawShadow(e,t,n,r,i){e.setPipeline(this.pipelineShadow),e.setBindGroup(0,t),e.setBindGroup(1,this.packModel(i)),e.setBindGroup(2,this.textureBindGroup(n,r)),e.setVertexBuffer(0,this.vertexBuffer),e.setIndexBuffer(this.indexBuffer,"uint16"),e.drawIndexed(6)}destroy(){this.modelPool.destroy(),this.vertexBuffer.destroy(),this.indexBuffer.destroy()}};var Dt=class{device;pipelineSingle;pipelineMrt;bloomVariants;pipelineShadow;cameraLayout;modelLayout;textureLayout;lightsLayout;modelPool;skinningPool;defaultWhiteTexture;flatNormalTexture;defaultSkinningBuffer;whiteColorBuffer=null;whiteColorCapacity=0;retiredColorBuffers=[];modelData=new Float32Array(52+_A);constructor(e,t,n="depth24plus",r,i,o=1){this.device=e,this.modelPool=new NA((52+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.skinningPool=new NA(8192,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"mesh3d.wgsl",code:Mr});this.cameraLayout=r??e.createBindGroupLayout({label:"Mesh3DCameraLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}}]}),this.modelLayout=e.createBindGroupLayout({label:"Mesh3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform"}},se(2),se(3)]}),this.textureLayout=e.createBindGroupLayout({label:"Mesh3DTextureLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},...[1,2,3,4,5].map(E=>({binding:E,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}))]}),this.lightsLayout=i??an(e,"Mesh3DLightsLayout");let s=e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout,this.textureLayout,this.lightsLayout]}),g={module:a,entryPoint:"vs_main",buffers:[{arrayStride:64,attributes:[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x2"},{shaderLocation:2,offset:20,format:"float32x3"},{shaderLocation:3,offset:32,format:"float32x4"},{shaderLocation:4,offset:48,format:"float32x4"}]},{arrayStride:16,attributes:[{shaderLocation:5,offset:0,format:"float32x4"}]}]},l={label:"Mesh3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:u,mrt:c}=pe(e,l);this.pipelineSingle=u,this.pipelineMrt=c,this.bloomVariants=new ie(e,l),this.pipelineShadow=e.createRenderPipeline({label:"Mesh3DPipelineShadow",layout:e.createPipelineLayout({bindGroupLayouts:[this.cameraLayout,this.modelLayout]}),vertex:g,depthStencil:yt,primitive:{topology:"triangle-list",cullMode:"none"}}),this.defaultWhiteTexture=e.createTexture({label:"Mesh3DDefaultWhiteTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.defaultWhiteTexture},new Uint8Array([255,255,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1}),this.flatNormalTexture=e.createTexture({label:"Mesh3DFlatNormalTexture",size:{width:1,height:1},format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST}),e.queue.writeTexture({texture:this.flatNormalTexture},new Uint8Array([128,128,255,255]),{bytesPerRow:4,rowsPerImage:1},{width:1,height:1});let I=new Float32Array(2048);for(let E=0;E<128;E++)I[E*16]=1,I[E*16+5]=1,I[E*16+10]=1,I[E*16+15]=1;this.defaultSkinningBuffer=e.createBuffer({size:8192,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,mappedAtCreation:!0}),new Float32Array(this.defaultSkinningBuffer.getMappedRange()).set(I),this.defaultSkinningBuffer.unmap()}resetPools(){this.modelPool.reset(),this.skinningPool.reset()}packModel(e){ht(this.modelData,e.modelMatrix,e.normalMatrix,e.colorTint),this.modelData[36]=e.opacity??1,this.modelData[37]=e.twoSided?1:0,this.modelData[38]=e.isSkinned?1:0,this.modelData[39]=e.wireframe?1:0;let t=e.roughness!==void 0?Math.max(1,(1-e.roughness)*128):e.shininess??32,n=e.metallic!==void 0?e.metallic:e.specularIntensity??.5,r=e.ambientIntensity??1,i=e.material==="unlit"?0:e.material==="toon"?2:1;this.modelData[40]=t,this.modelData[41]=n,this.modelData[42]=r,this.modelData[43]=i;let o=e.shadeColor??[1,1,1];this.modelData[44]=o[0],this.modelData[45]=o[1],this.modelData[46]=o[2],this.modelData[47]=e.alphaCutoff??0,ye(e,this.modelData,48);let a=e.maps;this.modelData[56]=a?.normal?a.normalScale??1:0,this.modelData[57]=a?.occlusion?a.occlusionStrength??1:0,this.modelData[58]=a?.metallicRoughness?1:0,this.modelData[59]=a?.emissive?1:0;let s=e.glass;s&&(this.modelData[44]=s.dispersion,this.modelData[45]=s.thickness,this.modelData[46]=s.frost,this.modelData[50]=1,this.modelData[51]=s.ior);let g=this.modelPool.getBuffer(this.device,this.modelData),l=e.isSkinned&&e.skinningMatrices?this.skinningPool.getBuffer(this.device,e.skinningMatrices):this.defaultSkinningBuffer;return this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:g}},{binding:1,resource:{buffer:l}},{binding:2,resource:e.matte?.createView()??ge(this.device)},{binding:3,resource:e.glass&&e.backdrop?.createView()||ge(this.device)}]})}draw(e,t,n,r,i,o,a,s=!1,g=!1){let l=this.packModel(a),u=this.defaultWhiteTexture,c=a.maps,I=this.device.createBindGroup({layout:this.textureLayout,entries:[{binding:0,resource:o},{binding:1,resource:(i??u).createView()},{binding:2,resource:(c?.normal??this.flatNormalTexture).createView()},{binding:3,resource:(c?.metallicRoughness??u).createView()},{binding:4,resource:(c?.occlusion??u).createView()},{binding:5,resource:(c?.emissive??u).createView()}]});e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,l),e.setBindGroup(2,I),e.setBindGroup(3,n),e.setVertexBuffer(0,r.vertexBuffer),e.setVertexBuffer(1,this.colorsFor(r)),e.setIndexBuffer(r.indexBuffer,r.indexFormat),e.drawIndexed(r.indexCount)}drawShadow(e,t,n,r){e.setPipeline(this.pipelineShadow),e.setBindGroup(0,t),e.setBindGroup(1,this.packModel(r)),e.setVertexBuffer(0,n.vertexBuffer),e.setVertexBuffer(1,this.colorsFor(n)),e.setIndexBuffer(n.indexBuffer,n.indexFormat),e.drawIndexed(n.indexCount)}colorsFor(e){if(e.colorBuffer)return e.colorBuffer;let t=Math.max(1,Math.ceil(e.vertexBuffer.size/64));if(!this.whiteColorBuffer||this.whiteColorCapacity<t){this.whiteColorBuffer&&this.retiredColorBuffers.push(this.whiteColorBuffer);let n=2**Math.ceil(Math.log2(t));this.whiteColorBuffer=this.device.createBuffer({label:"Mesh3DWhiteVertexColors",size:n*16,usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(this.whiteColorBuffer.getMappedRange()).fill(1),this.whiteColorBuffer.unmap(),this.whiteColorCapacity=n}return this.whiteColorBuffer}destroy(){this.whiteColorBuffer?.destroy();for(let e of this.retiredColorBuffers)e.destroy();this.modelPool.destroy(),this.skinningPool.destroy(),this.defaultWhiteTexture.destroy(),this.flatNormalTexture.destroy(),this.defaultSkinningBuffer.destroy()}};k();function gn(A){let{min:e,max:t}=A;return[[e[0],e[1],e[2]],[t[0],e[1],e[2]],[e[0],t[1],e[2]],[t[0],t[1],e[2]],[e[0],e[1],t[2]],[t[0],e[1],t[2]],[e[0],t[1],t[2]],[t[0],t[1],t[2]]]}function ln(A,e){let t=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let[r,i,o]of gn(A)){let a=[e[0]*r+e[4]*i+e[8]*o+e[12],e[1]*r+e[5]*i+e[9]*o+e[13],e[2]*r+e[6]*i+e[10]*o+e[14]];for(let s=0;s<3;s++)a[s]<t[s]&&(t[s]=a[s]),a[s]>n[s]&&(n[s]=a[s])}return{min:t,max:n}}function wt(A,e){return[A[0]*e[0]+A[4]*e[1]+A[8]*e[2]+A[12],A[1]*e[0]+A[5]*e[1]+A[9]*e[2]+A[13],A[2]*e[0]+A[6]*e[1]+A[10]*e[2]+A[14]]}function Sr(A){return Math.abs(A[1])>.98?[0,0,1]:[0,-1,0]}function Ur(A,e,t,n){if(e.length===0)return null;let r=H.normalize(A.direction),i=e.flatMap(gn),o=[...i,...t.flatMap(gn)];if(A.type==="directional"){let E=[0,0,0];for(let R of i)E[0]+=R[0]/i.length,E[1]+=R[1]/i.length,E[2]+=R[2]/i.length;let d=H.subtract(E,H.multiplyScalar(r,1)),h=_.lookAt(d,E,Sr(r)),Q=1/0,m=-1/0,D=1/0,p=-1/0;for(let R of i){let S=wt(h,R);Q=Math.min(Q,S[0]),m=Math.max(m,S[0]),D=Math.min(D,S[1]),p=Math.max(p,S[1])}let G=1/0,N=-1/0;for(let R of o){let S=wt(h,R)[2];G=Math.min(G,S),N=Math.max(N,S)}let w=Math.max(m-Q,p-D)*.5*1.08+4,U=(Q+m)/2,b=(D+p)/2,M=Math.max(10,(N-G)*.02),v=_.orthographic(U-w,U+w,b-w,b+w,G-M,N+M);return{viewProj:_.multiply(v,h),texelWorldSize:2*w/n}}let a=A.position,s=_.lookAt(a,H.add(a,r),Sr(r)),g=1/0,l=0,u=0;for(let E of o){let d=wt(s,E)[2];d>0&&(g=Math.min(g,d),l=Math.max(l,d))}for(let E of i)u=Math.max(u,wt(s,E)[2]);if(!Number.isFinite(g)||l<=0)return null;g=Math.max(1,g*.9),l=l*1.05+1;let c=Math.min(170,2*(A.angle??45)+4)*Math.PI/180,I=_.perspective(c,1,g,l);return{viewProj:_.multiply(I,s),texelWorldSize:2*Math.tan(c/2)*Math.max(u,g)/n}}k();k();var vr=`
|
|
1322
1322
|
${Qe}
|
|
1323
1323
|
|
|
1324
1324
|
struct TextModelUniforms {
|
|
@@ -1520,6 +1520,6 @@ struct MrtBloomOutput {
|
|
|
1520
1520
|
out.hdr = f.hdr;
|
|
1521
1521
|
return out;
|
|
1522
1522
|
}
|
|
1523
|
-
`;var Rr=24,Mt=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+_A);constructor(e,t,n,r,i,o=1){this.device=e,this.modelPool=new NA((40+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new NA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:vr});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},se(1)]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,i]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:Rr*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},B={label:"Slug3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:E,mrt:d}=pe(e,B);this.pipelineSingle=E,this.pipelineMrt=d,this.bloomVariants=new ie(e,B)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,i,o,a,s=!1,g=!1){if(o===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(gn(a),36),ye(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),u=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??ge(this.device)}]}),c=this.instancePool.getBuffer(this.device,i.subarray(0,o*Rr));e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,u),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,c),e.draw(6,o)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var No={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},Fo=5e-4,Lr=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new or;samplerCache=new sr;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new Dt(e,t,"depth24plus",n),this.slug3dPipeline=new Mt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new wt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new Et(e),this.cameraPool=new NA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new NA(An,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:xr});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,i){return e&&e.width===r&&e.height===i?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:i},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(e,t){return(!this.hdrTexture||this.hdrTexture.width!==e||this.hdrTexture.height!==t)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let i=fe.computeViewMatrix(e),o=fe.computeProjectionMatrix(e),a=fe.computeViewProjectionMatrix(e),s=_.invert(a)??_.identity();this.cameraUniformData.set(i,0),this.cameraUniformData.set(o,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=H.normalize(H.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=l,l}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e,t){let n=qA.packLightsUniforms(e??[],t?.environment,t?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(e,t){this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:yt,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let n=t&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:n.createView()},{binding:2,resource:this.shadowSampler}]})}meshAabb(e){let t=this.meshBounds.get(e);if(!t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],i=e.positions;for(let o=0;o+2<i.length;o+=3)for(let a=0;a<3;a++){let s=i[o+a];s<n[a]&&(n[a]=s),s>r[a]&&(r[a]=s)}t=Number.isFinite(n[0])?{min:n,max:r}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(e,t)}return t}worldBounds(e){return e.kind==="mesh"?un(this.meshAabb(e.mesh),this.meshModelMatrix(e.opts)):un({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(e.opts))}renderShadowMap(e,t,n,r,i,o={}){let a=t.lightType??t.type;if(a!=="directional"&&a!=="spot")return null;let s=qA.processLight(t),g=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],u=o.mapSize??2048,c=r.map(m=>this.worldBounds(m)),B=Ur({type:a,position:g,direction:l,angle:t.angle},c,i,u);if(!B)return null;(!this.shadowTexture||this.shadowTexture.width!==u)&&(this.shadowTexture?.destroy(),this.shadowTexture=this.device.createTexture({label:"ShadowMap",size:{width:u,height:u},format:yt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}));let E=new Float32Array(80);E.set(B.viewProj,32),E.set(B.viewProj,0),E[5]=1,E.set(B.viewProj,16),E[64]=g[0],E[65]=g[1],E[66]=g[2],E[68]=l[0],E[69]=l[1],E[70]=l[2],E[76]=u,E[77]=u;let d=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,E)),h=e.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),Q=this.samplerCache.getSampler(this.device);for(let m of r)if(m.kind==="mesh"){let D=this.meshModelMatrix(m.opts);this.mesh3dPipeline.drawShadow(h,d,m.buffers??this.getOrCreateMeshBuffers(m.mesh),{modelMatrix:D,normalMatrix:m.opts.normalMatrix??qA.computeNormalMatrix(D),isSkinned:m.opts.isSkinned,skinningMatrices:m.opts.skinningMatrices})}else{let D=this.quadModelMatrix(m.opts);this.quad3dPipeline.drawShadow(h,d,m.texture,Q,{modelMatrix:D,normalMatrix:D,width:m.opts.width,height:m.opts.height,textureExtent:m.opts.textureExtent,opacity:m.opts.opacity,colorTint:m.opts.colorTint})}return h.end(),{matrix:B.viewProj,lightIndex:n,mapSize:u,softness:o.softness??t.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:B.texelWorldSize*1.5,darkness:o.darkness??t.shadowDarkness??1}}beginPass(e,t,n,r,i,o="clear",a={r:0,g:0,b:0,a:0},s,g,l,u=!1){let c=this.getOrCreateDepthTexture(n,r),B=this.packCameraUniforms(i,n,r),E=this.createCameraBindGroup(B),d=this.getOrCreateLightsBuffer(g,l),h=this.createLightsBindGroup(d,!!l?.shadow),Q=this.sampleCount>1;if(Q&&o==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let m=(G,N,w,U)=>N?{view:N.createView(),resolveTarget:G,loadOp:"clear",storeOp:"discard",clearValue:w}:{view:G,loadOp:U,storeOp:"store",clearValue:w};Q&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let D=[m(t,Q?this.msaaColorTexture:null,a,o)];return s&&(Q&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),D.push(m(s,Q?this.msaaLinearDepthTexture:null,{r:i.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=u,u&&(this.hdrTexture=this.getOrCreateHdrTexture(n,r),Q&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,r)),D.push(m(this.hdrTexture.createView(),Q?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:e.beginRenderPass({colorAttachments:D,depthStencilAttachment:{view:c.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:Q?"discard":"store"}}),cameraBindGroup:E,cameraBuffer:B,lightsBindGroup:h}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:i=[0,0,0],scale:o=[1,1,1],anchor:a=[.5,.5]}=e,s=_.identity();s=_.multiply(s,_.translate(t[0],t[1],t[2]));let g=i[0]*Math.PI/180,l=i[1]*Math.PI/180,u=i[2]*Math.PI/180;u!==0&&(s=_.multiply(s,_.rotateZ(u))),l!==0&&(s=_.multiply(s,_.rotateY(l))),g!==0&&(s=_.multiply(s,_.rotateX(g)));let c=n*o[0],B=r*o[1],E=o[2];s=_.multiply(s,_.scale(c,B,E));let d=.5-a[0],h=.5-a[1];return(d!==0||h!==0)&&(s=_.multiply(s,_.translate(d,h,0))),s}drawSlugText(e,t,n,r,i,o=0,a=!1){let{width:s,height:g}=i;if(!(s>0&&g>0))return;let l=this.quadModelMatrix(i),u=i.normalMatrix??qA.computeNormalMatrix(l),c=_.multiply(l,_.multiply(_.translate(-.5,-.5,0),_.scale(1/s,1/g,1)));for(let B=0;B<r.length;B++){let E=r[B],[d,h,Q,m,D,p]=E.transform,G=[d,h,0,0,Q,m,0,0,0,0,1,0,D,p,0,1];this.slug3dPipeline.draw(e,t,n,E.font,E.instances,E.instanceCount,{modelMatrix:_.multiply(c,G),normalMatrix:u,opacity:E.opacity*(i.opacity??1),slant:E.slant,twoSided:i.twoSided??!0,depthPull:Fo*(o+B+1),material:i.material,shininess:i.shininess??32,roughness:i.roughness,specularIntensity:i.specularIntensity??.5,ambientIntensity:i.ambientIntensity??1,metallic:i.metallic,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},a,this.passWritesHdr)}}drawTextureQuad(e,t,n,r,i,o=!1){let{width:a,height:s,opacity:g=1,colorTint:l=[1,1,1,1],borderColor:u,borderWidth:c=0,borderRadius:B=0,twoSided:E=!0,material:d="lit",shininess:h=32,roughness:Q,specularIntensity:m=.5,ambientIntensity:D=1,metallic:p}=i,G=this.quadModelMatrix(i),N=i.normalMatrix??qA.computeNormalMatrix(G),w=this.samplerCache.getSampler(this.device),U;if(u)if(Array.isArray(u))U=u;else{let b=at(u);U=[b.r,b.g,b.b,b.a]}this.quad3dPipeline.draw(e,t,n,r,w,{modelMatrix:G,normalMatrix:N,colorTint:l,borderColor:U,borderWidth:c,opacity:g,borderRadius:B,twoSided:E,width:a,height:s,textureExtent:i.textureExtent,material:d,shininess:h,roughness:Q,specularIntensity:m,ambientIntensity:D,metallic:p,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},o,this.passWritesHdr)}meshModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t=[0,0,0],rotation:n=[0,0,0],scale:r=[1,1,1]}=e,i=_.translate(t[0],t[1],t[2]),o=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(i=_.multiply(i,_.rotateZ(s))),a!==0&&(i=_.multiply(i,_.rotateY(a))),o!==0&&(i=_.multiply(i,_.rotateX(o))),_.multiply(i,_.scale(r[0],r[1],r[2]))}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let u=0;u<n;u++){let c=u*16;r[c]=e.positions[u*3]??0,r[c+1]=e.positions[u*3+1]??0,r[c+2]=e.positions[u*3+2]??0,r[c+3]=e.uvs[u*2]??0,r[c+4]=e.uvs[u*2+1]??0,r[c+5]=e.normals[u*3]??0,r[c+6]=e.normals[u*3+1]??0,r[c+7]=e.normals[u*3+2]??1,e.jointIndices?(r[c+8]=e.jointIndices[u*4]??0,r[c+9]=e.jointIndices[u*4+1]??0,r[c+10]=e.jointIndices[u*4+2]??0,r[c+11]=e.jointIndices[u*4+3]??0):(r[c+8]=0,r[c+9]=0,r[c+10]=0,r[c+11]=0),e.jointWeights?(r[c+12]=e.jointWeights[u*4]??0,r[c+13]=e.jointWeights[u*4+1]??0,r[c+14]=e.jointWeights[u*4+2]??0,r[c+15]=e.jointWeights[u*4+3]??0):(r[c+12]=0,r[c+13]=0,r[c+14]=0,r[c+15]=0)}let i=Math.ceil(r.byteLength/4)*4,o=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(o.getMappedRange()).set(r),o.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap();let l;return e.colors&&e.colors.length>=n*4&&(l=this.device.createBuffer({label:"Mesh3DVertexColors",size:Math.max(16,n*16),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(l.getMappedRange()).set(e.colors.subarray(0,n*4)),l.unmap()),t={vertexBuffer:o,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16",colorBuffer:l},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),i=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:i,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat,colorBuffer:r.colorBuffer}}drawMesh3D(e,t,n,r,i,o={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{opacity:g=1,colorTint:l=[1,1,1,1],twoSided:u=!0,wireframe:c=!1,isSkinned:B=!1,skinningMatrices:E,material:d="lit",shadeColor:h,alphaCutoff:Q,textureWrap:m="clamp",textureFilter:D="linear",shininess:p=32,roughness:G,specularIntensity:N=.5,ambientIntensity:w=1,metallic:U}=o,b=this.meshModelMatrix(o),M=o.normalMatrix??qA.computeNormalMatrix(b),v=No[m],R=this.samplerCache.getSampler(this.device,{addressModeU:v,addressModeV:v,magFilter:D,...D==="nearest"&&{maxAnisotropy:1}}),S=d==="glass"||d==="acrylic"||d==="frosted",K=S?{ior:o.ior??(d==="acrylic"?1.49:1.5),dispersion:o.dispersion??(d==="glass"?.04:.015),thickness:o.thickness??80,frost:d==="frosted"?G??.5:0}:void 0;this.mesh3dPipeline.draw(e,t,n,s,i,R,{glass:K,backdrop:o.backdrop,modelMatrix:b,normalMatrix:M,colorTint:l,opacity:g,twoSided:u,wireframe:c,isSkinned:B,skinningMatrices:E,material:d==="unlit"||d==="toon"?d:"lit",shadeColor:h,alphaCutoff:Q,shininess:p,roughness:S?Math.min(G??.05,.3):G,specularIntensity:N,ambientIntensity:w,metallic:U,emissive:o.emissive,emissiveIntensity:o.emissiveIntensity,matte:o.matte,maps:o.maps},a,this.passWritesHdr)}loadModel(e,t="auto",n={}){if(typeof e!="string")return kr(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,i=this.modelCache.get(r);return i||(i=kr(e,t,n),this.modelCache.set(r,i)),i}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}materialMaps(e){let t=this.materialMapCache.get(e);return t||(t=(async()=>{let n=e.name,[r,i,o,a]=await Promise.all([this.uploadImage(e.normalTextureBuffer,`${n}:normal`),this.uploadImage(e.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(e.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(e.emissiveTextureBuffer,`${n}:emissive`)]);return{...r&&{normal:r,normalScale:e.normalScale??1},...i&&{metallicRoughness:i},...o&&{occlusion:o,occlusionStrength:e.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(e,t)),t}uploadMaterialTexture(e){return this.uploadImage(e.diffuseTextureBuffer,`Material:${e.name}`)}async uploadImage(e,t){if(!e)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(e instanceof Uint8Array?e:new Uint8Array(e)),i,o;try{({width:i,height:o}=await n(r).metadata())}catch(g){console.warn(`[Renderer3D] Could not decode texture "${t}"; drawing without it:`,g instanceof Error?g.message:g);return}if(!i||!o)return;let a=Math.floor(Math.log2(Math.max(i,o)))+1,s=this.device.createTexture({label:t,size:{width:i,height:o},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let l=Math.max(1,i>>g),u=Math.max(1,o>>g),c=await n(r).ensureAlpha().resize(l,u,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},c,{bytesPerRow:l*4,rowsPerImage:u},{width:l,height:u})}return s}applyBloom(e,t,n,r={},i){this.bloomPipeline??=new ht(this.device),this.bloomPipeline.apply(e,t,n,r,i??void 0)}applyDepthOfField(e,t,n,r,i){let o=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:o},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy(),this.shadowTexture?.destroy(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function kr(A,e="auto",t={}){if(e==="gltf"||e==="glb")return dt(A,t);if(e==="stl")return He(A,t);if(e==="ply")return Je(A,t);if(e==="vox")return Ct(A,t);if(e==="3ds")return Qt(A,t);if(e==="off")return mt(A,t);if(e==="fbx")return Pe(A,t);if(e==="obj")return Le(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",i=r.toLowerCase();if(i.endsWith(".glb")||i.endsWith(".gltf"))return dt(A,t);if(i.endsWith(".stl"))return He(A,t);if(i.endsWith(".ply"))return Je(A,t);if(i.endsWith(".vox"))return Ct(A,t);if(i.endsWith(".3ds"))return Qt(A,t);if(i.endsWith(".off"))return mt(A,t);if(i.endsWith(".fbx"))return Pe(A,t);if(i.endsWith(".obj"))return Le(A,void 0,t);if(n){let o=A instanceof Uint8Array?A:new Uint8Array(A);return Ce.isGlb(o)?wr(o,t):ae.isBinary(o)?Pe(o,t):Oe.isVox(o)?Ct(o,t):Ke.is3DS(o)?Qt(o,t):o.length>=3&&o[0]===112&&o[1]===108&&o[2]===121?Je(o,t):Te.isBinary(o)?He(o,t):Le(o,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?dt(r,t):r.startsWith("ply")||r.startsWith("PLY")?Je(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?mt(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Pe(r,t):r.startsWith("solid")&&r.includes("facet")?He(r,t):Le(A,void 0,t)}k();var{cbrt:cn,sqrt:In,PI:be}=Math,So=(A,e,t,n,r)=>{let i=e+t*A,o=i**2+n;if(o>0){let l=In(o);return cn(i+l)+cn(i-l)-r}let a=cn(In(i*i-o)),s=i?Math.atan(In(-o)/i):-be/2,g;return t<0?g=(i>0?2*be:be)-s:r<0?g=(i>0?2*be:-3*be)+s:g=(i>0?0:be)+s,2*a*Math.cos(g/3)-r},Uo=(A,e,t,n)=>((e*A+3*t)*A+n)*A,Bn=A=>A;function Pr(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return Bn;let r=6*(3*A-3*t+1),i=6*(t-2*A),o=3*A,a=r*r,s=i*i,g=i/r,l=3*i*o/a-s*i/(a*r),u=2*o/r-s/a,c=u*u*u,B=3/r,E=3*e-3*n+1,d=n-2*e,h=3*e,Q=r?So:Bn;return function(D){return D===0||D===1?D:Uo(Q(D,l,B,c,g),E,d,h)}}var Xl={linear:Bn,ease:Pr(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:Pr,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function Tr(A,e,t,n){let r=n?.extrapolateLeft??"extend",i=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let o=e[0],a=e[e.length-1];if(A<o){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(i==="clamp")return t[t.length-1];if(i==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],l=e[s],u=t[s-1],c=t[s];if(g===l)return u;let B=(A-g)/(l-g);return n?.easing&&(B=n.easing(B)),u+B*(c-u)}k();var vo={damping:10,mass:1,stiffness:100,overshootClamping:!1},fn={};function Ro({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:i,velocity:o}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,l=t.stiffness,u=[n,r,i,o,s,g,l,e].join("-");if(fn[u])return fn[u];let c=-o,B=n-i,E=s/(2*Math.sqrt(l*g)),d=Math.sqrt(l/g),h=d*Math.sqrt(1-E**2),Q=a/1e3,m=Math.sin(h*Q),D=Math.cos(h*Q),p=Math.exp(-E*d*Q),G=p*(m*((c+E*d*B)/h)+B*D),N=n-G,w=E*d*G-p*(D*(c+E*d*B)-h*B*m),U=Math.exp(-d*Q),b=n-U*(B+(c+d*B)*Q),M=U*(c*(Q*d-1)+Q*B*d*d),v={toValue:n,prevPosition:i,lastTimestamp:e,current:E<1?N:b,velocity:E<1?w:M};return fn[u]=v,v}var En={};function Hr({frame:A,fps:e,config:t={}}){let i=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(En[i])return En[i];let o={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let l=g/e*1e3;o=Ro({animation:o,now:l,config:{...vo,...t}})}return En[i]=o,o}var dn=new Map;function Lo({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(dn.has(n))return dn.get(n);let r=0,i=0,o=()=>Hr({fps:A,frame:r,config:e}),a=o(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=o(),g=s();i=r;for(let l=0;l<20;l++)r++,a=o(),g=s(),g>=t&&(l=0,i=r+1);return dn.set(n,i),i}function jl({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:i,durationRestThreshold:o,delay:a=0,reverse:s=!1}){let g=s||typeof i<"u",l=g?Lo({fps:e,config:t,threshold:o}):void 0,u=g?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},B=(s?(i??u.get())-A:A)+(s?a:-a),E=i===void 0?B:B/(i/u.get());if(i&&B>i)return r;let d=Hr({fps:e,frame:E,config:t}),h=t.overshootClamping?r>=n?Math.min(d.current,r):Math.max(d.current,r):d.current;return n===0&&r===1?h:Tr(h,[0,1],[n,r])}k();k();k();k();var We=new Set,Cn=!1;function Dn(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;We.size&&We.clear();let i=Vr(A,0,r,t,!0),o=[];if(!i||i.next===i.prev)return o;let a=0,s=0,g=0;if(n&&(i=Jo(A,e,i,t)),A.length>80*t){a=A[0],s=A[1];let l=a,u=s;for(let c=t;c<r;c+=t){let B=A[c],E=A[c+1];B<a&&(a=B),E<s&&(s=E),B>l&&(l=B),E>u&&(u=E)}g=Math.max(l-a,u-s),g=g!==0?32767/g:0}return Qn(i,o,a,s,g),o}function Vr(A,e,t,n,r){let i=null;if(r===Aa(A,e,t,n)>0)for(let o=e;o<t;o+=n)i=Kr(o/n|0,A[o],A[o+1],i);else for(let o=t-n;o>=e;o-=n)i=Kr(o/n|0,A[o],A[o+1],i);return i&&ze(i,i.next)&&(Ze(i),i=i.next),i}function ue(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(We.size===0||!We.has(n))&&(ze(n,n.next)||GA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),Cn=!0,Ze(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function Qn(A,e,t,n,r){r&&Xo(A,t,n,r);let i=A,o=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(GA(a,A,s)<0&&(r?Po(A,t,n,r):ko(A))){e.push(a.i,A.i,s.i),Ze(A),A=s,i=s;continue}if(A=s,A===i){if(Cn=!1,A=ue(A),Cn){i=A;continue}if(!o){A=To(A,e),i=A,o=!0;continue}Ho(A,e,t,n,r);break}}}function ko(A){let e=A.prev,t=A,n=A.next,r=e.x,i=t.x,o=n.x,a=e.y,s=t.y,g=n.y,l=Math.min(r,i,o),u=Math.min(a,s,g),c=Math.max(r,i,o),B=Math.max(a,s,g),E=n.next;for(;E!==e;){if(E.x>=l&&E.x<=c&&E.y>=u&&E.y<=B&&!(r===E.x&&a===E.y)&&St(r,a,i,s,o,g,E.x,E.y)&&GA(E.prev,E,E.next)>=0)return!1;E=E.next}return!0}function Po(A,e,t,n){let r=A.prev,i=A,o=A.next,a=r.x,s=i.x,g=o.x,l=r.y,u=i.y,c=o.y,B=Math.min(a,s,g),E=Math.min(l,u,c),d=Math.max(a,s,g),h=Math.max(l,u,c),Q=yn(B,E,e,t,n),m=yn(d,h,e,t,n),D=A.prevZ;for(;D&&D.z>=Q;){if(D.x>=B&&D.x<=d&&D.y>=E&&D.y<=h&&D!==o&&!(a===D.x&&l===D.y)&&St(a,l,s,u,g,c,D.x,D.y)&&GA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let p=A.nextZ;for(;p&&p.z<=m;){if(p.x>=B&&p.x<=d&&p.y>=E&&p.y<=h&&p!==o&&!(a===p.x&&l===p.y)&&St(a,l,s,u,g,c,p.x,p.y)&&GA(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function To(A,e){let t=A,n=!1;do{let r=t.prev,i=t.next.next;zr(r,t,t.next,i,!1)&&Xe(r,i)&&Xe(i,r)&&(e.push(r.i,t.i,i.i),Ze(t),Ze(t.next),t=A=i,n=!0),t=t.next}while(t!==A);return n?ue(t):t}function Ho(A,e,t,n,r){let i=A;do{let o=i.next.next;for(;o!==i.prev;){if(i.i!==o.i&&_o(i,o)){let a=Xr(i,o);i=ue(i,i.next),a=ue(a,a.next),Qn(i,e,t,n,r),Qn(a,e,t,n,r);return}o=o.next}i=i.next}while(i!==A)}var mn=!1;function Jo(A,e,t,n){let r=[];for(let i=0,o=e.length;i<o;i++){let a=e[i]*n,s=i<o-1?e[i+1]*n:A.length,g=Vr(A,a,s,n,!1);g===g.next&&We.add(g),r.push(qo(g))}r.sort(Oo),Vo(A.length/n,e.length),Wr(t,t),mn=!0;for(let i=0;i<r.length;i++)t=Ko(r[i],t);return mn=!1,ue(t)}function Oo(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Ko(A,e){let t=Wo(A,e);if(!t)return e;let n=Xr(t,A),r=n.next;return Wr(t,r.next),ue(n,n.next),ue(t,t.next)}var Yr=16,DA=new Float64Array(0),Ft=0,hn=[],pn=[];function Vo(A,e){let t=Math.ceil((A+2*e)/Yr)+e+2;DA.length<t*4&&(DA=new Float64Array(t*4)),Ft=0}function Wr(A,e){let t=A;do{let n=Ft++;hn[n]=t;let r=t.x,i=t.y,o=t.x,a=t.y,s=0;do{let l=t.next;t.z=n,l.x<r&&(r=l.x),l.x>o&&(o=l.x),l.y<i&&(i=l.y),l.y>a&&(a=l.y),t=l}while(++s<Yr&&t!==e);pn[n]=t;let g=n*4;DA[g]=r,DA[g+1]=i,DA[g+2]=o,DA[g+3]=a}while(t!==e)}function Yo(A,e){let t=A.z*4;e.x<DA[t]&&(DA[t]=e.x),e.y<DA[t+1]&&(DA[t+1]=e.y),e.x>DA[t+2]&&(DA[t+2]=e.x),e.y>DA[t+3]&&(DA[t+3]=e.y)}function Jr(A){let e=pn[A];for(;e.prev.next!==e;)e=e.next;return pn[A]=e,e}function Or(A){let e=hn[A];for(;e.prev.next!==e;)e=e.next;return hn[A]=e,e}function Wo(A,e){let t=e,n=A.x,r=A.y,i=-1/0,o;if(ze(A,t))return t;for(let c=0,B=0;c<Ft;c++,B+=4){if(r<DA[B+1]||r>DA[B+3]||DA[B]>n||DA[B+2]<=i)continue;let E=Jr(c);t=Or(c);do{if(t.prev.next===t){if(ze(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let d=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=n&&d>i&&(i=d,o=t.x<t.next.x?t:t.next,d===n))return o}}t=t.next}while(t!==E)}if(!o)return null;let a=o.x,s=o.y,g=Math.min(r,s),l=Math.max(r,s),u=1/0;for(let c=0,B=0;c<Ft;c++,B+=4){if(DA[B+2]<a||DA[B]>n||DA[B+3]<g||DA[B+1]>l)continue;let E=Jr(c);t=Or(c);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&St(r<s?n:i,r,a,s,r<s?i:n,r,t.x,t.y)){let d=Math.abs(r-t.y)/(n-t.x);(Xe(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(d<u||d===u&&(t.x>o.x||t.x===o.x&&zo(o,t)))&&(o=t,u=d)}t=t.next}while(t!==E)}return o}function zo(A,e){return GA(A.prev,A,e.prev)<0&&GA(e.next,A,A.next)<0}var UA=[],De=[],le=new Uint32Array(0),Ve=new Uint32Array(0),Ye=new Uint32Array(256);function Xo(A,e,t,n){let r=A,i=0;do r.z=yn(r.x,r.y,e,t,n),UA[i++]=r,r=r.next;while(r!==A);Zo(i);let o=null;for(let a=0;a<i;a++){let s=UA[a];s.prevZ=o,o&&(o.nextZ=s),o=s}o.nextZ=null,UA.fill(null,0,i),De.fill(null,0,i)}function Zo(A){if(A<=32){for(let e=1;e<A;e++){let t=UA[e],n=t.z,r=e-1;for(;r>=0&&UA[r].z>n;)UA[r+1]=UA[r],r--;UA[r+1]=t}return}le.length<A&&(le=new Uint32Array(A),Ve=new Uint32Array(A),De=new Array(A));for(let e=0;e<A;e++)le[e]=UA[e].z;Gt(A,UA,le,De,Ve,0),Gt(A,De,Ve,UA,le,8),Gt(A,UA,le,De,Ve,16),Gt(A,De,Ve,UA,le,24)}function Gt(A,e,t,n,r,i){Ye.fill(0);for(let a=0;a<A;a++)Ye[t[a]>>>i&255]++;let o=0;for(let a=0;a<256;a++){let s=Ye[a];Ye[a]=o,o+=s}for(let a=0;a<A;a++){let s=t[a],g=Ye[s>>>i&255]++;n[g]=e[a],r[g]=s}}function yn(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function qo(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function St(A,e,t,n,r,i,o,a){return(r-o)*(e-a)>=(A-o)*(i-a)&&(A-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(i-a)>=(r-o)*(n-a)}function _o(A,e){let t=ze(A,e)&&GA(A.prev,A,A.next)>0&&GA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Xe(A,e)&&Xe(e,A)&&(GA(A.prev,A,e.prev)!==0||GA(A,e.prev,e)!==0))&&!jo(A,e)&&(t||$o(A,e))}function GA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function ze(A,e){return A.x===e.x&&A.y===e.y}function zr(A,e,t,n,r=!0){let i=GA(A,e,t),o=GA(A,e,n),a=GA(t,n,A),s=GA(t,n,e);return(i>0&&o<0||i<0&&o>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(i===0&&Nt(A,t,e)||o===0&&Nt(A,n,e)||a===0&&Nt(t,A,n)||s===0&&Nt(t,e,n)):!1}function Nt(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function jo(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),i=Math.max(A.y,e.y),o=A;do{let a=o.next;if(o.x>n&&a.x>n||o.x<t&&a.x<t||o.y>i&&a.y>i||o.y<r&&a.y<r){o=a;continue}if(o.i!==A.i&&a.i!==A.i&&o.i!==e.i&&a.i!==e.i&&zr(o,a,A,e))return!0;o=a}while(o!==A);return!1}function Xe(A,e){return GA(A.prev,A,A.next)<0?GA(A,e,A.next)>=0&&GA(A,A.prev,e)>=0:GA(A,e,A.prev)<0||GA(A,A.next,e)<0}function $o(A,e){let t=A,n=!1,r=(A.x+e.x)/2,i=(A.y+e.y)/2;do{let o=t.next;t.y>i!=o.y>i&&r<(o.x-t.x)*(i-t.y)/(o.y-t.y)+t.x&&(n=!n),t=o}while(t!==A);return n}function Xr(A,e){let t=bn(A.i,A.x,A.y),n=bn(e.i,e.x,e.y),r=A.next,i=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,i.next=n,n.prev=i,n}function Kr(A,e,t,n){let r=bn(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Ze(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),mn&&Yo(A.prev,A.next)}function bn(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function Aa(A,e,t,n){let r=0;for(let i=e,o=t-n;i<t;i+=n)r+=(A[o]-A[i])*(A[i+1]+A[o+1]),o=i;return r}var $r=jn(qr(),1);function vt(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,i=Number.parseInt(t[2]+t[2],16)/255;return[n,r,i,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return[n,r,i,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,o=Number.parseInt(t.slice(6,8),16)/255;return[n,r,i,o]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,i=(t[2]??0)/255,o=t[3]!==void 0?t[3]:1;return[n,r,i,o]}return[1,1,1,1]}function we(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function Rt(A,e){let t=!1,n=e.length;for(let r=0,i=n-1;r<n;i=r++){let o=e[r].x,a=e[r].y,s=e[i].x,g=e[i].y;a>A.y!=g>A.y&&A.x<(s-o)*(A.y-a)/(g-a)+o&&(t=!t)}return t}var ea=.1,ta=64;function Ai(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(ta,Math.max(1,t))}function na(A,e,t,n,r){let i=Ai(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let o=1;o<=i;o++){let a=o/i,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function ra(A,e,t,n,r,i){let o=Ai(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=o;a++){let s=a/o,g=1-s;i.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function ia(A){try{let e=new $r.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function oa(A,e,t,n,r){let i=A.path?.toSVG();if(!i)return{contours:[],simplified:!0};let o=ia(i),a=o!==null;o??=(A.path?.commands??[]).map(c=>[c.command,...c.args]);let s=[],g={x:0,y:0},l=[],u=()=>{if(l.length>=3){let c=l[0],B=l[l.length-1];Math.hypot(B.x-c.x,B.y-c.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let c of o){let B=c[0],E=c.slice(1);if(B==="moveTo")u(),g={x:(e+E[0])*n,y:-(t+E[1])*n},l=[g];else if(B==="lineTo")g={x:(e+E[0])*n,y:-(t+E[1])*n},l.push(g);else if(B==="quadraticCurveTo"){let d={x:(e+E[0])*n,y:-(t+E[1])*n},h={x:(e+E[2])*n,y:-(t+E[3])*n};na(g,d,h,r,l),g=h}else if(B==="bezierCurveTo"){let d={x:(e+E[0])*n,y:-(t+E[1])*n},h={x:(e+E[2])*n,y:-(t+E[3])*n},Q={x:(e+E[4])*n,y:-(t+E[5])*n};ra(g,d,h,Q,r,l),g=Q}else B==="closePath"&&u()}return u(),{contours:s,simplified:a}}var aa=Math.cos(30*Math.PI/180);function sa({contours:A,simplified:e}){if(!e)return ua(A);let t=A.map(o=>({contour:o,area:Math.abs(we(o))}));t.sort((o,a)=>a.area-o.area);let n=t.map(()=>[]);for(let o=0;o<t.length;o++){let a=t[o].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<o;g++){if(t[g].area<=t[o].area)continue;let l=t[g].contour;(Rt(a[0],l)||Rt(s,l))&&n[o].push(g)}}let r=[],i=new Map;for(let o=0;o<t.length;o++){let a=n[o];if(a.length%2===0){let s={outer:t[o].contour,holes:[]};r.push(s),i.set(o,s)}else i.get(a[a.length-1])?.holes.push(t[o].contour)}return r}function ga(A,e,t,n){let r=e.x-A.x,i=e.y-A.y,o=n.x-t.x,a=n.y-t.y,s=r*a-i*o;if(Math.abs(s)<1e-12)return null;let g=((t.x-A.x)*a-(t.y-A.y)*o)/s,l=((t.x-A.x)*i-(t.y-A.y)*r)/s,u=1e-9;return g<=u||g>=1-u||l<=u||l>=1-u?null:{x:A.x+r*g,y:A.y+i*g}}function wn(A,e=0){let t=A.length;if(t<3)return[];if(e>64)return[A];for(let n=0;n<t;n++){let r=A[n],i=A[(n+1)%t];for(let o=n+2;o<t;o++){if(n===0&&o===t-1)continue;let a=ga(r,i,A[o],A[(o+1)%t]);if(!a)continue;let s=[a,...A.slice(n+1,o+1)],g=[a,...A.slice(o+1),...A.slice(0,n+1)];return[...wn(s,e+1),...wn(g,e+1)]}}return Math.abs(we(A))>1e-9?[A]:[]}function la(A,e){let t=0;for(let n of e)for(let r=0;r<n.length;r++){let i=n[r],o=n[(r+1)%n.length],a=(o.x-i.x)*(A.y-i.y)-(A.x-i.x)*(o.y-i.y);i.y<=A.y?o.y>A.y&&a>0&&t++:o.y<=A.y&&a<0&&t--}return t}function _r(A){let e=0,t=-1;for(let u=0;u<A.length;u++){let c=A[u],B=A[(u+1)%A.length],E=Math.hypot(B.x-c.x,B.y-c.y);E>t&&(t=E,e=u)}let n=A[e],r=A[(e+1)%A.length],i=(n.x+r.x)/2,o=(n.y+r.y)/2,a=Math.max(1e-4,Math.min(.01,t*.001)),s=-(r.y-n.y)/t*a,g=(r.x-n.x)/t*a,l={x:i+s,y:o+g};return Rt(l,A)?l:{x:i-s,y:o-g}}function ua(A){let e=A.flatMap(r=>wn(r)),t=[],n=[];for(let r of e)la(_r(r),A)!==0?t.push({outer:r,holes:[]}):n.push(r);for(let r of n){let i=Math.abs(we(r)),o=_r(r),a,s=Number.POSITIVE_INFINITY;for(let g of t){let l=Math.abs(we(g.outer));l>i&&l<s&&Rt(o,g.outer)&&(a=g,s=l)}a?.holes.push(r)}return t}var jr=new WeakMap;function ca(A,e,t,n,r,i){let o=jr.get(A);o||(o=new Map,jr.set(A,o));let a=`${e.id}|${r}|${i.segments??""}|${i.tolerance}`,s=o.get(a);s||(s=sa(oa(e,0,0,r,i)),o.set(a,s));let g=t*r,l=-n*r,u=c=>c.map(B=>({x:B.x+g,y:B.y+l}));return s.map(c=>({outer:u(c.outer),holes:c.holes.map(u)}))}function au(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,i={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??ea)},o=e.unitsPerEm||1e3,a=t/o,s=rr(e,A.text.replace(/\n/g," "),{direction:A.direction,letterSpacing:A.letterSpacing?A.letterSpacing/a:0}),g=[];for(let W of s.glyphs){let Y=e.getGlyph(W.glyphId),j=ca(e,Y,W.x,W.y,a,i);for(let IA of j)g.push(IA)}let l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,B=Number.NEGATIVE_INFINITY;for(let W of g){for(let Y of W.outer)Y.x<l&&(l=Y.x),Y.x>u&&(u=Y.x),Y.y<c&&(c=Y.y),Y.y>B&&(B=Y.y);for(let Y of W.holes)for(let j of Y)j.x<l&&(l=j.x),j.x>u&&(u=j.x),j.y<c&&(c=j.y),j.y>B&&(B=j.y)}Number.isFinite(l)||(l=0,u=0,c=0,B=0);let E=u-l,d=B-c,h=(s.baseLevel&1)===1,Q=A.align==="start"?h?"right":"left":A.align==="end"?h?"left":"right":A.align,m=(l+u)/2;Q==="left"&&(m=l),Q==="right"&&(m=u);let D=(c+B)/2;A.verticalAlign==="top"&&(D=c),A.verticalAlign==="bottom"&&(D=B);for(let W of g){for(let Y of W.outer)Y.x-=m,Y.y-=D;for(let Y of W.holes)for(let j of Y)j.x-=m,j.y-=D}l-=m,u-=m,c-=D,B-=D;let p=[],G=[],N=[],w=[],U=[],b=[],M=[],v=[],R=(W,Y,j)=>{let IA=U.length/3;return U.push(W.x,W.y,r,W.x,W.y,-r),b.push(Y.x,Y.y,0,Y.x,Y.y,0),M.push(j,0,j,1),IA},S=W=>{let Y=W.filter((P,nA)=>{let tA=W[(nA+1)%W.length];return Math.hypot(tA.x-P.x,tA.y-P.y)>=1e-6}),j=Y.length;if(j<2)return;let IA=[],dA=Y.map((P,nA)=>{let tA=Y[(nA+1)%j],rA=Math.hypot(tA.x-P.x,tA.y-P.y);return IA.push(rA),{x:(tA.y-P.y)/rA,y:-(tA.x-P.x)/rA}}),uA=IA.reduce((P,nA)=>P+nA,0),mA=[],pA=[],X=0;for(let P=0;P<j;P++){let nA=dA[(P-1+j)%j],tA=dA[P],rA=X/uA,AA=nA.x+tA.x,eA=nA.y+tA.y,lA=nA.x*tA.x+nA.y*tA.y>=aa?{x:AA/Math.hypot(AA,eA),y:eA/Math.hypot(AA,eA)}:null;lA&&P>0?mA[P]=pA[P]=R(Y[P],lA,rA):(pA[P]=R(Y[P],lA??nA,P===0?1:rA),mA[P]=R(Y[P],lA??tA,rA)),X+=IA[P]}for(let P=0;P<j;P++){let nA=mA[P],tA=pA[(P+1)%j];v.push(nA,tA+1,tA),v.push(nA,nA+1,tA+1)}};for(let W of g){let Y=W.outer;we(Y)<0&&Y.reverse();for(let X of W.holes)we(X)>0&&X.reverse();let j=[],IA=[];for(let X of Y)j.push(X.x,X.y);for(let X of W.holes){IA.push(j.length/2);for(let P of X)j.push(P.x,P.y)}let dA=Dn(j,IA,2),uA=j.length/2,mA=p.length/3;for(let X=0;X<uA;X++){let P=j[X*2],nA=j[X*2+1];p.push(P,nA,-r),G.push(0,0,-1),N.push((P-l)/(E||1),(nA-c)/(d||1))}for(let X=0;X<dA.length;X+=3)w.push(mA+dA[X],mA+dA[X+2],mA+dA[X+1]);let pA=p.length/3;for(let X=0;X<uA;X++){let P=j[X*2],nA=j[X*2+1];p.push(P,nA,r),G.push(0,0,1),N.push((P-l)/(E||1),(nA-c)/(d||1))}for(let X=0;X<dA.length;X+=3)w.push(pA+dA[X],pA+dA[X+1],pA+dA[X+2]);S(Y);for(let X of W.holes)S(X)}let K=vt(A.fill??"#ffffff"),F=vt(A.bevelColor??A.fill??"#ffffff"),z={name:"front-material",diffuseColor:K,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},Z={name:"side-material",diffuseColor:F,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},$=[];return w.length>0&&$.push({id:"text-front-mesh",name:"front",positions:new Float32Array(p),normals:new Float32Array(G),uvs:new Float32Array(N),indices:p.length/3>65535?new Uint32Array(w):new Uint16Array(w),materialName:"front-material"}),v.length>0&&$.push({id:"text-side-mesh",name:"side",positions:new Float32Array(U),normals:new Float32Array(b),uvs:new Float32Array(M),indices:U.length/3>65535?new Uint32Array(v):new Uint16Array(v),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:$,materials:{"front-material":z,"side-material":Z},animations:[],bounds:{min:[l,c,-r],max:[u,B,r],center:[(l+u)/2,(c+B)/2,0],size:[E,d,n],boundingSphereRadius:Math.hypot(E,d,n)/2}},bounds:{minX:l,maxX:u,minY:c,maxY:B,width:E,height:d,depth:n}}}var Mn=class{positions=[];normals=[];uvs=[];indices=[];vertex(e,t,n){return this.positions.push(e[0],e[1],e[2]),this.normals.push(t[0],t[1],t[2]),this.uvs.push(n[0],n[1]),this.positions.length/3-1}grid(e,t,n,r=!1){for(let i=0;i<n;i++)for(let o=0;o<t;o++){let a=e+i*(t+1)+o,s=a+1,g=a+t+1,l=g+1;r?this.indices.push(a,s,g,s,l,g):this.indices.push(a,g,s,s,g,l)}}build(e){let t=this.positions.length/3;return{id:`${e}-mesh`,name:e,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:t>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${e}-material`}}};function Gn(A){let e=Math.hypot(A[0],A[1],A[2]);return e>1e-12?[A[0]/e,A[1]/e,A[2]/e]:[0,0,0]}function xn(A,e,t){if(e<=0)return[-A,A];let n=A-e,r=[];for(let i=0;i<=t;i++)r.push(-n-e*Math.cos(i/t*Math.PI/2));for(let i=n>1e-9?0:1;i<=t;i++)r.push(n+e*Math.sin(i/t*Math.PI/2));return r}function Ia(A,e){let t=A.width/2,n=A.height/2,r=A.depth/2,i=Math.max(0,Math.min(A.radius??0,t,n,r)),o=Math.max(1,Math.round(A.segments??4)),a=A.taper??1,s=t-i,g=n-i,l=r-i,u=xn(t,i,o),c=xn(n,i,o),B=xn(r,i,o),E=A.height>0?(1-a)/A.height:0,d=p=>a+E*(p+n),h=(p,G)=>{let N=[Math.max(-s,Math.min(s,p[0])),Math.max(-g,Math.min(g,p[1])),Math.max(-l,Math.min(l,p[2]))],w=i>0?Gn([p[0]-N[0],p[1]-N[1],p[2]-N[2]]):G;w[0]===0&&w[1]===0&&w[2]===0&&(w=G);let U=[N[0]+w[0]*i,N[1]+w[1]*i,N[2]+w[2]*i];if(a===1)return{p:U,n:w};let b=d(U[1]);return{p:[U[0]*b,U[1],U[2]*b],n:Gn([w[0]/b,w[1]-U[0]*E*w[0]/b-U[2]*E*w[2]/b,w[2]/b])}},Q=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],m=[t,n,r],D=[u,c,B];for(let p of Q){let G=D[p.u],N=D[p.v],w=[0,0,0];w[p.axis]=p.sign;let U=e.positions.length/3;for(let M=0;M<N.length;M++)for(let v=0;v<G.length;v++){let R=[0,0,0];R[p.axis]=p.sign*m[p.axis],R[p.u]=G[v],R[p.v]=N[M];let{p:S,n:K}=h(R,w);e.vertex(S,K,[(G[v]/m[p.u]+1)/2,(N[M]/m[p.v]+1)/2])}let b=(p.v+1)%3===p.u;e.grid(U,G.length-1,N.length-1,(b?1:-1)!==p.sign)}}function Ba(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=Math.max(2,Math.round(t/2));for(let r=0;r<=n;r++){let i=r/n*Math.PI;for(let o=0;o<=t;o++){let a=o/t*Math.PI*2,s=[Math.sin(i)*Math.cos(a),-Math.cos(i),Math.sin(i)*Math.sin(a)];e.vertex([s[0]*A.radius,s[1]*A.radius,s[2]*A.radius],s,[o/t,r/n])}}e.grid(0,t,n)}function fa(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=A.radiusTop??A.radius??50,r=A.radiusBottom??A.radius??50,i=A.height/2,o=A.height>0?(r-n)/A.height:0;for(let a=0;a<=1;a++){let s=a===0?n:r,g=a===0?-i:i;for(let l=0;l<=t;l++){let u=l/t*Math.PI*2,c=Math.cos(u),B=Math.sin(u);e.vertex([c*s,g,B*s],Gn([c,-o,B]),[l/t,a])}}if(e.grid(0,t,1),!A.openEnded)for(let[a,s,g]of[[-i,n,-1],[i,r,1]]){if(s<=0)continue;let l=e.vertex([0,a,0],[0,g,0],[.5,.5]),u=e.positions.length/3;for(let c=0;c<=t;c++){let B=c/t*Math.PI*2,E=Math.cos(B),d=Math.sin(B);e.vertex([E*s,a,d*s],[0,g,0],[(E+1)/2,(d+1)/2])}for(let c=0;c<t;c++)g<0?e.indices.push(l,u+c,u+c+1):e.indices.push(l,u+c+1,u+c)}}function Ea(A){let e=new Mn;if(A.type==="roundedBox")Ia(A,e);else if(A.type==="sphere")Ba(A,e);else if(A.type==="cylinder")fa(A,e);else throw new Error(`Unknown 3D primitive: ${A.type}`);let t=A.type,n=e.build(t),r={name:`${t}-material`,diffuseColor:vt(A.color??"#ffffff"),shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic},i=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],a=n.positions;for(let g=0;g<a.length;g+=3)for(let l=0;l<3;l++){let u=a[g+l];u<i[l]&&(i[l]=u),u>o[l]&&(o[l]=u)}let s=[o[0]-i[0],o[1]-i[1],o[2]-i[2]];return{name:`primitive-${t}`,meshes:[n],materials:{[r.name]:r},animations:[],bounds:{min:i,max:o,center:[(i[0]+o[0])/2,(i[1]+o[1])/2,(i[2]+o[2])/2],size:s,boundingSphereRadius:Math.hypot(...s)/2}}}var Lt=new Map;function uu(A){let e=JSON.stringify(A),t=Lt.get(e);return t||(t=Ea(A),Lt.size>512&&Lt.clear(),Lt.set(e,t)),t}var Nn=new Map;function da(A,e){return JSON.stringify({text:A,...e})}function Fn(A,e){let t=A?String(A):" ",n=da(t,e),r=Nn.get(n);if(r)return r;let i=e.fontSize??48,o=e.fontFamily??"Inter";te.isFailed(o)&&(o="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*i:e.lineHeight??i*1.2,g=te.getFont(o,e.fontWeight,null,void 0,i),l=e.padding??0;if(!g){if(!te.isFailed(o)){let m=jt(o);te.preloadSlugFont(null,o,m).catch(()=>{})}let B=t.split(`
|
|
1524
|
-
`),E=0,d=e.width!==void 0?Math.max(10,e.width-l*2):0;for(let m of B)if(d>0){let D=m.length*i*.55+a*m.length,p=Math.max(1,Math.ceil(D/d));E+=p}else E+=1;let h=Math.max(0,t.length-1),Q={width:e.width!==void 0?e.width:Math.ceil(t.length*i*.6+a*h)+l*2,height:e.height!==void 0?e.height:Math.ceil(E*s)+l*2};return Nn.set(n,Q),Q}let u=ir.measure(t,g,i,a,s,e.width!==void 0?Math.max(0,e.width-l*2):void 0,e.spans,e.direction),c={width:e.width!==void 0&&!e.keepNaturalWidth?e.width:Math.ceil(u.width)+l*2,height:e.height!==void 0?e.height:Math.ceil(u.height)+l*2};return Nn.set(n,c),c}function Eu(A,e){let t=e.fontFamily??"Inter";if(te.isFailed(t)&&(t="Inter"),te.isFailed(t))return Promise.resolve(Fn(A,e));let n=jt(t);return te.preloadSlugFont(null,t,n).then(()=>Fn(A,e)).catch(()=>Fn(A,e))}k();k();k();var Ca=(()=>{var A=import.meta.url;return(function(e){e=e||{};var t;t||(t=typeof e<"u"?e:{});var n,r;t.ready=new Promise(function(I,f){n=I,r=f});var i=Object.assign({},t),o="";typeof document<"u"&&document.currentScript&&(o=document.currentScript.src),A&&(o=A),o.indexOf("blob:")!==0?o=o.substr(0,o.replace(/[?#].*/,"").lastIndexOf("/")+1):o="";var a=t.print||console.log.bind(console),s=t.printErr||console.warn.bind(console);Object.assign(t,i),i=null;var g;t.wasmBinary&&(g=t.wasmBinary);var l=t.noExitRuntime||!0;typeof WebAssembly!="object"&&z("no native wasm support detected");var u,c=!1;function B(I,f,C){C=f+C;for(var y="";!(f>=C);){var x=I[f++];if(!x)break;if(x&128){var L=I[f++]&63;if((x&224)==192)y+=String.fromCharCode((x&31)<<6|L);else{var T=I[f++]&63;x=(x&240)==224?(x&15)<<12|L<<6|T:(x&7)<<18|L<<12|T<<6|I[f++]&63,65536>x?y+=String.fromCharCode(x):(x-=65536,y+=String.fromCharCode(55296|x>>10,56320|x&1023))}}else y+=String.fromCharCode(x)}return y}var E,d,h,Q,m,D,p,G,N;function w(){var I=u.buffer;E=I,t.HEAP8=d=new Int8Array(I),t.HEAP16=Q=new Int16Array(I),t.HEAP32=D=new Int32Array(I),t.HEAPU8=h=new Uint8Array(I),t.HEAPU16=m=new Uint16Array(I),t.HEAPU32=p=new Uint32Array(I),t.HEAPF32=G=new Float32Array(I),t.HEAPF64=N=new Float64Array(I)}var U,b=[],M=[],v=[];function R(){var I=t.preRun.shift();b.unshift(I)}var S=0,K=null,F=null;function z(I){throw t.onAbort&&t.onAbort(I),I="Aborted("+I+")",s(I),c=!0,I=new WebAssembly.RuntimeError(I+". Build with -sASSERTIONS for more info."),r(I),I}function Z(I){return I.startsWith("data:application/octet-stream;base64,")}var $;if($="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!Z($)){var aA=$;$=t.locateFile?t.locateFile(aA,o):o+aA}function W(){var I=$;try{if(I==$&&g)return new Uint8Array(g);if(Z(I))try{var f=Ki(I.slice(37)),C=new Uint8Array(f.length);for(I=0;I<f.length;++I)C[I]=f.charCodeAt(I);var y=C}catch{throw Error("Converting base64 string to bytes failed.")}else y=void 0;var x=y;if(x)return x;throw"both async and sync fetching of the wasm failed"}catch(L){z(L)}}function Y(){return g||typeof fetch!="function"?Promise.resolve().then(function(){return W()}):fetch($,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+$+"'";return I.arrayBuffer()}).catch(function(){return W()})}function j(I){for(;0<I.length;)I.shift()(t)}function IA(I){if(I===void 0)return"_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var f=I.charCodeAt(0);return 48<=f&&57>=f?"_"+I:I}function dA(I,f){return I=IA(I),function(){return f.apply(this,arguments)}}var uA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],mA=[];function pA(I){var f=Error,C=dA(I,function(y){this.name=I,this.message=y,y=Error(y).stack,y!==void 0&&(this.stack=this.toString()+`
|
|
1525
|
-
`+y.replace(/^Error(:[^\n]*)?\n/,""))});return C.prototype=Object.create(f.prototype),C.prototype.constructor=C,C.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},C}var X=void 0;function P(I){throw new X(I)}var nA=I=>(I||P("Cannot use deleted val. handle = "+I),uA[I].value),tA=I=>{switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var f=mA.length?mA.pop():uA.length;return uA[f]={ga:1,value:I},f}},rA=void 0,AA=void 0;function eA(I){for(var f="";h[I];)f+=AA[h[I++]];return f}var gA=[];function lA(){for(;gA.length;){var I=gA.pop();I.M.$=!1,I.delete()}}var BA=void 0,EA={};function QA(I,f){for(f===void 0&&P("ptr should not be undefined");I.R;)f=I.ba(f),I=I.R;return f}var sA={};function yA(I){I=zn(I);var f=eA(I);return XA(I),f}function bA(I,f){var C=sA[I];return C===void 0&&P(f+" has unknown type "+yA(I)),C}function wA(){}var hA=!1;function VA(I){--I.count.value,I.count.value===0&&(I.T?I.U.W(I.T):I.P.N.W(I.O))}function YA(I,f,C){return f===C?I:C.R===void 0?null:(I=YA(I,f,C.R),I===null?null:C.na(I))}var FA={};function Jt(I,f){return f=QA(I,f),EA[f]}var vA=void 0;function je(I){throw new vA(I)}function $e(I,f){return f.P&&f.O||je("makeClassHandle requires ptr and ptrType"),!!f.U!=!!f.T&&je("Both smartPtrType and smartPtr must be specified"),f.count={value:1},Ie(Object.create(I,{M:{value:f}}))}function Ie(I){return typeof FinalizationRegistry>"u"?(Ie=f=>f,I):(hA=new FinalizationRegistry(f=>{VA(f.M)}),Ie=f=>{var C=f.M;return C.T&&hA.register(f,{M:C},f),f},wA=f=>{hA.unregister(f)},Ie(I))}var At={};function Ot(I){for(;I.length;){var f=I.pop();I.pop()(f)}}function Ne(I){return this.fromWireType(D[I>>2])}var Be={},et={};function Ae(I,f,C){function y(J){J=C(J),J.length!==I.length&&je("Mismatched type converter count");for(var V=0;V<I.length;++V)WA(I[V],J[V])}I.forEach(function(J){et[J]=f});var x=Array(f.length),L=[],T=0;f.forEach((J,V)=>{sA.hasOwnProperty(J)?x[V]=sA[J]:(L.push(J),Be.hasOwnProperty(J)||(Be[J]=[]),Be[J].push(()=>{x[V]=sA[J],++T,T===L.length&&y(x)}))}),L.length===0&&y(x)}function Kt(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+I)}}function WA(I,f,C={}){if(!("argPackAdvance"in f))throw new TypeError("registerType registeredInstance requires argPackAdvance");var y=f.name;if(I||P('type "'+y+'" must have a positive integer typeid pointer'),sA.hasOwnProperty(I)){if(C.ua)return;P("Cannot register type '"+y+"' twice")}sA[I]=f,delete et[I],Be.hasOwnProperty(I)&&(f=Be[I],delete Be[I],f.forEach(x=>x()))}function Vt(I){P(I.M.P.N.name+" instance already deleted")}function ee(){}function Yt(I,f,C){if(I[f].S===void 0){var y=I[f];I[f]=function(){return I[f].S.hasOwnProperty(arguments.length)||P("Function '"+C+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+I[f].S+")!"),I[f].S[arguments.length].apply(this,arguments)},I[f].S=[],I[f].S[y.Z]=y}}function bi(I,f){t.hasOwnProperty(I)?(P("Cannot register public name '"+I+"' twice"),Yt(t,I,I),t.hasOwnProperty(void 0)&&P("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),t[I].S[void 0]=f):t[I]=f}function Di(I,f,C,y,x,L,T,J){this.name=I,this.constructor=f,this.X=C,this.W=y,this.R=x,this.pa=L,this.ba=T,this.na=J,this.ja=[]}function Wt(I,f,C){for(;f!==C;)f.ba||P("Expected null or instance of "+C.name+", got an instance of "+f.name),I=f.ba(I),f=f.R;return I}function wi(I,f){return f===null?(this.ea&&P("null is not a valid "+this.name),0):(f.M||P('Cannot pass "'+qt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),Wt(f.M.O,f.M.P.N,this.N))}function xi(I,f){if(f===null){if(this.ea&&P("null is not a valid "+this.name),this.da){var C=this.fa();return I!==null&&I.push(this.W,C),C}return 0}if(f.M||P('Cannot pass "'+qt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&f.M.P.ca&&P("Cannot convert argument of type "+(f.M.U?f.M.U.name:f.M.P.name)+" to parameter type "+this.name),C=Wt(f.M.O,f.M.P.N,this.N),this.da)switch(f.M.T===void 0&&P("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:f.M.U===this?C=f.M.T:P("Cannot convert argument of type "+(f.M.U?f.M.U.name:f.M.P.name)+" to parameter type "+this.name);break;case 1:C=f.M.T;break;case 2:if(f.M.U===this)C=f.M.T;else{var y=f.clone();C=this.xa(C,tA(function(){y.delete()})),I!==null&&I.push(this.W,C)}break;default:P("Unsupporting sharing policy")}return C}function Mi(I,f){return f===null?(this.ea&&P("null is not a valid "+this.name),0):(f.M||P('Cannot pass "'+qt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),f.M.P.ca&&P("Cannot convert argument of type "+f.M.P.name+" to parameter type "+this.name),Wt(f.M.O,f.M.P.N,this.N))}function zA(I,f,C,y){this.name=I,this.N=f,this.ea=C,this.ca=y,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,f.R!==void 0?this.toWireType=xi:(this.toWireType=y?wi:Mi,this.V=null)}function Gi(I,f){t.hasOwnProperty(I)||je("Replacing nonexistant public symbol"),t[I]=f,t[I].Z=void 0}function Ni(I,f){var C=[];return function(){if(C.length=0,Object.assign(C,arguments),I.includes("j")){var y=t["dynCall_"+I];y=C&&C.length?y.apply(null,[f].concat(C)):y.call(null,f)}else y=U.get(f).apply(null,C);return y}}function kA(I,f){I=eA(I);var C=I.includes("j")?Ni(I,f):U.get(f);return typeof C!="function"&&P("unknown function pointer with signature "+I+": "+f),C}var Kn=void 0;function tt(I,f){function C(L){x[L]||sA[L]||(et[L]?et[L].forEach(C):(y.push(L),x[L]=!0))}var y=[],x={};throw f.forEach(C),new Kn(I+": "+y.map(yA).join([", "]))}function zt(I,f,C,y,x){var L=f.length;2>L&&P("argTypes array size mismatch! Must at least get return value and 'this' types!");var T=f[1]!==null&&C!==null,J=!1;for(C=1;C<f.length;++C)if(f[C]!==null&&f[C].V===void 0){J=!0;break}var V=f[0].name!=="void",O=L-2,q=Array(O),oA=[],fA=[];return function(){if(arguments.length!==O&&P("function "+I+" called with "+arguments.length+" arguments, expected "+O+" args!"),fA.length=0,oA.length=T?2:1,oA[0]=x,T){var xA=f[1].toWireType(fA,this);oA[1]=xA}for(var CA=0;CA<O;++CA)q[CA]=f[CA+2].toWireType(fA,arguments[CA]),oA.push(q[CA]);if(CA=y.apply(null,oA),J)Ot(fA);else for(var SA=T?1:2;SA<f.length;SA++){var PA=SA===1?xA:q[SA-2];f[SA].V!==null&&f[SA].V(PA)}return xA=V?f[0].fromWireType(CA):void 0,xA}}function Xt(I,f){for(var C=[],y=0;y<I;y++)C.push(p[f+4*y>>2]);return C}function Zt(I){4<I&&--uA[I].ga===0&&(uA[I]=void 0,mA.push(I))}function qt(I){if(I===null)return"null";var f=typeof I;return f==="object"||f==="array"||f==="function"?I.toString():""+I}function Fi(I,f){switch(f){case 2:return function(C){return this.fromWireType(G[C>>2])};case 3:return function(C){return this.fromWireType(N[C>>3])};default:throw new TypeError("Unknown float type: "+I)}}function Si(I,f,C){switch(f){case 0:return C?function(y){return d[y]}:function(y){return h[y]};case 1:return C?function(y){return Q[y>>1]}:function(y){return m[y>>1]};case 2:return C?function(y){return D[y>>2]}:function(y){return p[y>>2]};default:throw new TypeError("Unknown integer type: "+I)}}function Ui(I,f){for(var C="",y=0;!(y>=f/2);++y){var x=Q[I+2*y>>1];if(x==0)break;C+=String.fromCharCode(x)}return C}function vi(I,f,C){if(C===void 0&&(C=2147483647),2>C)return 0;C-=2;var y=f;C=C<2*I.length?C/2:I.length;for(var x=0;x<C;++x)Q[f>>1]=I.charCodeAt(x),f+=2;return Q[f>>1]=0,f-y}function Ri(I){return 2*I.length}function Li(I,f){for(var C=0,y="";!(C>=f/4);){var x=D[I+4*C>>2];if(x==0)break;++C,65536<=x?(x-=65536,y+=String.fromCharCode(55296|x>>10,56320|x&1023)):y+=String.fromCharCode(x)}return y}function ki(I,f,C){if(C===void 0&&(C=2147483647),4>C)return 0;var y=f;C=y+C-4;for(var x=0;x<I.length;++x){var L=I.charCodeAt(x);if(55296<=L&&57343>=L){var T=I.charCodeAt(++x);L=65536+((L&1023)<<10)|T&1023}if(D[f>>2]=L,f+=4,f+4>C)break}return D[f>>2]=0,f-y}function Pi(I){for(var f=0,C=0;C<I.length;++C){var y=I.charCodeAt(C);55296<=y&&57343>=y&&++C,f+=4}return f}var Ti={};function Vn(I){var f=Ti[I];return f===void 0?eA(I):f}var nt=[];function Hi(I){var f=nt.length;return nt.push(I),f}function Ji(I,f){for(var C=Array(I),y=0;y<I;++y)C[y]=bA(p[f+4*y>>2],"parameter "+y);return C}var Yn=[],Oi=[null,[],[]];X=t.BindingError=pA("BindingError"),t.count_emval_handles=function(){for(var I=0,f=5;f<uA.length;++f)uA[f]!==void 0&&++I;return I},t.get_first_emval=function(){for(var I=5;I<uA.length;++I)if(uA[I]!==void 0)return uA[I];return null},rA=t.PureVirtualError=pA("PureVirtualError");for(var Wn=Array(256),rt=0;256>rt;++rt)Wn[rt]=String.fromCharCode(rt);AA=Wn,t.getInheritedInstanceCount=function(){return Object.keys(EA).length},t.getLiveInheritedInstances=function(){var I=[],f;for(f in EA)EA.hasOwnProperty(f)&&I.push(EA[f]);return I},t.flushPendingDeletes=lA,t.setDelayFunction=function(I){BA=I,gA.length&&BA&&BA(lA)},vA=t.InternalError=pA("InternalError"),ee.prototype.isAliasOf=function(I){if(!(this instanceof ee&&I instanceof ee))return!1;var f=this.M.P.N,C=this.M.O,y=I.M.P.N;for(I=I.M.O;f.R;)C=f.ba(C),f=f.R;for(;y.R;)I=y.ba(I),y=y.R;return f===y&&C===I},ee.prototype.clone=function(){if(this.M.O||Vt(this),this.M.aa)return this.M.count.value+=1,this;var I=Ie,f=Object,C=f.create,y=Object.getPrototypeOf(this),x=this.M;return I=I(C.call(f,y,{M:{value:{count:x.count,$:x.$,aa:x.aa,O:x.O,P:x.P,T:x.T,U:x.U}}})),I.M.count.value+=1,I.M.$=!1,I},ee.prototype.delete=function(){this.M.O||Vt(this),this.M.$&&!this.M.aa&&P("Object already scheduled for deletion"),wA(this),VA(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},ee.prototype.isDeleted=function(){return!this.M.O},ee.prototype.deleteLater=function(){return this.M.O||Vt(this),this.M.$&&!this.M.aa&&P("Object already scheduled for deletion"),gA.push(this),gA.length===1&&BA&&BA(lA),this.M.$=!0,this},zA.prototype.qa=function(I){return this.ka&&(I=this.ka(I)),I},zA.prototype.ha=function(I){this.W&&this.W(I)},zA.prototype.argPackAdvance=8,zA.prototype.readValueFromPointer=Ne,zA.prototype.deleteObject=function(I){I!==null&&I.delete()},zA.prototype.fromWireType=function(I){function f(){return this.da?$e(this.N.X,{P:this.wa,O:C,U:this,T:I}):$e(this.N.X,{P:this,O:I})}var C=this.qa(I);if(!C)return this.ha(I),null;var y=Jt(this.N,C);if(y!==void 0)return y.M.count.value===0?(y.M.O=C,y.M.T=I,y.clone()):(y=y.clone(),this.ha(I),y);if(y=this.N.pa(C),y=FA[y],!y)return f.call(this);y=this.ca?y.la:y.pointerType;var x=YA(C,this.N,y.N);return x===null?f.call(this):this.da?$e(y.N.X,{P:y,O:x,U:this,T:I}):$e(y.N.X,{P:y,O:x})},Kn=t.UnboundTypeError=pA("UnboundTypeError");var Ki=typeof atob=="function"?atob:function(I){var f="",C=0;I=I.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),L="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++)),T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(I.charAt(C++));y=y<<2|x>>4,x=(x&15)<<4|L>>2;var J=(L&3)<<6|T;f+=String.fromCharCode(y),L!==64&&(f+=String.fromCharCode(x)),T!==64&&(f+=String.fromCharCode(J))}while(C<I.length);return f},Vi={l:function(I,f,C,y){z("Assertion failed: "+(I?B(h,I):"")+", at: "+[f?f?B(h,f):"":"unknown filename",C,y?y?B(h,y):"":"unknown function"])},q:function(I,f,C){I=eA(I),f=bA(f,"wrapper"),C=nA(C);var y=[].slice,x=f.N,L=x.X,T=x.R.X,J=x.R.constructor;I=dA(I,function(){x.R.ja.forEach(function(O){if(this[O]===T[O])throw new rA("Pure virtual function "+O+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:L}),this.__construct.apply(this,y.call(arguments))}),L.__construct=function(){this===L&&P("Pass correct 'this' to __construct");var O=J.implement.apply(void 0,[this].concat(y.call(arguments)));wA(O);var q=O.M;O.notifyOnDestruction(),q.aa=!0,Object.defineProperties(this,{M:{value:q}}),Ie(this),O=q.O,O=QA(x,O),EA.hasOwnProperty(O)?P("Tried to register registered instance: "+O):EA[O]=this},L.__destruct=function(){this===L&&P("Pass correct 'this' to __destruct"),wA(this);var O=this.M.O;O=QA(x,O),EA.hasOwnProperty(O)?delete EA[O]:P("Tried to unregister unregistered instance: "+O)},I.prototype=Object.create(L);for(var V in C)I.prototype[V]=C[V];return tA(I)},j:function(I){var f=At[I];delete At[I];var C=f.fa,y=f.W,x=f.ia,L=x.map(T=>T.ta).concat(x.map(T=>T.za));Ae([I],L,T=>{var J={};return x.forEach((V,O)=>{var q=T[O],oA=V.ra,fA=V.sa,xA=T[O+x.length],CA=V.ya,SA=V.Aa;J[V.oa]={read:PA=>q.fromWireType(oA(fA,PA)),write:(PA,Fe)=>{var ZA=[];CA(SA,PA,xA.toWireType(ZA,Fe)),Ot(ZA)}}}),[{name:f.name,fromWireType:function(V){var O={},q;for(q in J)O[q]=J[q].read(V);return y(V),O},toWireType:function(V,O){for(var q in J)if(!(q in O))throw new TypeError('Missing field: "'+q+'"');var oA=C();for(q in J)J[q].write(oA,O[q]);return V!==null&&V.push(y,oA),oA},argPackAdvance:8,readValueFromPointer:Ne,V:y}]})},v:function(){},B:function(I,f,C,y,x){var L=Kt(C);f=eA(f),WA(I,{name:f,fromWireType:function(T){return!!T},toWireType:function(T,J){return J?y:x},argPackAdvance:8,readValueFromPointer:function(T){if(C===1)var J=d;else if(C===2)J=Q;else if(C===4)J=D;else throw new TypeError("Unknown boolean type size: "+f);return this.fromWireType(J[T>>L])},V:null})},f:function(I,f,C,y,x,L,T,J,V,O,q,oA,fA){q=eA(q),L=kA(x,L),J&&(J=kA(T,J)),O&&(O=kA(V,O)),fA=kA(oA,fA);var xA=IA(q);bi(xA,function(){tt("Cannot construct "+q+" due to unbound types",[y])}),Ae([I,f,C],y?[y]:[],function(CA){if(CA=CA[0],y)var SA=CA.N,PA=SA.X;else PA=ee.prototype;CA=dA(xA,function(){if(Object.getPrototypeOf(this)!==Fe)throw new X("Use 'new' to construct "+q);if(ZA.Y===void 0)throw new X(q+" has no accessible constructor");var qn=ZA.Y[arguments.length];if(qn===void 0)throw new X("Tried to invoke ctor of "+q+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ZA.Y).toString()+") parameters instead!");return qn.apply(this,arguments)});var Fe=Object.create(PA,{constructor:{value:CA}});CA.prototype=Fe;var ZA=new Di(q,CA,Fe,fA,SA,L,J,O);SA=new zA(q,ZA,!0,!1),PA=new zA(q+"*",ZA,!1,!1);var Zn=new zA(q+" const*",ZA,!1,!0);return FA[I]={pointerType:PA,la:Zn},Gi(xA,CA),[SA,PA,Zn]})},d:function(I,f,C,y,x,L,T){var J=Xt(C,y);f=eA(f),L=kA(x,L),Ae([],[I],function(V){function O(){tt("Cannot call "+q+" due to unbound types",J)}V=V[0];var q=V.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]);var oA=V.N.constructor;return oA[f]===void 0?(O.Z=C-1,oA[f]=O):(Yt(oA,f,q),oA[f].S[C-1]=O),Ae([],J,function(fA){return fA=zt(q,[fA[0],null].concat(fA.slice(1)),null,L,T),oA[f].S===void 0?(fA.Z=C-1,oA[f]=fA):oA[f].S[C-1]=fA,[]}),[]})},p:function(I,f,C,y,x,L){0<f||z();var T=Xt(f,C);x=kA(y,x),Ae([],[I],function(J){J=J[0];var V="constructor "+J.name;if(J.N.Y===void 0&&(J.N.Y=[]),J.N.Y[f-1]!==void 0)throw new X("Cannot register multiple constructors with identical number of parameters ("+(f-1)+") for class '"+J.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return J.N.Y[f-1]=()=>{tt("Cannot construct "+J.name+" due to unbound types",T)},Ae([],T,function(O){return O.splice(1,0,null),J.N.Y[f-1]=zt(V,O,null,x,L),[]}),[]})},a:function(I,f,C,y,x,L,T,J){var V=Xt(C,y);f=eA(f),L=kA(x,L),Ae([],[I],function(O){function q(){tt("Cannot call "+oA+" due to unbound types",V)}O=O[0];var oA=O.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]),J&&O.N.ja.push(f);var fA=O.N.X,xA=fA[f];return xA===void 0||xA.S===void 0&&xA.className!==O.name&&xA.Z===C-2?(q.Z=C-2,q.className=O.name,fA[f]=q):(Yt(fA,f,oA),fA[f].S[C-2]=q),Ae([],V,function(CA){return CA=zt(oA,CA,O,L,T),fA[f].S===void 0?(CA.Z=C-2,fA[f]=CA):fA[f].S[C-2]=CA,[]}),[]})},A:function(I,f){f=eA(f),WA(I,{name:f,fromWireType:function(C){var y=nA(C);return Zt(C),y},toWireType:function(C,y){return tA(y)},argPackAdvance:8,readValueFromPointer:Ne,V:null})},n:function(I,f,C){C=Kt(C),f=eA(f),WA(I,{name:f,fromWireType:function(y){return y},toWireType:function(y,x){return x},argPackAdvance:8,readValueFromPointer:Fi(f,C),V:null})},e:function(I,f,C,y,x){f=eA(f),x===-1&&(x=4294967295),x=Kt(C);var L=J=>J;if(y===0){var T=32-8*C;L=J=>J<<T>>>T}C=f.includes("unsigned")?function(J,V){return V>>>0}:function(J,V){return V},WA(I,{name:f,fromWireType:L,toWireType:C,argPackAdvance:8,readValueFromPointer:Si(f,x,y!==0),V:null})},b:function(I,f,C){function y(L){L>>=2;var T=p;return new x(E,T[L+1],T[L])}var x=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][f];C=eA(C),WA(I,{name:C,fromWireType:y,argPackAdvance:8,readValueFromPointer:y},{ua:!0})},o:function(I,f){f=eA(f);var C=f==="std::string";WA(I,{name:f,fromWireType:function(y){var x=p[y>>2],L=y+4;if(C)for(var T=L,J=0;J<=x;++J){var V=L+J;if(J==x||h[V]==0){if(T=T?B(h,T,V-T):"",O===void 0)var O=T;else O+="\0",O+=T;T=V+1}}else{for(O=Array(x),J=0;J<x;++J)O[J]=String.fromCharCode(h[L+J]);O=O.join("")}return XA(y),O},toWireType:function(y,x){x instanceof ArrayBuffer&&(x=new Uint8Array(x));var L,T=typeof x=="string";if(T||x instanceof Uint8Array||x instanceof Uint8ClampedArray||x instanceof Int8Array||P("Cannot pass non-string to std::string"),C&&T){var J=0;for(L=0;L<x.length;++L){var V=x.charCodeAt(L);127>=V?J++:2047>=V?J+=2:55296<=V&&57343>=V?(J+=4,++L):J+=3}L=J}else L=x.length;if(J=_t(4+L+1),V=J+4,p[J>>2]=L,C&&T){if(T=V,V=L+1,L=h,0<V){V=T+V-1;for(var O=0;O<x.length;++O){var q=x.charCodeAt(O);if(55296<=q&&57343>=q){var oA=x.charCodeAt(++O);q=65536+((q&1023)<<10)|oA&1023}if(127>=q){if(T>=V)break;L[T++]=q}else{if(2047>=q){if(T+1>=V)break;L[T++]=192|q>>6}else{if(65535>=q){if(T+2>=V)break;L[T++]=224|q>>12}else{if(T+3>=V)break;L[T++]=240|q>>18,L[T++]=128|q>>12&63}L[T++]=128|q>>6&63}L[T++]=128|q&63}}L[T]=0}}else if(T)for(T=0;T<L;++T)O=x.charCodeAt(T),255<O&&(XA(V),P("String has UTF-16 code units that do not fit in 8 bits")),h[V+T]=O;else for(T=0;T<L;++T)h[V+T]=x[T];return y!==null&&y.push(XA,J),J},argPackAdvance:8,readValueFromPointer:Ne,V:function(y){XA(y)}})},i:function(I,f,C){if(C=eA(C),f===2)var y=Ui,x=vi,L=Ri,T=()=>m,J=1;else f===4&&(y=Li,x=ki,L=Pi,T=()=>p,J=2);WA(I,{name:C,fromWireType:function(V){for(var O=p[V>>2],q=T(),oA,fA=V+4,xA=0;xA<=O;++xA){var CA=V+4+xA*f;(xA==O||q[CA>>J]==0)&&(fA=y(fA,CA-fA),oA===void 0?oA=fA:(oA+="\0",oA+=fA),fA=CA+f)}return XA(V),oA},toWireType:function(V,O){typeof O!="string"&&P("Cannot pass non-string to C++ string type "+C);var q=L(O),oA=_t(4+q+f);return p[oA>>2]=q>>J,x(O,oA+4,q+f),V!==null&&V.push(XA,oA),oA},argPackAdvance:8,readValueFromPointer:Ne,V:function(V){XA(V)}})},k:function(I,f,C,y,x,L){At[I]={name:eA(f),fa:kA(C,y),W:kA(x,L),ia:[]}},h:function(I,f,C,y,x,L,T,J,V,O){At[I].ia.push({oa:eA(f),ta:C,ra:kA(y,x),sa:L,za:T,ya:kA(J,V),Aa:O})},C:function(I,f){f=eA(f),WA(I,{va:!0,name:f,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(I,f,C,y,x){I=nt[I],f=nA(f),C=Vn(C);var L=[];return p[y>>2]=tA(L),I(f,C,L,x)},t:function(I,f,C,y){I=nt[I],f=nA(f),C=Vn(C),I(f,C,null,y)},g:Zt,m:function(I,f){var C=Ji(I,f),y=C[0];f=y.name+"_$"+C.slice(1).map(function(T){return T.name}).join("_")+"$";var x=Yn[f];if(x!==void 0)return x;var L=Array(I-1);return x=Hi((T,J,V,O)=>{for(var q=0,oA=0;oA<I-1;++oA)L[oA]=C[oA+1].readValueFromPointer(O+q),q+=C[oA+1].argPackAdvance;for(T=T[J].apply(T,L),oA=0;oA<I-1;++oA)C[oA+1].ma&&C[oA+1].ma(L[oA]);if(!y.va)return y.toWireType(V,T)}),Yn[f]=x},D:function(I){4<I&&(uA[I].ga+=1)},r:function(I){var f=nA(I);Ot(f),Zt(I)},c:function(){z("")},x:function(I,f,C){h.copyWithin(I,f,f+C)},w:function(I){var f=h.length;if(I>>>=0,2147483648<I)return!1;for(var C=1;4>=C;C*=2){var y=f*(1+.2/C);y=Math.min(y,I+100663296);var x=Math;y=Math.max(I,y),x=x.min.call(x,2147483648,y+(65536-y%65536)%65536);A:{try{u.grow(x-E.byteLength+65535>>>16),w();var L=1;break A}catch{}L=void 0}if(L)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(I,f,C,y){for(var x=0,L=0;L<C;L++){var T=p[f>>2],J=p[f+4>>2];f+=8;for(var V=0;V<J;V++){var O=h[T+V],q=Oi[I];O===0||O===10?((I===1?a:s)(B(q,0)),q.length=0):q.push(O)}x+=J}return p[y>>2]=x,0}};(function(){function I(x){t.asm=x.exports,u=t.asm.E,w(),U=t.asm.J,M.unshift(t.asm.F),S--,t.monitorRunDependencies&&t.monitorRunDependencies(S),S==0&&(K!==null&&(clearInterval(K),K=null),F&&(x=F,F=null,x()))}function f(x){I(x.instance)}function C(x){return Y().then(function(L){return WebAssembly.instantiate(L,y)}).then(function(L){return L}).then(x,function(L){s("failed to asynchronously prepare wasm: "+L),z(L)})}var y={a:Vi};if(S++,t.monitorRunDependencies&&t.monitorRunDependencies(S),t.instantiateWasm)try{return t.instantiateWasm(y,I)}catch(x){s("Module.instantiateWasm callback failed with error: "+x),r(x)}return(function(){return g||typeof WebAssembly.instantiateStreaming!="function"||Z($)||typeof fetch!="function"?C(f):fetch($,{credentials:"same-origin"}).then(function(x){return WebAssembly.instantiateStreaming(x,y).then(f,function(L){return s("wasm streaming compile failed: "+L),s("falling back to ArrayBuffer instantiation"),C(f)})})})().catch(r),{}})(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.F).apply(null,arguments)};var zn=t.___getTypeName=function(){return(zn=t.___getTypeName=t.asm.G).apply(null,arguments)};t.__embind_initialize_bindings=function(){return(t.__embind_initialize_bindings=t.asm.H).apply(null,arguments)};var _t=t._malloc=function(){return(_t=t._malloc=t.asm.I).apply(null,arguments)},XA=t._free=function(){return(XA=t._free=t.asm.K).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.L).apply(null,arguments)};var it;F=function I(){it||Xn(),it||(F=I)};function Xn(){function I(){if(!it&&(it=!0,t.calledRun=!0,!c)){if(j(M),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var f=t.postRun.shift();v.unshift(f)}j(v)}}if(!(0<S)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)R();j(b),0<S||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),I()},1)):I())}}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();return Xn(),e.ready})})(),ei=Ca;k();k();var jA=(function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A})({}),ti=(function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A})({}),ni=(function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A})({}),qe=(function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A})({}),Sn=(function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A})({}),$A=(function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A})({}),xe=(function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A})({}),Qa=(function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A})({}),kt=(function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A})({}),Un=(function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A})({}),Me=(function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A})({}),Ge=(function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A})({}),vn=(function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A})({}),ri=(function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A})({}),Rn=(function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A})({}),Ln=(function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A})({}),TA=(function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A})({}),kn=(function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A})({}),ma={ALIGN_AUTO:jA.Auto,ALIGN_FLEX_START:jA.FlexStart,ALIGN_CENTER:jA.Center,ALIGN_FLEX_END:jA.FlexEnd,ALIGN_STRETCH:jA.Stretch,ALIGN_BASELINE:jA.Baseline,ALIGN_SPACE_BETWEEN:jA.SpaceBetween,ALIGN_SPACE_AROUND:jA.SpaceAround,ALIGN_SPACE_EVENLY:jA.SpaceEvenly,BOX_SIZING_BORDER_BOX:ti.BorderBox,BOX_SIZING_CONTENT_BOX:ti.ContentBox,DIMENSION_WIDTH:ni.Width,DIMENSION_HEIGHT:ni.Height,DIRECTION_INHERIT:qe.Inherit,DIRECTION_LTR:qe.LTR,DIRECTION_RTL:qe.RTL,DISPLAY_FLEX:Sn.Flex,DISPLAY_NONE:Sn.None,DISPLAY_CONTENTS:Sn.Contents,EDGE_LEFT:$A.Left,EDGE_TOP:$A.Top,EDGE_RIGHT:$A.Right,EDGE_BOTTOM:$A.Bottom,EDGE_START:$A.Start,EDGE_END:$A.End,EDGE_HORIZONTAL:$A.Horizontal,EDGE_VERTICAL:$A.Vertical,EDGE_ALL:$A.All,ERRATA_NONE:xe.None,ERRATA_STRETCH_FLEX_BASIS:xe.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:xe.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:xe.AbsolutePercentAgainstInnerSize,ERRATA_ALL:xe.All,ERRATA_CLASSIC:xe.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Qa.WebFlexBasis,FLEX_DIRECTION_COLUMN:kt.Column,FLEX_DIRECTION_COLUMN_REVERSE:kt.ColumnReverse,FLEX_DIRECTION_ROW:kt.Row,FLEX_DIRECTION_ROW_REVERSE:kt.RowReverse,GUTTER_COLUMN:Un.Column,GUTTER_ROW:Un.Row,GUTTER_ALL:Un.All,JUSTIFY_FLEX_START:Me.FlexStart,JUSTIFY_CENTER:Me.Center,JUSTIFY_FLEX_END:Me.FlexEnd,JUSTIFY_SPACE_BETWEEN:Me.SpaceBetween,JUSTIFY_SPACE_AROUND:Me.SpaceAround,JUSTIFY_SPACE_EVENLY:Me.SpaceEvenly,LOG_LEVEL_ERROR:Ge.Error,LOG_LEVEL_WARN:Ge.Warn,LOG_LEVEL_INFO:Ge.Info,LOG_LEVEL_DEBUG:Ge.Debug,LOG_LEVEL_VERBOSE:Ge.Verbose,LOG_LEVEL_FATAL:Ge.Fatal,MEASURE_MODE_UNDEFINED:vn.Undefined,MEASURE_MODE_EXACTLY:vn.Exactly,MEASURE_MODE_AT_MOST:vn.AtMost,NODE_TYPE_DEFAULT:ri.Default,NODE_TYPE_TEXT:ri.Text,OVERFLOW_VISIBLE:Rn.Visible,OVERFLOW_HIDDEN:Rn.Hidden,OVERFLOW_SCROLL:Rn.Scroll,POSITION_TYPE_STATIC:Ln.Static,POSITION_TYPE_RELATIVE:Ln.Relative,POSITION_TYPE_ABSOLUTE:Ln.Absolute,UNIT_UNDEFINED:TA.Undefined,UNIT_POINT:TA.Point,UNIT_PERCENT:TA.Percent,UNIT_AUTO:TA.Auto,WRAP_NO_WRAP:kn.NoWrap,WRAP_WRAP:kn.Wrap,WRAP_WRAP_REVERSE:kn.WrapReverse},ii=ma;function Pn(A){function e(r,i,o){let a=r[i];r[i]=function(){for(var s=arguments.length,g=new Array(s),l=0;l<s;l++)g[l]=arguments[l];return o.call(this,a,...g)}}for(let r of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let i={[TA.Point]:A.Node.prototype[r],[TA.Percent]:A.Node.prototype[`${r}Percent`],[TA.Auto]:A.Node.prototype[`${r}Auto`]};e(A.Node.prototype,r,function(o){for(var a=arguments.length,s=new Array(a>1?a-1:0),g=1;g<a;g++)s[g-1]=arguments[g];let l=s.pop(),u,c;if(l==="auto")u=TA.Auto,c=void 0;else if(typeof l=="object")u=l.unit,c=l.valueOf();else if(u=typeof l=="string"&&l.endsWith("%")?TA.Percent:TA.Point,c=parseFloat(l),l!==void 0&&!Number.isNaN(l)&&Number.isNaN(c))throw new Error(`Invalid value ${l} for ${r}`);if(!i[u])throw new Error(`Failed to execute "${r}": Unsupported unit '${l}'`);return c!==void 0?i[u].call(this,...s,c):i[u].call(this,...s)})}function t(r){return A.MeasureCallback.implement({measure:function(){let{width:i,height:o}=r(...arguments);return{width:i??NaN,height:o??NaN}}})}e(A.Node.prototype,"setMeasureFunc",function(r,i){return i?r.call(this,t(i)):this.unsetMeasureFunc()});function n(r){return A.DirtiedCallback.implement({dirtied:r})}return e(A.Node.prototype,"setDirtiedFunc",function(r,i){r.call(this,n(i))}),e(A.Config.prototype,"free",function(){A.Config.destroy(this)}),e(A.Node,"create",(r,i)=>i?A.Node.createWithConfig(i):A.Node.createDefault()),e(A.Node.prototype,"free",function(){A.Node.destroy(this)}),e(A.Node.prototype,"freeRecursive",function(){for(let r=0,i=this.getChildCount();r<i;++r)this.getChild(0).freeRecursive();this.free()}),e(A.Node.prototype,"calculateLayout",function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:qe.LTR;return r.call(this,i,o,a)}),{Config:A.Config,Node:A.Node,...ii}}async function oi(){return Pn(await ei())}var Pt=null;async function ha(){return Pt||(Pt=await oi(),Pt)}function pa(A,e){switch(e){case"center":return A.JUSTIFY_CENTER;case"end":return A.JUSTIFY_FLEX_END;case"space-between":return A.JUSTIFY_SPACE_BETWEEN;case"space-around":return A.JUSTIFY_SPACE_AROUND;default:return A.JUSTIFY_FLEX_START}}function ya(A,e){switch(e){case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;default:return A.ALIGN_FLEX_START}}function ba(A,e){switch(e){case"start":return A.ALIGN_FLEX_START;case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;case"baseline":return A.ALIGN_BASELINE;default:return A.ALIGN_AUTO}}function ce(A){if(A!=null){if(typeof A=="number"||typeof A=="string")return A;if(typeof A=="object"){if("unit"in A&&typeof A.unit=="number")return A;let e=Number(A);if(!Number.isNaN(e))return e}}}function Da(A){switch(A.kind){case"flex":return A.dir??"row";case"block":return"column";case"box":return A.children&&A.children.length>0?"column":null;case"text":case"media":case"shape":case"camera":case"light":case"model3d":return null;default:return ot(A)}}function wa(A){if(A.kind==="block")return"fill"}function xa(A){let e=0;if(A.kind==="flex"||A.kind==="block"){let o=ce(A.gap);e=typeof o=="number"?o:0}let t=0;if(A.kind==="flex"||A.kind==="block"||A.kind==="box"||A.kind==="text"){let o=ce(A.padding);t=typeof o=="number"?o:0}let n="start";A.kind==="flex"&&(n=A.justify??"start");let r="start";(A.kind==="flex"||A.kind==="block")&&(r=A.align??"start");let i=!1;return A.kind==="flex"&&(i=typeof A.wrap=="boolean"?A.wrap:!1),{gap:e,padding:t,justify:n,align:r,wrap:i}}function _e(A){let e=A;return e.position==="absolute"||e.position===void 0&&(e.x!==void 0||e.y!==void 0)}function Ma(A){return"children"in A&&A.children?A.children.filter(e=>!_e(e)):[]}function Ga(A){return"children"in A&&A.children?A.children.filter(e=>_e(e)):[]}function si(A,e,t,n,r){let i=e,o=A.Node.create(),a=Da(i),s=a!==null,g=[];if(_e(i)){o.setPositionType(A.POSITION_TYPE_ABSOLUTE);let Q=ce(i.x),m=ce(i.y);Q!==void 0&&o.setPosition(A.EDGE_LEFT,Q),m!==void 0&&o.setPosition(A.EDGE_TOP,m)}else o.setPositionType(A.POSITION_TYPE_RELATIVE);let u=ce(i.grow);u!==void 0&&o.setFlexGrow(typeof u=="number"?u:parseFloat(u));let c=ce(i.flexShrink);c!==void 0?o.setFlexShrink(typeof c=="number"?c:parseFloat(c)):o.setFlexShrink(r!==null?1:0),i.flexBasis!==void 0&&o.setFlexBasis(i.flexBasis),i.alignSelf!==void 0&&o.setAlignSelf(ba(A,i.alignSelf));let B=i.width??wa(i),E=i.height,d=r==="row",h=r==="column";if(ai(o,"width",B,t?.width,d),ai(o,"height",E,t?.height,h),s){let Q=xa(i);o.setFlexDirection(a==="row"?A.FLEX_DIRECTION_ROW:A.FLEX_DIRECTION_COLUMN),o.setJustifyContent(pa(A,Q.justify)),o.setAlignItems(ya(A,Q.align)),o.setFlexWrap(Q.wrap?A.WRAP_WRAP:A.WRAP_NO_WRAP),Q.padding>0&&o.setPadding(A.EDGE_ALL,Q.padding),Q.gap>0&&o.setGap(A.GUTTER_ALL,Q.gap);let m=Ma(i),D=Ga(i),p=[...m,...D];for(let G=0;G<p.length;G++){let N=si(A,p[G],void 0,n,_e(i)?null:a);o.insertChild(N.yogaNode,G),g.push(N)}}else if(i.kind==="text"||i.kind==="media"&&i.dataType==="Caption")o.setMeasureFunc((Q,m,D,p)=>{let G;(m===1||m===2)&&(G=Q);let N=n?.(i,G)??{width:0,height:0},w=N.width,U=N.height;return m===1&&(w=Q),p===1&&(U=D),{width:w,height:U}});else{let Q=n?.(i)??null;if(Q){let m=i.aspectRatio!==void 0,D=i.kind==="media"&&i.dataType==="Caption",p=Q.height>0?Q.width/Q.height:1;i.kind==="media"&&!D&&!m&&o.setAspectRatio(p);let G=B===void 0||B==="auto"||B==="fit",N=E===void 0||E==="auto"||E==="fit";if(G&&N){let w=i.aspectRatio??(i.kind==="media"?p:void 0)??1;o.setMeasureFunc((U,b,M,v)=>{let R=Q.width,S=Q.height;if(b===1&&v===1)R=U,S=M;else if(b===1)R=U,S=w>0?Math.round(U/w):Q.height;else if(v===1)S=M,R=w>0?Math.round(M*w):Q.width;else if(b===2&&v===2){let K=Math.min(1,U/Q.width,M/Q.height);R=Math.round(Q.width*K),S=Math.round(Q.height*K)}else b===2?Q.width>U&&(R=U,S=w>0?Math.round(U/w):Q.height):v===2&&Q.height>M&&(S=M,R=w>0?Math.round(M*w):Q.width);return{width:R,height:S}})}else if(G){let w=i.aspectRatio??(i.kind==="media"?p:void 0);(w===void 0||w<=0)&&o.setWidth(Q.width)}else if(N){let w=i.aspectRatio??(i.kind==="media"?p:void 0);(w===void 0||w<=0)&&o.setHeight(Q.height)}}}return{yogaNode:o,layoutNode:i,children:g}}function ai(A,e,t,n,r){if(t===void 0||t==="auto"||t==="fit")return;let i=ce(t);if(typeof i=="number"){e==="width"?A.setWidth(i):A.setHeight(i);return}if(i==="fill"){if(r){A.getFlexGrow()===0&&A.setFlexGrow(1),A.setFlexBasis(0);return}n!==void 0?e==="width"?A.setWidth(n):A.setHeight(n):e==="width"?A.setWidthPercent(100):A.setHeightPercent(100)}}function gi(A,e,t,n,r){let i=A.yogaNode.getComputedLayout(),o=e+i.left,a=t+i.top,s=i.width,g=i.height,l=A.layoutNode;_e(l)||(o+=Number(l.x??0),a+=Number(l.y??0)),n[A.layoutNode.id]={x:Math.round(o*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3},r[A.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3};for(let u of A.children)gi(u,o,a,n,r)}function li(A){for(let e of A.children)li(e);A.yogaNode.free()}function Na(A,e){let{layout:t,viewport:n,measure:r}=e,i={},o={};for(let a of t){let s=A.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(A.FLEX_DIRECTION_COLUMN);let g=si(A,a,{width:n.width,height:n.height},r,null);s.insertChild(g.yogaNode,0),s.calculateLayout(n.width,n.height);let l=g.yogaNode.getComputedLayout(),u=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),c=u?l.left:Number(a.x??0),B=u?l.top:Number(a.y??0);i[a.id]={x:Math.round(c*1e3)/1e3,y:Math.round(B*1e3)/1e3,width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3},o[a.id]={width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3};for(let E of g.children)gi(E,c,B,i,o);li(g),s.free()}return{rects:i,sizes:o}}async function vu(A){let e=await ha();return Na(e,A)}k();k();var Fa=/-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi,Sa=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;function ui(A){let e=[],t=[],n=0,r=0,i=0,o=0,a=0,s=0,g="",l=u=>{t.length>1&&e.push({pts:t,closed:u}),t=[]};for(let u of A.matchAll(Sa)){let c=u[1],B=(u[2].match(Fa)??[]).map(Number),E=c===c.toLowerCase(),d=c.toUpperCase(),h=0,Q=p=>{let G=B.slice(h,h+p);return h+=p,G},m=p=>h+p<=B.length;if(d==="Z"){n=i,r=o,l(!0),t=[[n,r]],g=d;continue}let D=!0;for(;m(d==="H"||d==="V"?1:d==="A"?7:d==="C"?6:d==="S"||d==="Q"?4:2);){if(d==="M"){let[p,G]=Q(2);n=E?n+p:p,r=E?r+G:G,D?(l(!1),i=n,o=r,t=[[n,r]]):t.push([n,r])}else if(d==="L"||d==="T"){let[p,G]=Q(2),N=E?n+p:p,w=E?r+G:G;if(d==="T"){let U=g==="Q"||g==="T"?2*n-a:n,b=g==="Q"||g==="T"?2*r-s:r;ci(t,n,r,U,b,N,w),a=U,s=b}else t.push([N,w]);n=N,r=w}else if(d==="H"){let[p]=Q(1);n=E?n+p:p,t.push([n,r])}else if(d==="V"){let[p]=Q(1);r=E?r+p:p,t.push([n,r])}else if(d==="C"||d==="S"){let p,G;if(d==="C"){let[K,F]=Q(2);p=E?n+K:K,G=E?r+F:F}else p=g==="C"||g==="S"?2*n-a:n,G=g==="C"||g==="S"?2*r-s:r;let[N,w,U,b]=Q(4),M=E?n+N:N,v=E?r+w:w,R=E?n+U:U,S=E?r+b:b;for(let K=1;K<=16;K++){let F=K/16,z=1-F;t.push([z*z*z*n+3*z*z*F*p+3*z*F*F*M+F*F*F*R,z*z*z*r+3*z*z*F*G+3*z*F*F*v+F*F*F*S])}a=M,s=v,n=R,r=S}else if(d==="Q"){let[p,G,N,w]=Q(4),U=E?n+p:p,b=E?r+G:G,M=E?n+N:N,v=E?r+w:w;ci(t,n,r,U,b,M,v),a=U,s=b,n=M,r=v}else if(d==="A"){let[p,G,N,w,U,b,M]=Q(7),v=E?n+b:b,R=E?r+M:M;Ua(t,n,r,p,G,N,w!==0,U!==0,v,R),n=v,r=R}D=!1,g=d,d==="M"&&(g="L")}g=d}return l(!1),e}function ci(A,e,t,n,r,i,o){for(let a=1;a<=16;a++){let s=a/16,g=1-s;A.push([g*g*e+2*g*s*n+s*s*i,g*g*t+2*g*s*r+s*s*o])}}function Ua(A,e,t,n,r,i,o,a,s,g){let l=Math.abs(n),u=Math.abs(r);if(l===0||u===0){A.push([s,g]);return}let c=i*Math.PI/180,B=Math.cos(c),E=Math.sin(c),d=(e-s)/2,h=(t-g)/2,Q=B*d+E*h,m=-E*d+B*h,D=Q*Q/(l*l)+m*m/(u*u);D>1&&(l*=Math.sqrt(D),u*=Math.sqrt(D));let p=l*l*u*u-l*l*m*m-u*u*Q*Q,G=l*l*m*m+u*u*Q*Q,N=Math.sqrt(Math.max(0,p/G));o===a&&(N=-N);let w=N*l*m/u,U=-N*u*Q/l,b=B*w-E*U+(e+s)/2,M=E*w+B*U+(t+g)/2,v=(F,z,Z,$)=>Math.atan2(F*$-z*Z,F*Z+z*$),R=v(1,0,(Q-w)/l,(m-U)/u),S=v((Q-w)/l,(m-U)/u,(-Q-w)/l,(-m-U)/u);!a&&S>0&&(S-=2*Math.PI),a&&S<0&&(S+=2*Math.PI);let K=Math.max(4,Math.ceil(Math.abs(S)/(Math.PI/2)*16));for(let F=1;F<=K;F++){let z=R+S*F/K,Z=l*Math.cos(z),$=u*Math.sin(z);A.push([B*Z-E*$+b,E*Z+B*$+M])}}function Ii(A,e){let t=A.closed?[...A.pts,A.pts[0]]:A.pts,n=[0];for(let s=1;s<t.length;s++)n.push(n[s-1]+Math.hypot(t[s][0]-t[s-1][0],t[s][1]-t[s-1][1]));let r=n[n.length-1],i=[];if(r<=0){for(let s=0;s<e;s++)i.push([t[0][0],t[0][1]]);return i}let o=A.closed?e:e-1,a=0;for(let s=0;s<e;s++){let g=r*s/o;for(;a<n.length-2&&n[a+1]<g;)a++;let l=n[a+1]-n[a],u=l>0?(g-n[a])/l:0;i.push([t[a][0]+(t[a+1][0]-t[a][0])*u,t[a][1]+(t[a+1][1]-t[a][1])*u])}return i}function Bi(A){let e=0;for(let t=0;t<A.length;t++){let n=A[(t+1)%A.length];e+=A[t][0]*n[1]-n[0]*A[t][1]}return e/2}function fi(A){let e=0,t=0;for(let n of A)e+=n[0],t+=n[1];return[e/A.length,t/A.length]}function va(A,e,t){if(!t){let s=Math.hypot(A[0][0]-e[0][0],A[0][1]-e[0][1]);return Math.hypot(A[0][0]-e[e.length-1][0],A[0][1]-e[e.length-1][1])<s?[...e].reverse():e}let n=Math.sign(Bi(A))!==Math.sign(Bi(e))?[...e].reverse():e,r=A.length,i=0,o=Number.POSITIVE_INFINITY,a=s=>{let g=0;for(let l=0;l<r;l+=2){let u=n[(l+s)%r];g+=(A[l][0]-u[0])**2+(A[l][1]-u[1])**2}return g};for(let s=0;s<r;s+=4){let g=a(s);g<o&&(o=g,i=s)}for(let s=i-3;s<=i+3;s++){let g=(s+r)%r,l=a(g);l<o&&(o=l,i=g)}return A.map((s,g)=>n[(g+i)%r])}var Tt=new Map;function Ra(A,e){let t=`${A}\0${e}`,n=Tt.get(t);if(n)return n;let r=ui(A),i=ui(e),o=Math.max(r.length,i.length),a={a:[],b:[],closed:[]};for(let s=0;s<o;s++){let g=r[s],l=i[s],u=(g?.closed??!0)&&(l?.closed??!0),c=g?Ii(g,128):void 0,B=l?Ii(l,128):void 0;if(!c&&B){let E=fi(B);c=B.map(()=>[E[0],E[1]])}if(!B&&c){let E=fi(c);B=c.map(()=>[E[0],E[1]])}!c||!B||(a.a.push(c),a.b.push(va(c,B,u)),a.closed.push(u))}return Tt.size>256&&Tt.clear(),Tt.set(t,a),a}var Ei=A=>(Math.round(A*100)/100).toString();function di(A,e,t){if(t<=0)return A;if(t===1)return e;let n=Ra(A,e),r=[];for(let i=0;i<n.a.length;i++){let o=n.a[i],a=n.b[i],s="";for(let g=0;g<o.length;g++){let l=o[g][0]+(a[g][0]-o[g][0])*t,u=o[g][1]+(a[g][1]-o[g][1])*t;s+=`${g===0?"M":"L"}${Ei(l)} ${Ei(u)}`}r.push(n.closed[i]?`${s}Z`:s)}return r.join("")}function Ci(A,e){let t=Math.floor(A)^e*1013|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967295*2-1}function La(A,e){let t=Math.floor(A),n=t+1,r=A-t,i=r*r*(3-2*r),o=Ci(t,e),a=Ci(n,e),s=o*r,g=a*(r-1);return(s*(1-i)+g*i)*2}function ka(A,e,t=0){let n=A.frequency??2,r=A.amplitude??50,i=Math.max(1,Math.min(4,A.octaves??1)),o=A.seed??1234,a=0,s=0,g=1,l=n;for(let c=0;c<i;c++){let B=La(e*l,o+c*7919);a+=B*g,s+=g,g*=.5,l*=2}let u=s>0?a/s:0;return t+u*r}function Pa(A,e,t,n){if(e<=0)return t;let r=Math.max(.001,A.mass??1),i=Math.max(.001,A.stiffness??180),o=Math.max(.001,A.damping??12),a=Math.sqrt(i/r),s=o/(2*Math.sqrt(i*r)),g=1;if(s<1){let l=a*Math.sqrt(1-s*s),u=-1,c=-s*a/l;g=1+Math.exp(-s*a*e)*(u*Math.cos(l*e)+c*Math.sin(l*e))}else if(Math.abs(s-1)<1e-4)g=1+Math.exp(-a*e)*(-1-a*e);else{let l=Math.sqrt(s*s-1),u=-a*(s-l),c=-a*(s+l),B=-1/(1-u/c),E=-1-B;g=1+B*Math.exp(u*e)+E*Math.exp(c*e)}return t+(n-t)*g}function LA(A,e,t){if(A==null)return 0;if(typeof A=="number")return A;if(typeof A=="function")return Number(A(e,t))||0;if(Array.isArray(A)||ArrayBuffer.isView(A)){let n=A;if(n.length===0)return 0;let r=Math.max(0,Math.min(n.length-1,Math.round(e)));return Number(n[r])||0}if(typeof A=="object"){let n=A;if(typeof n.get=="function")return Number(n.get({frame:e,fps:t,time:t>0?e/t:0}))||0;if(n.type==="Signal"&&n.data)return LA(n.data,e,t);let r=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(r)||ArrayBuffer.isView(r)){let i=r;if(i.length===0)return 0;let o=Number(n.fps)||24,a=t>0?t:24,s=e/a,g=Math.max(0,Math.min(i.length-1,Math.round(s*o)));return Number(i[g])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let i=n.nodeId;if(i){let o=n.channel??"primary",a=nr.getChannelSamples(i,o);if(a&&a.length>0){let s=Number(n.fps)||24,g=t>0?t:24,l=e/g,u=Math.max(0,Math.min(a.length-1,Math.round(l*s)));return Number(a[u])||0}}return 0}if(n.type==="generator"){let i=typeof n.amplitude=="number"?n.amplitude:1,o=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let Q=typeof n.bars=="number"&&n.bars>0?n.bars:1;o=n.bpm/60/Q}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,g=e/(t>0?t:24),l=n.baseType??"sine",u=!!n.fmEnabled,c=g;if(u){let Q=Number(n.fmAmplitude)||1,m=Number(n.fmFrequency)||.5;c=g+Math.sin(g*m*Math.PI*2)*Q}let B=0,E=(c*o+a/(Math.PI*2))%1,d=E<0?E+1:E,h=Q=>(Q%1+1)%1;switch(l){case"triangle":B=4*Math.abs(d-.5)-1;break;case"sawtooth":B=2*d-1;break;case"square":B=d<.5?1:-1;break;case"constant":B=1;break;case"noise_smooth":{let Q=c*o+a,m=Math.floor(Q),D=Q-m,p=D*D*(3-2*D),G=h(Math.sin(m*12.9898)*43758.5453),N=h(Math.sin((m+1)*12.9898)*43758.5453);B=(G*(1-p)+N*p)*2-1;break}case"noise_white":B=h(Math.sin(c*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let Q=a===0?.5:Math.max(.01,Math.min(.99,a));B=h(c*o)<Q?1:-1;break}case"bounce":B=Math.abs(Math.sin(c*o*Math.PI+a));break;case"staircase":B=Math.floor(d*8)/7*2-1;break;default:B=Math.sin(c*o*Math.PI*2+a);break}return B*i+s}if(n.type==="gate"){let i=n.sourceSignal??n.signal,o=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,g=typeof n.debounceMs=="number"?n.debounceMs:0,l=Math.max(1,Math.round(g/1e3*t)),u=Math.max(1,Number(n.holdFrames)||4),c=0;if(a==="gate")c=LA(i,e,t)>=o?1:0;else if(a==="trigger"){let B=-1/0,E=Math.max(0,e-300);for(let d=E;d<=e;d++){let h=LA(i,d,t),Q=d>0?LA(i,d-1,t):0;h>=o&&Q<o&&d-B>=l&&(B=d)}c=e>=B&&e<B+u?1:0}else if(a==="toggle"){let B=0,E=-1/0;for(let d=0;d<=e;d++){let h=LA(i,d,t),Q=d>0?LA(i,d-1,t):0;h>=o&&Q<o&&d-E>=l&&(B++,E=d)}c=B%2===1?1:0}return s?1-c:c}if(n.type==="signal_math"){let i=LA(n.signalA,e,t),a=n.signalB!==void 0?LA(n.signalB,e,t):Number(n.bValue)||0;switch(n.operation){case"add":return i+a;case"subtract":return i-a;case"multiply":return i*a;case"divide":return a!==0?i/a:0;case"min":return Math.min(i,a);case"max":return Math.max(i,a);case"clamp":{let s=Number(n.clampMin)||0,g=Number(n.clampMax)||1;return Math.max(s,Math.min(g,i))}case"abs":return Math.abs(i);case"negate":return-i;case"invert":return 1-i;case"power":return i**(Number(n.exponent)||2);case"modulo":return a!==0?i%a:0;case"remap":{let s=Number(n.inMin)||0,g=Number(n.inMax)||1,l=Number(n.outMin)||0,u=Number(n.outMax)||1,c=g-s,B=c!==0?(i-s)/c:0;return l+B*(u-l)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,l=(Number(n.aMax??n.inMax)||1)-s;return l!==0?Math.max(0,Math.min(1,(i-s)/l)):0}case"smoothstep":{let s=Number(n.edge0)||0,l=(Number(n.edge1)||1)-s,u=l!==0?Math.max(0,Math.min(1,(i-s)/l)):0;return u*u*(3-2*u)}case"custom":return i;default:return i}}if(typeof n.value=="number")return n.value}return 0}function Ta(A,e,t,n=.15,r=2){if(e<0||!A)return 0;let i=A,o=0,a=-1/0;for(let s=0;s<=e;s++){let g=LA(i,s,t),l=s>0?LA(i,s-1,t):0;g>=n&&l<n&&s-a>=r&&(o++,a=s)}return o}function Ha(A,e,t,n={}){let r=n[A.inputHandleId];if(r===void 0&&n){let c=Object.keys(n);if(c.length===1)r=n[c[0]];else if(c.length>1){let B=c.find(E=>E===A.inputHandleId);r=B?n[B]:n[c[0]]}}if(A.channel&&r&&typeof r=="object"){let c=r[A.channel];c!==void 0?r=c:typeof r.get!="function"&&(r={...r,channel:A.channel})}if(A.signalMode==="accumulate"){let c=A.threshold??A.accumulateThreshold??.15,B=A.debounceFrames??2,E=Ta(r,e,t,c,B),d=A.multiplier??1,h=A.offset??0;return E*d+h}let i=A.multiplier??1,o=A.offset??0,a=Math.max(0,Math.round(A.smoothingWindowFrames??0));if(a<=1)return LA(r,e,t)*i+o;let s=0,g=0,l=Math.max(0,e-a+1);for(let c=l;c<=e;c++)s+=LA(r,c,t),g++;return(g>0?s/g:0)*i+o}function Ja(A,e,t){return A+(e-A)*t}function Oa(A){let e=A.trim().replace("#","");if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===6){let t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255,1]}if(e.length===8){let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,(t&255)/255]}return[255,255,255,1]}function Qi(A,e,t){return tr(A,e,t)}function Tn(A,e,t){let n=t;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?A+(e-A)*6*n:n<1/2?e:n<2/3?A+(e-A)*(2/3-n)*6:A}function Ka(A,e){let[t,n,r,i]=Oa(A),o=t/255,a=n/255,s=r/255,g=Math.max(o,a,s),l=Math.min(o,a,s),u=0,c=0,B=(g+l)/2;if(g!==l){let m=g-l;switch(c=B>.5?m/(2-g-l):m/(g+l),g){case o:u=(a-s)/m+(a<s?6:0);break;case a:u=(s-o)/m+2;break;case s:u=(o-a)/m+4;break}u/=6}u=(u+e%1+1)%1;let E=B,d=B,h=B;if(c!==0){let m=B<.5?B*(1+c):B+c-B*c,D=2*B-m;E=Tn(D,m,u+1/3),d=Tn(D,m,u),h=Tn(D,m,u-1/3)}let Q=m=>Math.round(Math.max(0,Math.min(255,m*255))).toString(16).padStart(2,"0");return i>=.999?`#${Q(E)}${Q(d)}${Q(h)}`:`rgba(${Math.round(E*255)}, ${Math.round(d*255)}, ${Math.round(h*255)}, ${Math.round(i*100)/100})`}var Va=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function Hn(A,e,t){let n=A.keyframes??[];if(n.length===0)return 0;if(n.length===1||e<=n[0].frame)return n[0].value;if(e>=n[n.length-1].frame)return n[n.length-1].value;for(let r=0;r<n.length-1;r++){let i=n[r],o=n[r+1];if(e>=i.frame&&e<=o.frame){let a=o.frame-i.frame,s=a>0?(e-i.frame)/a:0,g=t?t(o.ease??i.ease,a,s):s;if(typeof i.value=="boolean")return s>=1?o.value:i.value;if(typeof i.value=="string"&&typeof o.value=="string")return A.prop==="d"?di(i.value,o.value,g):Qi(i.value,o.value,g);let l=Number(i.value)||0,u=Number(o.value)||0;return Ja(l,u,g)}}return n[n.length-1].value}function Ya(A,e,t=24,n={}){let r=n.startFrame??0,i=e-r,o=A.source??{type:"keyframe"},a=n.baseValues?.[A.prop];switch(o.type){case"keyframe":return Hn(A,i);case"wiggle":{let s=typeof a=="number"?a:0,g=A.keyframes&&A.keyframes.length>0?Number(Hn(A,i))||0:s,l=i/(t>0?t:24);return ka(o,l,g)}case"springOvershoot":{let s=0,g=1;A.keyframes&&A.keyframes.length>=2?(s=Number(A.keyframes[0].value)||0,g=Number(A.keyframes[1].value)||1):A.keyframes&&A.keyframes.length===1?(s=Number(a)||0,g=Number(A.keyframes[0].value)||0):typeof a=="number"&&(s=a,g=a);let l=i/(t>0?t:24);return Pa(o,l,s,g)}case"signal":{let s=Ha(o,e,t,n.signals);if(Va.has(A.prop)){let g=o,l=g.colorA??"#ffffff",u=g.colorB??"#ffffff",c=g.colorMode??"interpolate";if(c==="threshold"){let E=g.colorThreshold??.5;return s>=E?u:l}if(c==="hueRotate")return Ka(l,s);let B=Math.max(0,Math.min(1,s));return Qi(l,u,B)}return s}default:return Hn(A,i)}}function Ou(A,e,t=24,n={}){let r={};if(!A?.tracks)return r;for(let i of A.tracks)r[i.prop]=Ya(i,e,t,n);return r}k();var mi=["x","y","width","height"];function Wa(A){let e=A.matte,{matte:t,...n}=A,r={...n};if(Array.isArray(r.children)&&(r.children=Ht(r.children)),!e?.node)return[r];let i=e.node,o=i.id??`${String(A.id)}__matte`,a={position:"absolute",...i,id:o,matteOf:String(A.id),matteMode:e.mode??"alpha"};if(mi.every(g=>i[g]===void 0))for(let g of mi)typeof A[g]=="number"&&(a[g]=A[g]);let s=typeof A.startFrame=="number"?A.startFrame:0;return a.startFrame=s+(typeof i.startFrame=="number"?i.startFrame:0),i.durationFrames===void 0&&A.durationFrames!==void 0&&(a.durationFrames=A.durationFrames),Array.isArray(a.children)&&(a.children=Ht(a.children)),r.matteId=o,[r,a]}function Ht(A){return A.flatMap(e=>Wa(e))}k();function Jn(A,e,t,n="forward"){if(t<=0||e<=1)return 0;switch(n){case"reverse":return(e-1-A)*t;case"center-out":{let r=(e-1)/2,i=Math.abs(A-r);return Math.round(i*t)}case"forward":return A*t;default:return ot(n)}}function Xu(A,e,t="forward",n=0){return!A||A.length===0?[]:e<=0&&n===0?[...A]:A.map((r,i)=>{let o=Jn(i,A.length,e,t),a=r.startFrame??0;return{...r,startFrame:a+o+n}})}k();k();var pi=Symbol.for("framefields.inlineSignal"),hi=new WeakMap,za=0;function Xa(A){let e=hi.get(A);return e===void 0&&(e=`inline_signal_${za++}`,hi.set(A,e)),e}function _u(A){if(typeof A=="string")return{handleId:A};if(A===null||typeof A!="object"&&typeof A!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(A)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let e=A;return typeof e.inputHandleId=="string"?{handleId:e.inputHandleId}:typeof e.gpuBinding?.nodeId=="string"?typeof e.get=="function"?{handleId:e.gpuBinding.nodeId,inline:A}:{handleId:e.gpuBinding.nodeId}:{handleId:Xa(A),inline:A}}function ju(A,e){Object.defineProperty(A,pi,{value:e,enumerable:!1,configurable:!0,writable:!0})}function Za(A){if(!(!A||typeof A!="object"))return A[pi]}function On(A,e={}){for(let t of A){if(!t||typeof t!="object")continue;let{animation:n,children:r}=t,i=n?.tracks;if(Array.isArray(i))for(let o of i){let a=o?.source,s=Za(a);s&&typeof a?.inputHandleId=="string"&&(e[a.inputHandleId]=s)}Array.isArray(r)&&On(r,e)}return e}function yi(A,e,t,n=0,r,i){let o=[],a=A.kind==="media"?A.src??A.inputHandleId:"inputHandleId"in A?A.inputHandleId:void 0,s=m=>typeof m=="string"&&(m.startsWith("http://")||m.startsWith("https://")||m.startsWith("file://")||m.startsWith("/")||m.startsWith("./")||m.startsWith("blob:")||m.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt|json|lottie)$/i.test(m)),g;if(A.kind==="media"){if(e&&A.inputHandleId&&(g=e(A.inputHandleId)),!g&&a&&(s(a)||A.src)&&(g=$n(a,A.dataType??"Video")),!g&&!e&&a&&(a.includes(".")||a.includes("/"))&&console.warn(`[Compositor] Media layer '${A.id??"?"}' source '${a}' could not be resolved.`),g&&A.crop){let m=A.crop,D=typeof m.toOperation=="function"?m.toOperation():m;g={metadata:{...g.metadata},operation:{op:"Crop",...D,dataType:g.operation.dataType},children:[g]}}if(g&&Array.isArray(A.effects)){let m=g;for(let D of A.effects){let p=D&&typeof D.toOperation=="function"?D.toOperation():D;m={metadata:{...m.metadata},operation:{op:String(p.op??"effect"),id:A.id?`${A.id}-${p.op??"effect"}`:void 0,effect:D,...p,dataType:m.operation.dataType},children:[m]}}g=m}if(g&&A.vision){let m=A.vision,D=typeof m.toOperation=="function"?m.toOperation():m;g={metadata:{...g.metadata},operation:{op:"Vision",id:A.id,effect:m,...D,dataType:g.operation.dataType},children:[g]}}}if(A.kind==="media")o=g?[g]:[];else if("children"in A&&A.children){let m=A.kind==="flex"&&typeof A.staggerFrames=="number"?A.staggerFrames:0,D=A.kind==="flex"&&typeof A.staggerDirection=="string"?A.staggerDirection:"forward",p=typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)?Math.round(A.startFrame):0,G=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)?Math.round(A.durationFrames):i,N=A.children;o=N.map((w,U)=>{let b=Jn(U,N.length,m,D),M=n+p+b;return yi(w,e,t,M,r,w.durationFrames===void 0?G:void 0)})}let l="Image",u;if(g){l=g.operation?.dataType??"Image";let D=l==="Image"||l==="SVG"?void 0:Ar(g)?.durationMs;D!=null&&(u=Math.max(1,Math.round(D/1e3*t)))}let c=g?.operation?.dataType==="Caption",B=A.kind==="flex"||A.kind==="block"||A.kind==="box",E=(typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)&&A.startFrame>=0?Math.round(A.startFrame):0)+n,d=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)&&A.durationFrames>0?Math.round(A.durationFrames):void 0,h=i??Math.round((r??1e4)/1e3*t);if(B&&o.length>0){if(d===void 0){let m=o.map(D=>(D.operation.startFrame??0)+(D.operation.durationFrames??h));d=Math.max(1,Math.max(...m)-E)}}else c&&u!==void 0&&u>0?d=u:d!==void 0?(l==="Video"||l==="Audio")&&u!==void 0&&u>0&&(d=Math.min(d,u)):d=u??i??Math.round((r??1e4)/1e3*t);let Q=d/t*1e3;if(A.kind==="media"&&g){let m=g;for(;m;)(!m.metadata?.durationMs||m.metadata.durationMs<=0)&&(m.metadata||(m.metadata={}),m.metadata.durationMs=Q),m.operation?.sourceMeta&&!m.operation.sourceMeta.durationMs&&(m.operation.sourceMeta.durationMs=Q),m=m.children?.[0]}return{metadata:{durationMs:Q},operation:{op:"CompositorLayer",...A,startFrame:E,durationFrames:d,dataType:l},children:o}}function ic(A,e){let{isVideoMode:t,fps:n,durationMs:r,resolveMedia:i,signals:o}=e,a={metadata:{width:A.width,height:A.height,fps:n,...r!==void 0&&{durationMs:r}},operation:{op:"Compositor",width:A.width,height:A.height,fps:n,mode:A.mode??"Video",backgroundColor:A.backgroundColor,...A.antialias3d!==void 0&&{antialias3d:A.antialias3d},volume:A.volume??1,dataType:t?"Video":"Image",layout:A.layout,signals:{...On(A.layout),...o??A.signals??{}},...A.onRequestFrame||e.onRequestFrame?{onRequestFrame:A.onRequestFrame??e.onRequestFrame}:{}},children:Ht(A.layout).map(l=>yi(l,i,n,0,r))},s=Array.isArray(e.effects)?e.effects:Array.isArray(A.effects)?A.effects:[];for(let l of s){let u=l&&typeof l.toOperation=="function"?l.toOperation():l;a={metadata:{...a.metadata},operation:{...u,dataType:a.operation.dataType},children:[a]}}let g=A.vision??e.vision;if(g){let l=typeof g.toOperation=="function"?g.toOperation():g;a={metadata:{...a.metadata},operation:{op:"Vision",...l,dataType:a.operation.dataType},children:[a]}}return a}function oc(A){let e=[],t=n=>{n?.operation?.op==="CompositorLayer"&&e.push(n);for(let r of n?.children??[])t(r)};for(let n of A)t(n);return e}export{gt as a,gr as b,H as c,_ as d,fe as e,Wi as f,Br as g,ut as h,An as i,$t as j,qA as k,ys as l,bs as m,Le as n,Bt as o,Us as p,Os as q,Pe as r,Et as s,pt as t,qr as u,au as v,uu as w,Lr as x,kr as y,Pr as z,Xl as A,Tr as B,Hr as C,Lo as D,jl as E,Fn as F,Eu as G,ha as H,Na as I,vu as J,_u as K,ju as L,Hn as M,Ya as N,Ou as O,Ht as P,Jn as Q,Xu as R,ic as S,oc as T};
|
|
1523
|
+
`;var Rr=24,xt=class{device;pipelineSingle;pipelineMrt;bloomVariants;modelLayout;fontLayout;modelPool;instancePool;fontBindGroups=new WeakMap;modelData=new Float32Array(40+_A);constructor(e,t,n,r,i,o=1){this.device=e,this.modelPool=new NA((40+_A)*4,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.instancePool=new NA(65536,GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST);let a=e.createShaderModule({label:"slug3d.wgsl",code:vr});this.modelLayout=e.createBindGroupLayout({label:"Slug3DModelLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},se(1)]}),this.fontLayout=e.createBindGroupLayout({label:"Slug3DFontLayout",entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"unfilterable-float"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"uint"}}]});let s=e.createPipelineLayout({bindGroupLayouts:[r,this.modelLayout,this.fontLayout,i]}),g={module:a,entryPoint:"vs",buffers:[{arrayStride:Rr*4,stepMode:"instance",attributes:[{shaderLocation:0,offset:0,format:"float32x4"},{shaderLocation:1,offset:16,format:"float32x4"},{shaderLocation:2,offset:32,format:"float32x4"},{shaderLocation:3,offset:48,format:"float32x4"},{shaderLocation:4,offset:64,format:"float32x4"},{shaderLocation:5,offset:80,format:"float32x4"}]}]},I={label:"Slug3DPipeline",layout:s,vertex:g,module:a,format:t,depthStencil:{format:n,depthWriteEnabled:!0,depthCompare:"less-equal"},primitive:{topology:"triangle-list",cullMode:"none"},multisample:{count:o}},{single:E,mrt:d}=pe(e,I);this.pipelineSingle=E,this.pipelineMrt=d,this.bloomVariants=new ie(e,I)}resetPools(){this.modelPool.reset(),this.instancePool.reset()}draw(e,t,n,r,i,o,a,s=!1,g=!1){if(o===0||!r.curvesTex||!r.bandsTex)return;this.modelData.set(a.modelMatrix,0),this.modelData.set(a.normalMatrix,16),this.modelData[32]=a.opacity,this.modelData[33]=a.slant,this.modelData[34]=a.twoSided?1:0,this.modelData[35]=a.depthPull,this.modelData.set(sn(a),36),ye(a,this.modelData,40);let l=this.modelPool.getBuffer(this.device,this.modelData),u=this.device.createBindGroup({layout:this.modelLayout,entries:[{binding:0,resource:{buffer:l}},{binding:1,resource:a.matte?.createView()??ge(this.device)}]}),c=this.instancePool.getBuffer(this.device,i.subarray(0,o*Rr));e.setPipeline(g?this.bloomVariants.get(s):s?this.pipelineMrt:this.pipelineSingle),e.setBindGroup(0,t),e.setBindGroup(1,u),e.setBindGroup(2,this.fontBindGroup(r.curvesTex,r.bandsTex)),e.setBindGroup(3,n),e.setVertexBuffer(0,c),e.draw(6,o)}fontBindGroup(e,t){let n=this.fontBindGroups.get(e);return n||(n=this.device.createBindGroup({layout:this.fontLayout,entries:[{binding:0,resource:e.createView()},{binding:1,resource:t.createView()}]}),this.fontBindGroups.set(e,n)),n}destroy(){this.modelPool.destroy(),this.instancePool.destroy()}};var No={repeat:"repeat",clamp:"clamp-to-edge",mirror:"mirror-repeat"},Fo=5e-4,Lr=class{device;format;quad3dPipeline;slug3dPipeline;mesh3dPipeline;audioMeshDeformPipeline;dofPipeline;dofBindGroupLayout;cameraPool;lightsPool;cameraUniformBindGroupCache=new or;samplerCache=new sr;depthTexture=null;linearDepthTexture=null;msaaColorTexture=null;msaaLinearDepthTexture=null;msaaHdrTexture=null;hdrTexture=null;passWritesHdr=!1;cameraUniformData=new Float32Array(80);meshBuffersCache=new WeakMap;materialTextures=new WeakMap;materialMapCache=new WeakMap;modelCache=new Map;lastCameraPose=null;shadowTexture=null;placeholderShadowTexture=null;shadowSampler=null;meshBounds=new WeakMap;bloomPipeline=null;lastCameraBuffer=null;sampleCount;constructor(e,t,n=4){this.device=e,this.format=t,this.sampleCount=n,this.quad3dPipeline=new bt(e,t,"depth24plus",n),this.slug3dPipeline=new xt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.mesh3dPipeline=new Dt(e,t,"depth24plus",this.quad3dPipeline.cameraLayout,this.quad3dPipeline.lightsLayout,n),this.audioMeshDeformPipeline=new ft(e),this.cameraPool=new NA(320,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST),this.lightsPool=new NA($t,GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST);let r=e.createShaderModule({label:"dof-bokeh.wgsl",code:xr});this.dofBindGroupLayout=e.createBindGroupLayout({label:"DoFBindGroupLayout",entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"filtering"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"float"}}]}),this.dofPipeline=e.createRenderPipeline({label:"DoFBokehPipeline",layout:e.createPipelineLayout({bindGroupLayouts:[this.dofBindGroupLayout]}),vertex:{module:r,entryPoint:"vs_fullscreen"},fragment:{module:r,entryPoint:"fs_dof",targets:[{format:t}]},primitive:{topology:"triangle-list"}})}resetPools(){this.bloomPipeline?.resetPools(),this.cameraPool.reset(),this.lastCameraPose=null,this.lastCameraBuffer=null,this.lightsPool.reset(),this.quad3dPipeline.resetPools(),this.slug3dPipeline.resetPools(),this.mesh3dPipeline.resetPools(),this.audioMeshDeformPipeline.resetPools()}getOrCreateDepthTexture(e,t){return(!this.depthTexture||this.depthTexture.width!==e||this.depthTexture.height!==t)&&(this.depthTexture?.destroy(),this.depthTexture=this.device.createTexture({label:"Renderer3DDepthTexture",size:{width:e,height:t},format:"depth24plus",sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT})),this.depthTexture}getOrCreateMsaaTexture(e,t,n,r,i){return e&&e.width===r&&e.height===i?e:(e?.destroy(),this.device.createTexture({label:t,size:{width:r,height:i},format:n,sampleCount:this.sampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}))}hdrSource(){return this.hdrTexture}getOrCreateHdrTexture(e,t){return(!this.hdrTexture||this.hdrTexture.width!==e||this.hdrTexture.height!==t)&&(this.hdrTexture?.destroy(),this.hdrTexture=this.device.createTexture({label:"Renderer3DHdrRadiance",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.hdrTexture}getOrCreateLinearDepthTexture(e,t){return(!this.linearDepthTexture||this.linearDepthTexture.width!==e||this.linearDepthTexture.height!==t)&&(this.linearDepthTexture?.destroy(),this.linearDepthTexture=this.device.createTexture({label:"Renderer3DLinearDepthTexture",size:{width:e,height:t},format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING})),this.linearDepthTexture}packCameraUniforms(e,t,n,r=0){if(this.lastCameraPose&&this.lastCameraBuffer&&this.lastCameraPose.eye[0]===e.eye[0]&&this.lastCameraPose.eye[1]===e.eye[1]&&this.lastCameraPose.eye[2]===e.eye[2]&&this.lastCameraPose.target[0]===e.target[0]&&this.lastCameraPose.target[1]===e.target[1]&&this.lastCameraPose.target[2]===e.target[2]&&this.lastCameraPose.up[0]===e.up[0]&&this.lastCameraPose.up[1]===e.up[1]&&this.lastCameraPose.up[2]===e.up[2]&&this.lastCameraPose.fov===e.fov&&this.lastCameraPose.near===e.near&&this.lastCameraPose.far===e.far)return this.lastCameraBuffer;let i=fe.computeViewMatrix(e),o=fe.computeProjectionMatrix(e),a=fe.computeViewProjectionMatrix(e),s=_.invert(a)??_.identity();this.cameraUniformData.set(i,0),this.cameraUniformData.set(o,16),this.cameraUniformData.set(a,32),this.cameraUniformData.set(s,48),this.cameraUniformData[64]=e.eye[0],this.cameraUniformData[65]=e.eye[1],this.cameraUniformData[66]=e.eye[2],this.cameraUniformData[67]=e.near;let g=H.normalize(H.subtract(e.target,e.eye));this.cameraUniformData[68]=g[0],this.cameraUniformData[69]=g[1],this.cameraUniformData[70]=g[2],this.cameraUniformData[71]=e.far,this.cameraUniformData[72]=e.focusDistance??1e3,this.cameraUniformData[73]=e.fStop??2.8,this.cameraUniformData[74]=e.maxBlurRadius??32,this.cameraUniformData[75]=e.focusDistance!==void 0?1:0,this.cameraUniformData[76]=t,this.cameraUniformData[77]=n,this.cameraUniformData[78]=r,this.cameraUniformData[79]=0;let l=this.cameraPool.getBuffer(this.device,this.cameraUniformData);return this.lastCameraPose=e,this.lastCameraBuffer=l,l}createCameraBindGroup(e){return this.cameraUniformBindGroupCache.getBindGroup(this.device,this.quad3dPipeline.cameraLayout,e)}getOrCreateLightsBuffer(e,t){let n=qA.packLightsUniforms(e??[],t?.environment,t?.shadow);return this.lightsPool.getBuffer(this.device,n)}createLightsBindGroup(e,t){this.shadowSampler??=this.device.createSampler({label:"ShadowComparisonSampler",compare:"less-equal",magFilter:"linear",minFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),this.placeholderShadowTexture??=this.device.createTexture({label:"ShadowMapPlaceholder",size:{width:1,height:1},format:pt,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.RENDER_ATTACHMENT});let n=t&&this.shadowTexture?this.shadowTexture:this.placeholderShadowTexture;return this.device.createBindGroup({label:"Lights3DBindGroup",layout:this.quad3dPipeline.lightsLayout,entries:[{binding:0,resource:{buffer:e}},{binding:1,resource:n.createView()},{binding:2,resource:this.shadowSampler}]})}meshAabb(e){let t=this.meshBounds.get(e);if(!t){let n=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],i=e.positions;for(let o=0;o+2<i.length;o+=3)for(let a=0;a<3;a++){let s=i[o+a];s<n[a]&&(n[a]=s),s>r[a]&&(r[a]=s)}t=Number.isFinite(n[0])?{min:n,max:r}:{min:[0,0,0],max:[0,0,0]},this.meshBounds.set(e,t)}return t}worldBounds(e){return e.kind==="mesh"?ln(this.meshAabb(e.mesh),this.meshModelMatrix(e.opts)):ln({min:[-.5,-.5,0],max:[.5,.5,0]},this.quadModelMatrix(e.opts))}renderShadowMap(e,t,n,r,i,o={}){let a=t.lightType??t.type;if(a!=="directional"&&a!=="spot")return null;let s=qA.processLight(t),g=[s.posType[0],s.posType[1],s.posType[2]],l=[s.dirRadius[0],s.dirRadius[1],s.dirRadius[2]],u=o.mapSize??2048,c=r.map(m=>this.worldBounds(m)),I=Ur({type:a,position:g,direction:l,angle:t.angle},c,i,u);if(!I)return null;(!this.shadowTexture||this.shadowTexture.width!==u)&&(this.shadowTexture?.destroy(),this.shadowTexture=this.device.createTexture({label:"ShadowMap",size:{width:u,height:u},format:pt,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING}));let E=new Float32Array(80);E.set(I.viewProj,32),E.set(I.viewProj,0),E[5]=1,E.set(I.viewProj,16),E[64]=g[0],E[65]=g[1],E[66]=g[2],E[68]=l[0],E[69]=l[1],E[70]=l[2],E[76]=u,E[77]=u;let d=this.createCameraBindGroup(this.cameraPool.getBuffer(this.device,E)),h=e.beginRenderPass({label:"ShadowMapPass",colorAttachments:[],depthStencilAttachment:{view:this.shadowTexture.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}}),Q=this.samplerCache.getSampler(this.device);for(let m of r)if(m.kind==="mesh"){let D=this.meshModelMatrix(m.opts);this.mesh3dPipeline.drawShadow(h,d,m.buffers??this.getOrCreateMeshBuffers(m.mesh),{modelMatrix:D,normalMatrix:m.opts.normalMatrix??qA.computeNormalMatrix(D),isSkinned:m.opts.isSkinned,skinningMatrices:m.opts.skinningMatrices})}else{let D=this.quadModelMatrix(m.opts);this.quad3dPipeline.drawShadow(h,d,m.texture,Q,{modelMatrix:D,normalMatrix:D,width:m.opts.width,height:m.opts.height,textureExtent:m.opts.textureExtent,opacity:m.opts.opacity,colorTint:m.opts.colorTint})}return h.end(),{matrix:I.viewProj,lightIndex:n,mapSize:u,softness:o.softness??t.shadowSoftness??2.5,bias:a==="directional"?6e-4:8e-5,normalOffset:I.texelWorldSize*1.5,darkness:o.darkness??t.shadowDarkness??1}}beginPass(e,t,n,r,i,o="clear",a={r:0,g:0,b:0,a:0},s,g,l,u=!1){let c=this.getOrCreateDepthTexture(n,r),I=this.packCameraUniforms(i,n,r),E=this.createCameraBindGroup(I),d=this.getOrCreateLightsBuffer(g,l),h=this.createLightsBindGroup(d,!!l?.shadow),Q=this.sampleCount>1;if(Q&&o==="load")throw new Error("Renderer3D.beginPass: loadOp 'load' needs a Renderer3D built with sampleCount 1");let m=(G,N,w,U)=>N?{view:N.createView(),resolveTarget:G,loadOp:"clear",storeOp:"discard",clearValue:w}:{view:G,loadOp:U,storeOp:"store",clearValue:w};Q&&(this.msaaColorTexture=this.getOrCreateMsaaTexture(this.msaaColorTexture,"Renderer3DMsaaColor",this.format,n,r));let D=[m(t,Q?this.msaaColorTexture:null,a,o)];return s&&(Q&&(this.msaaLinearDepthTexture=this.getOrCreateMsaaTexture(this.msaaLinearDepthTexture,"Renderer3DMsaaLinearDepth","rgba16float",n,r)),D.push(m(s,Q?this.msaaLinearDepthTexture:null,{r:i.far,g:0,b:0,a:1},"clear"))),this.passWritesHdr=u,u&&(this.hdrTexture=this.getOrCreateHdrTexture(n,r),Q&&(this.msaaHdrTexture=this.getOrCreateMsaaTexture(this.msaaHdrTexture,"Renderer3DMsaaHdr","rgba16float",n,r)),D.push(m(this.hdrTexture.createView(),Q?this.msaaHdrTexture:null,{r:0,g:0,b:0,a:0},"clear"))),{pass:e.beginRenderPass({colorAttachments:D,depthStencilAttachment:{view:c.createView(),depthClearValue:1,depthLoadOp:"clear",depthStoreOp:Q?"discard":"store"}}),cameraBindGroup:E,cameraBuffer:I,lightsBindGroup:h}}quadModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t,width:n,height:r,rotation:i=[0,0,0],scale:o=[1,1,1],anchor:a=[.5,.5]}=e,s=_.identity();s=_.multiply(s,_.translate(t[0],t[1],t[2]));let g=i[0]*Math.PI/180,l=i[1]*Math.PI/180,u=i[2]*Math.PI/180;u!==0&&(s=_.multiply(s,_.rotateZ(u))),l!==0&&(s=_.multiply(s,_.rotateY(l))),g!==0&&(s=_.multiply(s,_.rotateX(g)));let c=n*o[0],I=r*o[1],E=o[2];s=_.multiply(s,_.scale(c,I,E));let d=.5-a[0],h=.5-a[1];return(d!==0||h!==0)&&(s=_.multiply(s,_.translate(d,h,0))),s}drawSlugText(e,t,n,r,i,o=0,a=!1){let{width:s,height:g}=i;if(!(s>0&&g>0))return;let l=this.quadModelMatrix(i),u=i.normalMatrix??qA.computeNormalMatrix(l),c=_.multiply(l,_.multiply(_.translate(-.5,-.5,0),_.scale(1/s,1/g,1)));for(let I=0;I<r.length;I++){let E=r[I],[d,h,Q,m,D,p]=E.transform,G=[d,h,0,0,Q,m,0,0,0,0,1,0,D,p,0,1];this.slug3dPipeline.draw(e,t,n,E.font,E.instances,E.instanceCount,{modelMatrix:_.multiply(c,G),normalMatrix:u,opacity:E.opacity*(i.opacity??1),slant:E.slant,twoSided:i.twoSided??!0,depthPull:Fo*(o+I+1),material:i.material,shininess:i.shininess??32,roughness:i.roughness,specularIntensity:i.specularIntensity??.5,ambientIntensity:i.ambientIntensity??1,metallic:i.metallic,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},a,this.passWritesHdr)}}drawTextureQuad(e,t,n,r,i,o=!1){let{width:a,height:s,opacity:g=1,colorTint:l=[1,1,1,1],borderColor:u,borderWidth:c=0,borderRadius:I=0,twoSided:E=!0,material:d="lit",shininess:h=32,roughness:Q,specularIntensity:m=.5,ambientIntensity:D=1,metallic:p}=i,G=this.quadModelMatrix(i),N=i.normalMatrix??qA.computeNormalMatrix(G),w=this.samplerCache.getSampler(this.device),U;if(u)if(Array.isArray(u))U=u;else{let b=ot(u);U=[b.r,b.g,b.b,b.a]}this.quad3dPipeline.draw(e,t,n,r,w,{modelMatrix:G,normalMatrix:N,colorTint:l,borderColor:U,borderWidth:c,opacity:g,borderRadius:I,twoSided:E,width:a,height:s,textureExtent:i.textureExtent,material:d,shininess:h,roughness:Q,specularIntensity:m,ambientIntensity:D,metallic:p,emissive:i.emissive,emissiveIntensity:i.emissiveIntensity,matte:i.matte},o,this.passWritesHdr)}meshModelMatrix(e){if(e.modelMatrix)return e.modelMatrix;let{position:t=[0,0,0],rotation:n=[0,0,0],scale:r=[1,1,1]}=e,i=_.translate(t[0],t[1],t[2]),o=n[0]*Math.PI/180,a=n[1]*Math.PI/180,s=n[2]*Math.PI/180;return s!==0&&(i=_.multiply(i,_.rotateZ(s))),a!==0&&(i=_.multiply(i,_.rotateY(a))),o!==0&&(i=_.multiply(i,_.rotateX(o))),_.multiply(i,_.scale(r[0],r[1],r[2]))}getOrCreateMeshBuffers(e){let t=this.meshBuffersCache.get(e);if(t)return t;let n=e.positions.length/3,r=new Float32Array(n*16);for(let u=0;u<n;u++){let c=u*16;r[c]=e.positions[u*3]??0,r[c+1]=e.positions[u*3+1]??0,r[c+2]=e.positions[u*3+2]??0,r[c+3]=e.uvs[u*2]??0,r[c+4]=e.uvs[u*2+1]??0,r[c+5]=e.normals[u*3]??0,r[c+6]=e.normals[u*3+1]??0,r[c+7]=e.normals[u*3+2]??1,e.jointIndices?(r[c+8]=e.jointIndices[u*4]??0,r[c+9]=e.jointIndices[u*4+1]??0,r[c+10]=e.jointIndices[u*4+2]??0,r[c+11]=e.jointIndices[u*4+3]??0):(r[c+8]=0,r[c+9]=0,r[c+10]=0,r[c+11]=0),e.jointWeights?(r[c+12]=e.jointWeights[u*4]??0,r[c+13]=e.jointWeights[u*4+1]??0,r[c+14]=e.jointWeights[u*4+2]??0,r[c+15]=e.jointWeights[u*4+3]??0):(r[c+12]=0,r[c+13]=0,r[c+14]=0,r[c+15]=0)}let i=Math.ceil(r.byteLength/4)*4,o=this.device.createBuffer({size:Math.max(4,i),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,mappedAtCreation:!0});new Float32Array(o.getMappedRange()).set(r),o.unmap();let a=e.indices instanceof Uint32Array,s=Math.ceil(e.indices.byteLength/4)*4,g=this.device.createBuffer({size:Math.max(4,s),usage:GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});a?new Uint32Array(g.getMappedRange()).set(e.indices):new Uint16Array(g.getMappedRange()).set(e.indices),g.unmap();let l;return e.colors&&e.colors.length>=n*4&&(l=this.device.createBuffer({label:"Mesh3DVertexColors",size:Math.max(16,n*16),usage:GPUBufferUsage.VERTEX,mappedAtCreation:!0}),new Float32Array(l.getMappedRange()).set(e.colors.subarray(0,n*4)),l.unmap()),t={vertexBuffer:o,indexBuffer:g,indexCount:e.indices.length,indexFormat:a?"uint32":"uint16",colorBuffer:l},this.meshBuffersCache.set(e,t),t}deformMesh(e,t,n){let r=this.getOrCreateMeshBuffers(t),i=t.positions.length/3;return{vertexBuffer:this.audioMeshDeformPipeline.execute(e,r.vertexBuffer,{config:n.config,audioLatentBuffer:n.latentBuffer,vertexCount:i,timeMs:n.timeMs,sampleRate:n.sampleRate}),indexBuffer:r.indexBuffer,indexCount:r.indexCount,indexFormat:r.indexFormat,colorBuffer:r.colorBuffer}}drawMesh3D(e,t,n,r,i,o={},a=!1){let s="vertexBuffer"in r?r:this.getOrCreateMeshBuffers(r),{opacity:g=1,colorTint:l=[1,1,1,1],twoSided:u=!0,wireframe:c=!1,isSkinned:I=!1,skinningMatrices:E,material:d="lit",shadeColor:h,alphaCutoff:Q,textureWrap:m="clamp",textureFilter:D="linear",shininess:p=32,roughness:G,specularIntensity:N=.5,ambientIntensity:w=1,metallic:U}=o,b=this.meshModelMatrix(o),M=o.normalMatrix??qA.computeNormalMatrix(b),v=No[m],R=this.samplerCache.getSampler(this.device,{addressModeU:v,addressModeV:v,magFilter:D,...D==="nearest"&&{maxAnisotropy:1}}),S=d==="glass"||d==="acrylic"||d==="frosted",K=S?{ior:o.ior??(d==="acrylic"?1.49:1.5),dispersion:o.dispersion??(d==="glass"?.04:.015),thickness:o.thickness??80,frost:d==="frosted"?G??.5:0}:void 0;this.mesh3dPipeline.draw(e,t,n,s,i,R,{glass:K,backdrop:o.backdrop,modelMatrix:b,normalMatrix:M,colorTint:l,opacity:g,twoSided:u,wireframe:c,isSkinned:I,skinningMatrices:E,material:d==="unlit"||d==="toon"?d:"lit",shadeColor:h,alphaCutoff:Q,shininess:p,roughness:S?Math.min(G??.05,.3):G,specularIntensity:N,ambientIntensity:w,metallic:U,emissive:o.emissive,emissiveIntensity:o.emissiveIntensity,matte:o.matte,maps:o.maps},a,this.passWritesHdr)}loadModel(e,t="auto",n={}){if(typeof e!="string")return kr(e,t,n);let r=`${t}|${JSON.stringify(n)}|${e}`,i=this.modelCache.get(r);return i||(i=kr(e,t,n),this.modelCache.set(r,i)),i}materialTexture(e){let t=this.materialTextures.get(e);return t||(t=this.uploadMaterialTexture(e),this.materialTextures.set(e,t)),t}materialMaps(e){let t=this.materialMapCache.get(e);return t||(t=(async()=>{let n=e.name,[r,i,o,a]=await Promise.all([this.uploadImage(e.normalTextureBuffer,`${n}:normal`),this.uploadImage(e.metallicRoughnessTextureBuffer,`${n}:metallicRoughness`),this.uploadImage(e.occlusionTextureBuffer,`${n}:occlusion`),this.uploadImage(e.emissiveTextureBuffer,`${n}:emissive`)]);return{...r&&{normal:r,normalScale:e.normalScale??1},...i&&{metallicRoughness:i},...o&&{occlusion:o,occlusionStrength:e.occlusionStrength??1},...a&&{emissive:a}}})(),this.materialMapCache.set(e,t)),t}uploadMaterialTexture(e){return this.uploadImage(e.diffuseTextureBuffer,`Material:${e.name}`)}async uploadImage(e,t){if(!e)return;let n=(await import("./sharp-V6ZTBNDW.mjs")).default,r=Buffer.from(e instanceof Uint8Array?e:new Uint8Array(e)),i,o;try{({width:i,height:o}=await n(r).metadata())}catch(g){console.warn(`[Renderer3D] Could not decode texture "${t}"; drawing without it:`,g instanceof Error?g.message:g);return}if(!i||!o)return;let a=Math.floor(Math.log2(Math.max(i,o)))+1,s=this.device.createTexture({label:t,size:{width:i,height:o},mipLevelCount:a,format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST});for(let g=0;g<a;g++){let l=Math.max(1,i>>g),u=Math.max(1,o>>g),c=await n(r).ensureAlpha().resize(l,u,{fit:"fill"}).raw().toBuffer();this.device.queue.writeTexture({texture:s,mipLevel:g},c,{bytesPerRow:l*4,rowsPerImage:u},{width:l,height:u})}return s}applyBloom(e,t,n,r={},i){this.bloomPipeline??=new mt(this.device),this.bloomPipeline.apply(e,t,n,r,i??void 0)}applyDepthOfField(e,t,n,r,i){let o=this.samplerCache.getSampler(this.device),a=this.device.createBindGroup({layout:this.dofBindGroupLayout,entries:[{binding:0,resource:{buffer:i}},{binding:1,resource:o},{binding:2,resource:t.createView()},{binding:3,resource:n.createView()}]}),s=e.beginRenderPass({colorAttachments:[{view:r,loadOp:"clear",storeOp:"store",clearValue:{r:0,g:0,b:0,a:0}}]});s.setPipeline(this.dofPipeline),s.setBindGroup(0,a),s.draw(3),s.end()}destroy(){this.bloomPipeline?.destroy(),this.depthTexture?.destroy(),this.shadowTexture?.destroy(),this.placeholderShadowTexture?.destroy(),this.linearDepthTexture?.destroy(),this.msaaColorTexture?.destroy(),this.msaaLinearDepthTexture?.destroy(),this.msaaHdrTexture?.destroy(),this.hdrTexture?.destroy(),this.quad3dPipeline.destroy(),this.slug3dPipeline.destroy(),this.mesh3dPipeline.destroy(),this.cameraPool.destroy(),this.lightsPool.destroy(),this.cameraUniformBindGroupCache.destroy()}};function kr(A,e="auto",t={}){if(e==="gltf"||e==="glb")return Et(A,t);if(e==="stl")return He(A,t);if(e==="ply")return Je(A,t);if(e==="vox")return dt(A,t);if(e==="3ds")return Ct(A,t);if(e==="off")return Qt(A,t);if(e==="fbx")return Pe(A,t);if(e==="obj")return Le(A,void 0,t);let n=typeof A!="string",r=typeof A=="string"?A.trim():"",i=r.toLowerCase();if(i.endsWith(".glb")||i.endsWith(".gltf"))return Et(A,t);if(i.endsWith(".stl"))return He(A,t);if(i.endsWith(".ply"))return Je(A,t);if(i.endsWith(".vox"))return dt(A,t);if(i.endsWith(".3ds"))return Ct(A,t);if(i.endsWith(".off"))return Qt(A,t);if(i.endsWith(".fbx"))return Pe(A,t);if(i.endsWith(".obj"))return Le(A,void 0,t);if(n){let o=A instanceof Uint8Array?A:new Uint8Array(A);return Ce.isGlb(o)?wr(o,t):ae.isBinary(o)?Pe(o,t):Oe.isVox(o)?dt(o,t):Ke.is3DS(o)?Ct(o,t):o.length>=3&&o[0]===112&&o[1]===108&&o[2]===121?Je(o,t):Te.isBinary(o)?He(o,t):Le(o,void 0,t)}return r.startsWith("{")&&(r.includes('"asset"')||r.includes('"meshes"'))?Et(r,t):r.startsWith("ply")||r.startsWith("PLY")?Je(r,t):r.startsWith("OFF")||r.startsWith("NOFF")||r.startsWith("COFF")?Qt(r,t):r.includes("FBXHeaderExtension")||r.includes("Kaydara FBX")?Pe(r,t):r.startsWith("solid")&&r.includes("facet")?He(r,t):Le(A,void 0,t)}k();var{cbrt:un,sqrt:cn,PI:be}=Math,So=(A,e,t,n,r)=>{let i=e+t*A,o=i**2+n;if(o>0){let l=cn(o);return un(i+l)+un(i-l)-r}let a=un(cn(i*i-o)),s=i?Math.atan(cn(-o)/i):-be/2,g;return t<0?g=(i>0?2*be:be)-s:r<0?g=(i>0?2*be:-3*be)+s:g=(i>0?0:be)+s,2*a*Math.cos(g/3)-r},Uo=(A,e,t,n)=>((e*A+3*t)*A+n)*A,In=A=>A;function Pr(A,e,t,n){if(!(0<=A&&A<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(A===e&&t===n)return In;let r=6*(3*A-3*t+1),i=6*(t-2*A),o=3*A,a=r*r,s=i*i,g=i/r,l=3*i*o/a-s*i/(a*r),u=2*o/r-s/a,c=u*u*u,I=3/r,E=3*e-3*n+1,d=n-2*e,h=3*e,Q=r?So:In;return function(D){return D===0||D===1?D:Uo(Q(D,l,I,c,g),E,d,h)}}var Zl={linear:In,ease:Pr(.25,.1,.25,1),quad:A=>A*A,cubic:A=>A*A*A,poly:A=>e=>e**A,sin:A=>1-Math.cos(A*Math.PI/2),circle:A=>1-Math.sqrt(1-A*A),exp:A=>2**(10*(A-1)),elastic:(A=1)=>{let e=A*Math.PI;return t=>1-Math.cos(t*Math.PI/2)**3*Math.cos(t*e)},back:(A=1.70158)=>e=>e*e*((A+1)*e-A),bounce:A=>{if(A<1/2.75)return 7.5625*A*A;if(A<2/2.75){let t=A-.5454545454545454;return 7.5625*t*t+.75}if(A<2.5/2.75){let t=A-.8181818181818182;return 7.5625*t*t+.9375}let e=A-2.625/2.75;return 7.5625*e*e+.984375},bezier:Pr,in:A=>A,out:A=>e=>1-A(1-e),inOut:A=>e=>e<.5?A(e*2)/2:1-A((1-e)*2)/2};function Tr(A,e,t,n){let r=n?.extrapolateLeft??"extend",i=n?.extrapolateRight??"extend";if(e.length!==t.length)throw new Error("inputRange and outputRange must have the same length");if(e.length<2)throw new Error("inputRange must have at least 2 elements");let o=e[0],a=e[e.length-1];if(A<o){if(r==="clamp")return t[0];if(r==="identity")return A}if(A>a){if(i==="clamp")return t[t.length-1];if(i==="identity")return A}let s=1;for(;s<e.length-1&&!(A<e[s]);s++);let g=e[s-1],l=e[s],u=t[s-1],c=t[s];if(g===l)return u;let I=(A-g)/(l-g);return n?.easing&&(I=n.easing(I)),u+I*(c-u)}k();var vo={damping:10,mass:1,stiffness:100,overshootClamping:!1},Bn={};function Ro({animation:A,now:e,config:t}){let{toValue:n,lastTimestamp:r,current:i,velocity:o}=A,a=Math.min(e-r,64);if(t.damping<=0)throw new Error("Spring damping must be greater than 0, otherwise the spring() animation will never end, causing an infinite loop.");if(t.stiffness<=0)throw new Error("Spring stiffness must be greater than 0.");if(t.mass<=0)throw new Error("Spring mass must be greater than 0.");let s=t.damping,g=t.mass,l=t.stiffness,u=[n,r,i,o,s,g,l,e].join("-");if(Bn[u])return Bn[u];let c=-o,I=n-i,E=s/(2*Math.sqrt(l*g)),d=Math.sqrt(l/g),h=d*Math.sqrt(1-E**2),Q=a/1e3,m=Math.sin(h*Q),D=Math.cos(h*Q),p=Math.exp(-E*d*Q),G=p*(m*((c+E*d*I)/h)+I*D),N=n-G,w=E*d*G-p*(D*(c+E*d*I)-h*I*m),U=Math.exp(-d*Q),b=n-U*(I+(c+d*I)*Q),M=U*(c*(Q*d-1)+Q*I*d*d),v={toValue:n,prevPosition:i,lastTimestamp:e,current:E<1?N:b,velocity:E<1?w:M};return Bn[u]=v,v}var fn={};function Hr({frame:A,fps:e,config:t={}}){let i=[A,e,t.damping,t.mass,t.overshootClamping,t.stiffness].join("-");if(fn[i])return fn[i];let o={lastTimestamp:0,current:0,toValue:1,velocity:0,prevPosition:0},a=Math.max(0,A),s=a%1;for(let g=0;g<=Math.floor(a);g++){g===Math.floor(a)&&(g+=s);let l=g/e*1e3;o=Ro({animation:o,now:l,config:{...vo,...t}})}return fn[i]=o,o}var En=new Map;function Lo({fps:A,config:e={},threshold:t=.005}){if(typeof t!="number")throw new TypeError(`threshold must be a number, got ${t}`);if(t===0)return 1/0;if(t===1)return 0;if(Number.isNaN(t))throw new TypeError("Threshold is NaN");if(!Number.isFinite(t))throw new TypeError("Threshold is not finite");if(t<0)throw new TypeError("Threshold is below 0");let n=[A,e.damping,e.mass,e.overshootClamping,e.stiffness,t].join("-");if(En.has(n))return En.get(n);let r=0,i=0,o=()=>Hr({fps:A,frame:r,config:e}),a=o(),s=()=>Math.abs(a.current-a.toValue),g=s();for(;g>=t;)r++,a=o(),g=s();i=r;for(let l=0;l<20;l++)r++,a=o(),g=s(),g>=t&&(l=0,i=r+1);return En.set(n,i),i}function $l({frame:A,fps:e,config:t={},from:n=0,to:r=1,durationInFrames:i,durationRestThreshold:o,delay:a=0,reverse:s=!1}){let g=s||typeof i<"u",l=g?Lo({fps:e,config:t,threshold:o}):void 0,u=g?{get:()=>l}:{get:()=>{throw new Error("did not calculate natural duration")}},I=(s?(i??u.get())-A:A)+(s?a:-a),E=i===void 0?I:I/(i/u.get());if(i&&I>i)return r;let d=Hr({fps:e,frame:E,config:t}),h=t.overshootClamping?r>=n?Math.min(d.current,r):Math.max(d.current,r):d.current;return n===0&&r===1?h:Tr(h,[0,1],[n,r])}k();k();k();k();var We=new Set,dn=!1;function bn(A,e,t=2){let n=e&&e.length,r=n?e[0]*t:A.length;We.size&&We.clear();let i=Vr(A,0,r,t,!0),o=[];if(!i||i.next===i.prev)return o;let a=0,s=0,g=0;if(n&&(i=Jo(A,e,i,t)),A.length>80*t){a=A[0],s=A[1];let l=a,u=s;for(let c=t;c<r;c+=t){let I=A[c],E=A[c+1];I<a&&(a=I),E<s&&(s=E),I>l&&(l=I),E>u&&(u=E)}g=Math.max(l-a,u-s),g=g!==0?32767/g:0}return Cn(i,o,a,s,g),o}function Vr(A,e,t,n,r){let i=null;if(r===Aa(A,e,t,n)>0)for(let o=e;o<t;o+=n)i=Kr(o/n|0,A[o],A[o+1],i);else for(let o=t-n;o>=e;o-=n)i=Kr(o/n|0,A[o],A[o+1],i);return i&&ze(i,i.next)&&(Ze(i),i=i.next),i}function ue(A,e=A){let t=e===A,n=A,r;do r=!1,n!==n.next&&(We.size===0||!We.has(n))&&(ze(n,n.next)||GA(n.prev,n,n.next)===0)?((t||n===e)&&(e=n.prev),dn=!0,Ze(n),n=n.prev,r=!0):(t||n!==e)&&(n=n.next,r=!t);while(r||n!==e);return e}function Cn(A,e,t,n,r){r&&Xo(A,t,n,r);let i=A,o=!1;for(;A.prev!==A.next;){let a=A.prev,s=A.next;if(GA(a,A,s)<0&&(r?Po(A,t,n,r):ko(A))){e.push(a.i,A.i,s.i),Ze(A),A=s,i=s;continue}if(A=s,A===i){if(dn=!1,A=ue(A),dn){i=A;continue}if(!o){A=To(A,e),i=A,o=!0;continue}Ho(A,e,t,n,r);break}}}function ko(A){let e=A.prev,t=A,n=A.next,r=e.x,i=t.x,o=n.x,a=e.y,s=t.y,g=n.y,l=Math.min(r,i,o),u=Math.min(a,s,g),c=Math.max(r,i,o),I=Math.max(a,s,g),E=n.next;for(;E!==e;){if(E.x>=l&&E.x<=c&&E.y>=u&&E.y<=I&&!(r===E.x&&a===E.y)&&Ft(r,a,i,s,o,g,E.x,E.y)&&GA(E.prev,E,E.next)>=0)return!1;E=E.next}return!0}function Po(A,e,t,n){let r=A.prev,i=A,o=A.next,a=r.x,s=i.x,g=o.x,l=r.y,u=i.y,c=o.y,I=Math.min(a,s,g),E=Math.min(l,u,c),d=Math.max(a,s,g),h=Math.max(l,u,c),Q=pn(I,E,e,t,n),m=pn(d,h,e,t,n),D=A.prevZ;for(;D&&D.z>=Q;){if(D.x>=I&&D.x<=d&&D.y>=E&&D.y<=h&&D!==o&&!(a===D.x&&l===D.y)&&Ft(a,l,s,u,g,c,D.x,D.y)&&GA(D.prev,D,D.next)>=0)return!1;D=D.prevZ}let p=A.nextZ;for(;p&&p.z<=m;){if(p.x>=I&&p.x<=d&&p.y>=E&&p.y<=h&&p!==o&&!(a===p.x&&l===p.y)&&Ft(a,l,s,u,g,c,p.x,p.y)&&GA(p.prev,p,p.next)>=0)return!1;p=p.nextZ}return!0}function To(A,e){let t=A,n=!1;do{let r=t.prev,i=t.next.next;zr(r,t,t.next,i,!1)&&Xe(r,i)&&Xe(i,r)&&(e.push(r.i,t.i,i.i),Ze(t),Ze(t.next),t=A=i,n=!0),t=t.next}while(t!==A);return n?ue(t):t}function Ho(A,e,t,n,r){let i=A;do{let o=i.next.next;for(;o!==i.prev;){if(i.i!==o.i&&_o(i,o)){let a=Xr(i,o);i=ue(i,i.next),a=ue(a,a.next),Cn(i,e,t,n,r),Cn(a,e,t,n,r);return}o=o.next}i=i.next}while(i!==A)}var Qn=!1;function Jo(A,e,t,n){let r=[];for(let i=0,o=e.length;i<o;i++){let a=e[i]*n,s=i<o-1?e[i+1]*n:A.length,g=Vr(A,a,s,n,!1);g===g.next&&We.add(g),r.push(qo(g))}r.sort(Oo),Vo(A.length/n,e.length),Wr(t,t),Qn=!0;for(let i=0;i<r.length;i++)t=Ko(r[i],t);return Qn=!1,ue(t)}function Oo(A,e){return A.x-e.x||A.y-e.y||(A.next.y-A.y)/(A.next.x-A.x)-(e.next.y-e.y)/(e.next.x-e.x)}function Ko(A,e){let t=Wo(A,e);if(!t)return e;let n=Xr(t,A),r=n.next;return Wr(t,r.next),ue(n,n.next),ue(t,t.next)}var Yr=16,DA=new Float64Array(0),Nt=0,mn=[],hn=[];function Vo(A,e){let t=Math.ceil((A+2*e)/Yr)+e+2;DA.length<t*4&&(DA=new Float64Array(t*4)),Nt=0}function Wr(A,e){let t=A;do{let n=Nt++;mn[n]=t;let r=t.x,i=t.y,o=t.x,a=t.y,s=0;do{let l=t.next;t.z=n,l.x<r&&(r=l.x),l.x>o&&(o=l.x),l.y<i&&(i=l.y),l.y>a&&(a=l.y),t=l}while(++s<Yr&&t!==e);hn[n]=t;let g=n*4;DA[g]=r,DA[g+1]=i,DA[g+2]=o,DA[g+3]=a}while(t!==e)}function Yo(A,e){let t=A.z*4;e.x<DA[t]&&(DA[t]=e.x),e.y<DA[t+1]&&(DA[t+1]=e.y),e.x>DA[t+2]&&(DA[t+2]=e.x),e.y>DA[t+3]&&(DA[t+3]=e.y)}function Jr(A){let e=hn[A];for(;e.prev.next!==e;)e=e.next;return hn[A]=e,e}function Or(A){let e=mn[A];for(;e.prev.next!==e;)e=e.next;return mn[A]=e,e}function Wo(A,e){let t=e,n=A.x,r=A.y,i=-1/0,o;if(ze(A,t))return t;for(let c=0,I=0;c<Nt;c++,I+=4){if(r<DA[I+1]||r>DA[I+3]||DA[I]>n||DA[I+2]<=i)continue;let E=Jr(c);t=Or(c);do{if(t.prev.next===t){if(ze(A,t.next))return t.next;if(r<=t.y&&r>=t.next.y&&t.next.y!==t.y){let d=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(d<=n&&d>i&&(i=d,o=t.x<t.next.x?t:t.next,d===n))return o}}t=t.next}while(t!==E)}if(!o)return null;let a=o.x,s=o.y,g=Math.min(r,s),l=Math.max(r,s),u=1/0;for(let c=0,I=0;c<Nt;c++,I+=4){if(DA[I+2]<a||DA[I]>n||DA[I+3]<g||DA[I+1]>l)continue;let E=Jr(c);t=Or(c);do{if(t.prev.next===t&&n>=t.x&&t.x>=a&&n!==t.x&&Ft(r<s?n:i,r,a,s,r<s?i:n,r,t.x,t.y)){let d=Math.abs(r-t.y)/(n-t.x);(Xe(t,A)||t.y===r&&t.next.y===r&&t.next.x>n)&&(d<u||d===u&&(t.x>o.x||t.x===o.x&&zo(o,t)))&&(o=t,u=d)}t=t.next}while(t!==E)}return o}function zo(A,e){return GA(A.prev,A,e.prev)<0&&GA(e.next,A,A.next)<0}var UA=[],De=[],le=new Uint32Array(0),Ve=new Uint32Array(0),Ye=new Uint32Array(256);function Xo(A,e,t,n){let r=A,i=0;do r.z=pn(r.x,r.y,e,t,n),UA[i++]=r,r=r.next;while(r!==A);Zo(i);let o=null;for(let a=0;a<i;a++){let s=UA[a];s.prevZ=o,o&&(o.nextZ=s),o=s}o.nextZ=null,UA.fill(null,0,i),De.fill(null,0,i)}function Zo(A){if(A<=32){for(let e=1;e<A;e++){let t=UA[e],n=t.z,r=e-1;for(;r>=0&&UA[r].z>n;)UA[r+1]=UA[r],r--;UA[r+1]=t}return}le.length<A&&(le=new Uint32Array(A),Ve=new Uint32Array(A),De=new Array(A));for(let e=0;e<A;e++)le[e]=UA[e].z;Mt(A,UA,le,De,Ve,0),Mt(A,De,Ve,UA,le,8),Mt(A,UA,le,De,Ve,16),Mt(A,De,Ve,UA,le,24)}function Mt(A,e,t,n,r,i){Ye.fill(0);for(let a=0;a<A;a++)Ye[t[a]>>>i&255]++;let o=0;for(let a=0;a<256;a++){let s=Ye[a];Ye[a]=o,o+=s}for(let a=0;a<A;a++){let s=t[a],g=Ye[s>>>i&255]++;n[g]=e[a],r[g]=s}}function pn(A,e,t,n,r){return A=(A-t)*r|0,e=(e-n)*r|0,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A|e<<1}function qo(A){let e=A,t=A;do(e.x<t.x||e.x===t.x&&e.y<t.y)&&(t=e),e=e.next;while(e!==A);return t}function Ft(A,e,t,n,r,i,o,a){return(r-o)*(e-a)>=(A-o)*(i-a)&&(A-o)*(n-a)>=(t-o)*(e-a)&&(t-o)*(i-a)>=(r-o)*(n-a)}function _o(A,e){let t=ze(A,e)&&GA(A.prev,A,A.next)>0&&GA(e.prev,e,e.next)>0;return A.next.i!==e.i&&(t||Xe(A,e)&&Xe(e,A)&&(GA(A.prev,A,e.prev)!==0||GA(A,e.prev,e)!==0))&&!jo(A,e)&&(t||$o(A,e))}function GA(A,e,t){return(e.y-A.y)*(t.x-e.x)-(e.x-A.x)*(t.y-e.y)}function ze(A,e){return A.x===e.x&&A.y===e.y}function zr(A,e,t,n,r=!0){let i=GA(A,e,t),o=GA(A,e,n),a=GA(t,n,A),s=GA(t,n,e);return(i>0&&o<0||i<0&&o>0)&&(a>0&&s<0||a<0&&s>0)?!0:r?!!(i===0&&Gt(A,t,e)||o===0&&Gt(A,n,e)||a===0&&Gt(t,A,n)||s===0&&Gt(t,e,n)):!1}function Gt(A,e,t){return e.x<=Math.max(A.x,t.x)&&e.x>=Math.min(A.x,t.x)&&e.y<=Math.max(A.y,t.y)&&e.y>=Math.min(A.y,t.y)}function jo(A,e){let t=Math.min(A.x,e.x),n=Math.max(A.x,e.x),r=Math.min(A.y,e.y),i=Math.max(A.y,e.y),o=A;do{let a=o.next;if(o.x>n&&a.x>n||o.x<t&&a.x<t||o.y>i&&a.y>i||o.y<r&&a.y<r){o=a;continue}if(o.i!==A.i&&a.i!==A.i&&o.i!==e.i&&a.i!==e.i&&zr(o,a,A,e))return!0;o=a}while(o!==A);return!1}function Xe(A,e){return GA(A.prev,A,A.next)<0?GA(A,e,A.next)>=0&&GA(A,A.prev,e)>=0:GA(A,e,A.prev)<0||GA(A,A.next,e)<0}function $o(A,e){let t=A,n=!1,r=(A.x+e.x)/2,i=(A.y+e.y)/2;do{let o=t.next;t.y>i!=o.y>i&&r<(o.x-t.x)*(i-t.y)/(o.y-t.y)+t.x&&(n=!n),t=o}while(t!==A);return n}function Xr(A,e){let t=yn(A.i,A.x,A.y),n=yn(e.i,e.x,e.y),r=A.next,i=e.prev;return A.next=e,e.prev=A,t.next=r,r.prev=t,n.next=t,t.prev=n,i.next=n,n.prev=i,n}function Kr(A,e,t,n){let r=yn(A,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Ze(A){A.next.prev=A.prev,A.prev.next=A.next,A.prevZ&&(A.prevZ.nextZ=A.nextZ),A.nextZ&&(A.nextZ.prevZ=A.prevZ),Qn&&Yo(A.prev,A.next)}function yn(A,e,t){return{i:A,x:e,y:t,prev:null,next:null,z:0,prevZ:null,nextZ:null}}function Aa(A,e,t,n){let r=0;for(let i=e,o=t-n;i<t;i+=n)r+=(A[o]-A[i])*(A[i+1]+A[o+1]),o=i;return r}var $r=_n(qr(),1);function Ut(A){let e=A.trim();if(e.startsWith("#")){let t=e.slice(1);if(t.length===3){let n=Number.parseInt(t[0]+t[0],16)/255,r=Number.parseInt(t[1]+t[1],16)/255,i=Number.parseInt(t[2]+t[2],16)/255;return[n,r,i,1]}if(t.length===6){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return[n,r,i,1]}if(t.length===8){let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255,o=Number.parseInt(t.slice(6,8),16)/255;return[n,r,i,o]}}if(e.startsWith("rgb")){let t=e.replace(/rgba?\(/,"").replace(/\)/,"").split(",").map(a=>Number.parseFloat(a.trim())),n=(t[0]??0)/255,r=(t[1]??0)/255,i=(t[2]??0)/255,o=t[3]!==void 0?t[3]:1;return[n,r,i,o]}return[1,1,1,1]}function we(A){let e=0,t=A.length;for(let n=0;n<t;n++){let r=(n+1)%t;e+=A[n].x*A[r].y-A[r].x*A[n].y}return e/2}function vt(A,e){let t=!1,n=e.length;for(let r=0,i=n-1;r<n;i=r++){let o=e[r].x,a=e[r].y,s=e[i].x,g=e[i].y;a>A.y!=g>A.y&&A.x<(s-o)*(A.y-a)/(g-a)+o&&(t=!t)}return t}var ea=.1,ta=64;function Ai(A,e){if(e.segments!==void 0)return e.segments;let t=Math.ceil(Math.sqrt(A/(8*e.tolerance)));return Math.min(ta,Math.max(1,t))}function na(A,e,t,n,r){let i=Ai(2*Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),n);for(let o=1;o<=i;o++){let a=o/i,s=1-a;r.push({x:s*s*A.x+2*s*a*e.x+a*a*t.x,y:s*s*A.y+2*s*a*e.y+a*a*t.y})}}function ra(A,e,t,n,r,i){let o=Ai(6*Math.max(Math.hypot(A.x-2*e.x+t.x,A.y-2*e.y+t.y),Math.hypot(e.x-2*t.x+n.x,e.y-2*t.y+n.y)),r);for(let a=1;a<=o;a++){let s=a/o,g=1-s;i.push({x:g*g*g*A.x+3*g*g*s*e.x+3*g*s*s*t.x+s*s*s*n.x,y:g*g*g*A.y+3*g*g*s*e.y+3*g*s*s*t.y+s*s*s*n.y})}}function ia(A){try{let e=new $r.Path2D(A).simplify().edges;return Array.isArray(e)?e:null}catch{return null}}function oa(A,e,t,n,r){let i=A.path?.toSVG();if(!i)return{contours:[],simplified:!0};let o=ia(i),a=o!==null;o??=(A.path?.commands??[]).map(c=>[c.command,...c.args]);let s=[],g={x:0,y:0},l=[],u=()=>{if(l.length>=3){let c=l[0],I=l[l.length-1];Math.hypot(I.x-c.x,I.y-c.y)<1e-4&&l.pop(),l.length>=3&&s.push(l)}l=[]};for(let c of o){let I=c[0],E=c.slice(1);if(I==="moveTo")u(),g={x:(e+E[0])*n,y:-(t+E[1])*n},l=[g];else if(I==="lineTo")g={x:(e+E[0])*n,y:-(t+E[1])*n},l.push(g);else if(I==="quadraticCurveTo"){let d={x:(e+E[0])*n,y:-(t+E[1])*n},h={x:(e+E[2])*n,y:-(t+E[3])*n};na(g,d,h,r,l),g=h}else if(I==="bezierCurveTo"){let d={x:(e+E[0])*n,y:-(t+E[1])*n},h={x:(e+E[2])*n,y:-(t+E[3])*n},Q={x:(e+E[4])*n,y:-(t+E[5])*n};ra(g,d,h,Q,r,l),g=Q}else I==="closePath"&&u()}return u(),{contours:s,simplified:a}}var aa=Math.cos(30*Math.PI/180);function sa({contours:A,simplified:e}){if(!e)return ua(A);let t=A.map(o=>({contour:o,area:Math.abs(we(o))}));t.sort((o,a)=>a.area-o.area);let n=t.map(()=>[]);for(let o=0;o<t.length;o++){let a=t[o].contour,s=a[Math.floor(a.length/2)];for(let g=0;g<o;g++){if(t[g].area<=t[o].area)continue;let l=t[g].contour;(vt(a[0],l)||vt(s,l))&&n[o].push(g)}}let r=[],i=new Map;for(let o=0;o<t.length;o++){let a=n[o];if(a.length%2===0){let s={outer:t[o].contour,holes:[]};r.push(s),i.set(o,s)}else i.get(a[a.length-1])?.holes.push(t[o].contour)}return r}function ga(A,e,t,n){let r=e.x-A.x,i=e.y-A.y,o=n.x-t.x,a=n.y-t.y,s=r*a-i*o;if(Math.abs(s)<1e-12)return null;let g=((t.x-A.x)*a-(t.y-A.y)*o)/s,l=((t.x-A.x)*i-(t.y-A.y)*r)/s,u=1e-9;return g<=u||g>=1-u||l<=u||l>=1-u?null:{x:A.x+r*g,y:A.y+i*g}}function Dn(A,e=0){let t=A.length;if(t<3)return[];if(e>64)return[A];for(let n=0;n<t;n++){let r=A[n],i=A[(n+1)%t];for(let o=n+2;o<t;o++){if(n===0&&o===t-1)continue;let a=ga(r,i,A[o],A[(o+1)%t]);if(!a)continue;let s=[a,...A.slice(n+1,o+1)],g=[a,...A.slice(o+1),...A.slice(0,n+1)];return[...Dn(s,e+1),...Dn(g,e+1)]}}return Math.abs(we(A))>1e-9?[A]:[]}function la(A,e){let t=0;for(let n of e)for(let r=0;r<n.length;r++){let i=n[r],o=n[(r+1)%n.length],a=(o.x-i.x)*(A.y-i.y)-(A.x-i.x)*(o.y-i.y);i.y<=A.y?o.y>A.y&&a>0&&t++:o.y<=A.y&&a<0&&t--}return t}function _r(A){let e=0,t=-1;for(let u=0;u<A.length;u++){let c=A[u],I=A[(u+1)%A.length],E=Math.hypot(I.x-c.x,I.y-c.y);E>t&&(t=E,e=u)}let n=A[e],r=A[(e+1)%A.length],i=(n.x+r.x)/2,o=(n.y+r.y)/2,a=Math.max(1e-4,Math.min(.01,t*.001)),s=-(r.y-n.y)/t*a,g=(r.x-n.x)/t*a,l={x:i+s,y:o+g};return vt(l,A)?l:{x:i-s,y:o-g}}function ua(A){let e=A.flatMap(r=>Dn(r)),t=[],n=[];for(let r of e)la(_r(r),A)!==0?t.push({outer:r,holes:[]}):n.push(r);for(let r of n){let i=Math.abs(we(r)),o=_r(r),a,s=Number.POSITIVE_INFINITY;for(let g of t){let l=Math.abs(we(g.outer));l>i&&l<s&&vt(o,g.outer)&&(a=g,s=l)}a?.holes.push(r)}return t}var jr=new WeakMap;function ca(A,e,t,n,r,i){let o=jr.get(A);o||(o=new Map,jr.set(A,o));let a=`${e.id}|${r}|${i.segments??""}|${i.tolerance}`,s=o.get(a);s||(s=sa(oa(e,0,0,r,i)),o.set(a,s));let g=t*r,l=-n*r,u=c=>c.map(I=>({x:I.x+g,y:I.y+l}));return s.map(c=>({outer:u(c.outer),holes:c.holes.map(u)}))}function su(A){let e=A.font,t=A.fontSize??48,n=A.depth??20,r=n/2,i={segments:A.curveSegments!==void 0?Math.max(2,A.curveSegments):void 0,tolerance:Math.max(.001,A.curveTolerance??ea)},o=e.unitsPerEm||1e3,a=t/o,s=rr(e,A.text.replace(/\n/g," "),{direction:A.direction,letterSpacing:A.letterSpacing?A.letterSpacing/a:0}),g=[];for(let W of s.glyphs){let Y=e.getGlyph(W.glyphId),j=ca(e,Y,W.x,W.y,a,i);for(let IA of j)g.push(IA)}let l=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,I=Number.NEGATIVE_INFINITY;for(let W of g){for(let Y of W.outer)Y.x<l&&(l=Y.x),Y.x>u&&(u=Y.x),Y.y<c&&(c=Y.y),Y.y>I&&(I=Y.y);for(let Y of W.holes)for(let j of Y)j.x<l&&(l=j.x),j.x>u&&(u=j.x),j.y<c&&(c=j.y),j.y>I&&(I=j.y)}Number.isFinite(l)||(l=0,u=0,c=0,I=0);let E=u-l,d=I-c,h=(s.baseLevel&1)===1,Q=A.align==="start"?h?"right":"left":A.align==="end"?h?"left":"right":A.align,m=(l+u)/2;Q==="left"&&(m=l),Q==="right"&&(m=u);let D=(c+I)/2;A.verticalAlign==="top"&&(D=c),A.verticalAlign==="bottom"&&(D=I);for(let W of g){for(let Y of W.outer)Y.x-=m,Y.y-=D;for(let Y of W.holes)for(let j of Y)j.x-=m,j.y-=D}l-=m,u-=m,c-=D,I-=D;let p=[],G=[],N=[],w=[],U=[],b=[],M=[],v=[],R=(W,Y,j)=>{let IA=U.length/3;return U.push(W.x,W.y,r,W.x,W.y,-r),b.push(Y.x,Y.y,0,Y.x,Y.y,0),M.push(j,0,j,1),IA},S=W=>{let Y=W.filter((P,nA)=>{let tA=W[(nA+1)%W.length];return Math.hypot(tA.x-P.x,tA.y-P.y)>=1e-6}),j=Y.length;if(j<2)return;let IA=[],dA=Y.map((P,nA)=>{let tA=Y[(nA+1)%j],rA=Math.hypot(tA.x-P.x,tA.y-P.y);return IA.push(rA),{x:(tA.y-P.y)/rA,y:-(tA.x-P.x)/rA}}),uA=IA.reduce((P,nA)=>P+nA,0),mA=[],pA=[],X=0;for(let P=0;P<j;P++){let nA=dA[(P-1+j)%j],tA=dA[P],rA=X/uA,AA=nA.x+tA.x,eA=nA.y+tA.y,lA=nA.x*tA.x+nA.y*tA.y>=aa?{x:AA/Math.hypot(AA,eA),y:eA/Math.hypot(AA,eA)}:null;lA&&P>0?mA[P]=pA[P]=R(Y[P],lA,rA):(pA[P]=R(Y[P],lA??nA,P===0?1:rA),mA[P]=R(Y[P],lA??tA,rA)),X+=IA[P]}for(let P=0;P<j;P++){let nA=mA[P],tA=pA[(P+1)%j];v.push(nA,tA+1,tA),v.push(nA,nA+1,tA+1)}};for(let W of g){let Y=W.outer;we(Y)<0&&Y.reverse();for(let X of W.holes)we(X)>0&&X.reverse();let j=[],IA=[];for(let X of Y)j.push(X.x,X.y);for(let X of W.holes){IA.push(j.length/2);for(let P of X)j.push(P.x,P.y)}let dA=bn(j,IA,2),uA=j.length/2,mA=p.length/3;for(let X=0;X<uA;X++){let P=j[X*2],nA=j[X*2+1];p.push(P,nA,-r),G.push(0,0,-1),N.push((P-l)/(E||1),(nA-c)/(d||1))}for(let X=0;X<dA.length;X+=3)w.push(mA+dA[X],mA+dA[X+2],mA+dA[X+1]);let pA=p.length/3;for(let X=0;X<uA;X++){let P=j[X*2],nA=j[X*2+1];p.push(P,nA,r),G.push(0,0,1),N.push((P-l)/(E||1),(nA-c)/(d||1))}for(let X=0;X<dA.length;X+=3)w.push(pA+dA[X],pA+dA[X+1],pA+dA[X+2]);S(Y);for(let X of W.holes)S(X)}let K=Ut(A.fill??"#ffffff"),F=Ut(A.bevelColor??A.fill??"#ffffff"),z={name:"front-material",diffuseColor:K,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},Z={name:"side-material",diffuseColor:F,shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic,twoSided:!0},$=[];return w.length>0&&$.push({id:"text-front-mesh",name:"front",positions:new Float32Array(p),normals:new Float32Array(G),uvs:new Float32Array(N),indices:p.length/3>65535?new Uint32Array(w):new Uint16Array(w),materialName:"front-material"}),v.length>0&&$.push({id:"text-side-mesh",name:"side",positions:new Float32Array(U),normals:new Float32Array(b),uvs:new Float32Array(M),indices:U.length/3>65535?new Uint32Array(v):new Uint16Array(v),materialName:"side-material"}),{modelData:{name:`extruded-text-${A.text}`,meshes:$,materials:{"front-material":z,"side-material":Z},animations:[],bounds:{min:[l,c,-r],max:[u,I,r],center:[(l+u)/2,(c+I)/2,0],size:[E,d,n],boundingSphereRadius:Math.hypot(E,d,n)/2}},bounds:{minX:l,maxX:u,minY:c,maxY:I,width:E,height:d,depth:n}}}var xn=class{positions=[];normals=[];uvs=[];indices=[];vertex(e,t,n){return this.positions.push(e[0],e[1],e[2]),this.normals.push(t[0],t[1],t[2]),this.uvs.push(n[0],n[1]),this.positions.length/3-1}grid(e,t,n,r=!1){for(let i=0;i<n;i++)for(let o=0;o<t;o++){let a=e+i*(t+1)+o,s=a+1,g=a+t+1,l=g+1;r?this.indices.push(a,s,g,s,l,g):this.indices.push(a,g,s,s,g,l)}}build(e){let t=this.positions.length/3;return{id:`${e}-mesh`,name:e,positions:new Float32Array(this.positions),normals:new Float32Array(this.normals),uvs:new Float32Array(this.uvs),indices:t>65535?new Uint32Array(this.indices):new Uint16Array(this.indices),materialName:`${e}-material`}}};function Mn(A){let e=Math.hypot(A[0],A[1],A[2]);return e>1e-12?[A[0]/e,A[1]/e,A[2]/e]:[0,0,0]}function wn(A,e,t){if(e<=0)return[-A,A];let n=A-e,r=[];for(let i=0;i<=t;i++)r.push(-n-e*Math.cos(i/t*Math.PI/2));for(let i=n>1e-9?0:1;i<=t;i++)r.push(n+e*Math.sin(i/t*Math.PI/2));return r}function Ia(A,e){let t=A.width/2,n=A.height/2,r=A.depth/2,i=Math.max(0,Math.min(A.radius??0,t,n,r)),o=Math.max(1,Math.round(A.segments??4)),a=A.taper??1,s=t-i,g=n-i,l=r-i,u=wn(t,i,o),c=wn(n,i,o),I=wn(r,i,o),E=A.height>0?(1-a)/A.height:0,d=p=>a+E*(p+n),h=(p,G)=>{let N=[Math.max(-s,Math.min(s,p[0])),Math.max(-g,Math.min(g,p[1])),Math.max(-l,Math.min(l,p[2]))],w=i>0?Mn([p[0]-N[0],p[1]-N[1],p[2]-N[2]]):G;w[0]===0&&w[1]===0&&w[2]===0&&(w=G);let U=[N[0]+w[0]*i,N[1]+w[1]*i,N[2]+w[2]*i];if(a===1)return{p:U,n:w};let b=d(U[1]);return{p:[U[0]*b,U[1],U[2]*b],n:Mn([w[0]/b,w[1]-U[0]*E*w[0]/b-U[2]*E*w[2]/b,w[2]/b])}},Q=[{axis:2,sign:-1,u:0,v:1},{axis:2,sign:1,u:0,v:1},{axis:0,sign:-1,u:2,v:1},{axis:0,sign:1,u:2,v:1},{axis:1,sign:-1,u:0,v:2},{axis:1,sign:1,u:0,v:2}],m=[t,n,r],D=[u,c,I];for(let p of Q){let G=D[p.u],N=D[p.v],w=[0,0,0];w[p.axis]=p.sign;let U=e.positions.length/3;for(let M=0;M<N.length;M++)for(let v=0;v<G.length;v++){let R=[0,0,0];R[p.axis]=p.sign*m[p.axis],R[p.u]=G[v],R[p.v]=N[M];let{p:S,n:K}=h(R,w);e.vertex(S,K,[(G[v]/m[p.u]+1)/2,(N[M]/m[p.v]+1)/2])}let b=(p.v+1)%3===p.u;e.grid(U,G.length-1,N.length-1,(b?1:-1)!==p.sign)}}function Ba(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=Math.max(2,Math.round(t/2));for(let r=0;r<=n;r++){let i=r/n*Math.PI;for(let o=0;o<=t;o++){let a=o/t*Math.PI*2,s=[Math.sin(i)*Math.cos(a),-Math.cos(i),Math.sin(i)*Math.sin(a)];e.vertex([s[0]*A.radius,s[1]*A.radius,s[2]*A.radius],s,[o/t,r/n])}}e.grid(0,t,n)}function fa(A,e){let t=Math.max(3,Math.round(A.segments??32)),n=A.radiusTop??A.radius??50,r=A.radiusBottom??A.radius??50,i=A.height/2,o=A.height>0?(r-n)/A.height:0;for(let a=0;a<=1;a++){let s=a===0?n:r,g=a===0?-i:i;for(let l=0;l<=t;l++){let u=l/t*Math.PI*2,c=Math.cos(u),I=Math.sin(u);e.vertex([c*s,g,I*s],Mn([c,-o,I]),[l/t,a])}}if(e.grid(0,t,1),!A.openEnded)for(let[a,s,g]of[[-i,n,-1],[i,r,1]]){if(s<=0)continue;let l=e.vertex([0,a,0],[0,g,0],[.5,.5]),u=e.positions.length/3;for(let c=0;c<=t;c++){let I=c/t*Math.PI*2,E=Math.cos(I),d=Math.sin(I);e.vertex([E*s,a,d*s],[0,g,0],[(E+1)/2,(d+1)/2])}for(let c=0;c<t;c++)g<0?e.indices.push(l,u+c,u+c+1):e.indices.push(l,u+c+1,u+c)}}function Ea(A){let e=new xn;if(A.type==="roundedBox")Ia(A,e);else if(A.type==="sphere")Ba(A,e);else if(A.type==="cylinder")fa(A,e);else throw new Error(`Unknown 3D primitive: ${A.type}`);let t=A.type,n=e.build(t),r={name:`${t}-material`,diffuseColor:Ut(A.color??"#ffffff"),shading:A.material??"lit",shininess:A.shininess??32,roughness:A.roughness,metallic:A.metallic},i=[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY],o=[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],a=n.positions;for(let g=0;g<a.length;g+=3)for(let l=0;l<3;l++){let u=a[g+l];u<i[l]&&(i[l]=u),u>o[l]&&(o[l]=u)}let s=[o[0]-i[0],o[1]-i[1],o[2]-i[2]];return{name:`primitive-${t}`,meshes:[n],materials:{[r.name]:r},animations:[],bounds:{min:i,max:o,center:[(i[0]+o[0])/2,(i[1]+o[1])/2,(i[2]+o[2])/2],size:s,boundingSphereRadius:Math.hypot(...s)/2}}}var Rt=new Map;function cu(A){let e=JSON.stringify(A),t=Rt.get(e);return t||(t=Ea(A),Rt.size>512&&Rt.clear(),Rt.set(e,t)),t}var Gn=new Map;function da(A,e){return JSON.stringify({text:A,...e})}function Nn(A,e){let t=A?String(A):" ",n=da(t,e),r=Gn.get(n);if(r)return r;let i=e.fontSize??48,o=e.fontFamily??"Inter";te.isFailed(o)&&(o="Inter");let a=e.letterSpacing??0,s=e.lineHeight!==void 0&&e.lineHeight<10?e.lineHeight*i:e.lineHeight??i*1.2,g=te.getFont(o,e.fontWeight,null,void 0,i),l=e.padding??0;if(!g){if(!te.isFailed(o)){let m=_t(o);te.preloadSlugFont(null,o,m).catch(()=>{})}let I=t.split(`
|
|
1524
|
+
`),E=0,d=e.width!==void 0?Math.max(10,e.width-l*2):0;for(let m of I)if(d>0){let D=m.length*i*.55+a*m.length,p=Math.max(1,Math.ceil(D/d));E+=p}else E+=1;let h=Math.max(0,t.length-1),Q={width:e.width!==void 0?e.width:Math.ceil(t.length*i*.6+a*h)+l*2,height:e.height!==void 0?e.height:Math.ceil(E*s)+l*2};return Gn.set(n,Q),Q}let u=ir.measure(t,g,i,a,s,e.width!==void 0?Math.max(0,e.width-l*2):void 0,e.spans,e.direction),c={width:e.width!==void 0&&!e.keepNaturalWidth?e.width:Math.ceil(u.width)+l*2,height:e.height!==void 0?e.height:Math.ceil(u.height)+l*2};return Gn.set(n,c),c}function du(A,e){let t=e.fontFamily??"Inter";if(te.isFailed(t)&&(t="Inter"),te.isFailed(t))return Promise.resolve(Nn(A,e));let n=_t(t);return te.preloadSlugFont(null,t,n).then(()=>Nn(A,e)).catch(()=>Nn(A,e))}k();k();k();var Ca=(()=>{var A=import.meta.url;return(function(e){e=e||{};var t;t||(t=typeof e<"u"?e:{});var n,r;t.ready=new Promise(function(B,f){n=B,r=f});var i=Object.assign({},t),o="";typeof document<"u"&&document.currentScript&&(o=document.currentScript.src),A&&(o=A),o.indexOf("blob:")!==0?o=o.substr(0,o.replace(/[?#].*/,"").lastIndexOf("/")+1):o="";var a=t.print||console.log.bind(console),s=t.printErr||console.warn.bind(console);Object.assign(t,i),i=null;var g;t.wasmBinary&&(g=t.wasmBinary);var l=t.noExitRuntime||!0;typeof WebAssembly!="object"&&z("no native wasm support detected");var u,c=!1;function I(B,f,C){C=f+C;for(var y="";!(f>=C);){var x=B[f++];if(!x)break;if(x&128){var L=B[f++]&63;if((x&224)==192)y+=String.fromCharCode((x&31)<<6|L);else{var T=B[f++]&63;x=(x&240)==224?(x&15)<<12|L<<6|T:(x&7)<<18|L<<12|T<<6|B[f++]&63,65536>x?y+=String.fromCharCode(x):(x-=65536,y+=String.fromCharCode(55296|x>>10,56320|x&1023))}}else y+=String.fromCharCode(x)}return y}var E,d,h,Q,m,D,p,G,N;function w(){var B=u.buffer;E=B,t.HEAP8=d=new Int8Array(B),t.HEAP16=Q=new Int16Array(B),t.HEAP32=D=new Int32Array(B),t.HEAPU8=h=new Uint8Array(B),t.HEAPU16=m=new Uint16Array(B),t.HEAPU32=p=new Uint32Array(B),t.HEAPF32=G=new Float32Array(B),t.HEAPF64=N=new Float64Array(B)}var U,b=[],M=[],v=[];function R(){var B=t.preRun.shift();b.unshift(B)}var S=0,K=null,F=null;function z(B){throw t.onAbort&&t.onAbort(B),B="Aborted("+B+")",s(B),c=!0,B=new WebAssembly.RuntimeError(B+". Build with -sASSERTIONS for more info."),r(B),B}function Z(B){return B.startsWith("data:application/octet-stream;base64,")}var $;if($="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!Z($)){var aA=$;$=t.locateFile?t.locateFile(aA,o):o+aA}function W(){var B=$;try{if(B==$&&g)return new Uint8Array(g);if(Z(B))try{var f=Ki(B.slice(37)),C=new Uint8Array(f.length);for(B=0;B<f.length;++B)C[B]=f.charCodeAt(B);var y=C}catch{throw Error("Converting base64 string to bytes failed.")}else y=void 0;var x=y;if(x)return x;throw"both async and sync fetching of the wasm failed"}catch(L){z(L)}}function Y(){return g||typeof fetch!="function"?Promise.resolve().then(function(){return W()}):fetch($,{credentials:"same-origin"}).then(function(B){if(!B.ok)throw"failed to load wasm binary file at '"+$+"'";return B.arrayBuffer()}).catch(function(){return W()})}function j(B){for(;0<B.length;)B.shift()(t)}function IA(B){if(B===void 0)return"_unknown";B=B.replace(/[^a-zA-Z0-9_]/g,"$");var f=B.charCodeAt(0);return 48<=f&&57>=f?"_"+B:B}function dA(B,f){return B=IA(B),function(){return f.apply(this,arguments)}}var uA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],mA=[];function pA(B){var f=Error,C=dA(B,function(y){this.name=B,this.message=y,y=Error(y).stack,y!==void 0&&(this.stack=this.toString()+`
|
|
1525
|
+
`+y.replace(/^Error(:[^\n]*)?\n/,""))});return C.prototype=Object.create(f.prototype),C.prototype.constructor=C,C.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},C}var X=void 0;function P(B){throw new X(B)}var nA=B=>(B||P("Cannot use deleted val. handle = "+B),uA[B].value),tA=B=>{switch(B){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var f=mA.length?mA.pop():uA.length;return uA[f]={ga:1,value:B},f}},rA=void 0,AA=void 0;function eA(B){for(var f="";h[B];)f+=AA[h[B++]];return f}var gA=[];function lA(){for(;gA.length;){var B=gA.pop();B.M.$=!1,B.delete()}}var BA=void 0,EA={};function QA(B,f){for(f===void 0&&P("ptr should not be undefined");B.R;)f=B.ba(f),B=B.R;return f}var sA={};function yA(B){B=Wn(B);var f=eA(B);return XA(B),f}function bA(B,f){var C=sA[B];return C===void 0&&P(f+" has unknown type "+yA(B)),C}function wA(){}var hA=!1;function VA(B){--B.count.value,B.count.value===0&&(B.T?B.U.W(B.T):B.P.N.W(B.O))}function YA(B,f,C){return f===C?B:C.R===void 0?null:(B=YA(B,f,C.R),B===null?null:C.na(B))}var FA={};function Ht(B,f){return f=QA(B,f),EA[f]}var vA=void 0;function je(B){throw new vA(B)}function $e(B,f){return f.P&&f.O||je("makeClassHandle requires ptr and ptrType"),!!f.U!=!!f.T&&je("Both smartPtrType and smartPtr must be specified"),f.count={value:1},Ie(Object.create(B,{M:{value:f}}))}function Ie(B){return typeof FinalizationRegistry>"u"?(Ie=f=>f,B):(hA=new FinalizationRegistry(f=>{VA(f.M)}),Ie=f=>{var C=f.M;return C.T&&hA.register(f,{M:C},f),f},wA=f=>{hA.unregister(f)},Ie(B))}var At={};function Jt(B){for(;B.length;){var f=B.pop();B.pop()(f)}}function Ne(B){return this.fromWireType(D[B>>2])}var Be={},et={};function Ae(B,f,C){function y(J){J=C(J),J.length!==B.length&&je("Mismatched type converter count");for(var V=0;V<B.length;++V)WA(B[V],J[V])}B.forEach(function(J){et[J]=f});var x=Array(f.length),L=[],T=0;f.forEach((J,V)=>{sA.hasOwnProperty(J)?x[V]=sA[J]:(L.push(J),Be.hasOwnProperty(J)||(Be[J]=[]),Be[J].push(()=>{x[V]=sA[J],++T,T===L.length&&y(x)}))}),L.length===0&&y(x)}function Ot(B){switch(B){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+B)}}function WA(B,f,C={}){if(!("argPackAdvance"in f))throw new TypeError("registerType registeredInstance requires argPackAdvance");var y=f.name;if(B||P('type "'+y+'" must have a positive integer typeid pointer'),sA.hasOwnProperty(B)){if(C.ua)return;P("Cannot register type '"+y+"' twice")}sA[B]=f,delete et[B],Be.hasOwnProperty(B)&&(f=Be[B],delete Be[B],f.forEach(x=>x()))}function Kt(B){P(B.M.P.N.name+" instance already deleted")}function ee(){}function Vt(B,f,C){if(B[f].S===void 0){var y=B[f];B[f]=function(){return B[f].S.hasOwnProperty(arguments.length)||P("Function '"+C+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+B[f].S+")!"),B[f].S[arguments.length].apply(this,arguments)},B[f].S=[],B[f].S[y.Z]=y}}function bi(B,f){t.hasOwnProperty(B)?(P("Cannot register public name '"+B+"' twice"),Vt(t,B,B),t.hasOwnProperty(void 0)&&P("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),t[B].S[void 0]=f):t[B]=f}function Di(B,f,C,y,x,L,T,J){this.name=B,this.constructor=f,this.X=C,this.W=y,this.R=x,this.pa=L,this.ba=T,this.na=J,this.ja=[]}function Yt(B,f,C){for(;f!==C;)f.ba||P("Expected null or instance of "+C.name+", got an instance of "+f.name),B=f.ba(B),f=f.R;return B}function wi(B,f){return f===null?(this.ea&&P("null is not a valid "+this.name),0):(f.M||P('Cannot pass "'+Zt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),Yt(f.M.O,f.M.P.N,this.N))}function xi(B,f){if(f===null){if(this.ea&&P("null is not a valid "+this.name),this.da){var C=this.fa();return B!==null&&B.push(this.W,C),C}return 0}if(f.M||P('Cannot pass "'+Zt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&f.M.P.ca&&P("Cannot convert argument of type "+(f.M.U?f.M.U.name:f.M.P.name)+" to parameter type "+this.name),C=Yt(f.M.O,f.M.P.N,this.N),this.da)switch(f.M.T===void 0&&P("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:f.M.U===this?C=f.M.T:P("Cannot convert argument of type "+(f.M.U?f.M.U.name:f.M.P.name)+" to parameter type "+this.name);break;case 1:C=f.M.T;break;case 2:if(f.M.U===this)C=f.M.T;else{var y=f.clone();C=this.xa(C,tA(function(){y.delete()})),B!==null&&B.push(this.W,C)}break;default:P("Unsupporting sharing policy")}return C}function Mi(B,f){return f===null?(this.ea&&P("null is not a valid "+this.name),0):(f.M||P('Cannot pass "'+Zt(f)+'" as a '+this.name),f.M.O||P("Cannot pass deleted object as a pointer of type "+this.name),f.M.P.ca&&P("Cannot convert argument of type "+f.M.P.name+" to parameter type "+this.name),Yt(f.M.O,f.M.P.N,this.N))}function zA(B,f,C,y){this.name=B,this.N=f,this.ea=C,this.ca=y,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,f.R!==void 0?this.toWireType=xi:(this.toWireType=y?wi:Mi,this.V=null)}function Gi(B,f){t.hasOwnProperty(B)||je("Replacing nonexistant public symbol"),t[B]=f,t[B].Z=void 0}function Ni(B,f){var C=[];return function(){if(C.length=0,Object.assign(C,arguments),B.includes("j")){var y=t["dynCall_"+B];y=C&&C.length?y.apply(null,[f].concat(C)):y.call(null,f)}else y=U.get(f).apply(null,C);return y}}function kA(B,f){B=eA(B);var C=B.includes("j")?Ni(B,f):U.get(f);return typeof C!="function"&&P("unknown function pointer with signature "+B+": "+f),C}var On=void 0;function tt(B,f){function C(L){x[L]||sA[L]||(et[L]?et[L].forEach(C):(y.push(L),x[L]=!0))}var y=[],x={};throw f.forEach(C),new On(B+": "+y.map(yA).join([", "]))}function Wt(B,f,C,y,x){var L=f.length;2>L&&P("argTypes array size mismatch! Must at least get return value and 'this' types!");var T=f[1]!==null&&C!==null,J=!1;for(C=1;C<f.length;++C)if(f[C]!==null&&f[C].V===void 0){J=!0;break}var V=f[0].name!=="void",O=L-2,q=Array(O),oA=[],fA=[];return function(){if(arguments.length!==O&&P("function "+B+" called with "+arguments.length+" arguments, expected "+O+" args!"),fA.length=0,oA.length=T?2:1,oA[0]=x,T){var xA=f[1].toWireType(fA,this);oA[1]=xA}for(var CA=0;CA<O;++CA)q[CA]=f[CA+2].toWireType(fA,arguments[CA]),oA.push(q[CA]);if(CA=y.apply(null,oA),J)Jt(fA);else for(var SA=T?1:2;SA<f.length;SA++){var PA=SA===1?xA:q[SA-2];f[SA].V!==null&&f[SA].V(PA)}return xA=V?f[0].fromWireType(CA):void 0,xA}}function zt(B,f){for(var C=[],y=0;y<B;y++)C.push(p[f+4*y>>2]);return C}function Xt(B){4<B&&--uA[B].ga===0&&(uA[B]=void 0,mA.push(B))}function Zt(B){if(B===null)return"null";var f=typeof B;return f==="object"||f==="array"||f==="function"?B.toString():""+B}function Fi(B,f){switch(f){case 2:return function(C){return this.fromWireType(G[C>>2])};case 3:return function(C){return this.fromWireType(N[C>>3])};default:throw new TypeError("Unknown float type: "+B)}}function Si(B,f,C){switch(f){case 0:return C?function(y){return d[y]}:function(y){return h[y]};case 1:return C?function(y){return Q[y>>1]}:function(y){return m[y>>1]};case 2:return C?function(y){return D[y>>2]}:function(y){return p[y>>2]};default:throw new TypeError("Unknown integer type: "+B)}}function Ui(B,f){for(var C="",y=0;!(y>=f/2);++y){var x=Q[B+2*y>>1];if(x==0)break;C+=String.fromCharCode(x)}return C}function vi(B,f,C){if(C===void 0&&(C=2147483647),2>C)return 0;C-=2;var y=f;C=C<2*B.length?C/2:B.length;for(var x=0;x<C;++x)Q[f>>1]=B.charCodeAt(x),f+=2;return Q[f>>1]=0,f-y}function Ri(B){return 2*B.length}function Li(B,f){for(var C=0,y="";!(C>=f/4);){var x=D[B+4*C>>2];if(x==0)break;++C,65536<=x?(x-=65536,y+=String.fromCharCode(55296|x>>10,56320|x&1023)):y+=String.fromCharCode(x)}return y}function ki(B,f,C){if(C===void 0&&(C=2147483647),4>C)return 0;var y=f;C=y+C-4;for(var x=0;x<B.length;++x){var L=B.charCodeAt(x);if(55296<=L&&57343>=L){var T=B.charCodeAt(++x);L=65536+((L&1023)<<10)|T&1023}if(D[f>>2]=L,f+=4,f+4>C)break}return D[f>>2]=0,f-y}function Pi(B){for(var f=0,C=0;C<B.length;++C){var y=B.charCodeAt(C);55296<=y&&57343>=y&&++C,f+=4}return f}var Ti={};function Kn(B){var f=Ti[B];return f===void 0?eA(B):f}var nt=[];function Hi(B){var f=nt.length;return nt.push(B),f}function Ji(B,f){for(var C=Array(B),y=0;y<B;++y)C[y]=bA(p[f+4*y>>2],"parameter "+y);return C}var Vn=[],Oi=[null,[],[]];X=t.BindingError=pA("BindingError"),t.count_emval_handles=function(){for(var B=0,f=5;f<uA.length;++f)uA[f]!==void 0&&++B;return B},t.get_first_emval=function(){for(var B=5;B<uA.length;++B)if(uA[B]!==void 0)return uA[B];return null},rA=t.PureVirtualError=pA("PureVirtualError");for(var Yn=Array(256),rt=0;256>rt;++rt)Yn[rt]=String.fromCharCode(rt);AA=Yn,t.getInheritedInstanceCount=function(){return Object.keys(EA).length},t.getLiveInheritedInstances=function(){var B=[],f;for(f in EA)EA.hasOwnProperty(f)&&B.push(EA[f]);return B},t.flushPendingDeletes=lA,t.setDelayFunction=function(B){BA=B,gA.length&&BA&&BA(lA)},vA=t.InternalError=pA("InternalError"),ee.prototype.isAliasOf=function(B){if(!(this instanceof ee&&B instanceof ee))return!1;var f=this.M.P.N,C=this.M.O,y=B.M.P.N;for(B=B.M.O;f.R;)C=f.ba(C),f=f.R;for(;y.R;)B=y.ba(B),y=y.R;return f===y&&C===B},ee.prototype.clone=function(){if(this.M.O||Kt(this),this.M.aa)return this.M.count.value+=1,this;var B=Ie,f=Object,C=f.create,y=Object.getPrototypeOf(this),x=this.M;return B=B(C.call(f,y,{M:{value:{count:x.count,$:x.$,aa:x.aa,O:x.O,P:x.P,T:x.T,U:x.U}}})),B.M.count.value+=1,B.M.$=!1,B},ee.prototype.delete=function(){this.M.O||Kt(this),this.M.$&&!this.M.aa&&P("Object already scheduled for deletion"),wA(this),VA(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},ee.prototype.isDeleted=function(){return!this.M.O},ee.prototype.deleteLater=function(){return this.M.O||Kt(this),this.M.$&&!this.M.aa&&P("Object already scheduled for deletion"),gA.push(this),gA.length===1&&BA&&BA(lA),this.M.$=!0,this},zA.prototype.qa=function(B){return this.ka&&(B=this.ka(B)),B},zA.prototype.ha=function(B){this.W&&this.W(B)},zA.prototype.argPackAdvance=8,zA.prototype.readValueFromPointer=Ne,zA.prototype.deleteObject=function(B){B!==null&&B.delete()},zA.prototype.fromWireType=function(B){function f(){return this.da?$e(this.N.X,{P:this.wa,O:C,U:this,T:B}):$e(this.N.X,{P:this,O:B})}var C=this.qa(B);if(!C)return this.ha(B),null;var y=Ht(this.N,C);if(y!==void 0)return y.M.count.value===0?(y.M.O=C,y.M.T=B,y.clone()):(y=y.clone(),this.ha(B),y);if(y=this.N.pa(C),y=FA[y],!y)return f.call(this);y=this.ca?y.la:y.pointerType;var x=YA(C,this.N,y.N);return x===null?f.call(this):this.da?$e(y.N.X,{P:y,O:x,U:this,T:B}):$e(y.N.X,{P:y,O:x})},On=t.UnboundTypeError=pA("UnboundTypeError");var Ki=typeof atob=="function"?atob:function(B){var f="",C=0;B=B.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(B.charAt(C++)),x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(B.charAt(C++)),L="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(B.charAt(C++)),T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(B.charAt(C++));y=y<<2|x>>4,x=(x&15)<<4|L>>2;var J=(L&3)<<6|T;f+=String.fromCharCode(y),L!==64&&(f+=String.fromCharCode(x)),T!==64&&(f+=String.fromCharCode(J))}while(C<B.length);return f},Vi={l:function(B,f,C,y){z("Assertion failed: "+(B?I(h,B):"")+", at: "+[f?f?I(h,f):"":"unknown filename",C,y?y?I(h,y):"":"unknown function"])},q:function(B,f,C){B=eA(B),f=bA(f,"wrapper"),C=nA(C);var y=[].slice,x=f.N,L=x.X,T=x.R.X,J=x.R.constructor;B=dA(B,function(){x.R.ja.forEach(function(O){if(this[O]===T[O])throw new rA("Pure virtual function "+O+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:L}),this.__construct.apply(this,y.call(arguments))}),L.__construct=function(){this===L&&P("Pass correct 'this' to __construct");var O=J.implement.apply(void 0,[this].concat(y.call(arguments)));wA(O);var q=O.M;O.notifyOnDestruction(),q.aa=!0,Object.defineProperties(this,{M:{value:q}}),Ie(this),O=q.O,O=QA(x,O),EA.hasOwnProperty(O)?P("Tried to register registered instance: "+O):EA[O]=this},L.__destruct=function(){this===L&&P("Pass correct 'this' to __destruct"),wA(this);var O=this.M.O;O=QA(x,O),EA.hasOwnProperty(O)?delete EA[O]:P("Tried to unregister unregistered instance: "+O)},B.prototype=Object.create(L);for(var V in C)B.prototype[V]=C[V];return tA(B)},j:function(B){var f=At[B];delete At[B];var C=f.fa,y=f.W,x=f.ia,L=x.map(T=>T.ta).concat(x.map(T=>T.za));Ae([B],L,T=>{var J={};return x.forEach((V,O)=>{var q=T[O],oA=V.ra,fA=V.sa,xA=T[O+x.length],CA=V.ya,SA=V.Aa;J[V.oa]={read:PA=>q.fromWireType(oA(fA,PA)),write:(PA,Fe)=>{var ZA=[];CA(SA,PA,xA.toWireType(ZA,Fe)),Jt(ZA)}}}),[{name:f.name,fromWireType:function(V){var O={},q;for(q in J)O[q]=J[q].read(V);return y(V),O},toWireType:function(V,O){for(var q in J)if(!(q in O))throw new TypeError('Missing field: "'+q+'"');var oA=C();for(q in J)J[q].write(oA,O[q]);return V!==null&&V.push(y,oA),oA},argPackAdvance:8,readValueFromPointer:Ne,V:y}]})},v:function(){},B:function(B,f,C,y,x){var L=Ot(C);f=eA(f),WA(B,{name:f,fromWireType:function(T){return!!T},toWireType:function(T,J){return J?y:x},argPackAdvance:8,readValueFromPointer:function(T){if(C===1)var J=d;else if(C===2)J=Q;else if(C===4)J=D;else throw new TypeError("Unknown boolean type size: "+f);return this.fromWireType(J[T>>L])},V:null})},f:function(B,f,C,y,x,L,T,J,V,O,q,oA,fA){q=eA(q),L=kA(x,L),J&&(J=kA(T,J)),O&&(O=kA(V,O)),fA=kA(oA,fA);var xA=IA(q);bi(xA,function(){tt("Cannot construct "+q+" due to unbound types",[y])}),Ae([B,f,C],y?[y]:[],function(CA){if(CA=CA[0],y)var SA=CA.N,PA=SA.X;else PA=ee.prototype;CA=dA(xA,function(){if(Object.getPrototypeOf(this)!==Fe)throw new X("Use 'new' to construct "+q);if(ZA.Y===void 0)throw new X(q+" has no accessible constructor");var Zn=ZA.Y[arguments.length];if(Zn===void 0)throw new X("Tried to invoke ctor of "+q+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(ZA.Y).toString()+") parameters instead!");return Zn.apply(this,arguments)});var Fe=Object.create(PA,{constructor:{value:CA}});CA.prototype=Fe;var ZA=new Di(q,CA,Fe,fA,SA,L,J,O);SA=new zA(q,ZA,!0,!1),PA=new zA(q+"*",ZA,!1,!1);var Xn=new zA(q+" const*",ZA,!1,!0);return FA[B]={pointerType:PA,la:Xn},Gi(xA,CA),[SA,PA,Xn]})},d:function(B,f,C,y,x,L,T){var J=zt(C,y);f=eA(f),L=kA(x,L),Ae([],[B],function(V){function O(){tt("Cannot call "+q+" due to unbound types",J)}V=V[0];var q=V.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]);var oA=V.N.constructor;return oA[f]===void 0?(O.Z=C-1,oA[f]=O):(Vt(oA,f,q),oA[f].S[C-1]=O),Ae([],J,function(fA){return fA=Wt(q,[fA[0],null].concat(fA.slice(1)),null,L,T),oA[f].S===void 0?(fA.Z=C-1,oA[f]=fA):oA[f].S[C-1]=fA,[]}),[]})},p:function(B,f,C,y,x,L){0<f||z();var T=zt(f,C);x=kA(y,x),Ae([],[B],function(J){J=J[0];var V="constructor "+J.name;if(J.N.Y===void 0&&(J.N.Y=[]),J.N.Y[f-1]!==void 0)throw new X("Cannot register multiple constructors with identical number of parameters ("+(f-1)+") for class '"+J.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return J.N.Y[f-1]=()=>{tt("Cannot construct "+J.name+" due to unbound types",T)},Ae([],T,function(O){return O.splice(1,0,null),J.N.Y[f-1]=Wt(V,O,null,x,L),[]}),[]})},a:function(B,f,C,y,x,L,T,J){var V=zt(C,y);f=eA(f),L=kA(x,L),Ae([],[B],function(O){function q(){tt("Cannot call "+oA+" due to unbound types",V)}O=O[0];var oA=O.name+"."+f;f.startsWith("@@")&&(f=Symbol[f.substring(2)]),J&&O.N.ja.push(f);var fA=O.N.X,xA=fA[f];return xA===void 0||xA.S===void 0&&xA.className!==O.name&&xA.Z===C-2?(q.Z=C-2,q.className=O.name,fA[f]=q):(Vt(fA,f,oA),fA[f].S[C-2]=q),Ae([],V,function(CA){return CA=Wt(oA,CA,O,L,T),fA[f].S===void 0?(CA.Z=C-2,fA[f]=CA):fA[f].S[C-2]=CA,[]}),[]})},A:function(B,f){f=eA(f),WA(B,{name:f,fromWireType:function(C){var y=nA(C);return Xt(C),y},toWireType:function(C,y){return tA(y)},argPackAdvance:8,readValueFromPointer:Ne,V:null})},n:function(B,f,C){C=Ot(C),f=eA(f),WA(B,{name:f,fromWireType:function(y){return y},toWireType:function(y,x){return x},argPackAdvance:8,readValueFromPointer:Fi(f,C),V:null})},e:function(B,f,C,y,x){f=eA(f),x===-1&&(x=4294967295),x=Ot(C);var L=J=>J;if(y===0){var T=32-8*C;L=J=>J<<T>>>T}C=f.includes("unsigned")?function(J,V){return V>>>0}:function(J,V){return V},WA(B,{name:f,fromWireType:L,toWireType:C,argPackAdvance:8,readValueFromPointer:Si(f,x,y!==0),V:null})},b:function(B,f,C){function y(L){L>>=2;var T=p;return new x(E,T[L+1],T[L])}var x=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][f];C=eA(C),WA(B,{name:C,fromWireType:y,argPackAdvance:8,readValueFromPointer:y},{ua:!0})},o:function(B,f){f=eA(f);var C=f==="std::string";WA(B,{name:f,fromWireType:function(y){var x=p[y>>2],L=y+4;if(C)for(var T=L,J=0;J<=x;++J){var V=L+J;if(J==x||h[V]==0){if(T=T?I(h,T,V-T):"",O===void 0)var O=T;else O+="\0",O+=T;T=V+1}}else{for(O=Array(x),J=0;J<x;++J)O[J]=String.fromCharCode(h[L+J]);O=O.join("")}return XA(y),O},toWireType:function(y,x){x instanceof ArrayBuffer&&(x=new Uint8Array(x));var L,T=typeof x=="string";if(T||x instanceof Uint8Array||x instanceof Uint8ClampedArray||x instanceof Int8Array||P("Cannot pass non-string to std::string"),C&&T){var J=0;for(L=0;L<x.length;++L){var V=x.charCodeAt(L);127>=V?J++:2047>=V?J+=2:55296<=V&&57343>=V?(J+=4,++L):J+=3}L=J}else L=x.length;if(J=qt(4+L+1),V=J+4,p[J>>2]=L,C&&T){if(T=V,V=L+1,L=h,0<V){V=T+V-1;for(var O=0;O<x.length;++O){var q=x.charCodeAt(O);if(55296<=q&&57343>=q){var oA=x.charCodeAt(++O);q=65536+((q&1023)<<10)|oA&1023}if(127>=q){if(T>=V)break;L[T++]=q}else{if(2047>=q){if(T+1>=V)break;L[T++]=192|q>>6}else{if(65535>=q){if(T+2>=V)break;L[T++]=224|q>>12}else{if(T+3>=V)break;L[T++]=240|q>>18,L[T++]=128|q>>12&63}L[T++]=128|q>>6&63}L[T++]=128|q&63}}L[T]=0}}else if(T)for(T=0;T<L;++T)O=x.charCodeAt(T),255<O&&(XA(V),P("String has UTF-16 code units that do not fit in 8 bits")),h[V+T]=O;else for(T=0;T<L;++T)h[V+T]=x[T];return y!==null&&y.push(XA,J),J},argPackAdvance:8,readValueFromPointer:Ne,V:function(y){XA(y)}})},i:function(B,f,C){if(C=eA(C),f===2)var y=Ui,x=vi,L=Ri,T=()=>m,J=1;else f===4&&(y=Li,x=ki,L=Pi,T=()=>p,J=2);WA(B,{name:C,fromWireType:function(V){for(var O=p[V>>2],q=T(),oA,fA=V+4,xA=0;xA<=O;++xA){var CA=V+4+xA*f;(xA==O||q[CA>>J]==0)&&(fA=y(fA,CA-fA),oA===void 0?oA=fA:(oA+="\0",oA+=fA),fA=CA+f)}return XA(V),oA},toWireType:function(V,O){typeof O!="string"&&P("Cannot pass non-string to C++ string type "+C);var q=L(O),oA=qt(4+q+f);return p[oA>>2]=q>>J,x(O,oA+4,q+f),V!==null&&V.push(XA,oA),oA},argPackAdvance:8,readValueFromPointer:Ne,V:function(V){XA(V)}})},k:function(B,f,C,y,x,L){At[B]={name:eA(f),fa:kA(C,y),W:kA(x,L),ia:[]}},h:function(B,f,C,y,x,L,T,J,V,O){At[B].ia.push({oa:eA(f),ta:C,ra:kA(y,x),sa:L,za:T,ya:kA(J,V),Aa:O})},C:function(B,f){f=eA(f),WA(B,{va:!0,name:f,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(B,f,C,y,x){B=nt[B],f=nA(f),C=Kn(C);var L=[];return p[y>>2]=tA(L),B(f,C,L,x)},t:function(B,f,C,y){B=nt[B],f=nA(f),C=Kn(C),B(f,C,null,y)},g:Xt,m:function(B,f){var C=Ji(B,f),y=C[0];f=y.name+"_$"+C.slice(1).map(function(T){return T.name}).join("_")+"$";var x=Vn[f];if(x!==void 0)return x;var L=Array(B-1);return x=Hi((T,J,V,O)=>{for(var q=0,oA=0;oA<B-1;++oA)L[oA]=C[oA+1].readValueFromPointer(O+q),q+=C[oA+1].argPackAdvance;for(T=T[J].apply(T,L),oA=0;oA<B-1;++oA)C[oA+1].ma&&C[oA+1].ma(L[oA]);if(!y.va)return y.toWireType(V,T)}),Vn[f]=x},D:function(B){4<B&&(uA[B].ga+=1)},r:function(B){var f=nA(B);Jt(f),Xt(B)},c:function(){z("")},x:function(B,f,C){h.copyWithin(B,f,f+C)},w:function(B){var f=h.length;if(B>>>=0,2147483648<B)return!1;for(var C=1;4>=C;C*=2){var y=f*(1+.2/C);y=Math.min(y,B+100663296);var x=Math;y=Math.max(B,y),x=x.min.call(x,2147483648,y+(65536-y%65536)%65536);A:{try{u.grow(x-E.byteLength+65535>>>16),w();var L=1;break A}catch{}L=void 0}if(L)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(B,f,C,y){for(var x=0,L=0;L<C;L++){var T=p[f>>2],J=p[f+4>>2];f+=8;for(var V=0;V<J;V++){var O=h[T+V],q=Oi[B];O===0||O===10?((B===1?a:s)(I(q,0)),q.length=0):q.push(O)}x+=J}return p[y>>2]=x,0}};(function(){function B(x){t.asm=x.exports,u=t.asm.E,w(),U=t.asm.J,M.unshift(t.asm.F),S--,t.monitorRunDependencies&&t.monitorRunDependencies(S),S==0&&(K!==null&&(clearInterval(K),K=null),F&&(x=F,F=null,x()))}function f(x){B(x.instance)}function C(x){return Y().then(function(L){return WebAssembly.instantiate(L,y)}).then(function(L){return L}).then(x,function(L){s("failed to asynchronously prepare wasm: "+L),z(L)})}var y={a:Vi};if(S++,t.monitorRunDependencies&&t.monitorRunDependencies(S),t.instantiateWasm)try{return t.instantiateWasm(y,B)}catch(x){s("Module.instantiateWasm callback failed with error: "+x),r(x)}return(function(){return g||typeof WebAssembly.instantiateStreaming!="function"||Z($)||typeof fetch!="function"?C(f):fetch($,{credentials:"same-origin"}).then(function(x){return WebAssembly.instantiateStreaming(x,y).then(f,function(L){return s("wasm streaming compile failed: "+L),s("falling back to ArrayBuffer instantiation"),C(f)})})})().catch(r),{}})(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.F).apply(null,arguments)};var Wn=t.___getTypeName=function(){return(Wn=t.___getTypeName=t.asm.G).apply(null,arguments)};t.__embind_initialize_bindings=function(){return(t.__embind_initialize_bindings=t.asm.H).apply(null,arguments)};var qt=t._malloc=function(){return(qt=t._malloc=t.asm.I).apply(null,arguments)},XA=t._free=function(){return(XA=t._free=t.asm.K).apply(null,arguments)};t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.L).apply(null,arguments)};var it;F=function B(){it||zn(),it||(F=B)};function zn(){function B(){if(!it&&(it=!0,t.calledRun=!0,!c)){if(j(M),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;){var f=t.postRun.shift();v.unshift(f)}j(v)}}if(!(0<S)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)R();j(b),0<S||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),B()},1)):B())}}if(t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();return zn(),e.ready})})(),ei=Ca;k();k();var jA=(function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A})({}),ti=(function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A})({}),ni=(function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A})({}),qe=(function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A})({}),Fn=(function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A})({}),$A=(function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A})({}),xe=(function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A})({}),Qa=(function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A})({}),Lt=(function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A})({}),Sn=(function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A})({}),Me=(function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A})({}),Ge=(function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A})({}),Un=(function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A})({}),ri=(function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A})({}),vn=(function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A})({}),Rn=(function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A})({}),TA=(function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A})({}),Ln=(function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A})({}),ma={ALIGN_AUTO:jA.Auto,ALIGN_FLEX_START:jA.FlexStart,ALIGN_CENTER:jA.Center,ALIGN_FLEX_END:jA.FlexEnd,ALIGN_STRETCH:jA.Stretch,ALIGN_BASELINE:jA.Baseline,ALIGN_SPACE_BETWEEN:jA.SpaceBetween,ALIGN_SPACE_AROUND:jA.SpaceAround,ALIGN_SPACE_EVENLY:jA.SpaceEvenly,BOX_SIZING_BORDER_BOX:ti.BorderBox,BOX_SIZING_CONTENT_BOX:ti.ContentBox,DIMENSION_WIDTH:ni.Width,DIMENSION_HEIGHT:ni.Height,DIRECTION_INHERIT:qe.Inherit,DIRECTION_LTR:qe.LTR,DIRECTION_RTL:qe.RTL,DISPLAY_FLEX:Fn.Flex,DISPLAY_NONE:Fn.None,DISPLAY_CONTENTS:Fn.Contents,EDGE_LEFT:$A.Left,EDGE_TOP:$A.Top,EDGE_RIGHT:$A.Right,EDGE_BOTTOM:$A.Bottom,EDGE_START:$A.Start,EDGE_END:$A.End,EDGE_HORIZONTAL:$A.Horizontal,EDGE_VERTICAL:$A.Vertical,EDGE_ALL:$A.All,ERRATA_NONE:xe.None,ERRATA_STRETCH_FLEX_BASIS:xe.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:xe.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:xe.AbsolutePercentAgainstInnerSize,ERRATA_ALL:xe.All,ERRATA_CLASSIC:xe.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:Qa.WebFlexBasis,FLEX_DIRECTION_COLUMN:Lt.Column,FLEX_DIRECTION_COLUMN_REVERSE:Lt.ColumnReverse,FLEX_DIRECTION_ROW:Lt.Row,FLEX_DIRECTION_ROW_REVERSE:Lt.RowReverse,GUTTER_COLUMN:Sn.Column,GUTTER_ROW:Sn.Row,GUTTER_ALL:Sn.All,JUSTIFY_FLEX_START:Me.FlexStart,JUSTIFY_CENTER:Me.Center,JUSTIFY_FLEX_END:Me.FlexEnd,JUSTIFY_SPACE_BETWEEN:Me.SpaceBetween,JUSTIFY_SPACE_AROUND:Me.SpaceAround,JUSTIFY_SPACE_EVENLY:Me.SpaceEvenly,LOG_LEVEL_ERROR:Ge.Error,LOG_LEVEL_WARN:Ge.Warn,LOG_LEVEL_INFO:Ge.Info,LOG_LEVEL_DEBUG:Ge.Debug,LOG_LEVEL_VERBOSE:Ge.Verbose,LOG_LEVEL_FATAL:Ge.Fatal,MEASURE_MODE_UNDEFINED:Un.Undefined,MEASURE_MODE_EXACTLY:Un.Exactly,MEASURE_MODE_AT_MOST:Un.AtMost,NODE_TYPE_DEFAULT:ri.Default,NODE_TYPE_TEXT:ri.Text,OVERFLOW_VISIBLE:vn.Visible,OVERFLOW_HIDDEN:vn.Hidden,OVERFLOW_SCROLL:vn.Scroll,POSITION_TYPE_STATIC:Rn.Static,POSITION_TYPE_RELATIVE:Rn.Relative,POSITION_TYPE_ABSOLUTE:Rn.Absolute,UNIT_UNDEFINED:TA.Undefined,UNIT_POINT:TA.Point,UNIT_PERCENT:TA.Percent,UNIT_AUTO:TA.Auto,WRAP_NO_WRAP:Ln.NoWrap,WRAP_WRAP:Ln.Wrap,WRAP_WRAP_REVERSE:Ln.WrapReverse},ii=ma;function kn(A){function e(r,i,o){let a=r[i];r[i]=function(){for(var s=arguments.length,g=new Array(s),l=0;l<s;l++)g[l]=arguments[l];return o.call(this,a,...g)}}for(let r of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let i={[TA.Point]:A.Node.prototype[r],[TA.Percent]:A.Node.prototype[`${r}Percent`],[TA.Auto]:A.Node.prototype[`${r}Auto`]};e(A.Node.prototype,r,function(o){for(var a=arguments.length,s=new Array(a>1?a-1:0),g=1;g<a;g++)s[g-1]=arguments[g];let l=s.pop(),u,c;if(l==="auto")u=TA.Auto,c=void 0;else if(typeof l=="object")u=l.unit,c=l.valueOf();else if(u=typeof l=="string"&&l.endsWith("%")?TA.Percent:TA.Point,c=parseFloat(l),l!==void 0&&!Number.isNaN(l)&&Number.isNaN(c))throw new Error(`Invalid value ${l} for ${r}`);if(!i[u])throw new Error(`Failed to execute "${r}": Unsupported unit '${l}'`);return c!==void 0?i[u].call(this,...s,c):i[u].call(this,...s)})}function t(r){return A.MeasureCallback.implement({measure:function(){let{width:i,height:o}=r(...arguments);return{width:i??NaN,height:o??NaN}}})}e(A.Node.prototype,"setMeasureFunc",function(r,i){return i?r.call(this,t(i)):this.unsetMeasureFunc()});function n(r){return A.DirtiedCallback.implement({dirtied:r})}return e(A.Node.prototype,"setDirtiedFunc",function(r,i){r.call(this,n(i))}),e(A.Config.prototype,"free",function(){A.Config.destroy(this)}),e(A.Node,"create",(r,i)=>i?A.Node.createWithConfig(i):A.Node.createDefault()),e(A.Node.prototype,"free",function(){A.Node.destroy(this)}),e(A.Node.prototype,"freeRecursive",function(){for(let r=0,i=this.getChildCount();r<i;++r)this.getChild(0).freeRecursive();this.free()}),e(A.Node.prototype,"calculateLayout",function(r){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:qe.LTR;return r.call(this,i,o,a)}),{Config:A.Config,Node:A.Node,...ii}}async function oi(){return kn(await ei())}var kt=null;async function ha(){return kt||(kt=await oi(),kt)}function pa(A,e){switch(e){case"center":return A.JUSTIFY_CENTER;case"end":return A.JUSTIFY_FLEX_END;case"space-between":return A.JUSTIFY_SPACE_BETWEEN;case"space-around":return A.JUSTIFY_SPACE_AROUND;default:return A.JUSTIFY_FLEX_START}}function ya(A,e){switch(e){case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;default:return A.ALIGN_FLEX_START}}function ba(A,e){switch(e){case"start":return A.ALIGN_FLEX_START;case"center":return A.ALIGN_CENTER;case"end":return A.ALIGN_FLEX_END;case"stretch":return A.ALIGN_STRETCH;case"baseline":return A.ALIGN_BASELINE;default:return A.ALIGN_AUTO}}function ce(A){if(A!=null){if(typeof A=="number"||typeof A=="string")return A;if(typeof A=="object"){if("unit"in A&&typeof A.unit=="number")return A;let e=Number(A);if(!Number.isNaN(e))return e}}}function Da(A){switch(A.kind){case"flex":return A.dir??"row";case"block":return"column";case"box":return A.children&&A.children.length>0?"column":null;default:return null}}function wa(A){if(A.kind==="block")return"fill"}function xa(A){let e=0;if(A.kind==="flex"||A.kind==="block"){let o=ce(A.gap);e=typeof o=="number"?o:0}let t=0;if(A.kind==="flex"||A.kind==="block"||A.kind==="box"||A.kind==="text"){let o=ce(A.padding);t=typeof o=="number"?o:0}let n="start";A.kind==="flex"&&(n=A.justify??"start");let r="start";(A.kind==="flex"||A.kind==="block")&&(r=A.align??"start");let i=!1;return A.kind==="flex"&&(i=typeof A.wrap=="boolean"?A.wrap:!1),{gap:e,padding:t,justify:n,align:r,wrap:i}}function _e(A){let e=A;return e.position==="absolute"||e.position===void 0&&(e.x!==void 0||e.y!==void 0)}function Ma(A){return"children"in A&&A.children?A.children.filter(e=>!_e(e)):[]}function Ga(A){return"children"in A&&A.children?A.children.filter(e=>_e(e)):[]}function si(A,e,t,n,r){let i=e,o=A.Node.create(),a=Da(i),s=a!==null,g=[];if(_e(i)){o.setPositionType(A.POSITION_TYPE_ABSOLUTE);let Q=ce(i.x),m=ce(i.y);Q!==void 0&&o.setPosition(A.EDGE_LEFT,Q),m!==void 0&&o.setPosition(A.EDGE_TOP,m)}else o.setPositionType(A.POSITION_TYPE_RELATIVE);let u=ce(i.grow);u!==void 0&&o.setFlexGrow(typeof u=="number"?u:parseFloat(u));let c=ce(i.flexShrink);c!==void 0?o.setFlexShrink(typeof c=="number"?c:parseFloat(c)):o.setFlexShrink(r!==null?1:0),i.flexBasis!==void 0&&o.setFlexBasis(i.flexBasis),i.alignSelf!==void 0&&o.setAlignSelf(ba(A,i.alignSelf));let I=i.width??wa(i),E=i.height,d=r==="row",h=r==="column";if(ai(o,"width",I,t?.width,d),ai(o,"height",E,t?.height,h),s){let Q=xa(i);o.setFlexDirection(a==="row"?A.FLEX_DIRECTION_ROW:A.FLEX_DIRECTION_COLUMN),o.setJustifyContent(pa(A,Q.justify)),o.setAlignItems(ya(A,Q.align)),o.setFlexWrap(Q.wrap?A.WRAP_WRAP:A.WRAP_NO_WRAP),Q.padding>0&&o.setPadding(A.EDGE_ALL,Q.padding),Q.gap>0&&o.setGap(A.GUTTER_ALL,Q.gap);let m=Ma(i),D=Ga(i),p=[...m,...D];for(let G=0;G<p.length;G++){let N=si(A,p[G],void 0,n,_e(i)?null:a);o.insertChild(N.yogaNode,G),g.push(N)}}else if(i.kind==="text"||i.kind==="media"&&i.dataType==="Caption")o.setMeasureFunc((Q,m,D,p)=>{let G;(m===1||m===2)&&(G=Q);let N=n?.(i,G)??{width:0,height:0},w=N.width,U=N.height;return m===1&&(w=Q),p===1&&(U=D),{width:w,height:U}});else{let Q=n?.(i)??null;if(Q){let m=i.aspectRatio!==void 0,D=i.kind==="media"&&i.dataType==="Caption",p=Q.height>0?Q.width/Q.height:1;i.kind==="media"&&!D&&!m&&o.setAspectRatio(p);let G=I===void 0||I==="auto"||I==="fit",N=E===void 0||E==="auto"||E==="fit";if(G&&N){let w=i.aspectRatio??(i.kind==="media"?p:void 0)??1;o.setMeasureFunc((U,b,M,v)=>{let R=Q.width,S=Q.height;if(b===1&&v===1)R=U,S=M;else if(b===1)R=U,S=w>0?Math.round(U/w):Q.height;else if(v===1)S=M,R=w>0?Math.round(M*w):Q.width;else if(b===2&&v===2){let K=Math.min(1,U/Q.width,M/Q.height);R=Math.round(Q.width*K),S=Math.round(Q.height*K)}else b===2?Q.width>U&&(R=U,S=w>0?Math.round(U/w):Q.height):v===2&&Q.height>M&&(S=M,R=w>0?Math.round(M*w):Q.width);return{width:R,height:S}})}else if(G){let w=i.aspectRatio??(i.kind==="media"?p:void 0);(w===void 0||w<=0)&&o.setWidth(Q.width)}else if(N){let w=i.aspectRatio??(i.kind==="media"?p:void 0);(w===void 0||w<=0)&&o.setHeight(Q.height)}}}return{yogaNode:o,layoutNode:i,children:g}}function ai(A,e,t,n,r){if(t===void 0||t==="auto"||t==="fit")return;let i=ce(t);if(typeof i=="number"){e==="width"?A.setWidth(i):A.setHeight(i);return}if(i==="fill"){if(r){A.getFlexGrow()===0&&A.setFlexGrow(1),A.setFlexBasis(0);return}n!==void 0?e==="width"?A.setWidth(n):A.setHeight(n):e==="width"?A.setWidthPercent(100):A.setHeightPercent(100)}}function gi(A,e,t,n,r){let i=A.yogaNode.getComputedLayout(),o=e+i.left,a=t+i.top,s=i.width,g=i.height,l=A.layoutNode;_e(l)||(o+=Number(l.x??0),a+=Number(l.y??0)),n[A.layoutNode.id]={x:Math.round(o*1e3)/1e3,y:Math.round(a*1e3)/1e3,width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3},r[A.layoutNode.id]={width:Math.round(s*1e3)/1e3,height:Math.round(g*1e3)/1e3};for(let u of A.children)gi(u,o,a,n,r)}function li(A){for(let e of A.children)li(e);A.yogaNode.free()}function Na(A,e){let{layout:t,viewport:n,measure:r}=e,i={},o={};for(let a of t){let s=A.Node.create();s.setWidth(n.width),s.setHeight(n.height),s.setFlexDirection(A.FLEX_DIRECTION_COLUMN);let g=si(A,a,{width:n.width,height:n.height},r,null);s.insertChild(g.yogaNode,0),s.calculateLayout(n.width,n.height);let l=g.yogaNode.getComputedLayout(),u=a.position==="absolute"||a.position===void 0&&(a.x!==void 0||a.y!==void 0),c=u?l.left:Number(a.x??0),I=u?l.top:Number(a.y??0);i[a.id]={x:Math.round(c*1e3)/1e3,y:Math.round(I*1e3)/1e3,width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3},o[a.id]={width:Math.round(l.width*1e3)/1e3,height:Math.round(l.height*1e3)/1e3};for(let E of g.children)gi(E,c,I,i,o);li(g),s.free()}return{rects:i,sizes:o}}async function vu(A){let e=await ha();return Na(e,A)}k();k();var Fa=/-?(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?/gi,Sa=/([MmLlHhVvCcSsQqTtAaZz])([^MmLlHhVvCcSsQqTtAaZz]*)/g;function ui(A){let e=[],t=[],n=0,r=0,i=0,o=0,a=0,s=0,g="",l=u=>{t.length>1&&e.push({pts:t,closed:u}),t=[]};for(let u of A.matchAll(Sa)){let c=u[1],I=(u[2].match(Fa)??[]).map(Number),E=c===c.toLowerCase(),d=c.toUpperCase(),h=0,Q=p=>{let G=I.slice(h,h+p);return h+=p,G},m=p=>h+p<=I.length;if(d==="Z"){n=i,r=o,l(!0),t=[[n,r]],g=d;continue}let D=!0;for(;m(d==="H"||d==="V"?1:d==="A"?7:d==="C"?6:d==="S"||d==="Q"?4:2);){if(d==="M"){let[p,G]=Q(2);n=E?n+p:p,r=E?r+G:G,D?(l(!1),i=n,o=r,t=[[n,r]]):t.push([n,r])}else if(d==="L"||d==="T"){let[p,G]=Q(2),N=E?n+p:p,w=E?r+G:G;if(d==="T"){let U=g==="Q"||g==="T"?2*n-a:n,b=g==="Q"||g==="T"?2*r-s:r;ci(t,n,r,U,b,N,w),a=U,s=b}else t.push([N,w]);n=N,r=w}else if(d==="H"){let[p]=Q(1);n=E?n+p:p,t.push([n,r])}else if(d==="V"){let[p]=Q(1);r=E?r+p:p,t.push([n,r])}else if(d==="C"||d==="S"){let p,G;if(d==="C"){let[K,F]=Q(2);p=E?n+K:K,G=E?r+F:F}else p=g==="C"||g==="S"?2*n-a:n,G=g==="C"||g==="S"?2*r-s:r;let[N,w,U,b]=Q(4),M=E?n+N:N,v=E?r+w:w,R=E?n+U:U,S=E?r+b:b;for(let K=1;K<=16;K++){let F=K/16,z=1-F;t.push([z*z*z*n+3*z*z*F*p+3*z*F*F*M+F*F*F*R,z*z*z*r+3*z*z*F*G+3*z*F*F*v+F*F*F*S])}a=M,s=v,n=R,r=S}else if(d==="Q"){let[p,G,N,w]=Q(4),U=E?n+p:p,b=E?r+G:G,M=E?n+N:N,v=E?r+w:w;ci(t,n,r,U,b,M,v),a=U,s=b,n=M,r=v}else if(d==="A"){let[p,G,N,w,U,b,M]=Q(7),v=E?n+b:b,R=E?r+M:M;Ua(t,n,r,p,G,N,w!==0,U!==0,v,R),n=v,r=R}D=!1,g=d,d==="M"&&(g="L")}g=d}return l(!1),e}function ci(A,e,t,n,r,i,o){for(let a=1;a<=16;a++){let s=a/16,g=1-s;A.push([g*g*e+2*g*s*n+s*s*i,g*g*t+2*g*s*r+s*s*o])}}function Ua(A,e,t,n,r,i,o,a,s,g){let l=Math.abs(n),u=Math.abs(r);if(l===0||u===0){A.push([s,g]);return}let c=i*Math.PI/180,I=Math.cos(c),E=Math.sin(c),d=(e-s)/2,h=(t-g)/2,Q=I*d+E*h,m=-E*d+I*h,D=Q*Q/(l*l)+m*m/(u*u);D>1&&(l*=Math.sqrt(D),u*=Math.sqrt(D));let p=l*l*u*u-l*l*m*m-u*u*Q*Q,G=l*l*m*m+u*u*Q*Q,N=Math.sqrt(Math.max(0,p/G));o===a&&(N=-N);let w=N*l*m/u,U=-N*u*Q/l,b=I*w-E*U+(e+s)/2,M=E*w+I*U+(t+g)/2,v=(F,z,Z,$)=>Math.atan2(F*$-z*Z,F*Z+z*$),R=v(1,0,(Q-w)/l,(m-U)/u),S=v((Q-w)/l,(m-U)/u,(-Q-w)/l,(-m-U)/u);!a&&S>0&&(S-=2*Math.PI),a&&S<0&&(S+=2*Math.PI);let K=Math.max(4,Math.ceil(Math.abs(S)/(Math.PI/2)*16));for(let F=1;F<=K;F++){let z=R+S*F/K,Z=l*Math.cos(z),$=u*Math.sin(z);A.push([I*Z-E*$+b,E*Z+I*$+M])}}function Ii(A,e){let t=A.closed?[...A.pts,A.pts[0]]:A.pts,n=[0];for(let s=1;s<t.length;s++)n.push(n[s-1]+Math.hypot(t[s][0]-t[s-1][0],t[s][1]-t[s-1][1]));let r=n[n.length-1],i=[];if(r<=0){for(let s=0;s<e;s++)i.push([t[0][0],t[0][1]]);return i}let o=A.closed?e:e-1,a=0;for(let s=0;s<e;s++){let g=r*s/o;for(;a<n.length-2&&n[a+1]<g;)a++;let l=n[a+1]-n[a],u=l>0?(g-n[a])/l:0;i.push([t[a][0]+(t[a+1][0]-t[a][0])*u,t[a][1]+(t[a+1][1]-t[a][1])*u])}return i}function Bi(A){let e=0;for(let t=0;t<A.length;t++){let n=A[(t+1)%A.length];e+=A[t][0]*n[1]-n[0]*A[t][1]}return e/2}function fi(A){let e=0,t=0;for(let n of A)e+=n[0],t+=n[1];return[e/A.length,t/A.length]}function va(A,e,t){if(!t){let s=Math.hypot(A[0][0]-e[0][0],A[0][1]-e[0][1]);return Math.hypot(A[0][0]-e[e.length-1][0],A[0][1]-e[e.length-1][1])<s?[...e].reverse():e}let n=Math.sign(Bi(A))!==Math.sign(Bi(e))?[...e].reverse():e,r=A.length,i=0,o=Number.POSITIVE_INFINITY,a=s=>{let g=0;for(let l=0;l<r;l+=2){let u=n[(l+s)%r];g+=(A[l][0]-u[0])**2+(A[l][1]-u[1])**2}return g};for(let s=0;s<r;s+=4){let g=a(s);g<o&&(o=g,i=s)}for(let s=i-3;s<=i+3;s++){let g=(s+r)%r,l=a(g);l<o&&(o=l,i=g)}return A.map((s,g)=>n[(g+i)%r])}var Pt=new Map;function Ra(A,e){let t=`${A}\0${e}`,n=Pt.get(t);if(n)return n;let r=ui(A),i=ui(e),o=Math.max(r.length,i.length),a={a:[],b:[],closed:[]};for(let s=0;s<o;s++){let g=r[s],l=i[s],u=(g?.closed??!0)&&(l?.closed??!0),c=g?Ii(g,128):void 0,I=l?Ii(l,128):void 0;if(!c&&I){let E=fi(I);c=I.map(()=>[E[0],E[1]])}if(!I&&c){let E=fi(c);I=c.map(()=>[E[0],E[1]])}!c||!I||(a.a.push(c),a.b.push(va(c,I,u)),a.closed.push(u))}return Pt.size>256&&Pt.clear(),Pt.set(t,a),a}var Ei=A=>(Math.round(A*100)/100).toString();function di(A,e,t){if(t<=0)return A;if(t===1)return e;let n=Ra(A,e),r=[];for(let i=0;i<n.a.length;i++){let o=n.a[i],a=n.b[i],s="";for(let g=0;g<o.length;g++){let l=o[g][0]+(a[g][0]-o[g][0])*t,u=o[g][1]+(a[g][1]-o[g][1])*t;s+=`${g===0?"M":"L"}${Ei(l)} ${Ei(u)}`}r.push(n.closed[i]?`${s}Z`:s)}return r.join("")}function Ci(A,e){let t=Math.floor(A)^e*1013|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967295*2-1}function La(A,e){let t=Math.floor(A),n=t+1,r=A-t,i=r*r*(3-2*r),o=Ci(t,e),a=Ci(n,e),s=o*r,g=a*(r-1);return(s*(1-i)+g*i)*2}function ka(A,e,t=0){let n=A.frequency??2,r=A.amplitude??50,i=Math.max(1,Math.min(4,A.octaves??1)),o=A.seed??1234,a=0,s=0,g=1,l=n;for(let c=0;c<i;c++){let I=La(e*l,o+c*7919);a+=I*g,s+=g,g*=.5,l*=2}let u=s>0?a/s:0;return t+u*r}function Pa(A,e,t,n){if(e<=0)return t;let r=Math.max(.001,A.mass??1),i=Math.max(.001,A.stiffness??180),o=Math.max(.001,A.damping??12),a=Math.sqrt(i/r),s=o/(2*Math.sqrt(i*r)),g=1;if(s<1){let l=a*Math.sqrt(1-s*s),u=-1,c=-s*a/l;g=1+Math.exp(-s*a*e)*(u*Math.cos(l*e)+c*Math.sin(l*e))}else if(Math.abs(s-1)<1e-4)g=1+Math.exp(-a*e)*(-1-a*e);else{let l=Math.sqrt(s*s-1),u=-a*(s-l),c=-a*(s+l),I=-1/(1-u/c),E=-1-I;g=1+I*Math.exp(u*e)+E*Math.exp(c*e)}return t+(n-t)*g}function LA(A,e,t){if(A==null)return 0;if(typeof A=="number")return A;if(typeof A=="function")return Number(A(e,t))||0;if(Array.isArray(A)||ArrayBuffer.isView(A)){let n=A;if(n.length===0)return 0;let r=Math.max(0,Math.min(n.length-1,Math.round(e)));return Number(n[r])||0}if(typeof A=="object"){let n=A;if(typeof n.get=="function")return Number(n.get({frame:e,fps:t,time:t>0?e/t:0}))||0;if(n.type==="Signal"&&n.data)return LA(n.data,e,t);let r=n.samples??(typeof n.channel=="string"&&n[n.channel]!==void 0?n[n.channel]:void 0);if(Array.isArray(r)||ArrayBuffer.isView(r)){let i=r;if(i.length===0)return 0;let o=Number(n.fps)||24,a=t>0?t:24,s=e/a,g=Math.max(0,Math.min(i.length-1,Math.round(s*o)));return Number(i[g])||0}if(n.type==="audio_extractor"||n.extractionMode!==void 0){let i=n.nodeId;if(i){let o=n.channel??"primary",a=nr.getChannelSamples(i,o);if(a&&a.length>0){let s=Number(n.fps)||24,g=t>0?t:24,l=e/g,u=Math.max(0,Math.min(a.length-1,Math.round(l*s)));return Number(a[u])||0}}return 0}if(n.type==="generator"){let i=typeof n.amplitude=="number"?n.amplitude:1,o=typeof n.frequency=="number"?n.frequency:1;if(n.syncToBpm&&typeof n.bpm=="number"&&n.bpm>0){let Q=typeof n.bars=="number"&&n.bars>0?n.bars:1;o=n.bpm/60/Q}let a=typeof n.phase=="number"?n.phase:0,s=typeof n.offset=="number"?n.offset:0,g=e/(t>0?t:24),l=n.baseType??"sine",u=!!n.fmEnabled,c=g;if(u){let Q=Number(n.fmAmplitude)||1,m=Number(n.fmFrequency)||.5;c=g+Math.sin(g*m*Math.PI*2)*Q}let I=0,E=(c*o+a/(Math.PI*2))%1,d=E<0?E+1:E,h=Q=>(Q%1+1)%1;switch(l){case"triangle":I=4*Math.abs(d-.5)-1;break;case"sawtooth":I=2*d-1;break;case"square":I=d<.5?1:-1;break;case"constant":I=1;break;case"noise_smooth":{let Q=c*o+a,m=Math.floor(Q),D=Q-m,p=D*D*(3-2*D),G=h(Math.sin(m*12.9898)*43758.5453),N=h(Math.sin((m+1)*12.9898)*43758.5453);I=(G*(1-p)+N*p)*2-1;break}case"noise_white":I=h(Math.sin(c*12.9898+a)*43758.5453)*2-1;break;case"pulse":{let Q=a===0?.5:Math.max(.01,Math.min(.99,a));I=h(c*o)<Q?1:-1;break}case"bounce":I=Math.abs(Math.sin(c*o*Math.PI+a));break;case"staircase":I=Math.floor(d*8)/7*2-1;break;default:I=Math.sin(c*o*Math.PI*2+a);break}return I*i+s}if(n.type==="gate"){let i=n.sourceSignal??n.signal,o=typeof n.threshold=="number"?n.threshold:.5,a=n.mode??"gate",s=!!n.invert,g=typeof n.debounceMs=="number"?n.debounceMs:0,l=Math.max(1,Math.round(g/1e3*t)),u=Math.max(1,Number(n.holdFrames)||4),c=0;if(a==="gate")c=LA(i,e,t)>=o?1:0;else if(a==="trigger"){let I=-1/0,E=Math.max(0,e-300);for(let d=E;d<=e;d++){let h=LA(i,d,t),Q=d>0?LA(i,d-1,t):0;h>=o&&Q<o&&d-I>=l&&(I=d)}c=e>=I&&e<I+u?1:0}else if(a==="toggle"){let I=0,E=-1/0;for(let d=0;d<=e;d++){let h=LA(i,d,t),Q=d>0?LA(i,d-1,t):0;h>=o&&Q<o&&d-E>=l&&(I++,E=d)}c=I%2===1?1:0}return s?1-c:c}if(n.type==="signal_math"){let i=LA(n.signalA,e,t),a=n.signalB!==void 0?LA(n.signalB,e,t):Number(n.bValue)||0;switch(n.operation){case"add":return i+a;case"subtract":return i-a;case"multiply":return i*a;case"divide":return a!==0?i/a:0;case"min":return Math.min(i,a);case"max":return Math.max(i,a);case"clamp":{let s=Number(n.clampMin)||0,g=Number(n.clampMax)||1;return Math.max(s,Math.min(g,i))}case"abs":return Math.abs(i);case"negate":return-i;case"invert":return 1-i;case"power":return i**(Number(n.exponent)||2);case"modulo":return a!==0?i%a:0;case"remap":{let s=Number(n.inMin)||0,g=Number(n.inMax)||1,l=Number(n.outMin)||0,u=Number(n.outMax)||1,c=g-s,I=c!==0?(i-s)/c:0;return l+I*(u-l)}case"normalize":{let s=Number(n.aMin??n.inMin)||0,l=(Number(n.aMax??n.inMax)||1)-s;return l!==0?Math.max(0,Math.min(1,(i-s)/l)):0}case"smoothstep":{let s=Number(n.edge0)||0,l=(Number(n.edge1)||1)-s,u=l!==0?Math.max(0,Math.min(1,(i-s)/l)):0;return u*u*(3-2*u)}case"custom":return i;default:return i}}if(typeof n.value=="number")return n.value}return 0}function Ta(A,e,t,n=.15,r=2){if(e<0||!A)return 0;let i=A,o=0,a=-1/0;for(let s=0;s<=e;s++){let g=LA(i,s,t),l=s>0?LA(i,s-1,t):0;g>=n&&l<n&&s-a>=r&&(o++,a=s)}return o}function Ha(A,e,t,n={}){let r=n[A.inputHandleId];if(r===void 0&&n){let c=Object.keys(n);if(c.length===1)r=n[c[0]];else if(c.length>1){let I=c.find(E=>E===A.inputHandleId);r=I?n[I]:n[c[0]]}}if(A.channel&&r&&typeof r=="object"){let c=r[A.channel];c!==void 0?r=c:typeof r.get!="function"&&(r={...r,channel:A.channel})}if(A.signalMode==="accumulate"){let c=A.threshold??A.accumulateThreshold??.15,I=A.debounceFrames??2,E=Ta(r,e,t,c,I),d=A.multiplier??1,h=A.offset??0;return E*d+h}let i=A.multiplier??1,o=A.offset??0,a=Math.max(0,Math.round(A.smoothingWindowFrames??0));if(a<=1)return LA(r,e,t)*i+o;let s=0,g=0,l=Math.max(0,e-a+1);for(let c=l;c<=e;c++)s+=LA(r,c,t),g++;return(g>0?s/g:0)*i+o}function Ja(A,e,t){return A+(e-A)*t}function Oa(A){let e=A.trim().replace("#","");if(e.length===3&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e.length===6){let t=parseInt(e,16);return[t>>16&255,t>>8&255,t&255,1]}if(e.length===8){let t=parseInt(e,16);return[t>>24&255,t>>16&255,t>>8&255,(t&255)/255]}return[255,255,255,1]}function Qi(A,e,t){return tr(A,e,t)}function Pn(A,e,t){let n=t;return n<0&&(n+=1),n>1&&(n-=1),n<1/6?A+(e-A)*6*n:n<1/2?e:n<2/3?A+(e-A)*(2/3-n)*6:A}function Ka(A,e){let[t,n,r,i]=Oa(A),o=t/255,a=n/255,s=r/255,g=Math.max(o,a,s),l=Math.min(o,a,s),u=0,c=0,I=(g+l)/2;if(g!==l){let m=g-l;switch(c=I>.5?m/(2-g-l):m/(g+l),g){case o:u=(a-s)/m+(a<s?6:0);break;case a:u=(s-o)/m+2;break;case s:u=(o-a)/m+4;break}u/=6}u=(u+e%1+1)%1;let E=I,d=I,h=I;if(c!==0){let m=I<.5?I*(1+c):I+c-I*c,D=2*I-m;E=Pn(D,m,u+1/3),d=Pn(D,m,u),h=Pn(D,m,u-1/3)}let Q=m=>Math.round(Math.max(0,Math.min(255,m*255))).toString(16).padStart(2,"0");return i>=.999?`#${Q(E)}${Q(d)}${Q(h)}`:`rgba(${Math.round(E*255)}, ${Math.round(d*255)}, ${Math.round(h*255)}, ${Math.round(i*100)/100})`}var Va=new Set(["fill","fillColor","strokeColor","textBackgroundColor","color"]);function Ya(A,e,t,n){let r=A.repeat??0,i=n-t,o=A.durationFrames!==void 0&&A.durationFrames>0?A.durationFrames:i;if(r===0||o<=0){if(e>=n){let c=A.keyframes??[];return{completedValue:c[c.length-1].value}}return{frame:e}}let a=e-t,s=Math.floor(a/o);if(r>0&&s>=1+r){let c=!!A.yoyo&&r%2===1,I=A.keyframes??[];return{completedValue:c?I[0].value:I[I.length-1].value}}let g=a-s*o;return!!A.yoyo&&s%2===1?{frame:g>=i?t:n-g}:{frame:g>=i?n:t+g}}function Tn(A,e,t){let n=A.keyframes??[];if(n.length===0)return 0;if(n.length===1)return n[0].value;let r=n[0].frame;if(e<=r)return n[0].value;let i=n[n.length-1].frame,o=Ya(A,e,r,i);if("completedValue"in o)return o.completedValue;let a=o.frame;for(let s=0;s<n.length-1;s++){let g=n[s],l=n[s+1];if(a>=g.frame&&a<=l.frame){let u=l.frame-g.frame,c=u>0?(a-g.frame)/u:0,I=t?t(l.ease??g.ease,u,c):c;if(typeof g.value=="boolean")return c>=1?l.value:g.value;if(typeof g.value=="string"&&typeof l.value=="string")return A.prop==="d"?di(g.value,l.value,I):Qi(g.value,l.value,I);let E=Number(g.value)||0,d=Number(l.value)||0;return Ja(E,d,I)}}return n[n.length-1].value}function Wa(A,e,t=24,n={}){let r=n.startFrame??0,i=e-r,o=A.source??{type:"keyframe"},a=n.baseValues?.[A.prop];switch(o.type){case"keyframe":return Tn(A,i);case"wiggle":{let s=typeof a=="number"?a:0,g=A.keyframes&&A.keyframes.length>0?Number(Tn(A,i))||0:s,l=i/(t>0?t:24);return ka(o,l,g)}case"springOvershoot":{let s=0,g=1;A.keyframes&&A.keyframes.length>=2?(s=Number(A.keyframes[0].value)||0,g=Number(A.keyframes[1].value)||1):A.keyframes&&A.keyframes.length===1?(s=Number(a)||0,g=Number(A.keyframes[0].value)||0):typeof a=="number"&&(s=a,g=a);let l=i/(t>0?t:24);return Pa(o,l,s,g)}case"signal":{let s=Ha(o,e,t,n.signals);if(Va.has(A.prop)){let g=o,l=g.colorA??"#ffffff",u=g.colorB??"#ffffff",c=g.colorMode??"interpolate";if(c==="threshold"){let E=g.colorThreshold??.5;return s>=E?u:l}if(c==="hueRotate")return Ka(l,s);let I=Math.max(0,Math.min(1,s));return Qi(l,u,I)}return s}default:return Tn(A,i)}}function Ou(A,e,t=24,n={}){let r={};if(!A?.tracks)return r;for(let i of A.tracks)r[i.prop]=Wa(i,e,t,n);return r}k();var mi=["x","y","width","height"];function za(A){let e=A.matte,{matte:t,...n}=A,r={...n};if(Array.isArray(r.children)&&(r.children=Tt(r.children)),!e?.node)return[r];let i=e.node,o=i.id??`${String(A.id)}__matte`,a={position:"absolute",...i,id:o,matteOf:String(A.id),matteMode:e.mode??"alpha"};if(mi.every(g=>i[g]===void 0))for(let g of mi)typeof A[g]=="number"&&(a[g]=A[g]);let s=typeof A.startFrame=="number"?A.startFrame:0;return a.startFrame=s+(typeof i.startFrame=="number"?i.startFrame:0),i.durationFrames===void 0&&A.durationFrames!==void 0&&(a.durationFrames=A.durationFrames),Array.isArray(a.children)&&(a.children=Tt(a.children)),r.matteId=o,[r,a]}function Tt(A){return A.flatMap(e=>za(e))}k();function Hn(A,e,t,n="forward"){if(t<=0||e<=1)return 0;switch(n){case"reverse":return(e-1-A)*t;case"center-out":{let r=(e-1)/2,i=Math.abs(A-r);return Math.round(i*t)}case"forward":return A*t;default:return Ar(n)}}function Xu(A,e,t="forward",n=0){return!A||A.length===0?[]:e<=0&&n===0?[...A]:A.map((r,i)=>{let o=Hn(i,A.length,e,t),a=r.startFrame??0;return{...r,startFrame:a+o+n}})}k();k();var pi=Symbol.for("framefields.inlineSignal"),hi=new WeakMap,Xa=0;function Za(A){let e=hi.get(A);return e===void 0&&(e=`inline_signal_${Xa++}`,hi.set(A,e)),e}function _u(A){if(typeof A=="string")return{handleId:A};if(A===null||typeof A!="object"&&typeof A!="function")throw new TypeError(`LayerAnimation.signal: expected a signal object or a signal name, got ${String(A)}. Pass a signal (Signal.fromArray / Signal.builder / an audio channel \u2026) or register it with comp.addSignal(name, signal) and pass the name.`);let e=A;return typeof e.inputHandleId=="string"?{handleId:e.inputHandleId}:typeof e.gpuBinding?.nodeId=="string"?typeof e.get=="function"?{handleId:e.gpuBinding.nodeId,inline:A}:{handleId:e.gpuBinding.nodeId}:{handleId:Za(A),inline:A}}function ju(A,e){Object.defineProperty(A,pi,{value:e,enumerable:!1,configurable:!0,writable:!0})}function qa(A){if(!(!A||typeof A!="object"))return A[pi]}function Jn(A,e={}){for(let t of A){if(!t||typeof t!="object")continue;let{animation:n,children:r}=t,i=n?.tracks;if(Array.isArray(i))for(let o of i){let a=o?.source,s=qa(a);s&&typeof a?.inputHandleId=="string"&&(e[a.inputHandleId]=s)}Array.isArray(r)&&Jn(r,e)}return e}function yi(A,e,t,n=0,r,i){let o=[],a=A.kind==="media"?A.src??A.inputHandleId:"inputHandleId"in A?A.inputHandleId:void 0,s=m=>typeof m=="string"&&(m.startsWith("http://")||m.startsWith("https://")||m.startsWith("file://")||m.startsWith("/")||m.startsWith("./")||m.startsWith("blob:")||m.startsWith("data:")||/\.(png|jpe?g|webp|gif|svg|mp4|webm|mov|mkv|mp3|wav|ogg|m4a|srt|vtt|json|lottie)$/i.test(m)),g;if(A.kind==="media"){if(e&&A.inputHandleId&&(g=e(A.inputHandleId)),!g&&a&&(s(a)||A.src)&&(g=jn(a,A.dataType??"Video")),!g&&!e&&a&&(a.includes(".")||a.includes("/"))&&console.warn(`[Compositor] Media layer '${A.id??"?"}' source '${a}' could not be resolved.`),g&&A.crop){let m=A.crop,D=typeof m.toOperation=="function"?m.toOperation():m;g={metadata:{...g.metadata},operation:{op:"Crop",...D,dataType:g.operation.dataType},children:[g]}}if(g&&Array.isArray(A.effects)){let m=g;for(let D of A.effects){let p=D&&typeof D.toOperation=="function"?D.toOperation():D;m={metadata:{...m.metadata},operation:{op:String(p.op??"effect"),id:A.id?`${A.id}-${p.op??"effect"}`:void 0,effect:D,...p,dataType:m.operation.dataType},children:[m]}}g=m}if(g&&A.vision){let m=A.vision,D=typeof m.toOperation=="function"?m.toOperation():m;g={metadata:{...g.metadata},operation:{op:"Vision",id:A.id,effect:m,...D,dataType:g.operation.dataType},children:[g]}}}if(A.kind==="media")o=g?[g]:[];else if("children"in A&&A.children){let m=A.kind==="flex"&&typeof A.staggerFrames=="number"?A.staggerFrames:0,D=A.kind==="flex"&&typeof A.staggerDirection=="string"?A.staggerDirection:"forward",p=typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)?Math.round(A.startFrame):0,G=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)?Math.round(A.durationFrames):i,N=A.children;o=N.map((w,U)=>{let b=Hn(U,N.length,m,D),M=n+p+b;return yi(w,e,t,M,r,w.durationFrames===void 0?G:void 0)})}let l="Image",u;if(g){l=g.operation?.dataType??"Image";let D=l==="Image"||l==="SVG"?void 0:$n(g)?.durationMs;D!=null&&(u=Math.max(1,Math.round(D/1e3*t)))}let c=g?.operation?.dataType==="Caption",I=A.kind==="flex"||A.kind==="block"||A.kind==="box",E=(typeof A.startFrame=="number"&&Number.isFinite(A.startFrame)&&A.startFrame>=0?Math.round(A.startFrame):0)+n,d=typeof A.durationFrames=="number"&&Number.isFinite(A.durationFrames)&&A.durationFrames>0?Math.round(A.durationFrames):void 0,h=i??Math.round((r??1e4)/1e3*t);if(I&&o.length>0){if(d===void 0){let m=o.map(D=>(D.operation.startFrame??0)+(D.operation.durationFrames??h));d=Math.max(1,Math.max(...m)-E)}}else c&&u!==void 0&&u>0?d=u:d!==void 0?(l==="Video"||l==="Audio")&&u!==void 0&&u>0&&(d=Math.min(d,u)):d=u??i??Math.round((r??1e4)/1e3*t);let Q=d/t*1e3;if(A.kind==="media"&&g){let m=g;for(;m;)(!m.metadata?.durationMs||m.metadata.durationMs<=0)&&(m.metadata||(m.metadata={}),m.metadata.durationMs=Q),m.operation?.sourceMeta&&!m.operation.sourceMeta.durationMs&&(m.operation.sourceMeta.durationMs=Q),m=m.children?.[0]}return{metadata:{durationMs:Q},operation:{op:"CompositorLayer",...A,startFrame:E,durationFrames:d,dataType:l},children:o}}function ic(A,e){let{isVideoMode:t,fps:n,durationMs:r,resolveMedia:i,signals:o}=e,a={metadata:{width:A.width,height:A.height,fps:n,...r!==void 0&&{durationMs:r}},operation:{op:"Compositor",width:A.width,height:A.height,fps:n,mode:A.mode??"Video",backgroundColor:A.backgroundColor,...A.antialias3d!==void 0&&{antialias3d:A.antialias3d},volume:A.volume??1,dataType:t?"Video":"Image",layout:A.layout,signals:{...Jn(A.layout),...o??A.signals??{}},...A.onRequestFrame||e.onRequestFrame?{onRequestFrame:A.onRequestFrame??e.onRequestFrame}:{}},children:Tt(A.layout).map(l=>yi(l,i,n,0,r))},s=Array.isArray(e.effects)?e.effects:Array.isArray(A.effects)?A.effects:[];for(let l of s){let u=l&&typeof l.toOperation=="function"?l.toOperation():l;a={metadata:{...a.metadata},operation:{...u,dataType:a.operation.dataType},children:[a]}}let g=A.vision??e.vision;if(g){let l=typeof g.toOperation=="function"?g.toOperation():g;a={metadata:{...a.metadata},operation:{op:"Vision",...l,dataType:a.operation.dataType},children:[a]}}return a}function oc(A){let e=[],t=n=>{n?.operation?.op==="CompositorLayer"&&e.push(n);for(let r of n?.children??[])t(r)};for(let n of A)t(n);return e}export{st as a,gr as b,H as c,_ as d,fe as e,Wi as f,Br as g,lt as h,$t as i,jt as j,qA as k,bs as l,Ds as m,Le as n,It as o,vs as p,Ks as q,Pe as r,ft as s,ht as t,qr as u,su as v,cu as w,Lr as x,kr as y,Pr as z,Zl as A,Tr as B,Hr as C,Lo as D,$l as E,Nn as F,du as G,ha as H,Na as I,vu as J,_u as K,ju as L,Tn as M,Wa as N,Ou as O,Tt as P,Hn as Q,Xu as R,ic as S,oc as T};
|