@splinetool/loader 0.9.99 → 0.9.102
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/build/SplineLoader.cjs +26 -26
- package/build/SplineLoader.js +27 -27
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDescriptor;var lh=Object.getOwnPropertyNames;var ch=Object.getPrototypeOf,uh=Object.prototype.hasOwnProperty;var bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),ph=(n,t)=>{for(var e in t)Ta(n,e,{get:t[e],enumerable:!0})},dh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of lh(t))!uh.call(n,o)&&o!==e&&Ta(n,o,{get:()=>t[o],enumerable:!(r=ah(t,o))||r.enumerable});return n};var Sc=(n,t,e)=>(e=n!=null?sh(ch(n)):{},dh(t||!n||!n.__esModule?Ta(e,"default",{value:n,enumerable:!0}):e,n));var wm=bc(Sa=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.match(/Version\/(.*?) /),v=y&&x&&parseInt(x[1],10)<15;return a._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||t;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var u=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var x=a._howls[m]._soundById(h[y]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<a._howls.length;A++)a._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){u=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?a=null:f=null}}var y=f?d._soundById(f):d._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),d._state!=="loaded"){y._sprite=a,y._ended=!1;var x=y._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(f&&!y._paused)return u||d._loadQueue("play"),y._id;d._webAudio&&t._autoResume();var v=Math.max(0,y._seek>0?y._seek:d._sprite[a][0]/1e3),A=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-v),S=A*1e3/Math.abs(y._rate),b=d._sprite[a][0]/1e3,D=(d._sprite[a][0]+d._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var w=function(){y._paused=!1,y._seek=v,y._start=b,y._stop=D,y._loop=!!(y._loop||d._sprite[a][2])};if(v>=D){d._ended(y);return}var g=y._node;if(d._webAudio){var L=function(){d._playLock=!1,w(),d._refreshBuffer(y);var C=y._muted||d._muted?0:y._volume;g.gain.setValueAtTime(C,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof g.bufferSource.start>"u"?y._loop?g.bufferSource.noteGrainOn(0,v,86400):g.bufferSource.noteGrainOn(0,v,A):y._loop?g.bufferSource.start(0,v,86400):g.bufferSource.start(0,v,A),S!==1/0&&(d._endTimers[y._id]=setTimeout(d._ended.bind(d,y),S)),u||setTimeout(function(){d._emit("play",y._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?L():(d._playLock=!0,d.once("resume",L),d._clearTimer(y._id))}else{var T=function(){g.currentTime=v,g.muted=y._muted||d._muted||t._muted||g.muted,g.volume=y._volume*t.volume(),g.playbackRate=y._rate;try{var C=g.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,w(),C.then(function(){d._playLock=!1,g._unlocked=!0,u?d._loadQueue():d._emit("play",y._id)}).catch(function(){d._playLock=!1,d._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):u||(d._playLock=!1,w(),d._emit("play",y._id)),g.playbackRate=y._rate,g.paused){d._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||y._loop?d._endTimers[y._id]=setTimeout(d._ended.bind(d,y),S):(d._endTimers[y._id]=function(){d._ended(y),g.removeEventListener("ended",d._endTimers[y._id],!1)},g.addEventListener("ended",d._endTimers[y._id],!1))}catch(k){d._emit("playerror",y._id,k)}};g.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(g.src=d._src,g.load());var P=window&&window.ejecta||!g.readyState&&t._navigator.isCocoonJS;if(g.readyState>=3||P)T();else{d._playLock=!0,d._state="loading";var N=function(){d._state="loaded",T(),g.removeEventListener(t._canPlayEvent,N,!1)};g.addEventListener(t._canPlayEvent,N,!1),d._clearTimer(y._id)}}return y._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof d<"u"&&d>=0&&d<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)y=a._soundById(f[x]),y&&(y._volume=d,u[2]||a._stopFade(f[x]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(d,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=d*t.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var x=m._soundById(h[y]);if(x){if(f||m._stopFade(h[y]),m._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=a,x._node.gain.setValueAtTime(a,v),x._node.gain.linearRampToValueAtTime(u,A)}m._startFadeInterval(x,a,u,d,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var y=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var D=(Date.now()-b)/f;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),y._webAudio?a._volume=x:y.volume(x,a._id,!0),h&&(y._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(d,a._id),y._emit("fade",a._id))},S)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=d,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,u=arguments,d,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof d=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)if(y=a._soundById(f[x]),y){a.playing(f[x])&&(y._rateSeek=a.seek(f[x]),y._playStart=a._webAudio?t.ctx.currentTime:y._playStart),y._rate=d,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):y._node&&(y._node.playbackRate=d);var v=a.seek(f[x]),A=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,S=A*1e3/Math.abs(y._rate);(a._endTimers[f[x]]||!y._paused)&&(a._clearTimer(f[x]),a._endTimers[f[x]]=setTimeout(a._ended.bind(a,y),S)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var y=a._soundById(f);if(y)if(typeof d=="number"&&d>=0){var x=a.playing(f);x&&a.pause(f,!0),y._seek=d,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=d);var v=function(){x&&a.play(f,!0),a._emit("seek",f)};if(x&&!a._webAudio){var A=function(){a._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(a._webAudio){var S=a.playing(f)?t.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+S*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);return d?!d._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,f=u._soundById(a);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,a._clearTimer(u[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(a,u,d){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var y=d===m[h].id;if(u===m[h].fn&&y||!u&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var x=Object.keys(f);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(f[x[h]])&&(f[x[h]]=[])}return f},once:function(a,u,d){var f=this;return f.on(a,u,d,1),f},_emit:function(a,u,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(y){y.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(a&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Sa<"u"&&(Sa.Howler=t,Sa.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,i,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")l._orientation=[t,e,r,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return l},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var l=r._soundById(i[s]);if(l)if(typeof t=="number")l._stereo=t,l._pos=[t,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(t,0,0):l._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",l._id);else return l._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),l=0;l<s.length;l++)if(i=t._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Im=bc((wa,Cm)=>{(function(n,t){typeof wa=="object"&&typeof Cm<"u"?t(wa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(wa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,l,c,p,a,u,d,f,m,h,y,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],D=[],w=e==="f"?A:v,g=h=d=0;g<A;g++)b[g]=new Array(w).fill(0);for(g=0;g<v;g++)D[g]=new Array(v).fill(0);var L,T=new Array(v).fill(0);for(g=0;g<A;g++)for(s=0;s<v;s++)b[g][s]=t[g][s];for(g=0;g<v;g++){for(S[g]=d,m=0,c=g+1,s=g;s<A;s++)m+=Math.pow(b[s][g],2);if(m<i)d=0;else for(f=(u=b[g][g])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[g][g]=u-d,s=c;s<v;s++){for(m=0,l=g;l<A;l++)m+=b[l][g]*b[l][s];for(u=m/f,l=g;l<A;l++)b[l][s]=b[l][s]+u*b[l][g]}for(T[g]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[g][s],2);if(m<i)d=0;else{for(f=(u=b[g][g+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[g][g+1]=u-d,s=c;s<v;s++)S[s]=b[g][s]/f;for(s=c;s<A;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[g][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(y=Math.abs(T[g])+Math.abs(S[g]))&&(h=y)}if(r)for(g=v-1;0<=g;g--){if(d!==0){for(f=b[g][g+1]*d,s=c;s<v;s++)D[s][g]=b[g][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[g][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+m*D[l][g]}}for(s=c;s<v;s++)D[g][s]=0,D[s][g]=0;D[g][g]=1,d=S[g],c=g}if(e){if(e==="f")for(g=v;g<A;g++){for(s=v;s<A;s++)b[g][s]=0;b[g][g]=1}for(g=v-1;0<=g;g--){for(c=g+1,d=T[g],s=c;s<w;s++)b[g][s]=0;if(d!==0){for(f=b[g][g]*d,s=c;s<w;s++){for(m=0,l=c;l<A;l++)m+=b[l][g]*b[l][s];for(u=m/f,l=g;l<A;l++)b[l][s]=b[l][s]+u*b[l][g]}for(s=g;s<A;s++)b[s][g]=b[s][g]/d}else for(s=g;s<A;s++)b[s][g]=0;b[g][g]=b[g][g]+1}}for(o*=h,l=v-1;0<=l;l--)for(var P=0;P<50;P++){for(L=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){L=!0;break}if(Math.abs(T[c-1])<=o)break}if(!L){for(a=0,p=c-(m=1),g=c;g<l+1&&(u=m*S[g],S[g]=a*S[g],!(Math.abs(u)<=o));g++)if(d=T[g],T[g]=Math.sqrt(u*u+d*d),a=d/(f=T[g]),m=-u/f,e)for(s=0;s<A;s++)y=b[s][p],x=b[s][g],b[s][p]=y*a+x*m,b[s][g]=-y*m+x*a}if(x=T[l],c===l){if(x<0&&(T[l]=-x,r))for(s=0;s<v;s++)D[s][l]=-D[s][l];break}for(h=T[c],u=(((y=T[l-1])-x)*(y+x)+((d=S[l-1])-(f=S[l]))*(d+f))/(2*f*y),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(y/(u<0?u-d:u+d)-f))/h,g=c+(m=a=1);g<l+1;g++){if(d=S[g],y=T[g],f=m*d,d*=a,x=Math.sqrt(u*u+f*f),u=h*(a=u/(S[g-1]=x))+d*(m=f/x),d=-h*m+d*a,f=y*m,y*=a,r)for(s=0;s<v;s++)h=D[s][g-1],x=D[s][g],D[s][g-1]=h*a+x*m,D[s][g]=-h*m+x*a;if(x=Math.sqrt(u*u+f*f),u=(a=u/(T[g-1]=x))*d+(m=f/x)*y,h=-m*d+a*y,e)for(s=0;s<A;s++)y=b[s][g-1],x=b[s][g],b[s][g-1]=y*a+x*m,b[s][g]=-y*m+x*a}S[c]=0,S[l]=u,T[l]=h}for(g=0;g<v;g++)T[g]<o&&(T[g]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as d_,Loader as f_}from"three";function Oi(n,t){return Object.setPrototypeOf(n,t),n}function wc(n){return Array.isArray(n)?n:[n]}var fh=typeof global=="object"&&global&&global.Object===Object&&global,Mi=fh;var mh=typeof self=="object"&&self&&self.Object===Object&&self,hh=Mi||mh||Function("return this")(),Re=hh;var gh=Re.Symbol,nt=gh;var _c=Object.prototype,yh=_c.hasOwnProperty,xh=_c.toString,Nn=nt?nt.toStringTag:void 0;function vh(n){var t=yh.call(n,Nn),e=n[Nn];try{n[Nn]=void 0;var r=!0}catch{}var o=xh.call(n);return r&&(t?n[Nn]=e:delete n[Nn]),o}var Tc=vh;var bh=Object.prototype,Sh=bh.toString;function wh(n){return Sh.call(n)}var Ac=wh;var _h="[object Null]",Th="[object Undefined]",Nc=nt?nt.toStringTag:void 0;function Ah(n){return n==null?n===void 0?Th:_h:Nc&&Nc in Object(n)?Tc(n):Ac(n)}var xt=Ah;function Nh(n){return n!=null&&typeof n=="object"}var et=Nh;var Ch="[object Symbol]";function Ih(n){return typeof n=="symbol"||et(n)&&xt(n)==Ch}var xo=Ih;function Ph(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Di=Ph;var Lh=Array.isArray,Oe=Lh;var Oh=1/0,Cc=nt?nt.prototype:void 0,Ic=Cc?Cc.toString:void 0;function Pc(n){if(typeof n=="string")return n;if(Oe(n))return Di(n,Pc)+"";if(xo(n))return Ic?Ic.call(n):"";var t=n+"";return t=="0"&&1/n==-Oh?"-0":t}var Lc=Pc;function Mh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Mh;function Dh(n){return n}var Bi=Dh;var Bh="[object AsyncFunction]",Eh="[object Function]",Gh="[object GeneratorFunction]",Rh="[object Proxy]";function Vh(n){if(!ze(n))return!1;var t=xt(n);return t==Eh||t==Gh||t==Bh||t==Rh}var vo=Vh;var Fh=Re["__core-js_shared__"],Ei=Fh;var Oc=function(){var n=/[^.]+$/.exec(Ei&&Ei.keys&&Ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function zh(n){return!!Oc&&Oc in n}var Mc=zh;var Uh=Function.prototype,jh=Uh.toString;function kh(n){if(n!=null){try{return jh.call(n)}catch{}try{return n+""}catch{}}return""}var hr=kh;var Hh=/[\\^$.*+?()[\]{}|]/g,Wh=/^\[object .+?Constructor\]$/,qh=Function.prototype,$h=Object.prototype,Xh=qh.toString,Yh=$h.hasOwnProperty,Kh=RegExp("^"+Xh.call(Yh).replace(Hh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Qh(n){if(!ze(n)||Mc(n))return!1;var t=vo(n)?Kh:Wh;return t.test(hr(n))}var Dc=Qh;function Zh(n,t){return n?.[t]}var Bc=Zh;function Jh(n,t){var e=Bc(n,t);return Dc(e)?e:void 0}var ut=Jh;var eg=ut(Re,"WeakMap"),Gi=eg;var Ec=Object.create,tg=function(){function n(){}return function(t){if(!ze(t))return{};if(Ec)return Ec(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Gc=tg;function rg(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Rc=rg;function og(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Ri=og;var ng=800,ig=16,sg=Date.now;function ag(n){var t=0,e=0;return function(){var r=sg(),o=ig-(r-e);if(e=r,o>0){if(++t>=ng)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Vc=ag;function lg(n){return function(){return n}}var Fc=lg;var cg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),bo=cg;var ug=bo?function(n,t){return bo(n,"toString",{configurable:!0,enumerable:!1,value:Fc(t),writable:!0})}:Bi,zc=ug;var pg=Vc(zc),Vi=pg;function dg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Uc=dg;var fg=9007199254740991,mg=/^(?:0|[1-9]\d*)$/;function hg(n,t){var e=typeof n;return t=t??fg,!!t&&(e=="number"||e!="symbol"&&mg.test(n))&&n>-1&&n%1==0&&n<t}var Cr=hg;function gg(n,t,e){t=="__proto__"&&bo?bo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=gg;function yg(n,t){return n===t||n!==n&&t!==t}var Ir=yg;var xg=Object.prototype,vg=xg.hasOwnProperty;function bg(n,t,e){var r=n[t];(!(vg.call(n,t)&&Ir(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=bg;function Sg(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var l=t[i],c=r?r(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?So(e,l,c):wo(e,l,c)}return e}var _t=Sg;var jc=Math.max;function wg(n,t,e){return t=jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=jc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=r[o];return l[t]=e(s),Rc(n,this,l)}}var Fi=wg;function _g(n,t){return Vi(Fi(n,t,Bi),n+"")}var kc=_g;var Tg=9007199254740991;function Ag(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Tg}var _o=Ag;function Ng(n){return n!=null&&_o(n.length)&&!vo(n)}var Pr=Ng;function Cg(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Pr(e)&&Cr(t,e.length):r=="string"&&t in e)?Ir(e[t],n):!1}var Hc=Cg;function Ig(n){return kc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Hc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=e[r];l&&n(t,l,r,i)}return t})}var Wc=Ig;var Pg=Object.prototype;function Lg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Pg;return n===e}var To=Lg;function Og(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var qc=Og;var Mg="[object Arguments]";function Dg(n){return et(n)&&xt(n)==Mg}var Aa=Dg;var $c=Object.prototype,Bg=$c.hasOwnProperty,Eg=$c.propertyIsEnumerable,Gg=Aa(function(){return arguments}())?Aa:function(n){return et(n)&&Bg.call(n,"callee")&&!Eg.call(n,"callee")},gr=Gg;function Rg(){return!1}var Xc=Rg;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yc=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,Vg=Yc&&Yc.exports===Qc,Kc=Vg?Re.Buffer:void 0,Fg=Kc?Kc.isBuffer:void 0,zg=Fg||Xc,Ao=zg;var Ug="[object Arguments]",jg="[object Array]",kg="[object Boolean]",Hg="[object Date]",Wg="[object Error]",qg="[object Function]",$g="[object Map]",Xg="[object Number]",Yg="[object Object]",Kg="[object RegExp]",Qg="[object Set]",Zg="[object String]",Jg="[object WeakMap]",ey="[object ArrayBuffer]",ty="[object DataView]",ry="[object Float32Array]",oy="[object Float64Array]",ny="[object Int8Array]",iy="[object Int16Array]",sy="[object Int32Array]",ay="[object Uint8Array]",ly="[object Uint8ClampedArray]",cy="[object Uint16Array]",uy="[object Uint32Array]",Ce={};Ce[ry]=Ce[oy]=Ce[ny]=Ce[iy]=Ce[sy]=Ce[ay]=Ce[ly]=Ce[cy]=Ce[uy]=!0;Ce[Ug]=Ce[jg]=Ce[ey]=Ce[kg]=Ce[ty]=Ce[Hg]=Ce[Wg]=Ce[qg]=Ce[$g]=Ce[Xg]=Ce[Yg]=Ce[Kg]=Ce[Qg]=Ce[Zg]=Ce[Jg]=!1;function py(n){return et(n)&&_o(n.length)&&!!Ce[xt(n)]}var Zc=py;function dy(n){return function(t){return n(t)}}var No=dy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cn=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,fy=Cn&&Cn.exports===Jc,Na=fy&&Mi.process,my=function(){try{var n=Cn&&Cn.require&&Cn.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),yr=my;var eu=yr&&yr.isTypedArray,hy=eu?No(eu):Zc,zi=hy;var gy=Object.prototype,yy=gy.hasOwnProperty;function xy(n,t){var e=Oe(n),r=!e&&gr(n),o=!e&&!r&&Ao(n),i=!e&&!r&&!o&&zi(n),s=e||r||o||i,l=s?qc(n.length,String):[],c=l.length;for(var p in n)(t||yy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Cr(p,c)))&&l.push(p);return l}var Ui=xy;function vy(n,t){return function(e){return n(t(e))}}var ji=vy;var by=ji(Object.keys,Object),tu=by;var Sy=Object.prototype,wy=Sy.hasOwnProperty;function _y(n){if(!To(n))return tu(n);var t=[];for(var e in Object(n))wy.call(n,e)&&e!="constructor"&&t.push(e);return t}var ru=_y;function Ty(n){return Pr(n)?Ui(n):ru(n)}var Co=Ty;function Ay(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var ou=Ay;var Ny=Object.prototype,Cy=Ny.hasOwnProperty;function Iy(n){if(!ze(n))return ou(n);var t=To(n),e=[];for(var r in n)r=="constructor"&&(t||!Cy.call(n,r))||e.push(r);return e}var nu=Iy;function Py(n){return Pr(n)?Ui(n,!0):nu(n)}var Ht=Py;var Ly=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Oy=/^\w*$/;function My(n,t){if(Oe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||xo(n)?!0:Oy.test(n)||!Ly.test(n)||t!=null&&n in Object(t)}var iu=My;var Dy=ut(Object,"create"),xr=Dy;function By(){this.__data__=xr?xr(null):{},this.size=0}var su=By;function Ey(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var au=Ey;var Gy="__lodash_hash_undefined__",Ry=Object.prototype,Vy=Ry.hasOwnProperty;function Fy(n){var t=this.__data__;if(xr){var e=t[n];return e===Gy?void 0:e}return Vy.call(t,n)?t[n]:void 0}var lu=Fy;var zy=Object.prototype,Uy=zy.hasOwnProperty;function jy(n){var t=this.__data__;return xr?t[n]!==void 0:Uy.call(t,n)}var cu=jy;var ky="__lodash_hash_undefined__";function Hy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xr&&t===void 0?ky:t,this}var uu=Hy;function Io(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Io.prototype.clear=su;Io.prototype.delete=au;Io.prototype.get=lu;Io.prototype.has=cu;Io.prototype.set=uu;var Ca=Io;function Wy(){this.__data__=[],this.size=0}var pu=Wy;function qy(n,t){for(var e=n.length;e--;)if(Ir(n[e][0],t))return e;return-1}var Lr=qy;var $y=Array.prototype,Xy=$y.splice;function Yy(n){var t=this.__data__,e=Lr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Xy.call(t,e,1),--this.size,!0}var du=Yy;function Ky(n){var t=this.__data__,e=Lr(t,n);return e<0?void 0:t[e][1]}var fu=Ky;function Qy(n){return Lr(this.__data__,n)>-1}var mu=Qy;function Zy(n,t){var e=this.__data__,r=Lr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var hu=Zy;function Po(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Po.prototype.clear=pu;Po.prototype.delete=du;Po.prototype.get=fu;Po.prototype.has=mu;Po.prototype.set=hu;var Or=Po;var Jy=ut(Re,"Map"),Mr=Jy;function ex(){this.size=0,this.__data__={hash:new Ca,map:new(Mr||Or),string:new Ca}}var gu=ex;function tx(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var yu=tx;function rx(n,t){var e=n.__data__;return yu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=rx;function ox(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var xu=ox;function nx(n){return Dr(this,n).get(n)}var vu=nx;function ix(n){return Dr(this,n).has(n)}var bu=ix;function sx(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Su=sx;function Lo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Lo.prototype.clear=gu;Lo.prototype.delete=xu;Lo.prototype.get=vu;Lo.prototype.has=bu;Lo.prototype.set=Su;var In=Lo;var ax="Expected a function";function Ia(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(ax);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Ia.Cache||In),e}Ia.Cache=In;var wu=Ia;var lx=500;function cx(n){var t=wu(n,function(r){return e.size===lx&&e.clear(),r}),e=t.cache;return t}var _u=cx;var ux=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,px=/\\(\\)?/g,dx=_u(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(ux,function(e,r,o,i){t.push(o?i.replace(px,"$1"):r||e)}),t}),Tu=dx;function fx(n){return n==null?"":Lc(n)}var Au=fx;function mx(n,t){return Oe(n)?n:iu(n,t)?[n]:Tu(Au(n))}var Tt=mx;var hx=1/0;function gx(n){if(typeof n=="string"||xo(n))return n;var t=n+"";return t=="0"&&1/n==-hx?"-0":t}var Br=gx;function yx(n,t){t=Tt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Br(t[e++])];return e&&e==r?n:void 0}var ki=yx;function xx(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Oo=xx;var Nu=nt?nt.isConcatSpreadable:void 0;function vx(n){return Oe(n)||gr(n)||!!(Nu&&n&&n[Nu])}var Cu=vx;function Iu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Cu),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Iu(l,t-1,e,r,o):Oo(o,l):r||(o[o.length]=l)}return o}var Pu=Iu;function bx(n){var t=n==null?0:n.length;return t?Pu(n,1):[]}var Lu=bx;function Sx(n){return Vi(Fi(n,void 0,Lu),n+"")}var Hi=Sx;var wx=ji(Object.getPrototypeOf,Object),Mo=wx;var _x="[object Object]",Tx=Function.prototype,Ax=Object.prototype,Ou=Tx.toString,Nx=Ax.hasOwnProperty,Cx=Ou.call(Object);function Ix(n){if(!et(n)||xt(n)!=_x)return!1;var t=Mo(n);if(t===null)return!0;var e=Nx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ou.call(e)==Cx}var Wi=Ix;function Px(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Mu=Px;function Lx(){this.__data__=new Or,this.size=0}var Du=Lx;function Ox(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bu=Ox;function Mx(n){return this.__data__.get(n)}var Eu=Mx;function Dx(n){return this.__data__.has(n)}var Gu=Dx;var Bx=200;function Ex(n,t){var e=this.__data__;if(e instanceof Or){var r=e.__data__;if(!Mr||r.length<Bx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new In(r)}return e.set(n,t),this.size=e.size,this}var Ru=Ex;function Do(n){var t=this.__data__=new Or(n);this.size=t.size}Do.prototype.clear=Du;Do.prototype.delete=Bu;Do.prototype.get=Eu;Do.prototype.has=Gu;Do.prototype.set=Ru;var qi=Do;function Gx(n,t){return n&&_t(t,Co(t),n)}var Vu=Gx;function Rx(n,t){return n&&_t(t,Ht(t),n)}var Fu=Rx;var ku=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ku&&typeof module=="object"&&module&&!module.nodeType&&module,Vx=zu&&zu.exports===ku,Uu=Vx?Re.Buffer:void 0,ju=Uu?Uu.allocUnsafe:void 0;function Fx(n,t){if(t)return n.slice();var e=n.length,r=ju?ju(e):new n.constructor(e);return n.copy(r),r}var $i=Fx;function zx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Hu=zx;function Ux(){return[]}var Xi=Ux;var jx=Object.prototype,kx=jx.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,Hx=Wu?function(n){return n==null?[]:(n=Object(n),Hu(Wu(n),function(t){return kx.call(n,t)}))}:Xi,Bo=Hx;function Wx(n,t){return _t(n,Bo(n),t)}var qu=Wx;var qx=Object.getOwnPropertySymbols,$x=qx?function(n){for(var t=[];n;)Oo(t,Bo(n)),n=Mo(n);return t}:Xi,Yi=$x;function Xx(n,t){return _t(n,Yi(n),t)}var $u=Xx;function Yx(n,t,e){var r=t(n);return Oe(n)?r:Oo(r,e(n))}var Ki=Yx;function Kx(n){return Ki(n,Co,Bo)}var Xu=Kx;function Qx(n){return Ki(n,Ht,Yi)}var Qi=Qx;var Zx=ut(Re,"DataView"),Zi=Zx;var Jx=ut(Re,"Promise"),Ji=Jx;var e0=ut(Re,"Set"),es=e0;var Yu="[object Map]",t0="[object Object]",Ku="[object Promise]",Qu="[object Set]",Zu="[object WeakMap]",Ju="[object DataView]",r0=hr(Zi),o0=hr(Mr),n0=hr(Ji),i0=hr(es),s0=hr(Gi),Qr=xt;(Zi&&Qr(new Zi(new ArrayBuffer(1)))!=Ju||Mr&&Qr(new Mr)!=Yu||Ji&&Qr(Ji.resolve())!=Ku||es&&Qr(new es)!=Qu||Gi&&Qr(new Gi)!=Zu)&&(Qr=function(n){var t=xt(n),e=t==t0?n.constructor:void 0,r=e?hr(e):"";if(r)switch(r){case r0:return Ju;case o0:return Yu;case n0:return Ku;case i0:return Qu;case s0:return Zu}return t});var Eo=Qr;var a0=Object.prototype,l0=a0.hasOwnProperty;function c0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&l0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ep=c0;var u0=Re.Uint8Array,Pa=u0;function p0(n){var t=new n.constructor(n.byteLength);return new Pa(t).set(new Pa(n)),t}var Go=p0;function d0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var tp=d0;var f0=/\w*$/;function m0(n){var t=new n.constructor(n.source,f0.exec(n));return t.lastIndex=n.lastIndex,t}var rp=m0;var op=nt?nt.prototype:void 0,np=op?op.valueOf:void 0;function h0(n){return np?Object(np.call(n)):{}}var ip=h0;function g0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ts=g0;var y0="[object Boolean]",x0="[object Date]",v0="[object Map]",b0="[object Number]",S0="[object RegExp]",w0="[object Set]",_0="[object String]",T0="[object Symbol]",A0="[object ArrayBuffer]",N0="[object DataView]",C0="[object Float32Array]",I0="[object Float64Array]",P0="[object Int8Array]",L0="[object Int16Array]",O0="[object Int32Array]",M0="[object Uint8Array]",D0="[object Uint8ClampedArray]",B0="[object Uint16Array]",E0="[object Uint32Array]";function G0(n,t,e){var r=n.constructor;switch(t){case A0:return Go(n);case y0:case x0:return new r(+n);case N0:return tp(n,e);case C0:case I0:case P0:case L0:case O0:case M0:case D0:case B0:case E0:return ts(n,e);case v0:return new r;case b0:case _0:return new r(n);case S0:return rp(n);case w0:return new r;case T0:return ip(n)}}var sp=G0;function R0(n){return typeof n.constructor=="function"&&!To(n)?Gc(Mo(n)):{}}var rs=R0;var V0="[object Map]";function F0(n){return et(n)&&Eo(n)==V0}var ap=F0;var lp=yr&&yr.isMap,z0=lp?No(lp):ap,cp=z0;var U0="[object Set]";function j0(n){return et(n)&&Eo(n)==U0}var up=j0;var pp=yr&&yr.isSet,k0=pp?No(pp):up,dp=k0;var H0=1,W0=2,q0=4,fp="[object Arguments]",$0="[object Array]",X0="[object Boolean]",Y0="[object Date]",K0="[object Error]",mp="[object Function]",Q0="[object GeneratorFunction]",Z0="[object Map]",J0="[object Number]",hp="[object Object]",ev="[object RegExp]",tv="[object Set]",rv="[object String]",ov="[object Symbol]",nv="[object WeakMap]",iv="[object ArrayBuffer]",sv="[object DataView]",av="[object Float32Array]",lv="[object Float64Array]",cv="[object Int8Array]",uv="[object Int16Array]",pv="[object Int32Array]",dv="[object Uint8Array]",fv="[object Uint8ClampedArray]",mv="[object Uint16Array]",hv="[object Uint32Array]",Ne={};Ne[fp]=Ne[$0]=Ne[iv]=Ne[sv]=Ne[X0]=Ne[Y0]=Ne[av]=Ne[lv]=Ne[cv]=Ne[uv]=Ne[pv]=Ne[Z0]=Ne[J0]=Ne[hp]=Ne[ev]=Ne[tv]=Ne[rv]=Ne[ov]=Ne[dv]=Ne[fv]=Ne[mv]=Ne[hv]=!0;Ne[K0]=Ne[mp]=Ne[nv]=!1;function os(n,t,e,r,o,i){var s,l=t&H0,c=t&W0,p=t&q0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var a=Oe(n);if(a){if(s=ep(n),!l)return Ri(n,s)}else{var u=Eo(n),d=u==mp||u==Q0;if(Ao(n))return $i(n,l);if(u==hp||u==fp||d&&!o){if(s=c||d?{}:rs(n),!l)return c?$u(n,Fu(s,n)):qu(n,Vu(s,n))}else{if(!Ne[u])return o?n:{};s=sp(n,u,l)}}i||(i=new qi);var f=i.get(n);if(f)return f;i.set(n,s),dp(n)?n.forEach(function(y){s.add(os(y,t,e,y,n,i))}):cp(n)&&n.forEach(function(y,x){s.set(x,os(y,t,e,x,n,i))});var m=p?c?Qi:Xu:c?Ht:Co,h=a?void 0:m(n);return Uc(h||n,function(y,x){h&&(x=y,y=n[x]),wo(s,x,os(y,t,e,x,n,i))}),s}var ns=os;var gv=1,yv=4;function xv(n){return ns(n,gv|yv)}var Pn=xv;function vv(n,t){return n!=null&&t in Object(n)}var gp=vv;function bv(n,t,e){t=Tt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Br(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&_o(o)&&Cr(s,o)&&(Oe(n)||gr(n)))}var yp=bv;function Sv(n,t){return n!=null&&yp(n,t,gp)}var xp=Sv;function wv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),l=s.length;l--;){var c=s[n?l:++o];if(e(i[c],c,i)===!1)break}return t}}var vp=wv;var _v=vp(),bp=_v;function Tv(n,t,e){(e!==void 0&&!Ir(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var Ln=Tv;function Av(n){return et(n)&&Pr(n)}var Sp=Av;function Nv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var On=Nv;function Cv(n){return _t(n,Ht(n))}var wp=Cv;function Iv(n,t,e,r,o,i,s){var l=On(n,e),c=On(t,e),p=s.get(c);if(p){Ln(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=Oe(c),f=!d&&Ao(c),m=!d&&!f&&zi(c);a=c,d||f||m?Oe(l)?a=l:Sp(l)?a=Ri(l):f?(u=!1,a=$i(c,!0)):m?(u=!1,a=ts(c,!0)):a=[]:Wi(c)||gr(c)?(a=l,gr(l)?a=wp(l):(!ze(l)||vo(l))&&(a=rs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),Ln(n,e,a)}var _p=Iv;function Tp(n,t,e,r,o){n!==t&&bp(t,function(i,s){if(o||(o=new qi),ze(i))_p(n,t,s,e,Tp,r,o);else{var l=r?r(On(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),Ln(n,s,l)}},Ht)}var Ap=Tp;function Pv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Np=Pv;function Lv(n,t){return t.length<2?n:ki(n,Mu(t,0,-1))}var Cp=Lv;var Ov=Wc(function(n,t,e){Ap(n,t,e)}),Zr=Ov;function Mv(n,t){return t=Tt(t,n),n=Cp(n,t),n==null||delete n[Br(Np(t))]}var Ip=Mv;function Dv(n){return Wi(n)?void 0:n}var Pp=Dv;var Bv=1,Ev=2,Gv=4,Rv=Hi(function(n,t){var e={};if(n==null)return e;var r=!1;t=Di(t,function(i){return i=Tt(i,n),r||(r=i.length>1),i}),_t(n,Qi(n),e),r&&(e=ns(e,Bv|Ev|Gv,Pp));for(var o=t.length;o--;)Ip(e,t[o]);return e}),Ro=Rv;function Vv(n,t,e,r){if(!ze(n))return n;t=Tt(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Br(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];p=r?r(a,c,l):void 0,p===void 0&&(p=ze(a)?a:Cr(t[o+1])?[]:{})}wo(l,c,p),l=l[c]}return n}var Lp=Vv;function Fv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=ki(n,s);e(l,s)&&Lp(i,Tt(s,n),l)}return i}var Op=Fv;function zv(n,t){return Op(n,t,function(e,r){return xp(n,r)})}var Mp=zv;var Uv=Hi(function(n,t){return n==null?{}:Mp(n,t)}),La=Uv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var Jr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(Jr||(Jr={}));var Dp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Dp||(Dp={}));var Fo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,l){return[i[0]+(s[0]-i[0])*l,i[1]+(s[1]-i[1])*l,i[2]+(s[2]-i[2])*l]}o.lerp=r})(Fo||(Fo={}));var Bp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Bp||(Bp={}));var Er;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let l=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=r})(Er||(Er={}));var pt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,a){return p.r===a.r&&p.g===a.g&&p.b===a.b}c.equals=s;function l(p,a,u){return{r:p.r+(a.r-p.r)*u,g:p.g+(a.g-p.g)*u,b:p.b+(a.b-p.b)*u}}c.lerp=l})(pt||(pt={}));var vt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function r(c,p){return{...pt.fromHex(c),a:p}}l.fromHexAndA=r;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,p){return pt.equals(c,p)&&c.a===p.a}l.equals=i;function s(c,p,a){return{r:c.r+(p.r-c.r)*a,g:c.g+(p.g-c.g)*a,b:c.b+(p.b-c.b)*a,a:c.a+(p.a-c.a)*a}}l.lerp=s})(vt||(vt={}));var is;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(is||(is={}));var Ep;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ep||(Ep={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var ss;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(ss||(ss={}));var Ve=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Ve.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,l={...e,[i]:s};return Object.setPrototypeOf(l,Ve.prototype),{data:l,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ve.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Mn(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Mn(r)}return Object.freeze(n)}function Rp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var as=class extends Error{};function Wt(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function ls(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Vp(){return typeof process<"u"}function Fp(n,t){for(let e of n)t(e.id,e.data),Fp(e.children,t)}function zp(n,t){t(n.id,n.data);for(let e of n.children)zp(e,t)}var At=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,At.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&zp(o,r)}}traverse(e){Fp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(a=>a.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:l}}Object.setPrototypeOf(i,At.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(a),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new as("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Rp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Wt(0,o,o);{let s=i[0].fi;return Wt(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return Wt(c,c+o,o)}else return Wt(s.fi,l.fi,o)}}};var cs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(cs||(cs={}));var Pe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Pe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Pe.prototype);let r=e;return Vp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,l={fi:r,id:o,data:i};return s=[...s,l],s.sort((p,a)=>p.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((a,u)=>a.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Wt(0,r,r);{let i=o[0].fi;return Wt(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return Wt(l,l+r,r)}else return Wt(i.fi,s.fi,r)}}};var Up=Symbol(),ps=Symbol(),zo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof us);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ps];r&&r(),delete this._children[t]}}}},Ma=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,cs.runOp(this._current,t))}},Da=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ve.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(n,t){if(t===ps)return()=>{n._parent=null};if(t===Up)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=ds(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},jv={...jp,set(n,t,e){let r={type:0,props:{[t]:qt(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},kv={...jp,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Uo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},jo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Oa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&fs.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var us=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Oa(this.ts,e,t),Oa(this.actual,r,t),Oa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ds(n,t,e){return e instanceof At?new Uo(n,t,e):e instanceof Pe?new jo(n,t,e):e instanceof Ve?new Proxy(new Da(n,t,e),kv):e!==null&&typeof e=="object"?ls(e)?e:new Proxy(new Ma(n,t,e),jv):e}function Ba(n){let t=new us(n);return[ds(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function qt(n){return n instanceof Uo||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[Up]:n}var fs;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let l=e(s,o);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...i};return Object.keys(l).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof At||o instanceof Uo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Pe||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(fs||(fs={}));var ms=class{},Dn=class extends ms{constructor(e){super();this.id=e}},Bn=class extends ms{constructor(e){super();this.data=e}};var Ra;try{Ra=new TextDecoder}catch{}var te,Rr,_=0;var Kp=[],Va=Kp,Fa=0,dt={},xe,Gr,Nt=0,$t=0,bt,vr,it=[],_e,kp={useRecords:!1,mapsAsObjects:!0},En=class{},Ua=new En;Ua.name="MessagePack 0xC1";var ko=!1,Xt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return td(()=>(gs(),this?this.unpack(t,e):Xt.prototype.unpack.call(kp,t,e)));Rr=e>-1?e:t.length,_=0,Fa=0,$t=0,Gr=null,Va=Kp,bt=null,te=t;try{_e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Xt){if(dt=this,this.structures)return xe=this.structures,hs();(!xe||xe.length>0)&&(xe=[])}else dt=kp,(!xe||xe.length>0)&&(xe=[]);return hs()}unpackMultiple(t,e){let r,o=0;try{ko=!0;let i=t.length,s=this?this.unpack(t,i):vs.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(hs())===!1)return}else{for(r=[s];_<i;)o=_,r.push(hs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{ko=!1,gs()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function hs(){try{if(!dt.trusted&&!ko){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=Me();if(_==Rr)xe.restoreStructures&&Hp(),xe=null,te=null,vr&&(vr=null);else if(_>Rr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ko)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Hp(),gs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Hp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function Me(){let n=te[_++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||dt.getStructures&&Qp()[n&63];return t?(t.read||(t.read=ja(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}else if(n<192){let t=n-160;if($t>=_)return Gr.slice(_-Nt,(_+=t)-Nt);if($t==0&&Rr<140){let e=t<16?ka(t):Zp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=Me(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Ua;case 194:return!1;case 195:return!0;case 196:return Ga(te[_++]);case 197:return t=_e.getUint16(_),_+=2,Ga(t);case 198:return t=_e.getUint32(_),_+=4,Ga(t);case 199:return eo(te[_++]);case 200:return t=_e.getUint16(_),_+=2,eo(t);case 201:return t=_e.getUint32(_),_+=4,eo(t);case 202:if(t=_e.getFloat32(_),dt.useFloat32>2){let e=xs[(te[_]&127)<<1|te[_+1]>>7];return _+=4,(e*t+(t>0?.5:-.5)>>0)/e}return _+=4,t;case 203:return t=_e.getFloat64(_),_+=8,t;case 204:return te[_++];case 205:return t=_e.getUint16(_),_+=2,t;case 206:return t=_e.getUint32(_),_+=4,t;case 207:return dt.int64AsNumber?(t=_e.getUint32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigUint64(_),_+=8,t;case 208:return _e.getInt8(_++);case 209:return t=_e.getInt16(_),_+=2,t;case 210:return t=_e.getInt32(_),_+=4,t;case 211:return dt.int64AsNumber?(t=_e.getInt32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return Yp(te[_++]&63);{let e=it[t];if(e)return e.read?(_++,e.read(Me())):e.noBuffer?(_++,e()):e(te.subarray(_,++_));throw new Error("Unknown extension "+t)}case 213:return t=te[_],t==114?(_++,Yp(te[_++]&63,te[_++])):eo(2);case 214:return eo(4);case 215:return eo(8);case 216:return eo(16);case 217:return t=te[_++],$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):Wv(t);case 218:return t=_e.getUint16(_),_+=2,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):qv(t);case 219:return t=_e.getUint32(_),_+=4,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):$v(t);case 220:return t=_e.getUint16(_),_+=2,qp(t);case 221:return t=_e.getUint32(_),_+=4,qp(t);case 222:return t=_e.getUint16(_),_+=2,$p(t);case 223:return t=_e.getUint32(_),_+=4,$p(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var Hv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ja(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Hv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Me);return n.highByte===0&&(n.read=Wp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Me()}return r}return e.count=0,n.highByte===0?Wp(t,e):e}var Wp=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ja(o,n)),o.read()};function Qp(){let n=td(()=>(te=null,dt.getStructures()));return xe=dt._mergeStructures(n,xe)}var za=ys,Wv=ys,qv=ys,$v=ys;function ys(n){let t;if(n<16&&(t=ka(n)))return t;if(n>64&&Ra)return Ra.decode(te.subarray(_,_+=n));let e=_+n,r=[];for(t="";_<e;){let o=te[_++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[_++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[_++]&63,s=te[_++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[_++]&63,s=te[_++]&63,l=te[_++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}function $p(n){if(dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}}var qe=String.fromCharCode;function Zp(n){let t=_,e=new Array(n);for(let r=0;r<n;r++){let o=te[_++];if((o&128)>0){_=t;return}e[r]=o}return qe.apply(String,e)}function ka(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[_++];if((t&128)>1){_-=1;return}return qe(t)}}else{let t=te[_++],e=te[_++];if((t&128)>0||(e&128)>0){_-=2;return}if(n<3)return qe(t,e);let r=te[_++];if((r&128)>0){_-=3;return}return qe(t,e,r)}else{let t=te[_++],e=te[_++],r=te[_++],o=te[_++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){_-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=te[_++];if((i&128)>0){_-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=te[_++],s=te[_++];if((i&128)>0||(s&128)>0){_-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=te[_++];if((l&128)>0){_-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=te[_++],s=te[_++],l=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=te[_++];if((p&128)>0){_-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=te[_++],a=te[_++];if((p&128)>0||(a&128)>0){_-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=te[_++];if((u&128)>0){_-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=te[_++],a=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f)}}else{let f=te[_++],m=te[_++];if((f&128)>0||(m&128)>0){_-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m,h)}}}}}function Ga(n){return dt.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function eo(n){let t=te[_++];if(it[t])return it[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var Xp=new Array(4096);function Jp(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,$t>=_)return Gr.slice(_-Nt,(_+=n)-Nt);if(!($t==0&&Rr<180))return za(n)}else return _--,Me();let t=(n<<5^(n>1?_e.getUint16(_):n>0?te[_]:0))&4095,e=Xp[t],r=_,o=_+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=_e.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return _=r,e.string;o-=3,r=_}for(e=[],Xp[t]=e,e.bytes=n;r<o;)i=_e.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let l=n<16?ka(n):Zp(n);return l!=null?e.string=l:e.string=za(n)}var Yp=(n,t)=>{var e=Me();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ja(e,r),e.read()},ed=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=Me();return(ed[n[0]]||Error)(n[1])};it[105]=n=>{let t=_e.getUint32(_-4);vr||(vr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};vr.set(t,o);let i=Me();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=_e.getUint32(_-4),e=vr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(Me());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ed[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=Me();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=_;_+=t-4,bt=[Me(),Me()],bt.position0=0,bt.position1=0;let r=_;_=e;try{return Me()}finally{_=r}};it[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function td(n){let t=Rr,e=_,r=Fa,o=Nt,i=$t,s=Gr,l=Va,c=vr,p=bt,a=new Uint8Array(te.slice(0,Rr)),u=xe,d=xe.slice(0,xe.length),f=dt,m=ko,h=n();return Rr=t,_=e,Fa=r,Nt=o,$t=i,Gr=s,Va=l,vr=c,bt=p,te=a,ko=m,xe=u,xe.splice(0,xe.length,...d),dt=f,_e=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function gs(){te=null,vr=null,xe=null}function rd(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var xs=new Array(147);for(let n=0;n<256;n++)xs[n]=+("1e"+Math.floor(45.15-n*.30103));var vs=new Xt({useRecords:!1}),Xv=vs.unpack,Yv=vs.unpackMultiple,Kv=vs.unpack,bs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Qv=new Float32Array(1),xM=new Uint8Array(Qv.buffer,0,4);var Ss;try{Ss=new TextEncoder}catch{}var ws,qa,_s=typeof Buffer<"u",Wa=_s?Buffer.allocUnsafeSlow:Uint8Array,sd=_s?Buffer:Uint8Array,od=_s?4294967296:2144337920,R,Be,I=0,Yt,Kt=null,Zv=/[\u0080-\uFFFF]/,Gn=Symbol("record-id"),to=class extends Xt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=sd.prototype.utf8Write?function(g,L,T){return R.utf8Write(g,L,T)}:Ss&&Ss.encodeInto?function(g,L){return Ss.encodeInto(g,R.subarray(L)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,x=f+m+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(g,L){if(R||(R=new Wa(8192),Be=new DataView(R.buffer,0,8192),I=0),Yt=R.length-10,Yt-I<2048?(R=new Wa(R.length),Be=new DataView(R.buffer,0,R.length),Yt=R.length-10,I=0):I=I+7&2147483640,r=I,l=a.structuredClone?new Map:null,a.bundleStrings?(Kt=["",""],R[I++]=214,R[I++]=98,Kt.position=I-r,I+=4):Kt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<T;P++){let N=o[P];if(!N)continue;let C,k=o.transitions;for(let W=0,oe=N.length;W<oe;W++){let ce=N[W];C=k[ce],C||(C=k[ce]=Object.create(null)),k=C}k[Gn]=P+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(g),Kt){Be.setUint32(Kt.position+r,I-Kt.position-r);let T=Kt;Kt=null,b(T[0]),b(T[1])}if(a.offset=I,l&&l.idsToInsert){I+=l.idsToInsert.length*6,I>Yt&&w(I),a.offset=I;let T=eb(R.subarray(r,I),l.idsToInsert);return l=null,T}return L&ld?(R.start=r,R.end=I,R):R.subarray(r,I)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,P=v.length;T<P;T++)v[T][Gn]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let P=R.subarray(r,I);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(g)):(c=T,P)}}L&ab&&(I=r)}};let b=g=>{I>Yt&&(R=w(I));var L=typeof g,T;if(L==="string"){let P=g.length;if(Kt&&P>=8&&P<4096){let k=Zv.test(g);Kt[k?0:1]+=g,R[I++]=193,b(k?-P:P);return}let N;P<32?N=1:P<256?N=2:P<65536?N=3:N=5;let C=P*3;if(I+C>Yt&&(R=w(I+C)),P<64||!p){let k,W,oe,ce=I+N;for(k=0;k<P;k++)W=g.charCodeAt(k),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=g.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),k++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-I-N}else T=p(g,I+N,C);T<32?R[I++]=160|T:T<256?(N<2&&R.copyWithin(I+2,I+1,I+1+T),R[I++]=217,R[I++]=T):T<65536?(N<3&&R.copyWithin(I+3,I+2,I+2+T),R[I++]=218,R[I++]=T>>8,R[I++]=T&255):(N<5&&R.copyWithin(I+5,I+3,I+3+T),R[I++]=219,Be.setUint32(I,T),I+=4),I+=T}else if(L==="number")if(g>>>0===g)g<64?R[I++]=g:g<256?(R[I++]=204,R[I++]=g):g<65536?(R[I++]=205,R[I++]=g>>8,R[I++]=g&255):(R[I++]=206,Be.setUint32(I,g),I+=4);else if(g>>0===g)g>=-32?R[I++]=256+g:g>=-128?(R[I++]=208,R[I++]=g+256):g>=-32768?(R[I++]=209,Be.setInt16(I,g),I+=2):(R[I++]=210,Be.setInt32(I,g),I+=4);else{let P;if((P=this.useFloat32)>0&&g<4294967296&&g>=-2147483648){R[I++]=202,Be.setFloat32(I,g);let N;if(P<4||(N=g*xs[(R[I]&127)<<1|R[I+1]>>7])>>0===N){I+=4;return}else I--}R[I++]=203,Be.setFloat64(I,g),I+=8}else if(L==="object")if(!g)R[I++]=192;else{if(l){let N=l.get(g);if(N){if(!N.id){let C=l.idsToInsert||(l.idsToInsert=[]);N.id=C.push(N)}R[I++]=214,R[I++]=112,Be.setUint32(I,N.id),I+=4;return}else l.set(g,{offset:I-r})}let P=g.constructor;if(P===Object)D(g,!0);else if(P===Array){T=g.length,T<16?R[I++]=144|T:T<65536?(R[I++]=220,R[I++]=T>>8,R[I++]=T&255):(R[I++]=221,Be.setUint32(I,T),I+=4);for(let N=0;N<T;N++)b(g[N])}else if(P===Map){T=g.size,T<16?R[I++]=128|T:T<65536?(R[I++]=222,R[I++]=T>>8,R[I++]=T&255):(R[I++]=223,Be.setUint32(I,T),I+=4);for(let[N,C]of g)b(N),b(C)}else{for(let N=0,C=ws.length;N<C;N++){let k=qa[N];if(g instanceof k){let W=ws[N];if(W.write){W.type&&(R[I++]=212,R[I++]=W.type,R[I++]=0),b(W.write.call(this,g));return}let oe=R,ce=Be,ie=I;R=null;let K;try{K=W.pack.call(this,g,U=>(R=oe,oe=null,I+=U,I>Yt&&w(I),{target:R,targetView:Be,position:I-U}),b)}finally{oe&&(R=oe,Be=ce,I=ie,Yt=R.length-10)}K&&(K.length+I>Yt&&w(K.length+I),I=Jv(K,R,I,W.type));return}}D(g,!g.hasOwnProperty)}}else if(L==="boolean")R[I++]=g?195:194;else if(L==="bigint"){if(g<BigInt(1)<<BigInt(63)&&g>=-(BigInt(1)<<BigInt(63)))R[I++]=211,Be.setBigInt64(I,g);else if(g<BigInt(1)<<BigInt(64)&&g>0)R[I++]=207,Be.setBigUint64(I,g);else if(this.largeBigIntToFloat)R[I++]=203,Be.setFloat64(I,Number(g));else throw new RangeError(g+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");I+=8}else if(L==="undefined")this.encodeUndefinedAsNil?R[I++]=192:(R[I++]=212,R[I++]=0,R[I++]=0);else if(L==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+L)},D=this.useRecords===!1?this.variableMapSize?g=>{let L=Object.keys(g),T=L.length;T<16?R[I++]=128|T:T<65536?(R[I++]=222,R[I++]=T>>8,R[I++]=T&255):(R[I++]=223,Be.setUint32(I,T),I+=4);let P;for(let N=0;N<T;N++)b(P=L[N]),b(g[P])}:(g,L)=>{R[I++]=222;let T=I-r;I+=2;let P=0;for(let N in g)(L||g.hasOwnProperty(N))&&(b(N),b(g[N]),P++);R[T+++r]=P>>8,R[T+r]=P&255}:g=>{let L=Object.keys(g),T,P=s.transitions||(s.transitions=Object.create(null)),N=0;for(let k=0,W=L.length;k<W;k++){let oe=L[k];T=P[oe],T||(T=P[oe]=Object.create(null),N++),P=T}let C=P[Gn];if(C)C>=96&&h?(R[I++]=((C-=96)&31)+96,R[I++]=C>>5):R[I++]=C;else{C=s.nextId,C||(C=64),C<y&&this.shouldShareStructure&&!this.shouldShareStructure(L)?(C=s.nextOwnId,C<x||(C=y),s.nextOwnId=C+1):(C>=x&&(C=y),s.nextId=C+1);let k=L.highByte=C>=96&&h?C-96>>5:-1;P[Gn]=C,s[C-64]=L,C<y?(L.isShared=!0,s.sharedLength=C-63,i=!0,k>=0?(R[I++]=(C&31)+96,R[I++]=k):R[I++]=C):(k>=0?(R[I++]=213,R[I++]=114,R[I++]=(C&31)+96,R[I++]=k):(R[I++]=212,R[I++]=114,R[I++]=C),N&&(A+=S*N),v.length>=m&&(v.shift()[Gn]=0),v.push(P),b(L))}for(let k=0,W=L.length;k<W;k++)b(g[L[k]])},w=g=>{let L;if(g>16777216){if(g-r>od)throw new Error("Packed buffer would be larger than maximum buffer size");L=Math.min(od,Math.round(Math.max((g-r)*(g>67108864?1.25:2),4194304)/4096)*4096)}else L=(Math.max(g-r<<2,R.length-1)>>12)+1<<12;let T=new Wa(L);return Be=new DataView(T.buffer,0,L),R.copy?R.copy(T,0,r,g):T.set(R.slice(r,g)),I-=r,r=0,Yt=T.length-10,R=T}}useBuffer(t){R=t,Be=new DataView(R.buffer,R.byteOffset,R.byteLength),I=0}};qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,En];ws=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?nd(n,16,t):id(_s?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==sd&&this.structuredClone?nd(n,Ha.indexOf(e.name),t):id(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function nd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function id(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function Jv(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function eb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let l=i+r;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function ro(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");qa.unshift(n.Class),ws.unshift(n)}rd(n)}var ad=new to({useRecords:!1}),tb=ad.pack,rb=ad.pack;var{NEVER:ob,ALWAYS:nb,DECIMAL_ROUND:ib,DECIMAL_FIT:sb}=bs,ld=512,ab=1024;var cd=new to({structuredClone:!0});ro({Class:Ve.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ve.prototype),n}});ro({Class:Pe.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Pe.prototype),n}});ro({Class:At.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,At.prototype),n}});ro({Class:Dn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Dn(n)}});ro({Class:Bn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Bn(n)}});function lb(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function $a(n){if(ls(n))return n;if(Array.isArray(n))return n.map($a);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=$a(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ts;(r=>{function n(o){return cd.pack(o)}r.serialize=n;function t(o){return cd.unpack(o)}r.deserialize=t;function e(o){return lb(n($a(o))).toString()}r.checksum=e})(Ts||(Ts={}));var As;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(As||(As={}));var Ns;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ns||(Ns={}));var Xa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Xa||(Xa={}));var Ya;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Ya||(Ya={}));var Cs;(t=>t.defaultData={...Ya.defaultData,...Xa.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Ka=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Ka||{}),Qa=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Qa||{}),Za=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Za||{}),Is;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Is||(Is={}));var ud=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],pd=["wrapping","image"],Vr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:pt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:vt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Vr||(Vr={}));var br;(l=>{function n(c){return!c.layers.some(a=>{if(a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")return!0})&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new Pe}}l.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}l.defaultData=o;function i(c,p="layer1",a="layer2"){let u=new Pe;return u.push({fi:0,data:Vr.defaultData("light",c),id:p}),u.push({fi:1,data:Vr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Vr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new Pe;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:Vr.defaultData("light",p),id:u}),{layers:f}}l.defaultTwoLayerTextureData=s})(br||(br={}));var Ho;(t=>{function n(){return{points:new Pe,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Ho||(Ho={}));var Ps;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ps||(Ps={}));var Rn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Ho.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Rn||(Rn={}));var Vn;(o=>{o.identity={...is.identity,hiddenMatrix:Er.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Fo.isEqual(i.position,s.position)?null:s.position,rotation:Fo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Fo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Er.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Vn||(Vn={}));var Sr;(t=>t.defaultData={states:new Pe,events:new Pe,visible:!0,raycastLock:!1,...Vn.identity})(Sr||(Sr={}));var dd;(t=>t.defaultData={type:"Empty",...Sr.defaultData})(dd||(dd={}));var Ls;(t=>t.defaultData={type:"Mesh",...Sr.defaultData,...Cs.defaultData})(Ls||(Ls={}));var fd;(t=>t.defaultData={type:"TextFrame",...Sr.defaultData,...Is.defaultData})(fd||(fd={}));var Os;(t=>t.defaultData={...Sr.defaultData,...Vn.identity,...Jr.defaultData})(Os||(Os={}));var md;(t=>{function n(e){return{...Sr.defaultData,...Ns.defaultData(e)}}t.defaultData=n})(md||(md={}));var hd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Er.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Pe,events:new Pe,...Jr.defaultData},r.defaultMeshObject={name:"Rectangle",...Sr.defaultData,...Ls.defaultData,geometry:Rn.defaultData("RectangleGeometry"),material:br.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Sr.defaultData,...Ls.defaultData,geometry:Rn.defaultData("BooleanGeometry"),material:br.defaultTwoLayerData("phong","layer1","layer2")}))(hd||(hd={}));var gd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ea(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&Zr(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ea(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[p,a]of Object.entries(c.layers)){let u=s[l]?.layers?.data(p);u&&Zr(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Vn.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(As.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=pt.clone(s.color))}return i}e.patch=t})(gd||(gd={}));var Ms;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Ms||(Ms={}));var Ds;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Oi(r,Ve.prototype)}e.defaultColors=n;function t(){return{materials:new Ve,images:new Ve,colors:new Ve,audios:new Ve,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Ds||(Ds={}));function el(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...La(qt(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...qt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function cb(n){Object.values(n.shared.materials).forEach(t=>el(t))}function ub(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&el(r)}):"material"in e&&typeof e.material!="string"&&el(e.material)})}function pb(n){Object.assign(n.scene.publish,{orbitControls:{...Ms.defaultData,...qt(n.scene.publish.orbitControls)}})}function db(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((ud.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(pd.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function fb(n){n.scene.publish.withBackground=!0}function mb(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function hb(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function gb(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function yb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Ja(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...qt(t),colors:e,steps:r};Object.assign(t,o)}})}function xb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function yd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ja(r)}):"material"in e&&typeof e.material!="string"&&Ja(e.material)}),Object.values(n.shared.materials).forEach(t=>Ja(t))}function vb(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function bb(n){n.shared.audios=Oi({},Ve.prototype)}function Sb(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function wb(n){Object.entries(qt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(qt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function _b(n){n.scene.publish.settings.web.preload=!1}var xd=16;function vd(n){let t=n.schema??0;t!==xd&&(console.warn("updating from ",t,"to ",xd),t<1&&(ub(n),cb(n),n.schema=1),t<2&&(pb(n),n.schema=2),t<3&&(db(n),n.schema=3),t<4&&(fb(n),n.schema=4),t<5&&(mb(n),n.schema=5),t<6&&(hb(n),n.schema=6),t<7&&(gb(n),n.schema=7),t<8&&(yb(n),n.schema=8),t<9&&(yd(n),n.schema=9),t<10&&(xb(n),n.schema=10),t<11&&(vb(n),n.schema=11),t<12&&(yd(n),n.schema=12),t<13&&(bb(n),n.schema=13),t<14&&(Sb(n),n.schema=14),t<15&&(wb(n),n.schema=15),t<16&&(_b(n),n.schema=16))}var Bs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Bs||(Bs={}));import{Color as Tb}from"three";var Ue=class extends Tb{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};import{ConeBufferGeometry as Cb}from"three";import{BufferGeometry as Ab,CylinderBufferGeometry as Nb,Float32BufferAttribute as tl,Vector2 as Dt,Vector3 as Es}from"three";var Sd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new zn(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,f):m=new Nb(p,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Fr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function bd(n){return new Dt(n.y,-n.x)}var zn=class extends Ab{constructor(t,e,r,o,i,s,l,c,p,a,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,a=0);let m=[],h=[],y=[],x=[],v=0,A=r/2,S=new Es,b=new Es;f&&t==0&&(t=p),f&&e==0&&(e=a);let D=new Dt(t,A),w=new Dt(e,-A),g=null,L=null,T=null,P=null,N=D.clone().sub(w),C=0,k=0,W=0;d>0&&(C=Math.min(t,e)*(1-d),k=t-C,W=e-C);let oe=D.clone();oe.x-=C;let ce=Math.PI-N.angle(),ie=N.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),V=K+U,E=d?V:U,B=d?V:K;if(p=Math.min(p,(t-k)/E,N.length()/V),a=Math.min(a,(e-W)/B,N.length()/V),p>0){let z=p/K;g=D.clone().sub(new Dt(z,p)),d&&(T=g.clone(),T.x-=C-V*p),D.sub(N.clone().setLength(z))}if(a>0){let z=a/U;L=w.clone().sub(new Dt(z,-a)),w.add(N.clone().setLength(z)),d&&(P=L.clone(),P.x-=C-V*a,oe.sub(N.clone().setLength(z)))}N=D.clone().sub(w);let O=N.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+l,ee=new Dt(Math.sin(J),Math.cos(J));P&&L?(Q(M,q,ee,ce,a,P,-1,!0),Q(M,q,ee,ie,a,L,-1,!1)):L?(j(M,ee,L.x,0,-1),Q(M,q,ee,ie,a,L,-1,!1)):s||j(M,ee,e,W,-1);let H=bd(N).normalize();if(Fr(H,ee,S),!O)for(let Z=0;Z<=i;Z++){let $=Z/i,re=N.clone().multiplyScalar($).add(w);Fr(re,ee,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&g?(Q(M,q,ee,ce,p,g,1,!1),Q(M,q,ee,ie,p,T,1,!0)):g?(Q(M,q,ee,ce,p,g,1,!1),j(M,ee,g.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Z=bd(N).multiplyScalar(-1).normalize();Fr(Z,ee,S);for(let $=0;$<=i;$++){let re=$/i,le=N.clone().multiplyScalar(-re).add(oe);Fr(le,ee,b),h.push(b.x,b.y,b.z),y.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Z=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Z!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(F(-1,G[0],l),F(1,G[G.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new tl(h,3)),this.setAttribute("normal",new tl(y,3)),this.setAttribute("uv",new tl(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Z<0?le:1-le;$&&(ne-=1),ne*=J;let fe=new Dt(Math.sin(ne),Math.cos(ne)*Z),Le=fe.clone().multiplyScalar(ee).add(H);Fr(Le,q,b),h.push(b.x,b.y,b.z),Fr(fe,q,S),y.push(S.x,S.y,S.z),x.push(M,.5+b.y/r),z.push(v++)}}function j(z,M,q,J,ee){let H=new Es,Z=new Dt,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Fr(Z,M,H),h.push(H.x,H.y,H.z),y.push(0,ee,0),x.push(.5,.5),z.push(v++)}function F(z,M,q){let J=new Dt(Math.sin(q),Math.cos(q)),ee=new Dt(-Math.cos(q),Math.sin(q)),H=new Es,Z=z<0?(le,ne,fe)=>m.push(le,ne,fe):(le,ne,fe)=>m.push(le,fe,ne),$=new Dt((t+e+k+W)/4,0);Fr($,J,H),h.push(H.x,H.y,H.z),y.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),y.push(ee.x,0,ee.y);let fe=x.slice(le*2,le*2+2);x.push(...fe),v++}for(let le=re+1;le<v-1;le++)Z(re,le,le+1);Z(re,v-1,re+1)}}};var wd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,d;return p>0||a>0||c<360?d=new zn(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new Cb(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Ib,BufferGeometry as Pb,Float32BufferAttribute as rl,Vector3 as Un}from"three";var _d=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,p;return l==0?p=new Ib(t,e,r,o,i,s):p=new nl(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},ol=Math.PI/2,nl=class extends Pb{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,t/2,e/2,r/2);let a=[],u=[],d=[],f=[],m=0,h=0;y("z","y","x",-1,-1,r,e,t,s,i,0),y("z","y","x",1,-1,r,e,-t,s,i,1),y("x","z","y",1,1,t,r,e,o,s,2),y("x","z","y",1,-1,t,r,-e,o,s,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new rl(u,3)),this.setAttribute("normal",new rl(d,3)),this.setAttribute("uv",new rl(f,2));function y(A,S,b,D,w,g,L,T,P,N,C){let k=(g-2*l)/P,W=(L-2*l)/N,oe=g/2-l,ce=L/2-l,ie=T/2,K=P+1,U=N+1,V=0,E=0,B=new Un;for(let O=0;O<U;O++){let G=O*W-ce;for(let Q=0;Q<K;Q++){let j=Q*k-oe;B[A]=j*D,B[S]=G*w,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[S]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),f.push(Q/P),f.push(1-O/N),V+=1}}for(let O=0;O<N;O++)for(let G=0;G<P;G++){let Q=m+G+K*O,j=m+G+K*(O+1),F=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;a.push(Q,j,z),a.push(j,F,z),E+=6}p.addGroup(h,E,C),h+=E,m+=V}function x(A,S,b,D,w,g,L,T,P,N,C){let k=(L-2*l)/N,W=L/2-l,oe=T/2-l,ce=P/2,ie=N+1,K=0,U=0,V=new Un,E=new Un;for(let B=0;B<c+1;B++){let O=B/c*ol,G=Math.sin(O)*l,Q=(1-Math.cos(O))*l,j=Math.sin(O),F=Math.cos(O);V[S]=(oe+G)*w,V[b]=(ce-Q)*g,E[A]=0,E[S]=j*Math.sign(V[S]),E[b]=F*Math.sign(V[b]);for(let z=0;z<ie;z++){let M=z*k-W;V[A]=M*D,u.push(V.x,V.y,V.z),d.push(E.x,E.y,E.z),f.push(z/N),f.push(0),K+=1}}for(let B=0;B<c;B++)for(let O=0;O<N;O++){let G=m+O+ie*B,Q=m+O+ie*(B+1),j=m+(O+1)+ie*(B+1),F=m+(O+1)+ie*B;a.push(G,Q,F),a.push(Q,j,F),U+=6}p.addGroup(h,U,C),h+=U,m+=K}function v(A,S,b){let D=new Un,w=new Un(t/2,e/2,r/2);w.subScalar(l);let g=[],L=A*S*b>0?(P,N,C)=>a.push(P,N,C):(P,N,C)=>a.push(P,C,N);for(let P=0;P<=c;P++){let N=[],C=ol*(1-P/c),k=Math.cos(C),W=Math.sin(C),oe=0;for(let ce=0;ce<=P;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=k*ie,D.y=W,D.z=k*K;let U=w.clone().addScaledVector(D,l);u.push(A*U.x,S*U.y,b*U.z),d.push(A*D.x,S*D.y,b*D.z),f.push(0,0),N.push(m++),oe+=ol/P}g.push(N)}let T=g.length-1;for(let P=0;P<T;P++){let N=g[P],C=g[P+1],k=N.length-1;L(N[0],C[1],C[0]);for(let W=1;W<=k;W++)L(N[W-1],N[W],C[W]),L(N[W],C[W+1],C[W])}}}};import{BufferGeometry as Lb,Float32BufferAttribute as il,Triangle as Ob,Vector3 as wr,Vector2 as sl}from"three";var zr=class extends Lb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new il(l,3)),this.setAttribute("normal",new il(p,3)),this.setAttribute("uv",new il(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new wr,h=m.clone(),y=new Ob,x=i*o,v=o-x,A=s+1,S=new wr,b=(K,U)=>S.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),w=D(t.length/3,(K,U)=>new wr().fromArray(t,U*3).setLength(o)),g=[],L=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,B,O,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let M=Q-Q%3;E=e[M+(Q+1)%3],B=e[M+(Q+2)%3],O=U.distanceToSquared(w[E]),G=Math.min(G,O),V.push([E,B,O])}G+=1e-6;let j=[],F=0,z=V.length;for(let M=0;M<z;M++){[E,B,O]=V[F];let q=g[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*L),F=V.findIndex(J=>J[0]==B)}g.push(j)}let T=[];{let K=0,U=0,V,E,B=f==3;for(let O=0;O<=s;O++){V=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let G=0;G<s-O;G++)[K,U]=[V+G+O+2,E+G+O+3],T.push(V,E,...B?[U,V]:[K,E],U,K),[V,E]=[K,U];T.push(V,E,V+s+2)}}let P=m.clone(),N=m.clone(),C=m.clone(),k=m.clone(),W=m.clone(),oe=[],ce=D(w.length,()=>D(f,()=>m.clone()));for(let K=0;K<w.length;K++){m.copy(w[K]).normalize(),P.copy(m).multiplyScalar(v);let U=g[K];for(let j=0;j<U.length;j++){let F=U[j],z=U[(j+1)%f];y.setFromPointsAndIndices(w,K,F%L,z%L),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(P,ce[K][j])}let V=[],E=[],B=[],O=new wr;s==0&&[...ce[K]].reduce((j,F)=>j.add(F),O).multiplyScalar(1/f);for(let j=0;j<f;j++){let F=[],z=(j-1+f)%f,M=ce[K][z],q=ce[K][j];m.copy(M).sub(P),h.copy(q).sub(P);let J=P.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?N.copy(O):N.copy(P).setLength(v+H),E.push(H);let Z=[N,M,q];for(let $=0;$<2;$++){let re=Z[$],le=Z[$+1];k.subVectors(re,P),W.subVectors(le,P),C.crossVectors(k,W).normalize();for(let ne=0;ne<A;ne++){let fe=[J,ee][$]*ne/A;m.copy(k).applyAxisAngle(C,fe).add(P),V.push(m.clone()),$&&(b(m,P),F.push([ne==0?re:m.clone(),S.clone()]))}$&&(b(le,P),F.push([le,S.clone()]))}B.push(F)}oe.push(B);let G=2*A,Q=2;for(let j=0;j<f;j++){let F=G*j,z=G*((j+1)%f),M=[V[F]];for(let J=1;J<A;J++){k=V[F+J],W=V[z+J],M.push(k);for(let ee=1,H=J-Q+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(P).setLength(E[j]).add(P),M.push(m.clone());M.push(W)}for(let J=0;J<A;J++)M.push(V[J+A+F]);M.push(V[z+A]);let q=T.map(J=>M[J]);l.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,P),[S.x,S.y,S.z])).flat())}}let ie=[];for(let K=0;K<g.length;K++)for(let U=0;U<f;U++){let V=g[K][U];if(V<L){let E=g[V].findIndex(G=>G%L==K),B=oe[K][U],O=oe[V][E];for(let G=0;G<A;G++){let Q=B[G],j=O[A-G],F=B[G+1],z=O[A-(G+1)];[Q,j,F,F,j,z].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],O[A][0],B[A][0],O[0][0])}}for(;ie.length;){let K,U,V,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),V=ie.indexOf(U),E=V%2,U=ie.splice(V-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +O],B[G+1-+O],B[0]].forEach(Q=>{l.push(Q.x,Q.y,Q.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new wr;for(let w=0;w<l.length;w+=3){d.x=l[w+0],d.y=l[w+1],d.z=l[w+2];let g=b(d)/2/Math.PI+.5,L=D(d)/Math.PI+.5;c.push(g,1-L)}let f=new wr,m=new wr,h=new wr,y=new wr,x=new sl,v=new sl,A=new sl,S=(w,g,L,T)=>{T<0&&w.x===1&&(c[g]=w.x-1),L.x===0&&L.z===0&&(c[g]=T/2/Math.PI+.5)};for(let w=0,g=0;w<l.length;w+=9,g+=6){f.set(l[w+0],l[w+1],l[w+2]),m.set(l[w+3],l[w+4],l[w+5]),h.set(l[w+6],l[w+7],l[w+8]),x.set(c[g+0],c[g+1]),v.set(c[g+2],c[g+3]),A.set(c[g+4],c[g+5]),y.copy(f).add(m).add(h).divideScalar(3);let L=b(y);S(x,g+0,f,L),S(v,g+2,m,L),S(A,g+4,h,L)}for(let w=0;w<c.length;w+=6){let g=c[w+0],L=c[w+2],T=c[w+4],P=Math.max(g,L,T),N=Math.min(g,L,T);P>.9&&N<.1&&(g<.2&&(c[w+0]+=1),L<.2&&(c[w+2]+=1),T<.2&&(c[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function D(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new zr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Mb}from"three";var Td=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new jn(t*.5,i,s):new Mb(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},jn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],l=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],c="DodecahedronGeometry";super(s,l,c,t,e,r),this.type=c}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as kb,Plane as Hb,Shape as Fd,Vector2 as _r,Vector3 as Wb,MathUtils as fl,LineCurve as ml,QuadraticBezierCurve as zd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Gs,EllipseCurve as Db,LineCurve as Rs,LineCurve3 as Bb,MathUtils as Eb,QuadraticBezierCurve as ll,SplineCurve as Gb,Vector2 as tt,Vector3 as Cd}from"three";var kn=1e-12,Wo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Eb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Wo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},qo=class extends Wo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new qo(this.parent).copy(this)}},Bt=class extends Wo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new qo(this),new qo(this))}static create(e,r){let o=new Bt(e,new tt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Bt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Ad(o,e),Ad(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ad(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var cl=n=>n,$o=new tt,Vs=new tt,Rb=new tt,Vb=new tt,Fb=new tt,zb=new tt,Id=new Cd,Pd=new Cd;function Ld(n){let t=new tt;t.addVectors(n.v0,$o.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Vs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Gs(n.v0,t,e,n.v2)}function Hn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Ub(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function jb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function ul(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function Od(n,t,e){return Nd(n,t)&&Nd(t,e)&&al(n.position,t.position,e.position)}function al(n,t,e){return $o.copy(t).sub(n).cross(Vs.copy(e).sub(n))===0}function Md(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,l=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(l+c,s+p),o.set(l-c,s-p),[r,o]}function Dd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Bd(n,t,e,r,o,i){let s=t.x-n.x,l=t.y-n.y,c=e.x-n.x,p=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+p)*(l+p)),u;return ul(t,n,e)>Math.PI&&(a*=-1),Hn(p,l)?u=(l+p)*(r/a-.5)*8/3/(s-c):u=(s+c)*(r/a-.5)*8/3/(p-l),o.set(t.x-u*l,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function pl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Nd(n,t){return al(n.position,n.controls[1].position,t.position)&&al(n.position,t.controls[0].position,t.position)}function Ed(n,t,e,r,o=.5){let i=$o.subVectors(t,n).multiplyScalar(o).add(n),s=Vs.subVectors(e,t).multiplyScalar(o).add(t),l=Rb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=Vb.subVectors(s,i).multiplyScalar(o).add(i),a=Fb.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=zb.subVectors(a,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,a.x,a.y,u.x,u.y,r.x,r.y]}function Gd(n,t,e=12,r=!0){let o=Pd.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=cl(t[c]),a=$o,u=Ur(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Gs||p instanceof ll||p instanceof Rs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&jb(i,o))continue;i===void 0&&(i=Id),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Rd(n,t,e,r=12,o=!0){let i=Pd.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=cl(t[c]),u=$o,d=Ur(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Gs||a instanceof ll||a instanceof Rs){if(a.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Id:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function dl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=Ur(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=Ur(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Ur(n[0].roundedCurveCorner,t)*.5),r}function Ur(n,t=12){return n&&n instanceof Db?t*2:n&&(n instanceof Rs||n instanceof Bb)?1:n&&n instanceof Gb?t*n.points.length:t}function Vd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=cl(t[s]),c=Ur(l,e),p=$o;for(let a=0;a<=c;a++)if(l instanceof Gs||l instanceof ll||l instanceof Rs){if(l.getPoint(a/c,p),o!==void 0&&Ub(o,p,kn))continue;o===void 0&&(o=Vs),o.copy(p),n.push(p.x,p.y),i++}}return Hn(n[0],n[n.length-2],kn)&&Hn(n[1],n[n.length-1],kn)&&(n.pop(),n.pop()),r&&i>1&&!(Hn(n[i-1],n[1],kn)&&Hn(n[i-2],n[0],kn))&&(n.push(n[0],n[1]),i++),n}var hl=new _r,qb=new _r,$b=new _r,Xb=new _r,Yb=new _r,Kb=new _r,Se=class extends Fd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new kb;this.plane=new Hb(new Wb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=fl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Bt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],p=c.points.length-1,a=c.getPointIndexById(e);if(a<0)i+=p;else return a+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return r+l;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=hl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=fl.generateUUID()){let i;e instanceof _r?i=e:i=new _r(e,r);let s=new Bt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return Gd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=dl(this.points,e,!1),this.roundedCurveDivisions=dl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Rd(e,this.curves,r,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Vd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Ur(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(pl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(hl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=l[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){pl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let l=this.points[o-1];this._applyCurveForPoint(s,l)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],a=l.roundness,u=c&&p&&Od(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,y=d.getLength(),x=f.getLength(),v=Math.min(a,y*.499),A=Math.min(a,x*.499),S=Math.min(v,A),b=1-S/y,D=S/x,w=d.getPointAt(b,hl),g=f.getPointAt(D,qb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,g);let L;if(this.useCubicForRoundedCorners){let T=ul(w,l.position,g)/2,P=Math.tan(T)*w.distanceTo(l.position),[N,C]=Md(w,g,P,$b,Xb),k=Dd(N,C,l.position),[W,oe]=Bd(k,w,g,P,Yb,Kb);L=new Fs(w.clone(),W.clone(),oe.clone(),g.clone())}else L=new zd(w.clone(),l.position.clone(),g.clone());l.roundedCurveCorner=L,this.roundedCurves.splice(i+o,0,L),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof ml)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,p=l.getUtoTmapping(o,0),a=Ed(l.v0,l.v1,l.v2,l.v3,p);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return r}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Bt(fl.generateUUID(),new _r(s,l));f.controls[0].position.set(c,p),f.controls[1].position.set(a,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Fs&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof zd&&(i[l]=Ld(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,f;u instanceof Fs?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof ml&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],a=!1;return p instanceof Fs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof ml&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof Fd&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}};var yl=Math.PI*2;function gl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Qb(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Ud(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function Zb(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*d;m<0&&(m=0),m/=a*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*l,y=m*-i/o*s,x=h+(n+e)/2,v=y+(t+r)/2,A=(s-h)/o,S=(l-y)/i,b=(-s-h)/o,D=(-l-y)/i,w=Ud(1,0,A,S),g=Ud(A,S,b,D);return!p&&g>0&&(g-=yl),p&&g<0&&(g+=yl),{centerx:x,centery:v,ang1:w,ang2:g}}function jd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,a=(t-r)/2;if(p===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=Zb(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:y}=d,x=Math.abs(m)/(yl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let A=0;A<v;A++)c.push(Qb(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=gl(A[0],o,i,h,y),{x:D,y:w}=gl(A[1],o,i,h,y),{x:g,y:L}=gl(A[2],o,i,h,y);return{x1:S,y1:b,x2:D,y2:w,x:g,y:L}})}import{BufferAttribute as Us,BufferGeometry as oS}from"three";var Ie;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ie||(Ie={}));var je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(je||(je={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,l,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),l=n.edgeEval(r,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,e.s)):(s=n.edgeSign(t,r,e),l=-n.edgeSign(t,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),l=n.transEval(r,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,e.t)):(s=n.transSign(t,r,e),l=-n.transSign(t,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,o.t)):i.t=(r.t+e.t)/2},n}(),Wn=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),zs=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Xo=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),kd=function(){function n(){var t=new Xo,e=new Wn,r=new zs(0),o=new zs(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new zs(0),r=new zs(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Xo,e=new Xo,r=new Wn,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Xo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Wn;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Wn;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Xo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new Wn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,l;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,l=t.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,l,c,p;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Hd=function(){function n(){this.handle=null}return n}(),Wd=function(){function n(){this.key=null,this.node=0}return n}(),Jb=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Hd,this.handles[r]=new Wd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Hd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Wd}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),xl=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),qd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),eS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new qd,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new qd;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),tS=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var l=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new xl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ie.ODD:return(e&1)!==0;case Ie.NONZERO:return e!==0;case Ie.POSITIVE:return e>0;case Ie.NEGATIVE:return e<0;case Ie.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),p=l.eUp.Sym,p.Org===a.Org;)p.Onext!==a&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(a.Oprev,p)),l.windingNumber=c.windingNumber-p.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,a),n.deleteRegion(t,c),t.mesh.delete(a)),u=!1,c=l,a=p;c.dirty=!0,ue(c.windingNumber-p.winding===l.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),l=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+l*r.coords[0],t.coords[1]+=s*e.coords[1]+l*r.coords[1],t.coords[2]+=s*e.coords[2]+l*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,l=i.Org,c=o.Dst,p=i.Dst,a,u,d=new Xo,f,m;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,l)>=0),ue(s!==t.event&&l!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,p.t),a>u))return!1;if(se.vertLeq(s,l)){if(se.edgeSign(p,s,l)>0)return!1}else if(se.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,l,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(l.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(l.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=se.vertLeq(s,l)?s:l,se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),se.vertEq(d,s)||se.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(se.edgeSign(c,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,l,p),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,p=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(l.Org,t.event)&&(t.mesh.splice(i.Oprev,l),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,l,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,l,c,p=new xl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(l.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=t.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(t,i,null);l.Onext===s?n.connectRightVertex(t,o,l):n.addRightEdges(t,o,l.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new xl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new eS(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,l=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,l)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new Jb(i,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),rS=function(){function n(){this.mesh=new kd,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ie.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,l,c=[0,0,0],p=[0,0,0],a=[0,0,0],u=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],p[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,m[x]=e),i>c[x]&&(c[x]=i,f[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=m[v],o=f[v],a[0]=r.coords[0]-o.coords[0],a[1]=r.coords[1]-o.coords[1],a[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=a[1]*u[2]-a[2]*u[1],d[1]=a[2]*u[0]-a[0]*u[2],d[2]=a[0]*u[1]-a[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>l&&(l=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);l<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=t.next;l!==t;l=l.next)l.s=this.dot_(l.coords,r),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,l=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>r)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===je.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new kd),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Ie.ODD),e===void 0&&(e=je.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),tS.computeInterior(this,s);var l=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function oo(n){var t=n.windingRule,e=t===void 0?Ie.ODD:t,r=n.elementType,o=r===void 0?je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new rS;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,a,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:y?x.mesh:void 0}}}var _3=Ie.ODD,T3=Ie.NONZERO,A3=Ie.POSITIVE,N3=Ie.NEGATIVE,C3=Ie.ABS_GEQ_TWO,I3=je.POLYGONS,P3=je.CONNECTED_POLYGONS,L3=je.BOUNDARY_CONTOURS;var Yo=class extends oS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ie.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ie.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,x=i[y+0],v=i[y+1];if(a!==void 0&&x!==a&&(c=!1),u!==void 0&&v!==u&&(p=!1),a=x,u=v,!c&&!p)break}!c&&!p&&(l=oo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Us(new Float32Array(d*3),3),this._normalAttribute=new Us(new Float32Array(d*3),3),this._uvAttribute=new Us(new Float32Array(d*2),2),this._indexAttribute=new Us(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],g=l.vertices[D+1];w<m&&(m=w),w>h&&(h=w),g<y&&(y=g),g>x&&(x=g)}let v=h-m,A=x-y;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],g=l.vertices[D+1],L=(w-m)/v,T=(g-y)/A;this._positionAttribute.setXYZ(S,w,g,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,L,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=l.elements[D+0],g=l.elements[D+1],L=l.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,g),this._indexAttribute.setX(D+2,L)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new Yo(this._shape,this._curveSegments);return e.userData=Pn(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as nS}from"three";var js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*js.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*js.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},qn=js;qn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var vl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Ko=class extends nS{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let l=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(w=>{let g=w.extractShapePointsToFlatArray([],i),L=[];for(let T=g.length-1;T>=1;T-=2){let P=g[T-1],N=g[T-0];L.push(P,N)}return L}),p=oo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=oo({windingRule:Ie.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(a){p.elementCount+=a.elementCount;for(let w=0;w<a.elements.length;w++){let g=a.elements[w],L=w%2===0?p.vertexCount:0;p.elements.push(g+L)}for(let w=0;w<a.vertexIndices.length;w++){let g=a.vertexIndices[w],L=p.vertexCount;p.vertexIndices.push(g+L)}for(let w=0;w<a.vertices.length;w++){let g=a.vertices[w];p.vertices.push(g)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,g=p.vertexCount;w<g;w++){let L=w*2,T=p.vertices[L+0],P=p.vertices[L+1];T<d&&(d=T),T>f&&(f=T),P<m&&(m=P),P>h&&(h=P)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let y=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new qn(y);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let g=w>=u,L=w*2,T=p.elements[L+0],P=p.elements[L+1],N=T+P,C={start:T,count:P,normals:[],continuous:[],concave:[]},k=T,W=N-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let V=k-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],O=p.vertices[k*2+0],G=p.vertices[k*2+1],Q=p.vertices[oe*2+0],j=p.vertices[oe*2+1],F=O-E,z=G-B,M=Math.sqrt(F*F+z*z);F/=M,z/=M;let q=O-Q,J=G-j,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,C.normals[V*2+0]=-J,C.normals[V*2+1]=q,C.concave[V]=F*J-z*q>0;let H=p.vertexIndices[k];if(Array.isArray(H))C.continuous[V]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)C.continuous[V]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Z].getTangent($),fe=this._shape.roundedCurves[re].getTangent(le);C.continuous[V]=ne.dot(fe)>.95}}g&&(C.normals[V*2+0]*=-1,C.normals[V*2+1]*=-1),[W,k,oe]=[k,oe,oe+1],oe>=N&&(oe-=P)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,N*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((V,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,N*2)});for(let V=1;V<=this._bevelSegments;V++){let E=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],G=[],Q=[],j=[],F=0;for(let M=0;M<P;M++){let q=M*2,J=(M-1+P)%P*2,ee=p.vertices[C.start*2+q+0],H=p.vertices[C.start*2+q+1],Z=-C.normals[J+0]*B,$=-C.normals[J+1]*B,re=-C.normals[q+0]*B,le=-C.normals[q+1]*B;if(C.concave[M]||!C.concave[M]&&g){let ne=Math.atan2($,Z),fe=Math.atan2(le,re);fe>ne&&(fe-=Math.PI*2);let Le=fe-ne;if(C.continuous[M]||g){let me=ne+Le/2,Ge=Math.cos(me)*B,be=Math.sin(me)*B;O[2*F+0]=ee+Ge*(g?-1:1),O[2*F+1]=H+be*(g?-1:1),j[F]=M,F++}else{let me=Math.max(1,Math.floor(i/4*Math.abs(Le)/Math.PI));for(let Ge=0;Ge<=me;Ge++){let be=ne+Le*(Ge/me),lt=Math.cos(be)*B,wt=Math.sin(be)*B;O[2*F+0]=ee+lt,O[2*F+1]=H+wt,j[F]=M,F++}}}else O[2*F+0]=ee+Z,O[2*F+1]=H+$,j[F]=M,G[M]=F,F++,O[2*F+0]=ee,O[2*F+1]=H,j[F]=M,F++,O[2*F+0]=ee+re,O[2*F+1]=H+le,j[F]=M,Q[M]=F,F++}let z=oo({windingRule:Ie.POSITIVE,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:M=>{let J=M.Org.idx,ee=j[J],H=j[(J+1)%j.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=P);for(let H=q;H<ee;H++){let Z=H%P,$=(H+1)%P;if(!C.continuous[Z]||!C.continuous[$]){z.vertexIndices[M]=[q,Z],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:V,angle:E,size:B,boundary:z,reverseMap:j,insetPoints:O})}let K=(V,E,B)=>{let O=0,G=V.boundary.vertexIndices.length;for(;O<G&&B(V.boundary.vertexIndices[E]);)E=(E+1)%G,O++;return O},U=x.length;for(let V=1;V<ie.length;V++){let E=ie[V-1],B=ie[V],O=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!O||!G)break;let Q=C.concave.length,j=0,F=vl(j,P);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=vl(j,P);let z=E.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%O;while(F(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(F(B.boundary.vertexIndices[M]));j=(j+1)%P;let q=j,J=this.buildBevelVert(C,E,(z-1+O)%O),ee=this.buildBevelVert(C,B,(M-1+G)%G),H=J,Z=ee,$,re,le=!1;do{F=vl(j,P);let ne=K(E,z,F),fe=K(B,M,F),Le=le;if(le=!1,ne&&!fe){for(let me=0;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;le=!0}else if(!ne&&fe)for(let me=0;me<fe;me++)re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ne&&fe)if($=this.buildBevelVert(C,E,z,0),re=this.buildBevelVert(C,B,M,0),Le?(x.push(H.topN,re.topP,Z.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Z.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Z.topN,H.topN,$.topP),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP)),H=$,Z=re,ne===fe)for(let me=1;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(H.topN,$.topP,Z.topN),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Z.bottomN),x.push($.bottomP,Z.bottomN,re.bottomP),H=$,Z=re;else if(ne>fe){let me=ne/fe,Ge=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(C,E,(z+be)%O,be/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,be>(Ge+1)*me&&(Ge++,re=this.buildBevelVert(C,B,(M+Ge)%G,Ge/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let me=fe/ne,Ge=0;for(let be=1;be<fe;be++)re=this.buildBevelVert(C,B,(M+be)%G,be/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,be>(Ge+1)*me&&(Ge++,$=this.buildBevelVert(C,E,(z+Ge)%O,Ge/(ne-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ne)%O,M=(M+fe)%G,j=(j+1)%Q}while(j!==q)}{let V=ie[0];for(let E=0,B=V.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(C,V,E),G=this.buildBevelVert(C,V,(E+1)%B);x.push(G.topP,O.topN,O.bottomN),x.push(G.topP,O.bottomN,G.bottomP)}}if(g){let V=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],O=x[E-1],G=x[E-0];V.push(G,O,B)}x.splice(U,x.length-U,...V)}if(g){let V=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],O=ie[ie.length-1].boundary.vertices[E-0];V.push(B,O)}v.push(V)}if(!g){let V=ie[ie.length-1],E=oo({windingRule:ie.length>1?Ie.POSITIVE:Ie.ODD,elementType:je.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Q=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Q.top),x.push(Q.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new ks(Uint32Array.from(x),1),S=new ks(this._buffer.positions,3),b=new ks(this._buffer.normals,3),D=new ks(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[u+0]=l,this._buffer.uvs[u+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[u+2]=l,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,y=p*2,x=a*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[y+0],g=e.normals[y+1],L=e.normals[x+0],T=e.normals[x+1];if(d){let W=L-w,oe=T-g;w=w+W*(1-i),g=g+oe*(1-i);let ce=Math.sqrt(w*w+g*g);w/=ce,g/=ce}let P=this._buffer.get(u?2:4),N=P*3,C=P*2,k={i:o,fi:p,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=w*f,this._buffer.normals[N+1]=g*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=w*f,this._buffer.normals[N+4]=g*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b,u||(P+=2,N+=6,C+=4,k.topP=P+0,k.bottomP=P+1,this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=L*f,this._buffer.normals[N+1]=T*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=L*f,this._buffer.normals[N+4]=T*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Pn(this.userData),e}};var st=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Se(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Se(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Yo(n.shape,o):s=new Ko(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Xd,Vector2 as Yd}from"three";var Kd=Math.PI*2,Qd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,a=t*.5,u=e*.5,d=iS(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function iS(n,t,e,r,o,i){if(r>=Kd)return o>30||o%4===0?(aS(n,t,e,i),Math.round(o/4)):$d(n,r,o,t,e,i);let s={x:0,y:e},l=r+Math.PI*.5,c={x:Math.cos(l)*t,y:Math.sin(l)*e},p=jd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?sS(n,s.x,s.y,p,o,t,e,i):$d(n,r,o,t,e,i)}function sS(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(Qo(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=Qo(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?Zd(n,i,s,l):n.addPoint(Qo(0,0)),c}function $d(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,p=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(Qo(p,a))}return t<Kd?i>0?Zd(n,r,o,i):n.addPoint(Qo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Jd(n,r,o,i)),1}function aS(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(Hs(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(Hs(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Hs(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(Hs(o,i-e,o+l,i-e,o-l,i-e)),r>0&&Jd(n,t,e,r)}function Qo(n,t){return new Bt(Xd.generateUUID(),new Yd(n,t))}function Hs(n,t,e,r,o,i){let s=Qo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Zd(n,t,e,r){ef(n,t,e,r).forEach(i=>n.addPoint(i))}function Jd(n,t,e,r){let o=ef(n,t,e,r),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function ef(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Yd(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=Xd.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(p)}),l}import{BufferGeometry as lS,Float32BufferAttribute as bl,Vector3 as tf}from"three";var rf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:p,cornerRadius:a,cornerSegments:u}=n.parameters,d=new $n(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},$n=class extends lS{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new tf,h=new tf,y=m(),x=m(),v=m(),A,S,b,D,w,g,L,T,P=m(),N=m(),C=m(),k=m(),W=m(),oe=m(),ce=m(),ie=m(),K=r-2*c+.001,U=K/s,V=Math.ceil(l*s),E=V+1,B=K/V,O=-K/2,G=a+1,Q=2*Math.PI/a,j=Math.PI/2/d,F=.01,z=Math.min((1-u/100)*c,c-F),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(De=>Array($*De).fill(0)),fe=[],Le=i-c;function me(De,yt){let kt=Math.PI/2;g=yt*B,T=2*Math.PI*(g%U)/U+kt,g+=O,L=Math.sin(T)*Le,w=Math.cos(T)*Le,t?De.set(w,L,g):De.set(w,g,L)}me(h,-1e-10),me(y,0),P.copy(h),me(h,1);let Ge=h.distanceTo(y),be=M+z,lt=Ge*V+2*be,wt=z,go=lt-be;for(let De=0;De<=V;De++){me(x,De),ie.subVectors(x,P).normalize(),P.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let yt=De===0,kt=De===V,Jm=yt?3*Math.PI/2:j,eh=yt?wt:go,th=yt?G:Z,rh=yt?0:$-G,oh=ie.clone().multiplyScalar(yt?-M:M).add(x),nh=ie.clone().multiplyScalar(yt?-1:1).normalize();for(let mr=0;mr<G;mr++){let vc=mr*Q;if(N.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(vc)),y.copy(ce).multiplyScalar(c*Math.sin(vc))),C.copy(N).normalize(),yt||kt){f||(q=rh+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=oh.getComponent(ct),le[q*3+ct]=nh.getComponent(ct)}),ne[q*2]=+kt,ne[q*2+1]=mr/a),y.copy(C).multiplyScalar(z),v.addVectors(x,y);for(let ct=0;ct<d;ct++){let _a=ct*j+Jm;k.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(_a)),y.copy(C).multiplyScalar(M*Math.cos(_a))),W.copy(k).normalize(),y.addVectors(v,k),k.normalize(),q=th+ct*G+mr,[0,1,2].forEach(Li=>{re[q*3+Li]=y.getComponent(Li),le[q*3+Li]=W.getComponent(Li)});let ih=+yt+Math.sin(_a);ne[q*2]=(eh+M*ih)/lt,ne[q*2+1]=mr/a}}y.addVectors(x,N),q=H+De*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=y.getComponent(ct),le[q*3+ct]=C.getComponent(ct)}),ne[q*2]=(be+De*Ge)/lt,ne[q*2+1]=mr/a}}let gt=E+2*d+J,yo=1,[Ii,Pi]=f?[yo,yo+E-1]:[0,gt-1];for(let De=Ii;De<=Pi-1;De++){let yt=f&&De===Pi-1;for(let kt=0;kt<G-1;kt++)A=De*G+kt,S=A+1,b=(yt?kt:A)+G,D=(yt?kt+1:S)+G,De===0?fe.push(S,D,b):De===gt-2?fe.push(A,S,b):fe.push(A,S,b,S,D,b)}this.setIndex(fe),this.setAttribute("position",new bl(re,3)),this.setAttribute("normal",new bl(le,3)),this.setAttribute("uv",new bl(ne,2))}};import{IcosahedronBufferGeometry as cS}from"three";var of=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Xn(t*.5,i,s):new cS(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Xn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],l="IcosahedronGeometry";super(i,s,l,t,e,r),this.type=l}static fromJSON(t){return new Xn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as uS,Shape as pS}from"three";var nf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new pS;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new uS(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as pf,BufferGeometryLoader as SS,Vector3 as wS,BoxBufferGeometry as df}from"three";import{BufferGeometry as yS,Vector2 as _l,Vector3 as uf}from"three";import{Box3 as dS,BufferAttribute as Yn,BufferGeometry as sf,Color as lf,EventDispatcher as fS,Float32BufferAttribute as Zo,Matrix3 as af,Matrix4 as cf,MathUtils as mS,Object3D as hS,Sphere as gS,Vector2 as Ct,Vector3 as rt}from"three";var Qt=new cf,Sl=new hS,Ws=new rt,jr=class extends fS{constructor(){super(),this.uuid=mS.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new af().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Qt.makeRotationX(t),this.applyMatrix4(Qt),this}rotateY(t){return Qt.makeRotationY(t),this.applyMatrix4(Qt),this}rotateZ(t){return Qt.makeRotationZ(t),this.applyMatrix4(Qt),this}translate(t,e,r){return Qt.makeTranslation(t,e,r),this.applyMatrix4(Qt),this}scale(t,e,r){return Qt.makeScale(t,e,r),this.applyMatrix4(Qt),this}lookAt(t){return Sl.lookAt(t),Sl.updateMatrix(),this.applyMatrix4(Sl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new lf().fromBufferAttribute(l,d));function a(d,f,m,h){let y=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,f),new rt().fromBufferAttribute(s,m)],v=new Jo(d,f,m,x,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,f),new Ct().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,f),new Ct().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let y=m,x=m+h;y<x;y+=3)r!==void 0?a(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ws).negate(),this.translate(Ws.x,Ws.y,Ws.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new cf;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,l),e.subVectors(s,l),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],p=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,p),o.subVectors(c,p),r.cross(o),e[l.a].add(r),e[l.b].add(r),e[l.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new jr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let p=new rt,a={a:new rt,b:new rt,c:new rt};i.push(p),s.push(a)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(l.normal),p.a.copy(l.vertexNormals[0]),p.b.copy(l.vertexNormals[1]),p.c.copy(l.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new dS),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new gS),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,l=t.vertices,c=this.faces,p=t.faces,a=this.colors,u=t.colors;e!==void 0&&(o=new af().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)a.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,y,x=m.vertexNormals,v=m.vertexColors,A=new Jo(m.a+i,m.b+i,m.c+i);A.normal.copy(m.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=x.length;S<b;S++)h=x[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)y=v[S],A.vertexColors.push(y.clone());A.materialIndex=m.materialIndex+r,c.push(A)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,y=m.length;h<y;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(p,1)}let l=this.vertices.length-r.length;return this.vertices=r,l}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,x=!1,v=this.faceVertexUvs[0][m]!==void 0,A=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,w=0;if(w=a(w,0,0),w=a(w,1,y),w=a(w,2,x),w=a(w,3,v),w=a(w,4,A),w=a(w,5,S),w=a(w,6,b),w=a(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let g=this.faceVertexUvs[0][m];r.push(f(g[0]),f(g[1]),f(g[2]))}if(A&&r.push(u(h.normal)),S){let g=h.vertexNormals;r.push(u(g[0]),u(g[1]),u(g[2]))}if(b&&r.push(d(h.color)),D){let g=h.vertexColors;r.push(d(g[0]),d(g[1]),d(g[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function d(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new jr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,y=m.length;h<y;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,y=i[d].vertices.length;h<y;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,y=i[d].normals.length;h<y;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[d].vertexNormals.length;h<y;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[d].faceNormals.length;h<y;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;d++)this.lineDistances.push(p[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new wl().fromGeometry(this),e=new sf,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Yn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Yn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Yn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Yn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Yn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let p=s[l],a=new Zo(p.data.length*3,3);a.name=p.name,i.push(a.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Zo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new Zo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new sf,r=t.geometry;if(t.isPoints||t.isLine){let o=new Zo(r.vertices.length*3,3),i=new Zo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new Zo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};jr.prototype.isGeometry=!0;var wl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=t.morphTargets,c=l.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:l[x].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:a[x].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,y=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=l[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=a[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Jo=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new lf,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var xS=["a","b","c"];function vS(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Tl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Al(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,p;if(r.has(c))p=r.get(c);else{let a=e[s],u=e[l];p={a,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function bS(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Al(s.a,s.b,n,r,s,e),Al(s.b,s.c,n,r,s,e),Al(s.c,s.a,n,r,s,e)}function qs(n,t,e,r,o){n.push(new Jo(t,e,r,void 0,void 0,o))}function en(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function $s(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof yS?t=new jr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new uf,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],f=new Map;bS(c,p,d,f);let m=[],h,y,x,v,A,S,b;for(let F of Array.from(f.keys())){for(y=f.get(F),x=new uf,A=3/8,S=1/8,b=y.faces.length,b!=2&&(A=.5,S=0,b!=1),x.addVectors(y.a,y.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=y.faces[s],l=0;l<3&&(h=c[vS(v,xS[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),y.newEdge=m.length,m.push(x)}let D,w,g,L,T,P,N,C=[];for(o=0,i=c.length;o<i;o++){for(P=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),w=1-r*Number(D),g=D,r<=2&&(r==2?(w=3/4,g=1/8):r==1||r==0),N=P.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)L=T[s],h=L.a!==P?L.a:L.b,e.add(h);e.multiplyScalar(Number(g)),N.add(e),C.push(N)}let k=C.concat(m),W=C.length,oe,ce,ie,K=[],U=[],V,E,B,O,G=new _l,Q=new _l,j=new _l;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(Tl(v.a,v.b,f).newEdge)+W,ce=Number(Tl(v.b,v.c,f).newEdge)+W,ie=Number(Tl(v.c,v.a,f).newEdge)+W,qs(K,oe,ce,ie,v.materialIndex),qs(K,v.a,oe,ie,v.materialIndex),qs(K,v.b,ce,oe,v.materialIndex),qs(K,v.c,ie,ce,v.materialIndex),u&&(V=a[o],E=V[0],B=V[1],O=V[2],G.set(en(E.x,B.x),en(E.y,B.y)),Q.set(en(B.x,O.x),en(B.y,O.y)),j.set(en(E.x,O.x),en(E.y,O.y)),$s(U,G,Q,j),$s(U,E,G,j),$s(U,B,Q,G),$s(U,O,j,Q));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new wS,ff=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new pf().copy(new df(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new pf().copy(new df(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Xs(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new SS(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var mf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let y=f*h,x=u+Math.sin(y)*p,v=d+Math.cos(y)*a;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as _S,Float32BufferAttribute as Nl,Vector2 as Zt,Vector3 as $e}from"three";var hf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=new Il(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Kn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Cl(n,t,e,r,o,i){let s=t.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),r===o){let p=s.add(l).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(l,r/Math.sin(p))}}function TS(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Il=class extends _S{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],u=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),y=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new $e(0,-f,0),S=new $e(0,f,0),b=new Zt(t,-f),D=new Zt(h,-f),w=new Zt(0,S.y).sub(D),g=new Zt(0,S.y).sub(b),L=new Zt(w.y,-w.x).normalize(),T=new Zt(g.y,-g.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,N);let C;{let U=new $e(L.x,L.y,0),V=new $e(Math.cos(y)*U.x,U.y,Math.sin(y)*U.x);C=U.angleTo(V)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-C)/2),oe=new $e;if(!i){p.push(A.x,A.y,A.z),a.push(0,-1,0),u.push(0,0);let U=d++,V=[],E=b.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let G=O/r*Math.PI*2+m,Q=new Zt(Math.sin(G),Math.cos(G));Kn(E,Q,oe),p.push(oe.x,oe.y,oe.z),a.push(0,-1,0),u.push(0,0),V.push(d++)}for(let O=0;O<V.length;O++)c.push(V[O],U,V[(O+1)%V.length])}let ce=[];{let U=new $e,V=new $e,E=new $e,B=new $e,O=new $e,G=new $e;for(let Q=0;Q<r;Q++){let j=Q/r*Math.PI*2+m,F=(Q+.5)/r*Math.PI*2+m,z=(Q+1)/r*Math.PI*2+m,M=new Zt(Math.sin(j),Math.cos(j)),q=new Zt(Math.sin(F),Math.cos(F)),J=new Zt(Math.sin(z),Math.cos(z));Kn(b,M,V),Kn(b,J,E),Kn(L,q,U),Cl(S,V,E,W,W,B),p.push(B.x,B.y,B.z),Cl(V,S,E,W,k,O),p.push(O.x,O.y,O.z),Cl(E,V,S,k,W,G),p.push(G.x,G.y,G.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Z=d++;if(c.push(ee,H,Z),s>0){{let le=V.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),Le=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),me=G.clone().sub(O);ie(le,me,Le,w.angle())}let $,re;{let le=new $e;Kn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=TS(ne,E,S);let fe=G.clone().sub(B);[$,re]=ie(ne,fe,le,C,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),fe=new $e(0,-1,0),Le=ne.clone().cross(fe);K(le,ne,fe,Le)}ce.concat(re);{let le=w.angle(),ne=Math.PI-le,fe=S.clone();fe.y-=s/Math.sin(le-Math.PI/2);let Le=new $e,me=[];for(let be=0;be<l;be++){let lt=[],wt=Math.PI/2-ne*be/l,go=Math.cos(wt),gt=Math.sin(wt),yo=F;for(let Ii=0;Ii<=be;Ii++){let Pi=Math.cos(yo),De=Math.sin(yo);U.x=go*De,U.y=gt,U.z=go*Pi,Le.copy(fe).addScaledVector(U,s),p.push(Le.x,Le.y,Le.z),a.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}me.push(lt)}re.reverse(),me.push(re);let Ge=me.length-1;for(let be=0;be<Ge;be++){let lt=me[be],wt=me[be+1],go=lt.length-1;c.push(wt[1],lt[0],wt[0]);for(let gt=1;gt<=go;gt++)c.push(lt[gt],lt[gt-1],wt[gt]),c.push(wt[gt+1],lt[gt],wt[gt])}}}}}this.setIndex(c),this.setAttribute("position",new Nl(p,3)),this.setAttribute("normal",new Nl(a,3)),this.setAttribute("uv",new Nl(u,2));function ie(U,V,E,B,O){let G=-B/2,Q=(Math.PI-B)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let F=new $e,z=new $e,M=1,q=d,J=[];for(let ee=0;ee<=l;ee++){let H=G+ee/l*B;z.set(0,0,0),z.addScaledVector(j,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(F.copy(U),F.addScaledVector(V,$),F.addScaledVector(z,s),O!=null){let re=Math.max(0,F.y-O);F.addScaledVector(V,-re/V.y)}p.push(F.x,F.y,F.z),a.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<l;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,le=Z+1;c.push(Z,$,le),c.push($,re,le)}return[U.clone().addScaledVector(V,.5),J]}function K(U,V,E,B){let O=Math.PI/2,G=g.angle()-O,Q=[],j=new $e,F=new $e;for(let M=0;M<=l;M++){let q=[],J=M/l;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),le=Math.atan(Math.tan(G)*$),ne=(O+le)*J,fe=Math.cos(ne),Le=Math.sin(ne);j.set(0,0,0),j.addScaledVector(V,Le*$),j.addScaledVector(E,fe),j.addScaledVector(B,Le*re),F.copy(U).addScaledVector(j,s),p.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),u.push(0,0),q.push(d++)}Q.push(q)}let z=Q.length-1;for(let M=0;M<z;M++){let q=Q[M],J=Q[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var gf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,D){return b>e&&D>r?Math.min(S*e/b,S*r/D):b>e?S*e/b:D>r?S*r/D:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=u.x,y=u.y,x=a.y;t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(m,x)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as AS}from"three";var yf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:p}=n.parameters,a=new AS(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as NS}from"three";var xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new NS(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as CS,Float32BufferAttribute as Pl,Vector3 as IS}from"three";var vf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new Ll(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Ll=class extends CS{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let u=[],d=Math.PI/2,f=(F=0,z=0,M=0)=>new IS(F,z,M),m=f(),h=f(),[y,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-y,+v),f(A,-y,-v),f(A,+y,-v)],g=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),L=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));w.y=Math.sin(o)*e-y;let T=Math.cos(o)*e-v,P=b.z-a;o<=d?(w.z=Math.min(T,P),w.z==P&&(w.y-=(T-P)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-a),m.subVectors(b,D),h.subVectors(w,D);let N=Math.min(m.length(),h.length())*i/100,C=N*Math.tan(o/2),k=N/Math.cos(o/2),W=m.clone().normalize().add(h.normalize()).setLength(k).add(D);m.set(0,g(o,!0),L(o,!0)),u.push([w,m.clone()]);let oe=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=d+o+F*oe;m.set(0,Math.sin(z)*C,Math.cos(z)*C),m.add(W),h.set(0,g(z),L(z)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ce=Math.sin(oe/2)*C*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),V=K+ce*s+U;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(K+F*ce)/V);u[ie].push(0);let[E,B,O]=u[0],G,Q,j;for(let F=1;F<u.length;F++)[G,Q,j]=u[F],l.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),c.push(0,B.y,B.z,0,Q.y,Q.z,0,B.y,B.z,0,B.y,B.z,0,Q.y,Q.z,0,Q.y,Q.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Q,j];this.setAttribute("position",new Pl(l,3)),this.setAttribute("normal",new Pl(c,3)),this.setAttribute("uv",new Pl(p,2))}};var bf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=n.shape,u=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;a.addPoint(a.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(y)*u,D=m+Math.sin(y)*d;a.addPoint(a.createPoint(b,D)),y+=h,b=f+Math.cos(y)*x,D=m+Math.sin(y)*v,S<=o,a.addPoint(a.createPoint(b,D)),y+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let A=st.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as PS}from"three";var Ys=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new PS(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Sf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=LS(t,e,r,t*.5,s,i,0,0,o,l,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function LS(n,t,e,r,o,i,s,l,c,p,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new $n(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotBufferGeometry as OS}from"three";var wf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,l=t*.5;l!==e&&(l-=e);let c=new OS(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var _f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as Jf,BufferAttribute as em,Uint32BufferAttribute as oc,Float32BufferAttribute as nc,Matrix4 as kw,Vector3 as la}from"three";var MS,Ks=new Promise(n=>{MS=n});import{BufferGeometryLoader as Uw}from"three";import{EventDispatcher as Vw,Matrix3 as Fw,Vector3 as rc}from"three";import{Mesh as Gw,Matrix4 as Rw}from"three";import{Matrix4 as Of}from"three";import{Object3D as ES,Matrix4 as GS}from"three";import{HemisphereLight as Tf}from"three";function Fe(n,t){return t.color(n)}var Ol=n=>"isEntity"in n,Jt=n=>"isAbstractMesh"in n,er=n=>n!==null&&n.objectType==="BooleanObject",Af=n=>n.objectType==="CombinedCamera";var Qs=n=>"objectHelper"in n;function DS(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Er.identity)),e&&(n.updateMatrix(),er(n.parent)&&Jt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function BS(n,t){DS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Nf(n,t,e){BS(n,t),t.color!==void 0&&(n.color=Fe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Tf)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Tf)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Cf(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Zs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Ol(e))}isDescendantOf(e){e instanceof ES&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new GS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Ol(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Pf,Line3 as RS,Matrix4 as Ml,Vector3 as It}from"three";var tn=new Pf,tr=new It,rr=new It,rn=new Ml,Lf=[new It(-1,1,1),new It(-1,-1,1),new It(1,-1,1),new It(1,1,1),new It(-1,1,-1),new It(-1,-1,-1),new It(1,-1,-1),new It(1,1,-1)],VS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],FS=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function zS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),f=t.getZ(a);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>l&&(l=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var If=(n,t,e)=>{if(Jt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?tr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(zS(tn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),tn.getCenter(tr)),n.forceComputeSize?tn.getSize(rr).multiplyScalar(.5):rr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Qs(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");tn.setFromArray(r.array),tn.getCenter(tr),tn.getSize(rr).multiplyScalar(.5)}else tr.setScalar(0),rr.setScalar(0);rn.copy(t).multiply(n.matrixWorld),rr.x===0&&rr.y===0&&rr.z===0?e.push(new It(tr.x,tr.y,tr.z).applyMatrix4(rn)):Lf.forEach(r=>{e.push(r.clone().multiply(rr).add(tr).applyMatrix4(rn))})},Qn=class extends Pf{constructor(){super(...arguments);this.matrix=new Ml;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ml().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&If(s,r,i)}):If(e,r,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(rn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(rr).multiplyScalar(.5),this.getCenter(tr),rn.copy(this.matrix).setPosition(tr),this.vertices=Lf.map(e=>e.clone().multiply(rr).applyMatrix4(rn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=VS.map(([e,r])=>new RS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new It))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=FS.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var or=n=>"isEntity"in n,Mf=n=>"isAbstractMesh"in n,Pt=n=>class extends Zs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Of;this._singleBBox=new Qn;this._recursiveBBox=new Qn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{or(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)or(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)or(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)or(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Of,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)or(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ro(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Ro(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as jS,Vector3 as Zn,Euler as Df,MathUtils as kr}from"three";import{Object3D as US}from"three";var Dl=class extends US{},Js=class extends Dl{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var no=class extends jS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Zn),i=.1;this.parameters=ss.defaultData(o.toArray(),i),Zr(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new Js(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*kr.DEG2RAD,i=r.end*kr.DEG2RAD,s=o-i,l=new Df(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD),c;switch(r.axis){case"z":c=new Zn(0,0,1);break;case"y":c=new Zn(0,1,0);break;default:case"x":c=new Zn(1,0,0);break}for(let[p,a]of this.children.entries()){a.scale.x=r.scale[0],a.scale.y=r.scale[1],a.scale.z=r.scale[2],a.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":a.rotation.set(0,u,0);break;case"y":a.rotation.set(0,0,u);break;case"z":a.rotation.set(u,0,0);break}a.translateOnAxis(c,r.radius),a.position.x+=r.position[0],a.position.y+=r.position[1],a.position.z+=r.position[2],r.alignment===!0?(a.rotation.x+=l.x,a.rotation.y+=l.y,a.rotation.z+=l.z):a.rotation.copy(l)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Df(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Zn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let a=this.children[r++];a.scale.setScalar(1),a.rotation.set(0,0,0),a.position.x=o.size[0]*l-s.x,a.position.y=o.size[1]*c-s.y,a.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let l=0;l<o.count[2];l++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*l}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),Zr(this.parameters,e),this.update(),this}};import{NormalBlending as Ow,ShaderMaterial as Mw}from"three";import{CubeReflectionMapping as JS,CubeRefractionMapping as ew,CubeUVReflectionMapping as tw,LinearEncoding as Rf,sRGBEncoding as rw}from"three";var Jn=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as kS}from"three";var Xe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=kS.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Xe&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Bl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Bl;import{Vector2 as Bf}from"three";import{MathUtils as HS}from"three";var ae=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=HS.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return l.name=l.name||super.build(e,r,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(p+" = "+a+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}};var Ye=class extends Ae{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Bf?e:new Bf(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Ef}from"three";var Ze=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ef?e:new Ef(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var Lt=class extends Ae{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ue?e:new Ue(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var WS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Gf=/[a-z_0-9]+/gi,X=class extends ae{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let l,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let a=[];for(;l=Gf.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&He.containsKeyword(f)){let y=this.keywords[f];if(!y){let x=He.getKeywordData(f);x.cache&&(y=e.keywords[f]),y=y||He.getKeyword(f,e),x.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&He.contains(h)&&e.include(He.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=WS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Gf);if(l){let c=0;for(;c<l.length;){let p=l[c++],a;p==="in"||p==="out"||p==="inout"?a=l[c++]:(a=p,p="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var qS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,El=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||El.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let l,c,p="",a=qS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],p=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},ye=El;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var $S=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
-
)*?)}`,"gim"),
|
|
1
|
+
var uh=Object.create;var Ta=Object.defineProperty;var ph=Object.getOwnPropertyDescriptor;var dh=Object.getOwnPropertyNames;var fh=Object.getPrototypeOf,mh=Object.prototype.hasOwnProperty;var bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),hh=(n,t)=>{for(var e in t)Ta(n,e,{get:t[e],enumerable:!0})},gh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of dh(t))!mh.call(n,o)&&o!==e&&Ta(n,o,{get:()=>t[o],enumerable:!(r=ph(t,o))||r.enumerable});return n};var Sc=(n,t,e)=>(e=n!=null?uh(fh(n)):{},gh(t||!n||!n.__esModule?Ta(e,"default",{value:n,enumerable:!0}):e,n));var Nm=bc(Sa=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,x=f.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return a._codecs={mp3:!!(!h&&(d||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||t;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var u=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),g=0;g<h.length;g++){var x=a._howls[m]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var A=0;A<a._howls.length;A++)a._howls[A]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){u=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?a=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!a&&(a=g._sprite||"__default"),d._state!=="loaded"){g._sprite=a,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(f&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var v=Math.max(0,g._seek>0?g._seek:d._sprite[a][0]/1e3),A=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-v),S=A*1e3/Math.abs(g._rate),b=d._sprite[a][0]/1e3,D=(d._sprite[a][0]+d._sprite[a][1])/1e3;g._sprite=a,g._ended=!1;var w=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[a][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var I=function(){d._playLock=!1,w(),d._refreshBuffer(g);var C=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(C,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,v,86400):y.bufferSource.noteGrainOn(0,v,A):g._loop?y.bufferSource.start(0,v,86400):y.bufferSource.start(0,v,A),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?I():(d._playLock=!0,d.once("resume",I),d._clearTimer(g._id))}else{var T=function(){y.currentTime=v,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var C=y.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,w(),C.then(function(){d._playLock=!1,y._unlocked=!0,u?d._loadQueue():d._emit("play",g._id)}).catch(function(){d._playLock=!1,d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),g._ended=!0,g._paused=!0})):u||(d._playLock=!1,w(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(k){d._emit("playerror",g._id,k)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var L=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||L)T();else{d._playLock=!0,d._state="loading";var N=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,N,!1)};y.addEventListener(t._canPlayEvent,N,!1),d._clearTimer(g._id)}}return g._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)g=a._soundById(f[x]),g&&(g._volume=d,u[2]||a._stopFade(f[x]),a._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),a._emit("volume",g._id))}else return g=f?a._soundById(f):a._sounds[0],g?g._volume:0;return a},fade:function(a,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(a,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var x=m._soundById(h[g]);if(x){if(f||m._stopFade(h[g]),m._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=a,x._node.gain.setValueAtTime(a,v),x._node.gain.linearRampToValueAtTime(u,A)}m._startFadeInterval(x,a,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),S=Math.max(4,A>0?f/A:f),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var D=(Date.now()-b)/f;b=Date.now(),x+=v*D,x=Math.round(x*100)/100,v<0?x=Math.max(d,x):x=Math.min(d,x),g._webAudio?a._volume=x:g.volume(x,a._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,g.volume(d,a._id),g._emit("fade",a._id))},S)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),g=0;g<h.length;g++)m=a._soundById(h[g]),m&&(m._loop=d,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[g])&&(a.pause(h[g],!0),a.play(h[g],!0)))));return a},rate:function(){var a=this,u=arguments,d,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var x=0;x<f.length;x++)if(g=a._soundById(f[x]),g){a.playing(f[x])&&(g._rateSeek=a.seek(f[x]),g._playStart=a._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,a._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=a.seek(f[x]),A=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-v,S=A*1e3/Math.abs(g._rate);(a._endTimers[f[x]]||!g._paused)&&(a._clearTimer(f[x]),a._endTimers[f[x]]=setTimeout(a._ended.bind(a,g),S)),a._emit("rate",g._id)}}else return g=a._soundById(f),g?g._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var g=a._soundById(f);if(g)if(typeof d=="number"&&d>=0){var x=a.playing(f);x&&a.pause(f,!0),g._seek=d,g._ended=!1,a._clearTimer(f),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&a.play(f,!0),a._emit("seek",f)};if(x&&!a._webAudio){var A=function(){a._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(a._webAudio){var S=a.playing(f)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*Math.abs(g._rate))}else return g._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);return d?!d._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,f=u._soundById(a);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,a._clearTimer(u[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(a,u,d){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var x=Object.keys(f);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(f[x[h]])&&(f[x[h]]=[])}return f},once:function(a,u,d){var f=this;return f.on(a,u,d,1),f},_emit:function(a,u,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(g){h.setRequestHeader(g,a._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(a&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Sa<"u"&&(Sa.Howler=t,Sa.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,i,s){var l=this;if(!l.ctx||!l.ctx.listener)return l;var c=l._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof t=="number")l._orientation=[t,e,r,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),l.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),l.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):l.ctx.listener.setOrientation(t,e,r,o,i,s);else return c;return l},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),s=0;s<i.length;s++){var l=r._soundById(i[s]);if(l)if(typeof t=="number")l._stereo=t,l._pos=[t,0,0],l._node&&(l._pannerAttr.panningModel="equalpower",(!l._panner||!l._panner.pan)&&n(l,o),o==="spatial"?typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(t,0,0):l._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",l._id);else return l._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setPosition(t,e,r)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var s=i._getSoundIds(o),l=0;l<s.length;l++){var c=i._soundById(s[l]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=i._pos||[0,0,-.5]),n(c,"spatial")),typeof c._panner.orientationX<"u"?(c._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):c._panner.setOrientation(t,e,r)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),l=0;l<s.length;l++)if(i=t._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:c.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:c.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:c.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:c.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:c.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:c.panningModel};var p=i._panner;p?(p.coneInnerAngle=c.coneInnerAngle,p.coneOuterAngle=c.coneOuterAngle,p.coneOuterGain=c.coneOuterGain,p.distanceModel=c.distanceModel,p.maxDistance=c.maxDistance,p.refDistance=c.refDistance,p.rolloffFactor=c.rolloffFactor,p.panningModel=c.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Mm=bc((wa,Om)=>{(function(n,t){typeof wa=="object"&&typeof Om<"u"?t(wa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(wa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,l,c,p,a,u,d,f,m,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],D=[],w=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(w).fill(0);for(y=0;y<v;y++)D[y]=new Array(v).fill(0);var I,T=new Array(v).fill(0);for(y=0;y<A;y++)for(s=0;s<v;s++)b[y][s]=t[y][s];for(y=0;y<v;y++){for(S[y]=d,m=0,c=y+1,s=y;s<A;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<v;s++){for(m=0,l=y;l<A;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(T[y]=d,m=0,s=c;s<v;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<v;s++)S[s]=b[y][s]/f;for(s=c;s<A;s++){for(m=0,l=c;l<v;l++)m+=b[s][l]*b[y][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+m*S[l]}}h<(g=Math.abs(T[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=b[y][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+m*D[l][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=S[y],c=y}if(e){if(e==="f")for(y=v;y<A;y++){for(s=v;s<A;s++)b[y][s]=0;b[y][y]=1}for(y=v-1;0<=y;y--){for(c=y+1,d=T[y],s=c;s<w;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<w;s++){for(m=0,l=c;l<A;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(s=y;s<A;s++)b[s][y]=b[s][y]/d}else for(s=y;s<A;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,l=v-1;0<=l;l--)for(var L=0;L<50;L++){for(I=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(a=0,p=c-(m=1),y=c;y<l+1&&(u=m*S[y],S[y]=a*S[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),a=d/(f=T[y]),m=-u/f,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*a+x*m,b[s][y]=-g*m+x*a}if(x=T[l],c===l){if(x<0&&(T[l]=-x,r))for(s=0;s<v;s++)D[s][l]=-D[s][l];break}for(h=T[c],u=(((g=T[l-1])-x)*(g+x)+((d=S[l-1])-(f=S[l]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=a=1);y<l+1;y++){if(d=S[y],g=T[y],f=m*d,d*=a,x=Math.sqrt(u*u+f*f),u=h*(a=u/(S[y-1]=x))+d*(m=f/x),d=-h*m+d*a,f=g*m,g*=a,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*a+x*m,D[s][y]=-h*m+x*a;if(x=Math.sqrt(u*u+f*f),u=(a=u/(T[y-1]=x))*d+(m=f/x)*g,h=-m*d+a*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*a+x*m,b[s][y]=-g*m+x*a}S[c]=0,S[l]=u,T[l]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as m_,Loader as h_}from"three";function Oi(n,t){return Object.setPrototypeOf(n,t),n}function wc(n){return Array.isArray(n)?n:[n]}var yh=typeof global=="object"&&global&&global.Object===Object&&global,Mi=yh;var xh=typeof self=="object"&&self&&self.Object===Object&&self,vh=Mi||xh||Function("return this")(),Re=vh;var bh=Re.Symbol,nt=bh;var _c=Object.prototype,Sh=_c.hasOwnProperty,wh=_c.toString,Nn=nt?nt.toStringTag:void 0;function _h(n){var t=Sh.call(n,Nn),e=n[Nn];try{n[Nn]=void 0;var r=!0}catch{}var o=wh.call(n);return r&&(t?n[Nn]=e:delete n[Nn]),o}var Tc=_h;var Th=Object.prototype,Ah=Th.toString;function Nh(n){return Ah.call(n)}var Ac=Nh;var Ch="[object Null]",Ph="[object Undefined]",Nc=nt?nt.toStringTag:void 0;function Lh(n){return n==null?n===void 0?Ph:Ch:Nc&&Nc in Object(n)?Tc(n):Ac(n)}var xt=Lh;function Ih(n){return n!=null&&typeof n=="object"}var et=Ih;var Oh="[object Symbol]";function Mh(n){return typeof n=="symbol"||et(n)&&xt(n)==Oh}var xo=Mh;function Dh(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Di=Dh;var Bh=Array.isArray,Oe=Bh;var Eh=1/0,Cc=nt?nt.prototype:void 0,Pc=Cc?Cc.toString:void 0;function Lc(n){if(typeof n=="string")return n;if(Oe(n))return Di(n,Lc)+"";if(xo(n))return Pc?Pc.call(n):"";var t=n+"";return t=="0"&&1/n==-Eh?"-0":t}var Ic=Lc;function Gh(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var ze=Gh;function Rh(n){return n}var Bi=Rh;var Vh="[object AsyncFunction]",Fh="[object Function]",zh="[object GeneratorFunction]",Uh="[object Proxy]";function jh(n){if(!ze(n))return!1;var t=xt(n);return t==Fh||t==zh||t==Vh||t==Uh}var vo=jh;var kh=Re["__core-js_shared__"],Ei=kh;var Oc=function(){var n=/[^.]+$/.exec(Ei&&Ei.keys&&Ei.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Hh(n){return!!Oc&&Oc in n}var Mc=Hh;var Wh=Function.prototype,qh=Wh.toString;function $h(n){if(n!=null){try{return qh.call(n)}catch{}try{return n+""}catch{}}return""}var hr=$h;var Xh=/[\\^$.*+?()[\]{}|]/g,Yh=/^\[object .+?Constructor\]$/,Kh=Function.prototype,Zh=Object.prototype,Qh=Kh.toString,Jh=Zh.hasOwnProperty,eg=RegExp("^"+Qh.call(Jh).replace(Xh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function tg(n){if(!ze(n)||Mc(n))return!1;var t=vo(n)?eg:Yh;return t.test(hr(n))}var Dc=tg;function rg(n,t){return n?.[t]}var Bc=rg;function og(n,t){var e=Bc(n,t);return Dc(e)?e:void 0}var ut=og;var ng=ut(Re,"WeakMap"),Gi=ng;var Ec=Object.create,ig=function(){function n(){}return function(t){if(!ze(t))return{};if(Ec)return Ec(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Gc=ig;function sg(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var Rc=sg;function ag(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Ri=ag;var lg=800,cg=16,ug=Date.now;function pg(n){var t=0,e=0;return function(){var r=ug(),o=cg-(r-e);if(e=r,o>0){if(++t>=lg)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Vc=pg;function dg(n){return function(){return n}}var Fc=dg;var fg=function(){try{var n=ut(Object,"defineProperty");return n({},"",{}),n}catch{}}(),bo=fg;var mg=bo?function(n,t){return bo(n,"toString",{configurable:!0,enumerable:!1,value:Fc(t),writable:!0})}:Bi,zc=mg;var hg=Vc(zc),Vi=hg;function gg(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Uc=gg;var yg=9007199254740991,xg=/^(?:0|[1-9]\d*)$/;function vg(n,t){var e=typeof n;return t=t??yg,!!t&&(e=="number"||e!="symbol"&&xg.test(n))&&n>-1&&n%1==0&&n<t}var Cr=vg;function bg(n,t,e){t=="__proto__"&&bo?bo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var So=bg;function Sg(n,t){return n===t||n!==n&&t!==t}var Pr=Sg;var wg=Object.prototype,_g=wg.hasOwnProperty;function Tg(n,t,e){var r=n[t];(!(_g.call(n,t)&&Pr(r,e))||e===void 0&&!(t in n))&&So(n,t,e)}var wo=Tg;function Ag(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var l=t[i],c=r?r(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?So(e,l,c):wo(e,l,c)}return e}var _t=Ag;var jc=Math.max;function Ng(n,t,e){return t=jc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=jc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=r[o];return l[t]=e(s),Rc(n,this,l)}}var Fi=Ng;function Cg(n,t){return Vi(Fi(n,t,Bi),n+"")}var kc=Cg;var Pg=9007199254740991;function Lg(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Pg}var _o=Lg;function Ig(n){return n!=null&&_o(n.length)&&!vo(n)}var Lr=Ig;function Og(n,t,e){if(!ze(e))return!1;var r=typeof t;return(r=="number"?Lr(e)&&Cr(t,e.length):r=="string"&&t in e)?Pr(e[t],n):!1}var Hc=Og;function Mg(n){return kc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&Hc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var l=e[r];l&&n(t,l,r,i)}return t})}var Wc=Mg;var Dg=Object.prototype;function Bg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Dg;return n===e}var To=Bg;function Eg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var qc=Eg;var Gg="[object Arguments]";function Rg(n){return et(n)&&xt(n)==Gg}var Aa=Rg;var $c=Object.prototype,Vg=$c.hasOwnProperty,Fg=$c.propertyIsEnumerable,zg=Aa(function(){return arguments}())?Aa:function(n){return et(n)&&Vg.call(n,"callee")&&!Fg.call(n,"callee")},gr=zg;function Ug(){return!1}var Xc=Ug;var Zc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Yc=Zc&&typeof module=="object"&&module&&!module.nodeType&&module,jg=Yc&&Yc.exports===Zc,Kc=jg?Re.Buffer:void 0,kg=Kc?Kc.isBuffer:void 0,Hg=kg||Xc,Ao=Hg;var Wg="[object Arguments]",qg="[object Array]",$g="[object Boolean]",Xg="[object Date]",Yg="[object Error]",Kg="[object Function]",Zg="[object Map]",Qg="[object Number]",Jg="[object Object]",ey="[object RegExp]",ty="[object Set]",ry="[object String]",oy="[object WeakMap]",ny="[object ArrayBuffer]",iy="[object DataView]",sy="[object Float32Array]",ay="[object Float64Array]",ly="[object Int8Array]",cy="[object Int16Array]",uy="[object Int32Array]",py="[object Uint8Array]",dy="[object Uint8ClampedArray]",fy="[object Uint16Array]",my="[object Uint32Array]",Ce={};Ce[sy]=Ce[ay]=Ce[ly]=Ce[cy]=Ce[uy]=Ce[py]=Ce[dy]=Ce[fy]=Ce[my]=!0;Ce[Wg]=Ce[qg]=Ce[ny]=Ce[$g]=Ce[iy]=Ce[Xg]=Ce[Yg]=Ce[Kg]=Ce[Zg]=Ce[Qg]=Ce[Jg]=Ce[ey]=Ce[ty]=Ce[ry]=Ce[oy]=!1;function hy(n){return et(n)&&_o(n.length)&&!!Ce[xt(n)]}var Qc=hy;function gy(n){return function(t){return n(t)}}var No=gy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Cn=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,yy=Cn&&Cn.exports===Jc,Na=yy&&Mi.process,xy=function(){try{var n=Cn&&Cn.require&&Cn.require("util").types;return n||Na&&Na.binding&&Na.binding("util")}catch{}}(),yr=xy;var eu=yr&&yr.isTypedArray,vy=eu?No(eu):Qc,zi=vy;var by=Object.prototype,Sy=by.hasOwnProperty;function wy(n,t){var e=Oe(n),r=!e&&gr(n),o=!e&&!r&&Ao(n),i=!e&&!r&&!o&&zi(n),s=e||r||o||i,l=s?qc(n.length,String):[],c=l.length;for(var p in n)(t||Sy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Cr(p,c)))&&l.push(p);return l}var Ui=wy;function _y(n,t){return function(e){return n(t(e))}}var ji=_y;var Ty=ji(Object.keys,Object),tu=Ty;var Ay=Object.prototype,Ny=Ay.hasOwnProperty;function Cy(n){if(!To(n))return tu(n);var t=[];for(var e in Object(n))Ny.call(n,e)&&e!="constructor"&&t.push(e);return t}var ru=Cy;function Py(n){return Lr(n)?Ui(n):ru(n)}var Co=Py;function Ly(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var ou=Ly;var Iy=Object.prototype,Oy=Iy.hasOwnProperty;function My(n){if(!ze(n))return ou(n);var t=To(n),e=[];for(var r in n)r=="constructor"&&(t||!Oy.call(n,r))||e.push(r);return e}var nu=My;function Dy(n){return Lr(n)?Ui(n,!0):nu(n)}var Ht=Dy;var By=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ey=/^\w*$/;function Gy(n,t){if(Oe(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||xo(n)?!0:Ey.test(n)||!By.test(n)||t!=null&&n in Object(t)}var iu=Gy;var Ry=ut(Object,"create"),xr=Ry;function Vy(){this.__data__=xr?xr(null):{},this.size=0}var su=Vy;function Fy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var au=Fy;var zy="__lodash_hash_undefined__",Uy=Object.prototype,jy=Uy.hasOwnProperty;function ky(n){var t=this.__data__;if(xr){var e=t[n];return e===zy?void 0:e}return jy.call(t,n)?t[n]:void 0}var lu=ky;var Hy=Object.prototype,Wy=Hy.hasOwnProperty;function qy(n){var t=this.__data__;return xr?t[n]!==void 0:Wy.call(t,n)}var cu=qy;var $y="__lodash_hash_undefined__";function Xy(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=xr&&t===void 0?$y:t,this}var uu=Xy;function Po(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Po.prototype.clear=su;Po.prototype.delete=au;Po.prototype.get=lu;Po.prototype.has=cu;Po.prototype.set=uu;var Ca=Po;function Yy(){this.__data__=[],this.size=0}var pu=Yy;function Ky(n,t){for(var e=n.length;e--;)if(Pr(n[e][0],t))return e;return-1}var Ir=Ky;var Zy=Array.prototype,Qy=Zy.splice;function Jy(n){var t=this.__data__,e=Ir(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Qy.call(t,e,1),--this.size,!0}var du=Jy;function ex(n){var t=this.__data__,e=Ir(t,n);return e<0?void 0:t[e][1]}var fu=ex;function tx(n){return Ir(this.__data__,n)>-1}var mu=tx;function rx(n,t){var e=this.__data__,r=Ir(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var hu=rx;function Lo(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Lo.prototype.clear=pu;Lo.prototype.delete=du;Lo.prototype.get=fu;Lo.prototype.has=mu;Lo.prototype.set=hu;var Or=Lo;var ox=ut(Re,"Map"),Mr=ox;function nx(){this.size=0,this.__data__={hash:new Ca,map:new(Mr||Or),string:new Ca}}var gu=nx;function ix(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var yu=ix;function sx(n,t){var e=n.__data__;return yu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Dr=sx;function ax(n){var t=Dr(this,n).delete(n);return this.size-=t?1:0,t}var xu=ax;function lx(n){return Dr(this,n).get(n)}var vu=lx;function cx(n){return Dr(this,n).has(n)}var bu=cx;function ux(n,t){var e=Dr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Su=ux;function Io(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Io.prototype.clear=gu;Io.prototype.delete=xu;Io.prototype.get=vu;Io.prototype.has=bu;Io.prototype.set=Su;var Pn=Io;var px="Expected a function";function Pa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(px);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(Pa.Cache||Pn),e}Pa.Cache=Pn;var wu=Pa;var dx=500;function fx(n){var t=wu(n,function(r){return e.size===dx&&e.clear(),r}),e=t.cache;return t}var _u=fx;var mx=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hx=/\\(\\)?/g,gx=_u(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(mx,function(e,r,o,i){t.push(o?i.replace(hx,"$1"):r||e)}),t}),Tu=gx;function yx(n){return n==null?"":Ic(n)}var Au=yx;function xx(n,t){return Oe(n)?n:iu(n,t)?[n]:Tu(Au(n))}var Tt=xx;var vx=1/0;function bx(n){if(typeof n=="string"||xo(n))return n;var t=n+"";return t=="0"&&1/n==-vx?"-0":t}var Br=bx;function Sx(n,t){t=Tt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Br(t[e++])];return e&&e==r?n:void 0}var ki=Sx;function wx(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Oo=wx;var Nu=nt?nt.isConcatSpreadable:void 0;function _x(n){return Oe(n)||gr(n)||!!(Nu&&n&&n[Nu])}var Cu=_x;function Pu(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Cu),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Pu(l,t-1,e,r,o):Oo(o,l):r||(o[o.length]=l)}return o}var Lu=Pu;function Tx(n){var t=n==null?0:n.length;return t?Lu(n,1):[]}var Iu=Tx;function Ax(n){return Vi(Fi(n,void 0,Iu),n+"")}var Hi=Ax;var Nx=ji(Object.getPrototypeOf,Object),Mo=Nx;var Cx="[object Object]",Px=Function.prototype,Lx=Object.prototype,Ou=Px.toString,Ix=Lx.hasOwnProperty,Ox=Ou.call(Object);function Mx(n){if(!et(n)||xt(n)!=Cx)return!1;var t=Mo(n);if(t===null)return!0;var e=Ix.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ou.call(e)==Ox}var Wi=Mx;function Dx(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var Mu=Dx;function Bx(){this.__data__=new Or,this.size=0}var Du=Bx;function Ex(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bu=Ex;function Gx(n){return this.__data__.get(n)}var Eu=Gx;function Rx(n){return this.__data__.has(n)}var Gu=Rx;var Vx=200;function Fx(n,t){var e=this.__data__;if(e instanceof Or){var r=e.__data__;if(!Mr||r.length<Vx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Pn(r)}return e.set(n,t),this.size=e.size,this}var Ru=Fx;function Do(n){var t=this.__data__=new Or(n);this.size=t.size}Do.prototype.clear=Du;Do.prototype.delete=Bu;Do.prototype.get=Eu;Do.prototype.has=Gu;Do.prototype.set=Ru;var qi=Do;function zx(n,t){return n&&_t(t,Co(t),n)}var Vu=zx;function Ux(n,t){return n&&_t(t,Ht(t),n)}var Fu=Ux;var ku=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ku&&typeof module=="object"&&module&&!module.nodeType&&module,jx=zu&&zu.exports===ku,Uu=jx?Re.Buffer:void 0,ju=Uu?Uu.allocUnsafe:void 0;function kx(n,t){if(t)return n.slice();var e=n.length,r=ju?ju(e):new n.constructor(e);return n.copy(r),r}var $i=kx;function Hx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var Hu=Hx;function Wx(){return[]}var Xi=Wx;var qx=Object.prototype,$x=qx.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,Xx=Wu?function(n){return n==null?[]:(n=Object(n),Hu(Wu(n),function(t){return $x.call(n,t)}))}:Xi,Bo=Xx;function Yx(n,t){return _t(n,Bo(n),t)}var qu=Yx;var Kx=Object.getOwnPropertySymbols,Zx=Kx?function(n){for(var t=[];n;)Oo(t,Bo(n)),n=Mo(n);return t}:Xi,Yi=Zx;function Qx(n,t){return _t(n,Yi(n),t)}var $u=Qx;function Jx(n,t,e){var r=t(n);return Oe(n)?r:Oo(r,e(n))}var Ki=Jx;function e0(n){return Ki(n,Co,Bo)}var Xu=e0;function t0(n){return Ki(n,Ht,Yi)}var Zi=t0;var r0=ut(Re,"DataView"),Qi=r0;var o0=ut(Re,"Promise"),Ji=o0;var n0=ut(Re,"Set"),es=n0;var Yu="[object Map]",i0="[object Object]",Ku="[object Promise]",Zu="[object Set]",Qu="[object WeakMap]",Ju="[object DataView]",s0=hr(Qi),a0=hr(Mr),l0=hr(Ji),c0=hr(es),u0=hr(Gi),Zr=xt;(Qi&&Zr(new Qi(new ArrayBuffer(1)))!=Ju||Mr&&Zr(new Mr)!=Yu||Ji&&Zr(Ji.resolve())!=Ku||es&&Zr(new es)!=Zu||Gi&&Zr(new Gi)!=Qu)&&(Zr=function(n){var t=xt(n),e=t==i0?n.constructor:void 0,r=e?hr(e):"";if(r)switch(r){case s0:return Ju;case a0:return Yu;case l0:return Ku;case c0:return Zu;case u0:return Qu}return t});var Eo=Zr;var p0=Object.prototype,d0=p0.hasOwnProperty;function f0(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&d0.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ep=f0;var m0=Re.Uint8Array,La=m0;function h0(n){var t=new n.constructor(n.byteLength);return new La(t).set(new La(n)),t}var Go=h0;function g0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var tp=g0;var y0=/\w*$/;function x0(n){var t=new n.constructor(n.source,y0.exec(n));return t.lastIndex=n.lastIndex,t}var rp=x0;var op=nt?nt.prototype:void 0,np=op?op.valueOf:void 0;function v0(n){return np?Object(np.call(n)):{}}var ip=v0;function b0(n,t){var e=t?Go(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ts=b0;var S0="[object Boolean]",w0="[object Date]",_0="[object Map]",T0="[object Number]",A0="[object RegExp]",N0="[object Set]",C0="[object String]",P0="[object Symbol]",L0="[object ArrayBuffer]",I0="[object DataView]",O0="[object Float32Array]",M0="[object Float64Array]",D0="[object Int8Array]",B0="[object Int16Array]",E0="[object Int32Array]",G0="[object Uint8Array]",R0="[object Uint8ClampedArray]",V0="[object Uint16Array]",F0="[object Uint32Array]";function z0(n,t,e){var r=n.constructor;switch(t){case L0:return Go(n);case S0:case w0:return new r(+n);case I0:return tp(n,e);case O0:case M0:case D0:case B0:case E0:case G0:case R0:case V0:case F0:return ts(n,e);case _0:return new r;case T0:case C0:return new r(n);case A0:return rp(n);case N0:return new r;case P0:return ip(n)}}var sp=z0;function U0(n){return typeof n.constructor=="function"&&!To(n)?Gc(Mo(n)):{}}var rs=U0;var j0="[object Map]";function k0(n){return et(n)&&Eo(n)==j0}var ap=k0;var lp=yr&&yr.isMap,H0=lp?No(lp):ap,cp=H0;var W0="[object Set]";function q0(n){return et(n)&&Eo(n)==W0}var up=q0;var pp=yr&&yr.isSet,$0=pp?No(pp):up,dp=$0;var X0=1,Y0=2,K0=4,fp="[object Arguments]",Z0="[object Array]",Q0="[object Boolean]",J0="[object Date]",ev="[object Error]",mp="[object Function]",tv="[object GeneratorFunction]",rv="[object Map]",ov="[object Number]",hp="[object Object]",nv="[object RegExp]",iv="[object Set]",sv="[object String]",av="[object Symbol]",lv="[object WeakMap]",cv="[object ArrayBuffer]",uv="[object DataView]",pv="[object Float32Array]",dv="[object Float64Array]",fv="[object Int8Array]",mv="[object Int16Array]",hv="[object Int32Array]",gv="[object Uint8Array]",yv="[object Uint8ClampedArray]",xv="[object Uint16Array]",vv="[object Uint32Array]",Ne={};Ne[fp]=Ne[Z0]=Ne[cv]=Ne[uv]=Ne[Q0]=Ne[J0]=Ne[pv]=Ne[dv]=Ne[fv]=Ne[mv]=Ne[hv]=Ne[rv]=Ne[ov]=Ne[hp]=Ne[nv]=Ne[iv]=Ne[sv]=Ne[av]=Ne[gv]=Ne[yv]=Ne[xv]=Ne[vv]=!0;Ne[ev]=Ne[mp]=Ne[lv]=!1;function os(n,t,e,r,o,i){var s,l=t&X0,c=t&Y0,p=t&K0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!ze(n))return n;var a=Oe(n);if(a){if(s=ep(n),!l)return Ri(n,s)}else{var u=Eo(n),d=u==mp||u==tv;if(Ao(n))return $i(n,l);if(u==hp||u==fp||d&&!o){if(s=c||d?{}:rs(n),!l)return c?$u(n,Fu(s,n)):qu(n,Vu(s,n))}else{if(!Ne[u])return o?n:{};s=sp(n,u,l)}}i||(i=new qi);var f=i.get(n);if(f)return f;i.set(n,s),dp(n)?n.forEach(function(g){s.add(os(g,t,e,g,n,i))}):cp(n)&&n.forEach(function(g,x){s.set(x,os(g,t,e,x,n,i))});var m=p?c?Zi:Xu:c?Ht:Co,h=a?void 0:m(n);return Uc(h||n,function(g,x){h&&(x=g,g=n[x]),wo(s,x,os(g,t,e,x,n,i))}),s}var ns=os;var bv=1,Sv=4;function wv(n){return ns(n,bv|Sv)}var Ln=wv;function _v(n,t){return n!=null&&t in Object(n)}var gp=_v;function Tv(n,t,e){t=Tt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Br(t[r]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&_o(o)&&Cr(s,o)&&(Oe(n)||gr(n)))}var yp=Tv;function Av(n,t){return n!=null&&yp(n,t,gp)}var xp=Av;function Nv(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),l=s.length;l--;){var c=s[n?l:++o];if(e(i[c],c,i)===!1)break}return t}}var vp=Nv;var Cv=vp(),bp=Cv;function Pv(n,t,e){(e!==void 0&&!Pr(n[t],e)||e===void 0&&!(t in n))&&So(n,t,e)}var In=Pv;function Lv(n){return et(n)&&Lr(n)}var Sp=Lv;function Iv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var On=Iv;function Ov(n){return _t(n,Ht(n))}var wp=Ov;function Mv(n,t,e,r,o,i,s){var l=On(n,e),c=On(t,e),p=s.get(c);if(p){In(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=Oe(c),f=!d&&Ao(c),m=!d&&!f&&zi(c);a=c,d||f||m?Oe(l)?a=l:Sp(l)?a=Ri(l):f?(u=!1,a=$i(c,!0)):m?(u=!1,a=ts(c,!0)):a=[]:Wi(c)||gr(c)?(a=l,gr(l)?a=wp(l):(!ze(l)||vo(l))&&(a=rs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),In(n,e,a)}var _p=Mv;function Tp(n,t,e,r,o){n!==t&&bp(t,function(i,s){if(o||(o=new qi),ze(i))_p(n,t,s,e,Tp,r,o);else{var l=r?r(On(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),In(n,s,l)}},Ht)}var Ap=Tp;function Dv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Np=Dv;function Bv(n,t){return t.length<2?n:ki(n,Mu(t,0,-1))}var Cp=Bv;var Ev=Wc(function(n,t,e){Ap(n,t,e)}),Qr=Ev;function Gv(n,t){return t=Tt(t,n),n=Cp(n,t),n==null||delete n[Br(Np(t))]}var Pp=Gv;function Rv(n){return Wi(n)?void 0:n}var Lp=Rv;var Vv=1,Fv=2,zv=4,Uv=Hi(function(n,t){var e={};if(n==null)return e;var r=!1;t=Di(t,function(i){return i=Tt(i,n),r||(r=i.length>1),i}),_t(n,Zi(n),e),r&&(e=ns(e,Vv|Fv|zv,Lp));for(var o=t.length;o--;)Pp(e,t[o]);return e}),Ro=Uv;function jv(n,t,e,r){if(!ze(n))return n;t=Tt(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Br(t[o]),p=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];p=r?r(a,c,l):void 0,p===void 0&&(p=ze(a)?a:Cr(t[o+1])?[]:{})}wo(l,c,p),l=l[c]}return n}var Ip=jv;function kv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=ki(n,s);e(l,s)&&Ip(i,Tt(s,n),l)}return i}var Op=kv;function Hv(n,t){return Op(n,t,function(e,r){return xp(n,r)})}var Mp=Hv;var Wv=Hi(function(n,t){return n==null?{}:Mp(n,t)}),Ia=Wv;var Vo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Vo||(Vo={}));var Jr;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(Jr||(Jr={}));var Dp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(Dp||(Dp={}));var Fo;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,l){return[i[0]+(s[0]-i[0])*l,i[1]+(s[1]-i[1])*l,i[2]+(s[2]-i[2])*l]}o.lerp=r})(Fo||(Fo={}));var Bp;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(Bp||(Bp={}));var Er;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,s){let l=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let a=i[3]*s[c]+i[7]*s[c+1]+i[11]*s[c+2]+i[15];l[c]=(i[0]*s[c]+i[4]*s[c+1]+i[8]*s[c+2]+i[12])/a,l[c+1]=(i[1]*s[c]+i[5]*s[c+1]+i[9]*s[c+2]+i[13])/a,l[c+2]=(i[2]*s[c]+i[6]*s[c+1]+i[10]*s[c+2]+i[14])/a}return l}o.applyMatrix4=r})(Er||(Er={}));var pt;(c=>{c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function r(p){return{r:Math.round(p.r*255),g:Math.round(p.g*255),b:Math.round(p.b*255),a:1}}c.toRgb255a1=r;function o(p){return{r:p.r,g:p.g,b:p.b}}c.clone=o;function i(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=i;function s(p,a){return p.r===a.r&&p.g===a.g&&p.b===a.b}c.equals=s;function l(p,a,u){return{r:p.r+(a.r-p.r)*u,g:p.g+(a.g-p.g)*u,b:p.b+(a.b-p.b)*u}}c.lerp=l})(pt||(pt={}));var vt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function r(c,p){return{...pt.fromHex(c),a:p}}l.fromHexAndA=r;function o(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:c.a}}l.toRgb255a1=o;function i(c,p){return pt.equals(c,p)&&c.a===p.a}l.equals=i;function s(c,p,a){return{r:c.r+(p.r-c.r)*a,g:c.g+(p.g-c.g)*a,b:c.b+(p.b-c.b)*a,a:c.a+(p.a-c.a)*a}}l.lerp=s})(vt||(vt={}));var is;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(is||(is={}));var Ep;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ep||(Ep={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var ss;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(ss||(ss={}));var Ve=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,Ve.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,l={...e,[i]:s};return Object.setPrototypeOf(l,Ve.prototype),{data:l,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ve.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Mn(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&Mn(r)}return Object.freeze(n)}function Rp(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var as=class extends Error{};function Wt(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function ls(n){return n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array||n instanceof Int8Array||n instanceof Int16Array||n instanceof Int32Array||n instanceof Float32Array||n instanceof Float64Array}function Vp(){return typeof process<"u"}function Fp(n,t){for(let e of n)t(e.id,e.data),Fp(e.children,t)}function zp(n,t){t(n.id,n.data);for(let e of n.children)zp(e,t)}var At=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,At.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&zp(o,r)}}traverse(e){Fp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),l=s.findIndex(a=>a.id===e);if(l<0)throw new Error("not expected");let c=s[l];return s=[...s],s[l]={...c,data:r},this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let p=i.findIndex(a=>a.id===c);if(p<0)throw new Error;i=[...i],i[p]={...i[p],children:l}}Object.setPrototypeOf(i,At.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(a),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new as("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Rp(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return Wt(0,o,o);{let s=i[0].fi;return Wt(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let l=i.find(c=>c.fi>s.fi);if(l===void 0){let c=i[i.length-1].fi;return Wt(c,c+o,o)}else return Wt(s.fi,l.fi,o)}}};var cs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");i[c]=s[p],s[p]=o[c],l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(cs||(cs={}));var Le=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Le.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Mn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Le.prototype);let r=e;return Vp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,l={fi:r,id:o,data:i};return s=[...s,l],s.sort((p,a)=>p.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(c=>c.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(a=>a.id===o);if(s===-1)return null;let l=i[s].fi,c={...i[s],fi:r};return i[s]=c,i.sort((a,u)=>a.fi-u.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:l,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return Wt(0,r,r);{let i=o[0].fi;return Wt(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(l=>l.fi>i.fi);if(s===void 0){let l=o[o.length-1].fi;return Wt(l,l+r,r)}else return Wt(i.fi,s.fi,r)}}};var Up=Symbol(),ps=Symbol(),zo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof us);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ps];r&&r(),delete this._children[t]}}}},Ma=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,cs.runOp(this._current,t))}},Da=class extends zo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,Ve.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},jp={get(n,t){if(t===ps)return()=>{n._parent=null};if(t===Up)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=ds(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},qv={...jp,set(n,t,e){let r={type:0,props:{[t]:qt(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},$v={...jp,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},Uo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},jo=class extends zo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ps]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,s=ds(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Oa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&fs.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var us=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Oa(this.ts,e,t),Oa(this.actual,r,t),Oa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ds(n,t,e){return e instanceof At?new Uo(n,t,e):e instanceof Le?new jo(n,t,e):e instanceof Ve?new Proxy(new Da(n,t,e),$v):e!==null&&typeof e=="object"?ls(e)?e:new Proxy(new Ma(n,t,e),qv):e}function Ba(n){let t=new us(n);return[ds(t,"",n),t]}function Ea(n,t){let[e,r]=Ba(n);return t(e),r.result()}function qt(n){return n instanceof Uo||n instanceof jo?n._current:n!==null&&typeof n=="object"?n[Up]:n}var fs;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let l=e(s,o);if(l!==void 0&&typeof l=="object"&&l!==null){let c={...i};return Object.keys(l).forEach(p=>{delete c[p]}),c}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof At||o instanceof Uo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Le||o instanceof jo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(fs||(fs={}));var ms=class{},Dn=class extends ms{constructor(e){super();this.id=e}},Bn=class extends ms{constructor(e){super();this.data=e}};var Ra;try{Ra=new TextDecoder}catch{}var te,Rr,_=0;var Kp=[],Va=Kp,Fa=0,dt={},xe,Gr,Nt=0,$t=0,bt,vr,it=[],_e,kp={useRecords:!1,mapsAsObjects:!0},En=class{},Ua=new En;Ua.name="MessagePack 0xC1";var ko=!1,Xt=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(te)return td(()=>(gs(),this?this.unpack(t,e):Xt.prototype.unpack.call(kp,t,e)));Rr=e>-1?e:t.length,_=0,Fa=0,$t=0,Gr=null,Va=Kp,bt=null,te=t;try{_e=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof Xt){if(dt=this,this.structures)return xe=this.structures,hs();(!xe||xe.length>0)&&(xe=[])}else dt=kp,(!xe||xe.length>0)&&(xe=[]);return hs()}unpackMultiple(t,e){let r,o=0;try{ko=!0;let i=t.length,s=this?this.unpack(t,i):vs.unpack(t,i);if(e){for(e(s);_<i;)if(o=_,e(hs())===!1)return}else{for(r=[s];_<i;)o=_,r.push(hs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{ko=!1,gs()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function hs(){try{if(!dt.trusted&&!ko){let t=xe.sharedLength||0;t<xe.length&&(xe.length=t)}let n=Me();if(_==Rr)xe.restoreStructures&&Hp(),xe=null,te=null,vr&&(vr=null);else if(_>Rr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ko)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw xe.restoreStructures&&Hp(),gs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Hp(){for(let n in xe.restoreStructures)xe[n]=xe.restoreStructures[n];xe.restoreStructures=null}function Me(){let n=te[_++];if(n<160)if(n<128){if(n<64)return n;{let t=xe[n&63]||dt.getStructures&&Zp()[n&63];return t?(t.read||(t.read=ja(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}else if(n<192){let t=n-160;if($t>=_)return Gr.slice(_-Nt,(_+=t)-Nt);if($t==0&&Rr<140){let e=t<16?ka(t):Qp(t);if(e!=null)return e}return za(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=Me(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Ua;case 194:return!1;case 195:return!0;case 196:return Ga(te[_++]);case 197:return t=_e.getUint16(_),_+=2,Ga(t);case 198:return t=_e.getUint32(_),_+=4,Ga(t);case 199:return eo(te[_++]);case 200:return t=_e.getUint16(_),_+=2,eo(t);case 201:return t=_e.getUint32(_),_+=4,eo(t);case 202:if(t=_e.getFloat32(_),dt.useFloat32>2){let e=xs[(te[_]&127)<<1|te[_+1]>>7];return _+=4,(e*t+(t>0?.5:-.5)>>0)/e}return _+=4,t;case 203:return t=_e.getFloat64(_),_+=8,t;case 204:return te[_++];case 205:return t=_e.getUint16(_),_+=2,t;case 206:return t=_e.getUint32(_),_+=4,t;case 207:return dt.int64AsNumber?(t=_e.getUint32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigUint64(_),_+=8,t;case 208:return _e.getInt8(_++);case 209:return t=_e.getInt16(_),_+=2,t;case 210:return t=_e.getInt32(_),_+=4,t;case 211:return dt.int64AsNumber?(t=_e.getInt32(_)*4294967296,t+=_e.getUint32(_+4)):t=_e.getBigInt64(_),_+=8,t;case 212:if(t=te[_++],t==114)return Yp(te[_++]&63);{let e=it[t];if(e)return e.read?(_++,e.read(Me())):e.noBuffer?(_++,e()):e(te.subarray(_,++_));throw new Error("Unknown extension "+t)}case 213:return t=te[_],t==114?(_++,Yp(te[_++]&63,te[_++])):eo(2);case 214:return eo(4);case 215:return eo(8);case 216:return eo(16);case 217:return t=te[_++],$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):Yv(t);case 218:return t=_e.getUint16(_),_+=2,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):Kv(t);case 219:return t=_e.getUint32(_),_+=4,$t>=_?Gr.slice(_-Nt,(_+=t)-Nt):Zv(t);case 220:return t=_e.getUint16(_),_+=2,qp(t);case 221:return t=_e.getUint32(_),_+=4,qp(t);case 222:return t=_e.getUint16(_),_+=2,$p(t);case 223:return t=_e.getUint32(_),_+=4,$p(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var Xv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ja(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Xv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Me);return n.highByte===0&&(n.read=Wp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Me()}return r}return e.count=0,n.highByte===0?Wp(t,e):e}var Wp=(n,t)=>function(){let e=te[_++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=xe[r]||Zp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=ja(o,n)),o.read()};function Zp(){let n=td(()=>(te=null,dt.getStructures()));return xe=dt._mergeStructures(n,xe)}var za=ys,Yv=ys,Kv=ys,Zv=ys;function ys(n){let t;if(n<16&&(t=ka(n)))return t;if(n>64&&Ra)return Ra.decode(te.subarray(_,_+=n));let e=_+n,r=[];for(t="";_<e;){let o=te[_++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[_++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[_++]&63,s=te[_++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[_++]&63,s=te[_++]&63,l=te[_++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Me();return t}function $p(n){if(dt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Jp()]=Me();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Me(),Me());return t}}var qe=String.fromCharCode;function Qp(n){let t=_,e=new Array(n);for(let r=0;r<n;r++){let o=te[_++];if((o&128)>0){_=t;return}e[r]=o}return qe.apply(String,e)}function ka(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[_++];if((t&128)>1){_-=1;return}return qe(t)}}else{let t=te[_++],e=te[_++];if((t&128)>0||(e&128)>0){_-=2;return}if(n<3)return qe(t,e);let r=te[_++];if((r&128)>0){_-=3;return}return qe(t,e,r)}else{let t=te[_++],e=te[_++],r=te[_++],o=te[_++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){_-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=te[_++];if((i&128)>0){_-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=te[_++],s=te[_++];if((i&128)>0||(s&128)>0){_-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=te[_++];if((l&128)>0){_-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=te[_++],s=te[_++],l=te[_++],c=te[_++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){_-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=te[_++];if((p&128)>0){_-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=te[_++],a=te[_++];if((p&128)>0||(a&128)>0){_-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=te[_++];if((u&128)>0){_-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=te[_++],a=te[_++],u=te[_++],d=te[_++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){_-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let f=te[_++];if((f&128)>0){_-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f)}}else{let f=te[_++],m=te[_++];if((f&128)>0||(m&128)>0){_-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m);let h=te[_++];if((h&128)>0){_-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m,h)}}}}}function Ga(n){return dt.copyBuffers?Uint8Array.prototype.slice.call(te,_,_+=n):te.subarray(_,_+=n)}function eo(n){let t=te[_++];if(it[t])return it[t](te.subarray(_,_+=n));throw new Error("Unknown extension type "+t)}var Xp=new Array(4096);function Jp(){let n=te[_++];if(n>=160&&n<192){if(n=n-160,$t>=_)return Gr.slice(_-Nt,(_+=n)-Nt);if(!($t==0&&Rr<180))return za(n)}else return _--,Me();let t=(n<<5^(n>1?_e.getUint16(_):n>0?te[_]:0))&4095,e=Xp[t],r=_,o=_+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=_e.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=te[r++],i!=e[s++]){r=1879048192;break}if(r===o)return _=r,e.string;o-=3,r=_}for(e=[],Xp[t]=e,e.bytes=n;r<o;)i=_e.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let l=n<16?ka(n):Qp(n);return l!=null?e.string=l:e.string=za(n)}var Yp=(n,t)=>{var e=Me();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=xe[n];return o&&o.isShared&&((xe.restoreStructures||(xe.restoreStructures=[]))[n]=o),xe[n]=e,e.read=ja(e,r),e.read()},ed=typeof self=="object"?self:global;it[0]=()=>{};it[0].noBuffer=!0;it[101]=()=>{let n=Me();return(ed[n[0]]||Error)(n[1])};it[105]=n=>{let t=_e.getUint32(_-4);vr||(vr=new Map);let e=te[_],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};vr.set(t,o);let i=Me();return o.used?Object.assign(r,i):(o.target=i,i)};it[112]=n=>{let t=_e.getUint32(_-4),e=vr.get(t);return e.used=!0,e.target};it[115]=()=>new Set(Me());var Ha=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");it[116]=n=>{let t=n[0],e=Ha[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ed[e](Uint8Array.prototype.slice.call(n,1).buffer)};it[120]=()=>{let n=Me();return new RegExp(n[0],n[1])};it[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=_;_+=t-4,bt=[Me(),Me()],bt.position0=0,bt.position1=0;let r=_;_=e;try{return Me()}finally{_=r}};it[255]=n=>n.length==4?new Date((n[0]*16777216+(n[1]<<16)+(n[2]<<8)+n[3])*1e3):n.length==8?new Date(((n[0]<<22)+(n[1]<<14)+(n[2]<<6)+(n[3]>>2))/1e6+((n[3]&3)*4294967296+n[4]*16777216+(n[5]<<16)+(n[6]<<8)+n[7])*1e3):n.length==12?new Date(((n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3])/1e6+((n[4]&128?-281474976710656:0)+n[6]*1099511627776+n[7]*4294967296+n[8]*16777216+(n[9]<<16)+(n[10]<<8)+n[11])*1e3):new Date("invalid");function td(n){let t=Rr,e=_,r=Fa,o=Nt,i=$t,s=Gr,l=Va,c=vr,p=bt,a=new Uint8Array(te.slice(0,Rr)),u=xe,d=xe.slice(0,xe.length),f=dt,m=ko,h=n();return Rr=t,_=e,Fa=r,Nt=o,$t=i,Gr=s,Va=l,vr=c,bt=p,te=a,ko=m,xe=u,xe.splice(0,xe.length,...d),dt=f,_e=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function gs(){te=null,vr=null,xe=null}function rd(n){n.unpack?it[n.type]=n.unpack:it[n.type]=n}var xs=new Array(147);for(let n=0;n<256;n++)xs[n]=+("1e"+Math.floor(45.15-n*.30103));var vs=new Xt({useRecords:!1}),Qv=vs.unpack,Jv=vs.unpackMultiple,eb=vs.unpack,bs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},tb=new Float32Array(1),bM=new Uint8Array(tb.buffer,0,4);var Ss;try{Ss=new TextEncoder}catch{}var ws,qa,_s=typeof Buffer<"u",Wa=_s?Buffer.allocUnsafeSlow:Uint8Array,sd=_s?Buffer:Uint8Array,od=_s?4294967296:2144337920,R,Be,P=0,Yt,Kt=null,rb=/[\u0080-\uFFFF]/,Gn=Symbol("record-id"),to=class extends Xt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=sd.prototype.utf8Write?function(y,I,T){return R.utf8Write(y,I,T)}:Ss&&Ss.encodeInto?function(y,I){return Ss.encodeInto(y,R.subarray(I)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,g=f+64,x=f+m+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,S=0;this.pack=this.encode=function(y,I){if(R||(R=new Wa(8192),Be=new DataView(R.buffer,0,8192),P=0),Yt=R.length-10,Yt-P<2048?(R=new Wa(R.length),Be=new DataView(R.buffer,0,R.length),Yt=R.length-10,P=0):P=P+7&2147483640,r=P,l=a.structuredClone?new Map:null,a.bundleStrings?(Kt=["",""],R[P++]=214,R[P++]=98,Kt.position=P-r,P+=4):Kt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let L=0;L<T;L++){let N=o[L];if(!N)continue;let C,k=o.transitions;for(let W=0,oe=N.length;W<oe;W++){let ce=N[W];C=k[ce],C||(C=k[ce]=Object.create(null)),k=C}k[Gn]=L+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),Kt){Be.setUint32(Kt.position+r,P-Kt.position-r);let T=Kt;Kt=null,b(T[0]),b(T[1])}if(a.offset=P,l&&l.idsToInsert){P+=l.idsToInsert.length*6,P>Yt&&w(P),a.offset=P;let T=nb(R.subarray(r,P),l.idsToInsert);return l=null,T}return I&ld?(R.start=r,R.end=P,R):R.subarray(r,P)}finally{if(o){if(S<10&&S++,A>1e4)o.transitions=null,S=0,A=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let T=0,L=v.length;T<L;T++)v[T][Gn]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||f;o.length>T&&(o=o.slice(0,T));let L=R.subarray(r,P);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=T,L)}}I&pb&&(P=r)}};let b=y=>{P>Yt&&(R=w(P));var I=typeof y,T;if(I==="string"){let L=y.length;if(Kt&&L>=8&&L<4096){let k=rb.test(y);Kt[k?0:1]+=y,R[P++]=193,b(k?-L:L);return}let N;L<32?N=1:L<256?N=2:L<65536?N=3:N=5;let C=L*3;if(P+C>Yt&&(R=w(P+C)),L<64||!p){let k,W,oe,ce=P+N;for(k=0;k<L;k++)W=y.charCodeAt(k),W<128?R[ce++]=W:W<2048?(R[ce++]=W>>6|192,R[ce++]=W&63|128):(W&64512)===55296&&((oe=y.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(oe&1023),k++,R[ce++]=W>>18|240,R[ce++]=W>>12&63|128,R[ce++]=W>>6&63|128,R[ce++]=W&63|128):(R[ce++]=W>>12|224,R[ce++]=W>>6&63|128,R[ce++]=W&63|128);T=ce-P-N}else T=p(y,P+N,C);T<32?R[P++]=160|T:T<256?(N<2&&R.copyWithin(P+2,P+1,P+1+T),R[P++]=217,R[P++]=T):T<65536?(N<3&&R.copyWithin(P+3,P+2,P+2+T),R[P++]=218,R[P++]=T>>8,R[P++]=T&255):(N<5&&R.copyWithin(P+5,P+3,P+3+T),R[P++]=219,Be.setUint32(P,T),P+=4),P+=T}else if(I==="number")if(y>>>0===y)y<64?R[P++]=y:y<256?(R[P++]=204,R[P++]=y):y<65536?(R[P++]=205,R[P++]=y>>8,R[P++]=y&255):(R[P++]=206,Be.setUint32(P,y),P+=4);else if(y>>0===y)y>=-32?R[P++]=256+y:y>=-128?(R[P++]=208,R[P++]=y+256):y>=-32768?(R[P++]=209,Be.setInt16(P,y),P+=2):(R[P++]=210,Be.setInt32(P,y),P+=4);else{let L;if((L=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[P++]=202,Be.setFloat32(P,y);let N;if(L<4||(N=y*xs[(R[P]&127)<<1|R[P+1]>>7])>>0===N){P+=4;return}else P--}R[P++]=203,Be.setFloat64(P,y),P+=8}else if(I==="object")if(!y)R[P++]=192;else{if(l){let N=l.get(y);if(N){if(!N.id){let C=l.idsToInsert||(l.idsToInsert=[]);N.id=C.push(N)}R[P++]=214,R[P++]=112,Be.setUint32(P,N.id),P+=4;return}else l.set(y,{offset:P-r})}let L=y.constructor;if(L===Object)D(y,!0);else if(L===Array){T=y.length,T<16?R[P++]=144|T:T<65536?(R[P++]=220,R[P++]=T>>8,R[P++]=T&255):(R[P++]=221,Be.setUint32(P,T),P+=4);for(let N=0;N<T;N++)b(y[N])}else if(L===Map){T=y.size,T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);for(let[N,C]of y)b(N),b(C)}else{for(let N=0,C=ws.length;N<C;N++){let k=qa[N];if(y instanceof k){let W=ws[N];if(W.write){W.type&&(R[P++]=212,R[P++]=W.type,R[P++]=0),b(W.write.call(this,y));return}let oe=R,ce=Be,ie=P;R=null;let K;try{K=W.pack.call(this,y,U=>(R=oe,oe=null,P+=U,P>Yt&&w(P),{target:R,targetView:Be,position:P-U}),b)}finally{oe&&(R=oe,Be=ce,P=ie,Yt=R.length-10)}K&&(K.length+P>Yt&&w(K.length+P),P=ob(K,R,P,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[P++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[P++]=211,Be.setBigInt64(P,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[P++]=207,Be.setBigUint64(P,y);else if(this.largeBigIntToFloat)R[P++]=203,Be.setFloat64(P,Number(y));else throw new RangeError(y+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");P+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[P++]=192:(R[P++]=212,R[P++]=0,R[P++]=0);else if(I==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},D=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),T=I.length;T<16?R[P++]=128|T:T<65536?(R[P++]=222,R[P++]=T>>8,R[P++]=T&255):(R[P++]=223,Be.setUint32(P,T),P+=4);let L;for(let N=0;N<T;N++)b(L=I[N]),b(y[L])}:(y,I)=>{R[P++]=222;let T=P-r;P+=2;let L=0;for(let N in y)(I||y.hasOwnProperty(N))&&(b(N),b(y[N]),L++);R[T+++r]=L>>8,R[T+r]=L&255}:y=>{let I=Object.keys(y),T,L=s.transitions||(s.transitions=Object.create(null)),N=0;for(let k=0,W=I.length;k<W;k++){let oe=I[k];T=L[oe],T||(T=L[oe]=Object.create(null),N++),L=T}let C=L[Gn];if(C)C>=96&&h?(R[P++]=((C-=96)&31)+96,R[P++]=C>>5):R[P++]=C;else{C=s.nextId,C||(C=64),C<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(C=s.nextOwnId,C<x||(C=g),s.nextOwnId=C+1):(C>=x&&(C=g),s.nextId=C+1);let k=I.highByte=C>=96&&h?C-96>>5:-1;L[Gn]=C,s[C-64]=I,C<g?(I.isShared=!0,s.sharedLength=C-63,i=!0,k>=0?(R[P++]=(C&31)+96,R[P++]=k):R[P++]=C):(k>=0?(R[P++]=213,R[P++]=114,R[P++]=(C&31)+96,R[P++]=k):(R[P++]=212,R[P++]=114,R[P++]=C),N&&(A+=S*N),v.length>=m&&(v.shift()[Gn]=0),v.push(L),b(I))}for(let k=0,W=I.length;k<W;k++)b(y[I[k]])},w=y=>{let I;if(y>16777216){if(y-r>od)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(od,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(y-r<<2,R.length-1)>>12)+1<<12;let T=new Wa(I);return Be=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),P-=r,r=0,Yt=T.length-10,R=T}}useBuffer(t){R=t,Be=new DataView(R.buffer,R.byteOffset,R.byteLength),P=0}};qa=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,En];ws=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?nd(n,16,t):id(_s?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==sd&&this.structuredClone?nd(n,Ha.indexOf(e.name),t):id(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function nd(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:l}=e(7+o);i[s++]=201,l.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function id(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function ob(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function nb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let l=i+r;n[l++]=214,n[l++]=105,n[l++]=s>>24,n[l++]=s>>16&255,n[l++]=s>>8&255,n[l++]=s&255,o=i}return n}function ro(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");qa.unshift(n.Class),ws.unshift(n)}rd(n)}var ad=new to({useRecords:!1}),ib=ad.pack,sb=ad.pack;var{NEVER:ab,ALWAYS:lb,DECIMAL_ROUND:cb,DECIMAL_FIT:ub}=bs,ld=512,pb=1024;var cd=new to({structuredClone:!0});ro({Class:Ve.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ve.prototype),n}});ro({Class:Le.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});ro({Class:At.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,At.prototype),n}});ro({Class:Dn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Dn(n)}});ro({Class:Bn.prototype.constructor,type:5,write(n){return n.data},read(n){return new Bn(n)}});function db(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function $a(n){if(ls(n))return n;if(Array.isArray(n))return n.map($a);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=$a(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ts;(r=>{function n(o){return cd.pack(o)}r.serialize=n;function t(o){return cd.unpack(o)}r.deserialize=t;function e(o){return db(n($a(o))).toString()}r.checksum=e})(Ts||(Ts={}));var As;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(As||(As={}));var Ns;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:vt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:vt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Ns||(Ns={}));var Xa;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Xa||(Xa={}));var Ya;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(Ya||(Ya={}));var Cs;(t=>t.defaultData={...Ya.defaultData,...Xa.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Ka=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(Ka||{}),Za=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(Za||{}),Qa=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(Qa||{}),Ps;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:vt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ps||(Ps={}));var ud=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],pd=["wrapping","image"],Vr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:pt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:vt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:vt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:vt.fromHexAndA(0,1),contourColor:vt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Vr||(Vr={}));var br;(l=>{function n(c){return!c.layers.some(a=>{if(a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")return!0})&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new Le}}l.defaultEmptyData=r;function o(c="layer1",p="layer2"){return i("phong",c,p)}l.defaultData=o;function i(c,p="layer1",a="layer2"){let u=new Le;return u.push({fi:0,data:Vr.defaultData("light",c),id:p}),u.push({fi:1,data:Vr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Vr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new Le;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:Vr.defaultData("light",p),id:u}),{layers:f}}l.defaultTwoLayerTextureData=s})(br||(br={}));var Ho;(t=>{function n(){return{points:new Le,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Ho||(Ho={}));var Ls;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ls||(Ls={}));var Rn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Ho.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=n})(Rn||(Rn={}));var Vn;(o=>{o.identity={...is.identity,hiddenMatrix:Er.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:s?.position||i.position,rotation:s?.rotation||i.rotation,scale:s?.scale||i.scale,hiddenMatrix:s?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Fo.isEqual(i.position,s.position)?null:s.position,rotation:Fo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Fo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Er.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Vn||(Vn={}));var Sr;(t=>t.defaultData={states:new Le,events:new Le,visible:!0,raycastLock:!1,...Vn.identity})(Sr||(Sr={}));var dd;(t=>t.defaultData={type:"Empty",...Sr.defaultData})(dd||(dd={}));var Is;(t=>t.defaultData={type:"Mesh",...Sr.defaultData,...Cs.defaultData})(Is||(Is={}));var fd;(t=>t.defaultData={type:"TextFrame",...Sr.defaultData,...Ps.defaultData})(fd||(fd={}));var Os;(t=>t.defaultData={...Sr.defaultData,...Vn.identity,...Jr.defaultData})(Os||(Os={}));var md;(t=>{function n(e){return{...Sr.defaultData,...Ns.defaultData(e)}}t.defaultData=n})(md||(md={}));var hd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Er.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Le,events:new Le,...Jr.defaultData},r.defaultMeshObject={name:"Rectangle",...Sr.defaultData,...Is.defaultData,geometry:Rn.defaultData("RectangleGeometry"),material:br.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Sr.defaultData,...Is.defaultData,geometry:Rn.defaultData("BooleanGeometry"),material:br.defaultTwoLayerData("phong","layer1","layer2")}))(hd||(hd={}));var gd;(e=>{function n(r,o){if(o===void 0)return r;let i={...r};return"material"in i&&"material"in o&&o.material&&(i.material=Ea(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&Qr(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ea(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[p,a]of Object.entries(c.layers)){let u=s[l]?.layers?.data(p);u&&Qr(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Vn.merge(i,o)),Vo.is(r.type)){i.orthographic={...i.orthographic},i.perspective={...i.perspective};let s=o;s.orthographic?.zoom!==void 0&&(i.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(i.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(i.targetOffset=s.targetOffset)}else if(r.type==="Mesh")i.geometry={...i.geometry},Object.assign(i.geometry,o.geometry),i=n(i,o);else if(As.is(r.type)){let s=o;s.intensity!==void 0&&(i.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?i.color=s.color:i.color=pt.clone(s.color))}return i}e.patch=t})(gd||(gd={}));var Ms;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Ms||(Ms={}));var Ds;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Oi(r,Ve.prototype)}e.defaultColors=n;function t(){return{materials:new Ve,images:new Ve,colors:new Ve,audios:new Ve,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Ds||(Ds={}));function yd(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Ia(qt(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,s)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...qt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function xd(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function vd(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function fb(n){Object.assign(n.scene.publish,{orbitControls:{...Ms.defaultData,...qt(n.scene.publish.orbitControls)}})}function mb(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((ud.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(pd.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(s=>{t(s)})})})}function hb(n){n.scene.publish.withBackground=!0}function gb(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function yb(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function xb(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function vb(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.parent(t);e.type==="Mesh"&&(!r||n.scene.objects.data(r).geometry?.type!=="BooleanGeometry")&&(e.booleanExclude=null)})}function Ja(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...qt(t),colors:e,steps:r};Object.assign(t,o)}})}function bb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function bd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Ja(r)}):"material"in e&&typeof e.material!="string"&&Ja(e.material)}),Object.values(n.shared.materials).forEach(t=>Ja(t))}function Sb(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function wb(n){n.shared.audios=Oi({},Ve.prototype)}function _b(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"basic",alpha:1,visible:!0,mode:0},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function Tb(n){Object.entries(qt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(qt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function Ab(n){n.scene.publish.settings.web.preload=!1}function Sd(n){n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}var wd=17;function _d(n){let t=n.schema??0;t!==wd&&(console.warn("updating from ",t,"to ",wd),t<1&&(vd(n,yd),xd(n,yd),n.schema=1),t<2&&(fb(n),n.schema=2),t<3&&(mb(n),n.schema=3),t<4&&(hb(n),n.schema=4),t<5&&(gb(n),n.schema=5),t<6&&(yb(n),n.schema=6),t<7&&(xb(n),n.schema=7),t<8&&(vb(n),n.schema=8),t<9&&(bd(n),n.schema=9),t<10&&(bb(n),n.schema=10),t<11&&(Sb(n),n.schema=11),t<12&&(bd(n),n.schema=12),t<13&&(wb(n),n.schema=13),t<14&&(_b(n),n.schema=14),t<15&&(Tb(n),n.schema=15),t<16&&(Ab(n),n.schema=16),t<17&&(vd(n,Sd),xd(n,Sd),n.schema=17))}var Bs;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Bs||(Bs={}));import{Color as Nb}from"three";var Ue=class extends Nb{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};import{ConeBufferGeometry as Lb}from"three";import{BufferGeometry as Cb,CylinderBufferGeometry as Pb,Float32BufferAttribute as el,Vector2 as Dt,Vector3 as Es}from"three";var Ad=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new zn(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,f):m=new Pb(p,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Fr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Td(n){return new Dt(n.y,-n.x)}var zn=class extends Cb{constructor(t,e,r,o,i,s,l,c,p,a,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,a=0);let m=[],h=[],g=[],x=[],v=0,A=r/2,S=new Es,b=new Es;f&&t==0&&(t=p),f&&e==0&&(e=a);let D=new Dt(t,A),w=new Dt(e,-A),y=null,I=null,T=null,L=null,N=D.clone().sub(w),C=0,k=0,W=0;d>0&&(C=Math.min(t,e)*(1-d),k=t-C,W=e-C);let oe=D.clone();oe.x-=C;let ce=Math.PI-N.angle(),ie=N.angle(),K=Math.tan(ie/2),U=Math.tan(ce/2),V=K+U,E=d?V:U,B=d?V:K;if(p=Math.min(p,(t-k)/E,N.length()/V),a=Math.min(a,(e-W)/B,N.length()/V),p>0){let z=p/K;y=D.clone().sub(new Dt(z,p)),d&&(T=y.clone(),T.x-=C-V*p),D.sub(N.clone().setLength(z))}if(a>0){let z=a/U;I=w.clone().sub(new Dt(z,-a)),w.add(N.clone().setLength(z)),d&&(L=I.clone(),L.x-=C-V*a,oe.sub(N.clone().setLength(z)))}N=D.clone().sub(w);let O=N.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+l,ee=new Dt(Math.sin(J),Math.cos(J));L&&I?(Z(M,q,ee,ce,a,L,-1,!0),Z(M,q,ee,ie,a,I,-1,!1)):I?(j(M,ee,I.x,0,-1),Z(M,q,ee,ie,a,I,-1,!1)):s||j(M,ee,e,W,-1);let H=Td(N).normalize();if(Fr(H,ee,S),!O)for(let Q=0;Q<=i;Q++){let $=Q/i,re=N.clone().multiplyScalar($).add(w);Fr(re,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Z(M,q,ee,ce,p,y,1,!1),Z(M,q,ee,ie,p,T,1,!0)):y?(Z(M,q,ee,ce,p,y,1,!1),j(M,ee,y.x,0,1)):s||j(M,ee,t,k,1),d&&!O){let Q=Td(N).multiplyScalar(-1).normalize();Fr(Q,ee,S);for(let $=0;$<=i;$++){let re=$/i,le=N.clone().multiplyScalar(-re).add(oe);Fr(le,ee,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),x.push(q,.5+b.y/r),M.push(v++)}}d&&!s&&M.push(M[0]),G.push(M)}for(let z=0;z<G.length-1;z++)for(let M=0;M<G[0].length-1;M++){if(s&&d&&M==i)continue;let q=G[z][M],J=G[z+1][M],ee=G[z+1][M+1],H=G[z][M+1],Q=h[ee*3+0],$=h[ee*3+2];m.push(q,J,H),(Q!=0||$!=0)&&m.push(J,ee,H)}c<Math.PI*2&&(F(-1,G[0],l),F(1,G[G.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new el(h,3)),this.setAttribute("normal",new el(g,3)),this.setAttribute("uv",new el(x,2));function Z(z,M,q,J,ee,H,Q,$){for(let re=0;re<u+1;re++){let le=re/u,ne=Q<0?le:1-le;$&&(ne-=1),ne*=J;let fe=new Dt(Math.sin(ne),Math.cos(ne)*Q),Ie=fe.clone().multiplyScalar(ee).add(H);Fr(Ie,q,b),h.push(b.x,b.y,b.z),Fr(fe,q,S),g.push(S.x,S.y,S.z),x.push(M,.5+b.y/r),z.push(v++)}}function j(z,M,q,J,ee){let H=new Es,Q=new Dt,$=[q,J];ee<0&&$.reverse();for(let re of $)Q.set(re,A*ee),Fr(Q,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function F(z,M,q){let J=new Dt(Math.sin(q),Math.cos(q)),ee=new Dt(-Math.cos(q),Math.sin(q)),H=new Es,Q=z<0?(le,ne,fe)=>m.push(le,ne,fe):(le,ne,fe)=>m.push(le,fe,ne),$=new Dt((t+e+k+W)/4,0);Fr($,J,H),h.push(H.x,H.y,H.z),g.push(ee.x,0,ee.y),x.push(.5,.5);let re=v++;for(let le of M){let ne=h.slice(le*3,le*3+3);h.push(...ne),g.push(ee.x,0,ee.y);let fe=x.slice(le*2,le*2+2);x.push(...fe),v++}for(let le=re+1;le<v-1;le++)Q(re,le,le+1);Q(re,v-1,re+1)}}};var Nd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,d;return p>0||a>0||c<360?d=new zn(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new Lb(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxBufferGeometry as Ib,BufferGeometry as Ob,Float32BufferAttribute as tl,Vector3 as Un}from"three";var Cd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,p;return l==0?p=new Ib(t,e,r,o,i,s):p=new ol(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},rl=Math.PI/2,ol=class extends Ob{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,t/2,e/2,r/2);let a=[],u=[],d=[],f=[],m=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(x("z","y","x",-1,-1,1,r,e,t,s,0),x("z","y","x",1,-1,-1,r,e,t,s,1),x("z","y","x",-1,1,-1,r,e,t,s,1),x("z","y","x",1,1,1,r,e,t,s,0),x("x","y","z",-1,-1,-1,t,e,r,o,0),x("x","y","z",1,-1,1,t,e,r,o,1),x("x","y","z",-1,1,1,t,e,r,o,0),x("x","y","z",1,1,-1,t,e,r,o,1),x("y","x","z",-1,-1,1,e,t,r,i,0),x("y","x","z",1,-1,-1,e,t,r,i,1),x("y","x","z",1,1,1,e,t,r,i,1),x("y","x","z",-1,1,-1,e,t,r,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new tl(u,3)),this.setAttribute("normal",new tl(d,3)),this.setAttribute("uv",new tl(f,2));function g(A,S,b,D,w,y,I,T,L,N,C){let k=(y-2*l)/L,W=(I-2*l)/N,oe=y/2-l,ce=I/2-l,ie=T/2,K=L+1,U=N+1,V=0,E=0,B=new Un;for(let O=0;O<U;O++){let G=O*W-ce;for(let Z=0;Z<K;Z++){let j=Z*k-oe;B[A]=j*D,B[S]=G*w,B[b]=ie,u.push(B.x,B.y,B.z),B[A]=0,B[S]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),f.push(Z/L),f.push(1-O/N),V+=1}}for(let O=0;O<N;O++)for(let G=0;G<L;G++){let Z=m+G+K*O,j=m+G+K*(O+1),F=m+(G+1)+K*(O+1),z=m+(G+1)+K*O;a.push(Z,j,z),a.push(j,F,z),E+=6}p.addGroup(h,E,C),h+=E,m+=V}function x(A,S,b,D,w,y,I,T,L,N,C){let k=(I-2*l)/N,W=I/2-l,oe=T/2-l,ce=L/2,ie=N+1,K=0,U=0,V=new Un,E=new Un;for(let B=0;B<c+1;B++){let O=B/c*rl,G=Math.sin(O)*l,Z=(1-Math.cos(O))*l,j=Math.sin(O),F=Math.cos(O);V[S]=(oe+G)*w,V[b]=(ce-Z)*y,E[A]=0,E[S]=j*Math.sign(V[S]),E[b]=F*Math.sign(V[b]);for(let z=0;z<ie;z++){let M=z*k-W;V[A]=M*D,u.push(V.x,V.y,V.z),d.push(E.x,E.y,E.z),f.push(z/N),f.push(0),K+=1}}for(let B=0;B<c;B++)for(let O=0;O<N;O++){let G=m+O+ie*B,Z=m+O+ie*(B+1),j=m+(O+1)+ie*(B+1),F=m+(O+1)+ie*B;a.push(G,Z,F),a.push(Z,j,F),U+=6}p.addGroup(h,U,C),h+=U,m+=K}function v(A,S,b){let D=new Un,w=new Un(t/2,e/2,r/2);w.subScalar(l);let y=[],I=A*S*b>0?(L,N,C)=>a.push(L,N,C):(L,N,C)=>a.push(L,C,N);for(let L=0;L<=c;L++){let N=[],C=rl*(1-L/c),k=Math.cos(C),W=Math.sin(C),oe=0;for(let ce=0;ce<=L;ce++){let ie=Math.cos(oe),K=Math.sin(oe);D.x=k*ie,D.y=W,D.z=k*K;let U=w.clone().addScaledVector(D,l);u.push(A*U.x,S*U.y,b*U.z),d.push(A*D.x,S*D.y,b*D.z),f.push(0,0),N.push(m++),oe+=rl/L}y.push(N)}let T=y.length-1;for(let L=0;L<T;L++){let N=y[L],C=y[L+1],k=N.length-1;I(N[0],C[1],C[0]);for(let W=1;W<=k;W++)I(N[W-1],N[W],C[W]),I(N[W],C[W+1],C[W])}}}};import{BufferGeometry as Mb,Float32BufferAttribute as nl,Triangle as Db,Vector3 as wr,Vector2 as il}from"three";var zr=class extends Mb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new nl(l,3)),this.setAttribute("normal",new nl(p,3)),this.setAttribute("uv",new nl(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new wr,h=m.clone(),g=new Db,x=i*o,v=o-x,A=s+1,S=new wr,b=(K,U)=>S.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),w=D(t.length/3,(K,U)=>new wr().fromArray(t,U*3).setLength(o)),y=[],I=1e6;for(let K=0;K<w.length;K++){let U=w[K],V=[],E,B,O,G=1e10,Z=-1;for(;(Z=e.indexOf(K,Z+1))!=-1;){let M=Z-Z%3;E=e[M+(Z+1)%3],B=e[M+(Z+2)%3],O=U.distanceToSquared(w[E]),G=Math.min(G,O),V.push([E,B,O])}G+=1e-6;let j=[],F=0,z=V.length;for(let M=0;M<z;M++){[E,B,O]=V[F];let q=y[E]?.includes(K)==!0;O<=G&&j.push(E+ +q*I),F=V.findIndex(J=>J[0]==B)}y.push(j)}let T=[];{let K=0,U=0,V,E,B=f==3;for(let O=0;O<=s;O++){V=O*(O+1)/2,E=(O+1)*(O+2)/2;for(let G=0;G<s-O;G++)[K,U]=[V+G+O+2,E+G+O+3],T.push(V,E,...B?[U,V]:[K,E],U,K),[V,E]=[K,U];T.push(V,E,V+s+2)}}let L=m.clone(),N=m.clone(),C=m.clone(),k=m.clone(),W=m.clone(),oe=[],ce=D(w.length,()=>D(f,()=>m.clone()));for(let K=0;K<w.length;K++){m.copy(w[K]).normalize(),L.copy(m).multiplyScalar(v);let U=y[K];for(let j=0;j<U.length;j++){let F=U[j],z=U[(j+1)%f];g.setFromPointsAndIndices(w,K,F%I,z%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(L,ce[K][j])}let V=[],E=[],B=[],O=new wr;s==0&&[...ce[K]].reduce((j,F)=>j.add(F),O).multiplyScalar(1/f);for(let j=0;j<f;j++){let F=[],z=(j-1+f)%f,M=ce[K][z],q=ce[K][j];m.copy(M).sub(L),h.copy(q).sub(L);let J=L.angleTo(m),ee=m.angleTo(h),H=Math.cos(J)*x;s==0?N.copy(O):N.copy(L).setLength(v+H),E.push(H);let Q=[N,M,q];for(let $=0;$<2;$++){let re=Q[$],le=Q[$+1];k.subVectors(re,L),W.subVectors(le,L),C.crossVectors(k,W).normalize();for(let ne=0;ne<A;ne++){let fe=[J,ee][$]*ne/A;m.copy(k).applyAxisAngle(C,fe).add(L),V.push(m.clone()),$&&(b(m,L),F.push([ne==0?re:m.clone(),S.clone()]))}$&&(b(le,L),F.push([le,S.clone()]))}B.push(F)}oe.push(B);let G=2*A,Z=2;for(let j=0;j<f;j++){let F=G*j,z=G*((j+1)%f),M=[V[F]];for(let J=1;J<A;J++){k=V[F+J],W=V[z+J],M.push(k);for(let ee=1,H=J-Z+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(L).setLength(E[j]).add(L),M.push(m.clone());M.push(W)}for(let J=0;J<A;J++)M.push(V[J+A+F]);M.push(V[z+A]);let q=T.map(J=>M[J]);l.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,L),[S.x,S.y,S.z])).flat())}}let ie=[];for(let K=0;K<y.length;K++)for(let U=0;U<f;U++){let V=y[K][U];if(V<I){let E=y[V].findIndex(G=>G%I==K),B=oe[K][U],O=oe[V][E];for(let G=0;G<A;G++){let Z=B[G],j=O[A-G],F=B[G+1],z=O[A-(G+1)];[Z,j,F,F,j,z].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}ie.push(B[0][0],O[A][0],B[A][0],O[0][0])}}for(;ie.length;){let K,U,V,E;[K,U]=ie.splice(0,2);let B=[K];for(;K!=U;)B.push(U),V=ie.indexOf(U),E=V%2,U=ie.splice(V-E,2)[1-E];S.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let O=S.dot(B[0])<0;O&&S.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +O],B[G+1-+O],B[0]].forEach(Z=>{l.push(Z.x,Z.y,Z.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new wr;for(let w=0;w<l.length;w+=3){d.x=l[w+0],d.y=l[w+1],d.z=l[w+2];let y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let f=new wr,m=new wr,h=new wr,g=new wr,x=new il,v=new il,A=new il,S=(w,y,I,T)=>{T<0&&w.x===1&&(c[y]=w.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let w=0,y=0;w<l.length;w+=9,y+=6){f.set(l[w+0],l[w+1],l[w+2]),m.set(l[w+3],l[w+4],l[w+5]),h.set(l[w+6],l[w+7],l[w+8]),x.set(c[y+0],c[y+1]),v.set(c[y+2],c[y+3]),A.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let I=b(g);S(x,y+0,f,I),S(v,y+2,m,I),S(A,y+4,h,I)}for(let w=0;w<c.length;w+=6){let y=c[w+0],I=c[w+2],T=c[w+4],L=Math.max(y,I,T),N=Math.min(y,I,T);L>.9&&N<.1&&(y<.2&&(c[w+0]+=1),I<.2&&(c[w+2]+=1),T<.2&&(c[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function D(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new zr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Bb}from"three";var Pd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new jn(t*.5,i,s):new Bb(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},jn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],l=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],c="DodecahedronGeometry";super(s,l,c,t,e,r),this.type=c}static fromJSON(t){return new jn(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Wb,Plane as qb,Shape as kd,Vector2 as _r,Vector3 as $b,MathUtils as dl,LineCurve as fl,QuadraticBezierCurve as Hd,CubicBezierCurve as Fs}from"three";import{CubicBezierCurve as Gs,EllipseCurve as Eb,LineCurve as Rs,LineCurve3 as Gb,MathUtils as Rb,QuadraticBezierCurve as al,SplineCurve as Vb,Vector2 as tt,Vector3 as Od}from"three";var kn=1e-12,Wo=class{constructor(t){this.position=new tt;this.startPosition=new tt;this.uuid=Rb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Wo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},qo=class extends Wo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new qo(this.parent).copy(this)}},Bt=class extends Wo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new qo(this),new qo(this))}static create(e,r){let o=new Bt(e,new tt(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Bt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new tt,r=new tt){let[o,i]=this.computeTangents();return o&&i&&(Ld(o,e),Ld(i,r)),[e,r]}computeTangent(e=new tt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new tt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Ld(n,t=new tt){let e=n.length();return t.set(-n.y/e,n.x/e)}var ll=n=>n,$o=new tt,Vs=new tt,Fb=new tt,zb=new tt,Ub=new tt,jb=new tt,Md=new Od,Dd=new Od;function Bd(n){let t=new tt;t.addVectors(n.v0,$o.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new tt;return e.addVectors(n.v2,Vs.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Gs(n.v0,t,e,n.v2)}function Hn(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function kb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Hb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function cl(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function Ed(n,t,e){return Id(n,t)&&Id(t,e)&&sl(n.position,t.position,e.position)}function sl(n,t,e){return $o.copy(t).sub(n).cross(Vs.copy(e).sub(n))===0}function Gd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,l=(n.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,p=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(l+c,s+p),o.set(l-c,s-p),[r,o]}function Rd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Vd(n,t,e,r,o,i){let s=t.x-n.x,l=t.y-n.y,c=e.x-n.x,p=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+p)*(l+p)),u;return cl(t,n,e)>Math.PI&&(a*=-1),Hn(p,l)?u=(l+p)*(r/a-.5)*8/3/(s-c):u=(s+c)*(r/a-.5)*8/3/(p-l),o.set(t.x-u*l,t.y+u*s),i.set(e.x+u*p,e.y-u*c),[o,i]}function ul(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Id(n,t){return sl(n.position,n.controls[1].position,t.position)&&sl(n.position,t.controls[0].position,t.position)}function Fd(n,t,e,r,o=.5){let i=$o.subVectors(t,n).multiplyScalar(o).add(n),s=Vs.subVectors(e,t).multiplyScalar(o).add(t),l=Fb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=zb.subVectors(s,i).multiplyScalar(o).add(i),a=Ub.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=jb.subVectors(a,p).multiplyScalar(o).add(p);return[n.x,n.y,c.x,c.y,p.x,p.y,d.x,d.y,a.x,a.y,u.x,u.y,r.x,r.y]}function zd(n,t,e=12,r=!0){let o=Dd.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=ll(t[c]),a=$o,u=Ur(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Gs||p instanceof al||p instanceof Rs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&Hb(i,o))continue;i===void 0&&(i=Md),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ud(n,t,e,r=12,o=!0){let i=Dd.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=ll(t[c]),u=$o,d=Ur(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Gs||a instanceof al||a instanceof Rs){if(a.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Md:(n.setXYZ(s,p.x,p.y,p.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),p.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),l}function pl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=Ur(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=Ur(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Ur(n[0].roundedCurveCorner,t)*.5),r}function Ur(n,t=12){return n&&n instanceof Eb?t*2:n&&(n instanceof Rs||n instanceof Gb)?1:n&&n instanceof Vb?t*n.points.length:t}function jd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=ll(t[s]),c=Ur(l,e),p=$o;for(let a=0;a<=c;a++)if(l instanceof Gs||l instanceof al||l instanceof Rs){if(l.getPoint(a/c,p),o!==void 0&&kb(o,p,kn))continue;o===void 0&&(o=Vs),o.copy(p),n.push(p.x,p.y),i++}}return Hn(n[0],n[n.length-2],kn)&&Hn(n[1],n[n.length-1],kn)&&(n.pop(),n.pop()),r&&i>1&&!(Hn(n[i-1],n[1],kn)&&Hn(n[i-2],n[0],kn))&&(n.push(n[0],n[1]),i++),n}var ml=new _r,Xb=new _r,Yb=new _r,Kb=new _r,Zb=new _r,Qb=new _r,Se=class extends kd{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Wb;this.plane=new qb(new $b(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=dl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Bt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],p=c.points.length-1,a=c.getPointIndexById(e);if(a<0)i+=p;else return a+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=s.points.indexOf(e);if(l>=0)return r+l;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=ml.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i];l.position.multiply(o),l.controls[0].position.multiply(o),l.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=dl.generateUUID()){let i;e instanceof _r?i=e:i=new _r(e,r);let s=new Bt(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return zd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=pl(this.points,e,!1),this.roundedCurveDivisions=pl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Ud(e,this.curves,r,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),jd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Ur(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,p)=>c+p,0));for(let c=0,p=i.length;c<p;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(ul(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(ml.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=l[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){ul(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let l=this.points[o-1];this._applyCurveForPoint(s,l)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],i=this.points[this.points.length-1];this._applyCurveForPoint(o,i)}if(this.points.length>2){let o=0;for(let i=0,s=this.points.length;i<s;i++){let l=this.points[i],c=this.points[i-1]??this.points[this.points.length-1],p=this.points[i+1]??this.points[0],a=l.roundness,u=c&&p&&Ed(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),x=f.getLength(),v=Math.min(a,g*.499),A=Math.min(a,x*.499),S=Math.min(v,A),b=1-S/g,D=S/x,w=d.getPointAt(b,ml),y=f.getPointAt(D,Xb);this._subSplitCurve(d,m,b,w,void 0),this._subSplitCurve(f,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=cl(w,l.position,y)/2,L=Math.tan(T)*w.distanceTo(l.position),[N,C]=Gd(w,y,L,Yb,Kb),k=Rd(N,C,l.position),[W,oe]=Vd(k,w,y,L,Zb,Qb);I=new Fs(w.clone(),W.clone(),oe.clone(),y.clone())}else I=new Hd(w.clone(),l.position.clone(),y.clone());l.roundedCurveCorner=I,this.roundedCurves.splice(i+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof fl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,p=l.getUtoTmapping(o,0),a=Fd(l.v0,l.v1,l.v2,l.v3,p);return i!==void 0&&(c.v0.set(a[0],a[1]),c.v1.set(a[2],a[3]),c.v2.set(a[4],a[5]),c.v3.set(a[6],a[7])),s!==void 0&&(c.v0.set(a[6],a[7]),c.v1.set(a[8],a[9]),c.v2.set(a[10],a[11]),c.v3.set(a[12],a[13])),c}return r}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Bt(dl.generateUUID(),new _r(s,l));f.controls[0].position.set(c,p),f.controls[1].position.set(a,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Fs&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],l,c;for(l=0,c=i.length;l<c;l++)i[l]instanceof Hd&&(i[l]=Bd(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,f;u instanceof Fs?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof fl&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],a=!1;return p instanceof Fs?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof fl&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof kd&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}};var gl=Math.PI*2;function hl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Jb(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Wd(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function eS(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*d;m<0&&(m=0),m/=a*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*l,g=m*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,S=(l-g)/i,b=(-s-h)/o,D=(-l-g)/i,w=Wd(1,0,A,S),y=Wd(A,S,b,D);return!p&&y>0&&(y-=gl),p&&y<0&&(y+=gl),{centerx:x,centery:v,ang1:w,ang2:y}}function qd({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let p=(n-e)/2,a=(t-r)/2;if(p===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let d=eS(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,x=Math.abs(m)/(gl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);m/=v;for(let A=0;A<v;A++)c.push(Jb(f,m)),f+=m;return c.map(A=>{let{x:S,y:b}=hl(A[0],o,i,h,g),{x:D,y:w}=hl(A[1],o,i,h,g),{x:y,y:I}=hl(A[2],o,i,h,g);return{x1:S,y1:b,x2:D,y2:w,x:y,y:I}})}import{BufferAttribute as Us,BufferGeometry as iS}from"three";var Pe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Pe||(Pe={}));var je;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(je||(je={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var se=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ue(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,l,c;n.vertLeq(t,e)||(c=t,t=e,e=c),n.vertLeq(r,o)||(c=r,r=o,o=c),n.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.vertLeq(r,e)?n.vertLeq(e,o)?(s=n.edgeEval(t,r,e),l=n.edgeEval(r,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,e.s)):(s=n.edgeSign(t,r,e),l=-n.edgeSign(t,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,r.s,l,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(c=t,t=e,e=c),n.transLeq(r,o)||(c=r,r=o,o=c),n.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),n.transLeq(r,e)?n.transLeq(e,o)?(s=n.transEval(t,r,e),l=n.transEval(r,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,e.t)):(s=n.transSign(t,r,e),l=-n.transSign(t,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,r.t,l,o.t)):i.t=(r.t+e.t)/2},n}(),Wn=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return n}(),zs=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),Xo=function(){function n(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}return n}(),$d=function(){function n(){var t=new Xo,e=new Wn,r=new zs(0),o=new zs(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new zs(0),r=new zs(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new Xo,e=new Xo,r=new Wn,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new Xo;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Wn;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Wn;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new Xo;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new Wn;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,l;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,l=t.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=t&&se.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&se.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,l,c,p;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ue(c.Sym.next===p.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===p.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),Xd=function(){function n(){this.handle=null}return n}(),Yd=function(){function n(){this.key=null,this.node=0}return n}(),tS=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new Xd,this.handles[r]=new Yd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Xd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Yd}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ue(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),yl=function(){function n(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return n}(),Kd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),rS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Kd,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Kd;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),oS=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?se.vertLeq(i.Org,s.Org)?se.edgeSign(s.Dst,i.Org,s.Org)<=0:se.edgeSign(i.Dst,s.Org,i.Org)>=0:se.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return se.edgeSign(i.Dst,o,i.Org)>=0;var l=se.edgeEval(i.Dst,o,i.Org),c=se.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new yl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ue(se.vertLeq(p.Org,p.Dst)),n.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),p=l.eUp.Sym,p.Org===a.Org;)p.Onext!==a&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(a.Oprev,p)),l.windingNumber=c.windingNumber-p.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(t,c)&&(n.addWinding(p,a),n.deleteRegion(t,c),t.mesh.delete(a)),u=!1,c=l,a=p;c.dirty=!0,ue(c.windingNumber-p.winding===l.windingNumber),s&&n.walkDirtyRegions(t,c)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=se.vertL1dist(e,t),i=se.vertL1dist(r,t),s=.5*i/(o+i),l=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+l*r.coords[0],t.coords[1]+=s*e.coords[1]+l*r.coords[1],t.coords[2]+=s*e.coords[2]+l*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(se.vertLeq(o.Org,i.Org)){if(se.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;se.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(se.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!se.vertEq(o.Dst,i.Dst)),se.vertLeq(o.Dst,i.Dst)){if(se.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(se.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,l=i.Org,c=o.Dst,p=i.Dst,a,u,d=new Xo,f,m;if(ue(!se.vertEq(p,c)),ue(se.edgeSign(c,t.event,s)<=0),ue(se.edgeSign(p,t.event,l)>=0),ue(s!==t.event&&l!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,p.t),a>u))return!1;if(se.vertLeq(s,l)){if(se.edgeSign(p,s,l)>0)return!1}else if(se.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),se.intersect(c,s,p,l,d),ue(Math.min(s.t,c.t)<=d.t),ue(d.t<=Math.max(l.t,p.t)),ue(Math.min(p.s,c.s)<=d.s),ue(d.s<=Math.max(l.s,s.s)),se.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=se.vertLeq(s,l)?s:l,se.vertLeq(f,d)&&(d.s=f.s,d.t=f.t),se.vertEq(d,s)||se.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!se.vertEq(c,t.event)&&se.edgeSign(c,t.event,d)>=0||!se.vertEq(p,t.event)&&se.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(se.edgeSign(c,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),se.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,c,l,p),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,p=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(t,e),se.vertEq(l.Org,t.event)&&(t.mesh.splice(i.Oprev,l),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),p=!0),se.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),p=!0),p){n.addRightEdges(t,e,r.Onext,i,i,!0);return}se.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,l,c;if(o=e.eUp,se.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!se.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),se.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,l,c,p=new yl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,se.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=se.vertLeq(l.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=t.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,c):n.computeWinding(t,n.addRegionBelow(t,r,c)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(t,i,null);l.Onext===s?n.connectRightVertex(t,o,l):n.addRightEdges(t,o,l.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new yl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new rS(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,l=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,l)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,se.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new tS(i,se.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!se.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),nS=function(){function n(){this.mesh=new $d,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Pe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,l,c=[0,0,0],p=[0,0,0],a=[0,0,0],u=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)i=e.coords[x],i<p[x]&&(p[x]=i,m[x]=e),i>c[x]&&(c[x]=i,f[x]=e);var v=0;if(c[1]-p[1]>c[0]-p[0]&&(v=1),c[2]-p[2]>c[v]-p[v]&&(v=2),p[v]>=c[v]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=m[v],o=f[v],a[0]=r.coords[0]-o.coords[0],a[1]=r.coords[1]-o.coords[1],a[2]=r.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)u[0]=e.coords[0]-o.coords[0],u[1]=e.coords[1]-o.coords[1],u[2]=e.coords[2]-o.coords[2],d[0]=a[1]*u[2]-a[2]*u[1],d[1]=a[2]*u[0]-a[0]*u[2],d[2]=a[0]*u[1]-a[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>l&&(l=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);l<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=t.next;l!==t;l=l.next)l.s=this.dot_(l.coords,r),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,p=t.next;p!==t;p=p.next)c?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,c=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;se.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;se.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(se.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(se.edgeGoesLeft(o.Lnext)||se.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(se.edgeGoesRight(r.Lprev)||se.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,l=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;p.n===-1&&(p.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>r)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===je.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===je.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new $d),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Pe.ODD),e===void 0&&(e=je.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),oS.computeInterior(this,s);var l=this.mesh;return e===je.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===je.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function oo(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?je.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var x=new nS;n.edgeCreateCallback&&(x.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(x.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,a,m),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var A3=Pe.ODD,N3=Pe.NONZERO,C3=Pe.POSITIVE,P3=Pe.NEGATIVE,L3=Pe.ABS_GEQ_TWO,I3=je.POLYGONS,O3=je.CONNECTED_POLYGONS,M3=je.BOUNDARY_CONTOURS;var Yo=class extends iS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.ODD;this.elementType=je.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Pe.ODD,elementType:je.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let m=0,h=i.length/2;m<h;m++){let g=m*2,x=i[g+0],v=i[g+1];if(a!==void 0&&x!==a&&(c=!1),u!==void 0&&v!==u&&(p=!1),a=x,u=v,!c&&!p)break}!c&&!p&&(l=oo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Us(new Float32Array(d*3),3),this._normalAttribute=new Us(new Float32Array(d*3),3),this._uvAttribute=new Us(new Float32Array(d*2),2),this._indexAttribute=new Us(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,g=1/0,x=-1/0;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],y=l.vertices[D+1];w<m&&(m=w),w>h&&(h=w),y<g&&(g=y),y>x&&(x=y)}let v=h-m,A=x-g;for(let S=0,b=d;S<b;S++){let D=S*2,w=l.vertices[D+0],y=l.vertices[D+1],I=(w-m)/v,T=(y-g)/A;this._positionAttribute.setXYZ(S,w,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,I,T)}for(let S=0,b=f;S<b;S++){let D=S*3,w=l.elements[D+0],y=l.elements[D+1],I=l.elements[D+2];this._indexAttribute.setX(D+0,w),this._indexAttribute.setX(D+1,y),this._indexAttribute.setX(D+2,I)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(l?.elementCount??1)*3)}clone(){let e=new Yo(this._shape,this._curveSegments);return e.userData=Ln(this.userData),e}};import{BufferAttribute as ks,BufferGeometry as sS}from"three";var js=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*js.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*js.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,3*t);s+=3*t;let p=new Float32Array(o,s*i,2*t);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),p.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=p,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},qn=js;qn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var xl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Ko=class extends sS{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let l=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(w=>{let y=w.extractShapePointsToFlatArray([],i),I=[];for(let T=y.length-1;T>=1;T-=2){let L=y[T-1],N=y[T-0];I.push(L,N)}return I}),p=oo({windingRule:Pe.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=oo({windingRule:Pe.ODD,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(a){p.elementCount+=a.elementCount;for(let w=0;w<a.elements.length;w++){let y=a.elements[w],I=w%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let w=0;w<a.vertexIndices.length;w++){let y=a.vertexIndices[w],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let w=0;w<a.vertices.length;w++){let y=a.vertices[w];p.vertices.push(y)}}let d=1/0,f=-1/0,m=1/0,h=-1/0;for(let w=0,y=p.vertexCount;w<y;w++){let I=w*2,T=p.vertices[I+0],L=p.vertices[I+1];T<d&&(d=T),T>f&&(f=T),L<m&&(m=L),L>h&&(h=L)}this._minX=d,this._minY=m,this._width=f-d,this._height=h-m;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new qn(g);let x=[],v=[];for(let w=p.elementCount-1;w>=0;w--){let y=w>=u,I=w*2,T=p.elements[I+0],L=p.elements[I+1],N=T+L,C={start:T,count:L,normals:[],continuous:[],concave:[]},k=T,W=N-1,oe=T+1,ce=this._shape.roundedCurves.length;do{let V=k-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],O=p.vertices[k*2+0],G=p.vertices[k*2+1],Z=p.vertices[oe*2+0],j=p.vertices[oe*2+1],F=O-E,z=G-B,M=Math.sqrt(F*F+z*z);F/=M,z/=M;let q=O-Z,J=G-j,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,C.normals[V*2+0]=-J,C.normals[V*2+1]=q,C.concave[V]=F*J-z*q>0;let H=p.vertexIndices[k];if(Array.isArray(H))C.continuous[V]=!1;else{let[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)C.continuous[V]=!0;else{let re=$===1?Q+1:Q-1;re=(re+ce)%ce;let le=$===1?0:1,ne=this._shape.roundedCurves[Q].getTangent($),fe=this._shape.roundedCurves[re].getTangent(le);C.continuous[V]=ne.dot(fe)>.95}}y&&(C.normals[V*2+0]*=-1,C.normals[V*2+1]*=-1),[W,k,oe]=[k,oe,oe+1],oe>=N&&(oe-=L)}while(oe!==T+1);let ie=[];ie.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,N*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((V,E)=>[E,E]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,N*2)});for(let V=1;V<=this._bevelSegments;V++){let E=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,O=[],G=[],Z=[],j=[],F=0;for(let M=0;M<L;M++){let q=M*2,J=(M-1+L)%L*2,ee=p.vertices[C.start*2+q+0],H=p.vertices[C.start*2+q+1],Q=-C.normals[J+0]*B,$=-C.normals[J+1]*B,re=-C.normals[q+0]*B,le=-C.normals[q+1]*B;if(C.concave[M]||!C.concave[M]&&y){let ne=Math.atan2($,Q),fe=Math.atan2(le,re);fe>ne&&(fe-=Math.PI*2);let Ie=fe-ne;if(C.continuous[M]||y){let me=ne+Ie/2,Ge=Math.cos(me)*B,be=Math.sin(me)*B;O[2*F+0]=ee+Ge*(y?-1:1),O[2*F+1]=H+be*(y?-1:1),j[F]=M,F++}else{let me=Math.max(1,Math.floor(i/4*Math.abs(Ie)/Math.PI));for(let Ge=0;Ge<=me;Ge++){let be=ne+Ie*(Ge/me),lt=Math.cos(be)*B,wt=Math.sin(be)*B;O[2*F+0]=ee+lt,O[2*F+1]=H+wt,j[F]=M,F++}}}else O[2*F+0]=ee+Q,O[2*F+1]=H+$,j[F]=M,G[M]=F,F++,O[2*F+0]=ee,O[2*F+1]=H,j[F]=M,F++,O[2*F+0]=ee+re,O[2*F+1]=H+le,j[F]=M,Z[M]=F,F++}let z=oo({windingRule:Pe.POSITIVE,elementType:je.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[O],edgeCreateCallback:M=>{let J=M.Org.idx,ee=j[J],H=j[(J+1)%j.length];M.idx=[ee,H],M.Sym.idx=[H,ee]},vertexIdCallback:M=>{let q=M.Lprev.idx;return[q?q[1]:0,M.idx[0]]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let M=0;M<z.vertexIndices.length;M++){let[q,J]=z.vertexIndices[M];if(q===J)continue;let ee=J;J<q&&(ee+=L);for(let H=q;H<ee;H++){let Q=H%L,$=(H+1)%L;if(!C.continuous[Q]||!C.continuous[$]){z.vertexIndices[M]=[q,Q],z.vertexIndices.splice(M+1,0,[$,J]),z.vertices.splice((M+1)*2,0,z.vertices[M*2],z.vertices[M*2+1]);break}}}ie.push({bevelI:V,angle:E,size:B,boundary:z,reverseMap:j,insetPoints:O})}let K=(V,E,B)=>{let O=0,G=V.boundary.vertexIndices.length;for(;O<G&&B(V.boundary.vertexIndices[E]);)E=(E+1)%G,O++;return O},U=x.length;for(let V=1;V<ie.length;V++){let E=ie[V-1],B=ie[V],O=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!O||!G)break;let Z=C.concave.length,j=0,F=xl(j,L);for(;!E.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)j++,F=xl(j,L);let z=E.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%O;while(F(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(F(B.boundary.vertexIndices[M]));j=(j+1)%L;let q=j,J=this.buildBevelVert(C,E,(z-1+O)%O),ee=this.buildBevelVert(C,B,(M-1+G)%G),H=J,Q=ee,$,re,le=!1;do{F=xl(j,L);let ne=K(E,z,F),fe=K(B,M,F),Ie=le;if(le=!1,ne&&!fe){for(let me=0;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),x.push(H.topN,$.topP,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$;le=!0}else if(!ne&&fe)for(let me=0;me<fe;me++)re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(Q.topN,H.topP,re.topP),x.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ne&&fe)if($=this.buildBevelVert(C,E,z,0),re=this.buildBevelVert(C,B,M,0),Ie?(x.push(H.topN,re.topP,Q.topN),x.push(H.topN,$.topP,re.topP),x.push(re.bottomP,H.bottomN,Q.bottomN),x.push(re.bottomP,$.bottomP,H.bottomN)):(x.push(Q.topN,H.topN,$.topP),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=re,ne===fe)for(let me=1;me<ne;me++)$=this.buildBevelVert(C,E,(z+me)%O,me/(ne-1)),re=this.buildBevelVert(C,B,(M+me)%G,me/(fe-1)),x.push(H.topN,$.topP,Q.topN),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,H.bottomN,Q.bottomN),x.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=re;else if(ne>fe){let me=ne/fe,Ge=0;for(let be=1;be<ne;be++)$=this.buildBevelVert(C,E,(z+be)%O,be/(ne-1)),x.push(H.topN,$.topP,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$,be>(Ge+1)*me&&(Ge++,re=this.buildBevelVert(C,B,(M+Ge)%G,Ge/(fe-1)),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=re)}else{let me=fe/ne,Ge=0;for(let be=1;be<fe;be++)re=this.buildBevelVert(C,B,(M+be)%G,be/(fe-1)),x.push(Q.topN,$.topP,re.topP),x.push($.bottomP,Q.bottomN,re.bottomP),Q=re,be>(Ge+1)*me&&(Ge++,$=this.buildBevelVert(C,E,(z+Ge)%O,Ge/(ne-1)),x.push(H.topN,$.topP,Q.topN),x.push($.bottomP,H.bottomN,Q.bottomN),H=$)}z=(z+ne)%O,M=(M+fe)%G,j=(j+1)%Z}while(j!==q)}{let V=ie[0];for(let E=0,B=V.boundary.vertexCount;E<B;E++){let O=this.buildBevelVert(C,V,E),G=this.buildBevelVert(C,V,(E+1)%B);x.push(G.topP,O.topN,O.bottomN),x.push(G.topP,O.bottomN,G.bottomP)}}if(y){let V=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],O=x[E-1],G=x[E-0];V.push(G,O,B)}x.splice(U,x.length-U,...V)}if(y){let V=[];for(let E=ie[ie.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=ie[ie.length-1].boundary.vertices[E-1],O=ie[ie.length-1].boundary.vertices[E-0];V.push(B,O)}v.push(V)}if(!y){let V=ie[ie.length-1],E=oo({windingRule:ie.length>1?Pe.POSITIVE:Pe.ODD,elementType:je.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");c.length===0&&Object.assign(this,{capStartIndex:x.length});for(let B=0;B<E.elementCount*3;B+=3){let O=this.buildSurfaceVert(E,E.elements[B+0]),G=this.buildSurfaceVert(E,E.elements[B+1]),Z=this.buildSurfaceVert(E,E.elements[B+2]);x.push(O.top,G.top,Z.top),x.push(Z.bottom,G.bottom,O.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new ks(Uint32Array.from(x),1),S=new ks(this._buffer.positions,3),b=new ks(this._buffer.normals,3),D=new ks(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",D),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[u+0]=l,this._buffer.uvs[u+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[u+2]=l,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,g=p*2,x=a*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,w=e.normals[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-w,oe=T-y;w=w+W*(1-i),y=y+oe*(1-i);let ce=Math.sqrt(w*w+y*y);w/=ce,y/=ce}let L=this._buffer.get(u?2:4),N=L*3,C=L*2,k={i:o,fi:p,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=w*f,this._buffer.normals[N+1]=y*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=w*f,this._buffer.normals[N+4]=y*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b,u||(L+=2,N+=6,C+=4,k.topP=L+0,k.bottomP=L+1,this._buffer.positions[N+0]=v,this._buffer.positions[N+1]=A,this._buffer.positions[N+2]=this._depth-S,this._buffer.normals[N+0]=I*f,this._buffer.normals[N+1]=T*f,this._buffer.normals[N+2]=m,this._buffer.uvs[C+0]=b,this._buffer.uvs[C+1]=D,this._buffer.positions[N+3]=v,this._buffer.positions[N+4]=A,this._buffer.positions[N+5]=S,this._buffer.normals[N+3]=I*f,this._buffer.normals[N+4]=T*f,this._buffer.normals[N+5]=-m,this._buffer.uvs[C+2]=D,this._buffer.uvs[C+3]=b),this.vertexCache[s]=k,k}clone(){let e=new Ko(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ln(this.userData),e}};var st=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??t?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Se(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Se(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new Yo(n.shape,o):s=new Ko(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Qd,Vector2 as Jd}from"three";var ef=Math.PI*2,tf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p=n.shape,a=t*.5,u=e*.5,d=aS(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=st.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function aS(n,t,e,r,o,i){if(r>=ef)return o>30||o%4===0?(cS(n,t,e,i),Math.round(o/4)):Zd(n,r,o,t,e,i);let s={x:0,y:e},l=r+Math.PI*.5,c={x:Math.cos(l)*t,y:Math.sin(l)*e},p=qd({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%p.length===0?lS(n,s.x,s.y,p,o,t,e,i):Zd(n,r,o,t,e,i)}function lS(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(Zo(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=Zo(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?rf(n,i,s,l):n.addPoint(Zo(0,0)),c}function Zd(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,p=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(Zo(p,a))}return t<ef?i>0?rf(n,r,o,i):n.addPoint(Zo(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&of(n,r,o,i)),1}function cS(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(Hs(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(Hs(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Hs(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(Hs(o,i-e,o+l,i-e,o-l,i-e)),r>0&&of(n,t,e,r)}function Zo(n,t){return new Bt(Qd.generateUUID(),new Jd(n,t))}function Hs(n,t,e,r,o,i){let s=Zo(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function rf(n,t,e,r){nf(n,t,e,r).forEach(i=>n.addPoint(i))}function of(n,t,e,r){let o=nf(n,t,e,r),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function nf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new Jd(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=Qd.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(p)}),l}import{BufferGeometry as uS,Float32BufferAttribute as vl,Vector3 as sf}from"three";var af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:p,cornerRadius:a,cornerSegments:u}=n.parameters,d=new $n(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},$n=class extends uS{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new sf,h=new sf,g=m(),x=m(),v=m(),A,S,b,D,w,y,I,T,L=m(),N=m(),C=m(),k=m(),W=m(),oe=m(),ce=m(),ie=m(),K=r-2*c+.001,U=K/s,V=Math.ceil(l*s),E=V+1,B=K/V,O=-K/2,G=a+1,Z=2*Math.PI/a,j=Math.PI/2/d,F=.01,z=Math.min((1-u/100)*c,c-F),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Q=H+G*E,$=G*(E+ee),[re,le,ne]=[3,3,2].map(De=>Array($*De).fill(0)),fe=[],Ie=i-c;function me(De,yt){let kt=Math.PI/2;y=yt*B,T=2*Math.PI*(y%U)/U+kt,y+=O,I=Math.sin(T)*Ie,w=Math.cos(T)*Ie,t?De.set(w,I,y):De.set(w,y,I)}me(h,-1e-10),me(g,0),L.copy(h),me(h,1);let Ge=h.distanceTo(g),be=M+z,lt=Ge*V+2*be,wt=z,go=lt-be;for(let De=0;De<=V;De++){me(x,De),ie.subVectors(x,L).normalize(),L.copy(x),oe.copy(x).setComponent(+t+1,0).normalize(),ce.crossVectors(ie,oe).normalize();let yt=De===0,kt=De===V,oh=yt?3*Math.PI/2:j,nh=yt?wt:go,ih=yt?G:Q,sh=yt?0:$-G,ah=ie.clone().multiplyScalar(yt?-M:M).add(x),lh=ie.clone().multiplyScalar(yt?-1:1).normalize();for(let mr=0;mr<G;mr++){let vc=mr*Z;if(N.addVectors(h.copy(oe).multiplyScalar(c*Math.cos(vc)),g.copy(ce).multiplyScalar(c*Math.sin(vc))),C.copy(N).normalize(),yt||kt){f||(q=sh+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=ah.getComponent(ct),le[q*3+ct]=lh.getComponent(ct)}),ne[q*2]=+kt,ne[q*2+1]=mr/a),g.copy(C).multiplyScalar(z),v.addVectors(x,g);for(let ct=0;ct<d;ct++){let _a=ct*j+oh;k.addVectors(h.copy(ie).multiplyScalar(M*Math.sin(_a)),g.copy(C).multiplyScalar(M*Math.cos(_a))),W.copy(k).normalize(),g.addVectors(v,k),k.normalize(),q=ih+ct*G+mr,[0,1,2].forEach(Ii=>{re[q*3+Ii]=g.getComponent(Ii),le[q*3+Ii]=W.getComponent(Ii)});let ch=+yt+Math.sin(_a);ne[q*2]=(nh+M*ch)/lt,ne[q*2+1]=mr/a}}g.addVectors(x,N),q=H+De*G+mr,[0,1,2].forEach(ct=>{re[q*3+ct]=g.getComponent(ct),le[q*3+ct]=C.getComponent(ct)}),ne[q*2]=(be+De*Ge)/lt,ne[q*2+1]=mr/a}}let gt=E+2*d+J,yo=1,[Pi,Li]=f?[yo,yo+E-1]:[0,gt-1];for(let De=Pi;De<=Li-1;De++){let yt=f&&De===Li-1;for(let kt=0;kt<G-1;kt++)A=De*G+kt,S=A+1,b=(yt?kt:A)+G,D=(yt?kt+1:S)+G,De===0?fe.push(S,D,b):De===gt-2?fe.push(A,S,b):fe.push(A,S,b,S,D,b)}this.setIndex(fe),this.setAttribute("position",new vl(re,3)),this.setAttribute("normal",new vl(le,3)),this.setAttribute("uv",new vl(ne,2))}};import{IcosahedronBufferGeometry as pS}from"three";var lf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new Xn(t*.5,i,s):new pS(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Xn=class extends zr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],l="IcosahedronGeometry";super(i,s,l,t,e,r),this.type=l}static fromJSON(t){return new Xn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as dS,Shape as fS}from"three";var cf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new fS;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new dS(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as hf,BufferGeometryLoader as _S,Vector3 as TS,BoxBufferGeometry as gf}from"three";import{BufferGeometry as vS,Vector2 as wl,Vector3 as mf}from"three";import{Box3 as mS,BufferAttribute as Yn,BufferGeometry as uf,Color as df,EventDispatcher as hS,Float32BufferAttribute as Qo,Matrix3 as pf,Matrix4 as ff,MathUtils as gS,Object3D as yS,Sphere as xS,Vector2 as Ct,Vector3 as rt}from"three";var Zt=new ff,bl=new yS,Ws=new rt,jr=class extends hS{constructor(){super(),this.uuid=gS.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new pf().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let s=0,l=i.vertexNormals.length;s<l;s++)i.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return Zt.makeRotationX(t),this.applyMatrix4(Zt),this}rotateY(t){return Zt.makeRotationY(t),this.applyMatrix4(Zt),this}rotateZ(t){return Zt.makeRotationZ(t),this.applyMatrix4(Zt),this}translate(t,e,r){return Zt.makeTranslation(t,e,r),this.applyMatrix4(Zt),this}scale(t,e,r){return Zt.makeScale(t,e,r),this.applyMatrix4(Zt),this}lookAt(t){return bl.lookAt(t),bl.updateMatrix(),this.applyMatrix4(bl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,s=o.normal,l=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new rt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new df().fromBufferAttribute(l,d));function a(d,f,m,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],x=s===void 0?[]:[new rt().fromBufferAttribute(s,d),new rt().fromBufferAttribute(s,f),new rt().fromBufferAttribute(s,m)],v=new Jo(d,f,m,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Ct().fromBufferAttribute(c,d),new Ct().fromBufferAttribute(c,f),new Ct().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new Ct().fromBufferAttribute(p,d),new Ct().fromBufferAttribute(p,f),new Ct().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let g=m,x=m+h;g<x;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):a(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Ws).negate(),this.translate(Ws.x,Ws.y,Ws.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new ff;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new rt,e=new rt;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];t.subVectors(c,l),e.subVectors(s,l),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new rt;if(t){let r=new rt,o=new rt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],p=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,p),o.subVectors(c,p),r.cross(o),e[l.a].add(r),e[l.b].add(r),e[l.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],s=i.vertexNormals;s.length===3?(s[0].copy(e[i.a]),s[1].copy(e[i.b]),s[2].copy(e[i.c])):(s[0]=e[i.a].clone(),s[1]=e[i.b].clone(),s[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,s=o.vertexNormals.length;i<s;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new jr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let l=0,c=this.faces.length;l<c;l++){let p=new rt,a={a:new rt,b:new rt,c:new rt};i.push(p),s.push(a)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],p=o.vertexNormals[i];c.copy(l.normal),p.a.copy(l.vertexNormals[0]),p.b.copy(l.vertexNormals[1]),p.c.copy(l.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new mS),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new xS),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,s=this.vertices,l=t.vertices,c=this.faces,p=t.faces,a=this.colors,u=t.colors;e!==void 0&&(o=new pf().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)a.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,g,x=m.vertexNormals,v=m.vertexColors,A=new Jo(m.a+i,m.b+i,m.c+i);A.normal.copy(m.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let S=0,b=x.length;S<b;S++)h=x[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)g=v[S],A.vertexColors.push(g.clone());A.materialIndex=m.materialIndex+r,c.push(A)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++)v.push(x[A].clone());this.faceVertexUvs[d].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let a=this.vertices[c],u=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[u]===void 0?(e[u]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,p=this.faces.length;c<p;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let u=[a.a,a.b,a.c];for(let d=0;d<3;d++)if(u[d]===u[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let p=s[c];this.faces.splice(p,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(p,1)}let l=this.vertices.length-r.length;return this.vertices=r,l}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new rt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!0,x=!1,v=this.faceVertexUvs[0][m]!==void 0,A=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,w=0;if(w=a(w,0,0),w=a(w,1,g),w=a(w,2,x),w=a(w,3,v),w=a(w,4,A),w=a(w,5,S),w=a(w,6,b),w=a(w,7,D),r.push(w),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(A&&r.push(u(h.normal)),S){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),D){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function a(m,h,g){return g?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function d(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new jr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let x=m[h],v=[];for(let A=0,S=x.length;A<S;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let x=s[d].vertexNormals[h],v={};v.a=x.a.clone(),v.b=x.b.clone(),v.c=x.c.clone(),m.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;d++)this.lineDistances.push(p[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Sl().fromGeometry(this),e=new uf,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Yn(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Yn(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Yn(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Yn(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Yn(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],s=t.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let p=s[l],a=new Qo(p.data.length*3,3);a.name=p.name,i.push(a.copyVector3sArray(p.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Qo(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new Qo(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new uf,r=t.geometry;if(t.isPoints||t.isLine){let o=new Qo(r.vertices.length*3,3),i=new Qo(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",i.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new Qo(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};jr.prototype.isGeometry=!0;var Sl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,s=t.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=t.morphTargets,c=l.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:l[x].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:a[x].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let x=0;x<e.length;x++){let v=e[x];this.vertices.push(r[v.a],r[v.b],r[v.c]);let A=v.vertexNormals;if(A.length===3)this.normals.push(A[0],A[1],A[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][x];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",x),this.uvs.push(new Ct,new Ct,new Ct))}if(s===!0){let b=o[1][x];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",x),this.uvs2.push(new Ct,new Ct,new Ct))}for(let b=0;b<c;b++){let D=l[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=a[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),g&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},Jo=class{constructor(t,e,r,o,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new rt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new df,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var bS=["a","b","c"];function SS(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function _l(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Tl(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,p;if(r.has(c))p=r.get(c);else{let a=e[s],u=e[l];p={a,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),i[n].edges.push(p),i[t].edges.push(p)}function wS(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Tl(s.a,s.b,n,r,s,e),Tl(s.b,s.c,n,r,s,e),Tl(s.c,s.a,n,r,s,e)}function qs(n,t,e,r,o){n.push(new Jo(t,e,r,void 0,void 0,o))}function en(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function $s(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof vS?t=new jr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new mf,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],f=new Map;wS(c,p,d,f);let m=[],h,g,x,v,A,S,b;for(let F of Array.from(f.keys())){for(g=f.get(F),x=new mf,A=3/8,S=1/8,b=g.faces.length,b!=2&&(A=.5,S=0,b!=1),x.addVectors(g.a,g.b).multiplyScalar(A),e.set(0,0,0),s=0;s<b;s++){for(v=g.faces[s],l=0;l<3&&(h=c[SS(v,bS[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(S),x.add(e),g.newEdge=m.length,m.push(x)}let D,w,y,I,T,L,N,C=[];for(o=0,i=c.length;o<i;o++){for(L=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),w=1-r*Number(D),y=D,r<=2&&(r==2?(w=3/4,y=1/8):r==1||r==0),N=L.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)I=T[s],h=I.a!==L?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),N.add(e),C.push(N)}let k=C.concat(m),W=C.length,oe,ce,ie,K=[],U=[],V,E,B,O,G=new wl,Z=new wl,j=new wl;for(o=0,i=p.length;o<i;o++)v=p[o],oe=Number(_l(v.a,v.b,f).newEdge)+W,ce=Number(_l(v.b,v.c,f).newEdge)+W,ie=Number(_l(v.c,v.a,f).newEdge)+W,qs(K,oe,ce,ie,v.materialIndex),qs(K,v.a,oe,ie,v.materialIndex),qs(K,v.b,ce,oe,v.materialIndex),qs(K,v.c,ie,ce,v.materialIndex),u&&(V=a[o],E=V[0],B=V[1],O=V[2],G.set(en(E.x,B.x),en(E.y,B.y)),Z.set(en(B.x,O.x),en(B.y,O.y)),j.set(en(E.x,O.x),en(E.y,O.y)),$s(U,G,Z,j),$s(U,E,G,j),$s(U,B,Z,G),$s(U,O,j,Z));t.vertices=k,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var ke=new TS,yf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new hf().copy(new gf(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new hf().copy(new gf(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Xs(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new _S(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*a;c.addPoint(c.createPoint(x,v))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=st.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as AS,Float32BufferAttribute as Al,Vector2 as Qt,Vector3 as $e}from"three";var vf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=new Cl(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function Kn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Nl(n,t,e,r,o,i){let s=t.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),r===o){let p=s.add(l).normalize();i.copy(n).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(p)),i.addScaledVector(l,r/Math.sin(p))}}function NS(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Cl=class extends AS{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],u=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,x=(r-2)*Math.PI/r,v=Math.PI-x,A=new $e(0,-f,0),S=new $e(0,f,0),b=new Qt(t,-f),D=new Qt(h,-f),w=new Qt(0,S.y).sub(D),y=new Qt(0,S.y).sub(b),I=new Qt(w.y,-w.x).normalize(),T=new Qt(y.y,-y.x).normalize(),N=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,N);let C;{let U=new $e(I.x,I.y,0),V=new $e(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);C=U.angleTo(V)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-C)/2),oe=new $e;if(!i){p.push(A.x,A.y,A.z),a.push(0,-1,0),u.push(0,0);let U=d++,V=[],E=b.clone(),B=k/Math.cos(Math.PI/r);E.x-=B;for(let O=0;O<r;O++){let G=O/r*Math.PI*2+m,Z=new Qt(Math.sin(G),Math.cos(G));Kn(E,Z,oe),p.push(oe.x,oe.y,oe.z),a.push(0,-1,0),u.push(0,0),V.push(d++)}for(let O=0;O<V.length;O++)c.push(V[O],U,V[(O+1)%V.length])}let ce=[];{let U=new $e,V=new $e,E=new $e,B=new $e,O=new $e,G=new $e;for(let Z=0;Z<r;Z++){let j=Z/r*Math.PI*2+m,F=(Z+.5)/r*Math.PI*2+m,z=(Z+1)/r*Math.PI*2+m,M=new Qt(Math.sin(j),Math.cos(j)),q=new Qt(Math.sin(F),Math.cos(F)),J=new Qt(Math.sin(z),Math.cos(z));Kn(b,M,V),Kn(b,J,E),Kn(I,q,U),Nl(S,V,E,W,W,B),p.push(B.x,B.y,B.z),Nl(V,S,E,W,k,O),p.push(O.x,O.y,O.z),Nl(E,V,S,k,W,G),p.push(G.x,G.y,G.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),a.push(U.x,U.y,U.z),u.push(0,0),u.push(0,0),u.push(0,0);let ee=d++,H=d++,Q=d++;if(c.push(ee,H,Q),s>0){{let le=V.clone().add(E).multiplyScalar(.5),ne=S.clone().sub(le).normalize(),Ie=A.clone().sub(le).normalize().add(ne).normalize().multiplyScalar(-1),me=G.clone().sub(O);ie(le,me,Ie,w.angle())}let $,re;{let le=new $e;Kn(T,J,le);let ne=G.clone().add(B).multiplyScalar(.5);ne=NS(ne,E,S);let fe=G.clone().sub(B);[$,re]=ie(ne,fe,le,C,B.y)}{let le=$,ne=le.clone().setY(0).normalize(),fe=new $e(0,-1,0),Ie=ne.clone().cross(fe);K(le,ne,fe,Ie)}ce.concat(re);{let le=w.angle(),ne=Math.PI-le,fe=S.clone();fe.y-=s/Math.sin(le-Math.PI/2);let Ie=new $e,me=[];for(let be=0;be<l;be++){let lt=[],wt=Math.PI/2-ne*be/l,go=Math.cos(wt),gt=Math.sin(wt),yo=F;for(let Pi=0;Pi<=be;Pi++){let Li=Math.cos(yo),De=Math.sin(yo);U.x=go*De,U.y=gt,U.z=go*Li,Ie.copy(fe).addScaledVector(U,s),p.push(Ie.x,Ie.y,Ie.z),a.push(U.x,U.y,U.z),u.push(0,0),lt.push(d++),yo+=Math.PI*2/be/r}me.push(lt)}re.reverse(),me.push(re);let Ge=me.length-1;for(let be=0;be<Ge;be++){let lt=me[be],wt=me[be+1],go=lt.length-1;c.push(wt[1],lt[0],wt[0]);for(let gt=1;gt<=go;gt++)c.push(lt[gt],lt[gt-1],wt[gt]),c.push(wt[gt+1],lt[gt],wt[gt])}}}}}this.setIndex(c),this.setAttribute("position",new Al(p,3)),this.setAttribute("normal",new Al(a,3)),this.setAttribute("uv",new Al(u,2));function ie(U,V,E,B,O){let G=-B/2,Z=(Math.PI-B)/2,j=V.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Z));let F=new $e,z=new $e,M=1,q=d,J=[];for(let ee=0;ee<=l;ee++){let H=G+ee/l*B;z.set(0,0,0),z.addScaledVector(j,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Q=0;Q<=M;Q++){let $=Q/M-.5;if(F.copy(U),F.addScaledVector(V,$),F.addScaledVector(z,s),O!=null){let re=Math.max(0,F.y-O);F.addScaledVector(V,-re/V.y)}p.push(F.x,F.y,F.z),a.push(z.x,z.y,z.z),u.push(0,0),Q===0&&J.push(d),d++}}for(let ee=0;ee<l;ee++)for(let H=0;H<M;H++){let Q=q+H+(M+1)*ee,$=Q+(M+1),re=$+1,le=Q+1;c.push(Q,$,le),c.push($,re,le)}return[U.clone().addScaledVector(V,.5),J]}function K(U,V,E,B){let O=Math.PI/2,G=y.angle()-O,Z=[],j=new $e,F=new $e;for(let M=0;M<=l;M++){let q=[],J=M/l;for(let ee=0;ee<=M;ee++){let Q=((M?ee/M:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),le=Math.atan(Math.tan(G)*$),ne=(O+le)*J,fe=Math.cos(ne),Ie=Math.sin(ne);j.set(0,0,0),j.addScaledVector(V,Ie*$),j.addScaledVector(E,fe),j.addScaledVector(B,Ie*re),F.copy(U).addScaledVector(j,s),p.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),u.push(0,0),q.push(d++)}Z.push(q)}let z=Z.length-1;for(let M=0;M<z;M++){let q=Z[M],J=Z[M+1],ee=q.length-1;c.push(q[0],J[1],J[0]);for(let H=1;H<=ee;H++)c.push(q[H-1],q[H],J[H]),c.push(q[H],J[H+1],J[H])}}}};var bf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,D){return b>e&&D>r?Math.min(S*e/b,S*r/D):b>e?S*e/b:D>r?S*r/D:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=u.x,g=u.y,x=a.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(m,x)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(v=!1);v&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=st.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereBufferGeometry as CS}from"three";var Sf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:p}=n.parameters,a=new CS(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneBufferGeometry as PS}from"three";var wf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new PS(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as LS,Float32BufferAttribute as Pl,Vector3 as IS}from"three";var _f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new Ll(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Ll=class extends LS{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let u=[],d=Math.PI/2,f=(F=0,z=0,M=0)=>new IS(F,z,M),m=f(),h=f(),[g,x,v]=[e/2,t/2,r/2],A=-x,S=+x,[b,D,w]=[f(A,-g,+v),f(A,-g,-v),f(A,+g,-v)],y=(F,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),I=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));w.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,L=b.z-a;o<=d?(w.z=Math.min(T,L),w.z==L&&(w.y-=(T-L)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-a),m.subVectors(b,D),h.subVectors(w,D);let N=Math.min(m.length(),h.length())*i/100,C=N*Math.tan(o/2),k=N/Math.cos(o/2),W=m.clone().normalize().add(h.normalize()).setLength(k).add(D);m.set(0,y(o,!0),I(o,!0)),u.push([w,m.clone()]);let oe=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=d+o+F*oe;m.set(0,Math.sin(z)*C,Math.cos(z)*C),m.add(W),h.set(0,y(z),I(z)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ce=Math.sin(oe/2)*C*2,ie=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[ie-1][0].distanceTo(u[ie][0]),V=K+ce*s+U;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(K+F*ce)/V);u[ie].push(0);let[E,B,O]=u[0],G,Z,j;for(let F=1;F<u.length;F++)[G,Z,j]=u[F],l.push(A,E.y,E.z,A,G.y,G.z,S,E.y,E.z,S,E.y,E.z,A,G.y,G.z,S,G.y,G.z),c.push(0,B.y,B.z,0,Z.y,Z.z,0,B.y,B.z,0,B.y,B.z,0,Z.y,Z.z,0,Z.y,Z.z),p.push(0,O,0,j,1,O,1,O,0,j,1,j),[E,B,O]=[G,Z,j];this.setAttribute("position",new Pl(l,3)),this.setAttribute("normal",new Pl(c,3)),this.setAttribute("uv",new Pl(p,2))}};var Tf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=n.shape,u=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,x=u*r/100,v=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,D=f+Math.sin(b)*u,w=m+Math.cos(b)*d;a.addPoint(a.createPoint(D,w))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,D=m+Math.sin(g)*d;a.addPoint(a.createPoint(b,D)),g+=h,b=f+Math.cos(g)*x,D=m+Math.sin(g)*v,S<=o,a.addPoint(a.createPoint(b,D)),g+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let A=st.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};import{PlaneBufferGeometry as OS}from"three";var Ys=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new OS(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Af=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,p=MS(t,e,r,t*.5,s,i,0,0,o,l,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...n,type:"TorusGeometry"}})}};function MS(n,t,e,r,o,i,s,l,c,p,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new $n(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotBufferGeometry as DS}from"three";var Nf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,l=t*.5;l!==e&&(l-=e);let c=new DS(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Cf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=st.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferGeometry as om,BufferAttribute as nm,Uint32BufferAttribute as oc,Float32BufferAttribute as nc,Matrix4 as Ww,Vector3 as la}from"three";var BS,Ks=new Promise(n=>{BS=n});import{BufferGeometryLoader as kw}from"three";import{EventDispatcher as zw,Matrix3 as Uw,Vector3 as rc}from"three";import{Mesh as Vw,Matrix4 as Fw}from"three";import{Matrix4 as Ef}from"three";import{Object3D as RS,Matrix4 as VS}from"three";import{HemisphereLight as Pf}from"three";function Fe(n,t){return t.color(n)}var Il=n=>"isEntity"in n,Jt=n=>"isAbstractMesh"in n,er=n=>n!==null&&n.objectType==="BooleanObject",Lf=n=>n.objectType==="CombinedCamera";var Zs=n=>"objectHelper"in n;function ES(n,t){let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray(t.hiddenMatrix??Er.identity)),e&&(n.updateMatrix(),er(n.parent)&&Jt(n)&&n.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function GS(n,t){ES(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function If(n,t,e){GS(n,t),t.color!==void 0&&(n.color=Fe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Pf)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Pf)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Of(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var Qs=n=>class extends n{hasEntityChild(){return this.children.some(e=>Il(e))}isDescendantOf(e){e instanceof RS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new VS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Il(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Df,Line3 as FS,Matrix4 as Ol,Vector3 as Pt}from"three";var tn=new Df,tr=new Pt,rr=new Pt,rn=new Ol,Bf=[new Pt(-1,1,1),new Pt(-1,-1,1),new Pt(1,-1,1),new Pt(1,1,1),new Pt(-1,1,-1),new Pt(-1,-1,-1),new Pt(1,-1,-1),new Pt(1,1,-1)],zS=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],US=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function jS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),f=t.getZ(a);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>l&&(l=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var Mf=(n,t,e)=>{if(Jt(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?tr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(jS(tn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),tn.getCenter(tr)),n.forceComputeSize?tn.getSize(rr).multiplyScalar(.5):rr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(Zs(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");tn.setFromArray(r.array),tn.getCenter(tr),tn.getSize(rr).multiplyScalar(.5)}else tr.setScalar(0),rr.setScalar(0);rn.copy(t).multiply(n.matrixWorld),rr.x===0&&rr.y===0&&rr.z===0?e.push(new Pt(tr.x,tr.y,tr.z).applyMatrix4(rn)):Bf.forEach(r=>{e.push(r.clone().multiply(rr).add(tr).applyMatrix4(rn))})},Zn=class extends Df{constructor(){super(...arguments);this.matrix=new Ol;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ol().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Mf(s,r,i)}):Mf(e,r,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(rn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(rr).multiplyScalar(.5),this.getCenter(tr),rn.copy(this.matrix).setPosition(tr),this.vertices=Bf.map(e=>e.clone().multiply(rr).applyMatrix4(rn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=zS.map(([e,r])=>new FS(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Pt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=US.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var or=n=>"isEntity"in n,Gf=n=>"isAbstractMesh"in n,Lt=n=>class extends Qs(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ef;this._singleBBox=new Zn;this._recursiveBBox=new Zn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{or(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)or(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)or(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)or(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Ef,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)or(i)&&i.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ro(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Ro(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as HS,Vector3 as Qn,Euler as Rf,MathUtils as kr}from"three";import{Object3D as kS}from"three";var Ml=class extends kS{},Js=class extends Ml{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var no=class extends HS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qn),i=.1;this.parameters=ss.defaultData(o.toArray(),i),Qr(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=new Js(this.object);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*kr.DEG2RAD,i=r.end*kr.DEG2RAD,s=o-i,l=new Rf(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD),c;switch(r.axis){case"z":c=new Qn(0,0,1);break;case"y":c=new Qn(0,1,0);break;default:case"x":c=new Qn(1,0,0);break}for(let[p,a]of this.children.entries()){a.scale.x=r.scale[0],a.scale.y=r.scale[1],a.scale.z=r.scale[2],a.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":a.rotation.set(0,u,0);break;case"y":a.rotation.set(0,0,u);break;case"z":a.rotation.set(u,0,0);break}a.translateOnAxis(c,r.radius),a.position.x+=r.position[0],a.position.y+=r.position[1],a.position.z+=r.position[2],r.alignment===!0?(a.rotation.x+=l.x,a.rotation.y+=l.y,a.rotation.z+=l.z):a.rotation.copy(l)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Rf(r.rotation[0]*kr.DEG2RAD,r.rotation[1]*kr.DEG2RAD,r.rotation[2]*kr.DEG2RAD);for(let[i,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Qn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let l=0;l<o.count[0];l++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let a=this.children[r++];a.scale.setScalar(1),a.rotation.set(0,0,0),a.position.x=o.size[0]*l-s.x,a.position.y=o.size[1]*c-s.y,a.position.z=o.size[2]*p-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let l=0;l<o.count[2];l++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*i,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*l}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),Qr(this.parameters,e),this.update(),this}};import{NormalBlending as Dw,ShaderMaterial as Bw}from"three";import{CubeReflectionMapping as tw,CubeRefractionMapping as rw,CubeUVReflectionMapping as ow,LinearEncoding as Uf,sRGBEncoding as nw}from"three";var Jn=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as WS}from"three";var Xe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=WS.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Xe&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var Dl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Dl;import{Vector2 as Vf}from"three";import{MathUtils as qS}from"three";var ae=class extends Xe{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=qS.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let l=e.getNodeData(o),c=l.output||this.getType(e);if(e.analyzing)return(l.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,l,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return l.name=l.name||super.build(e,r,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let p=this.getTemp(e,o);if(p)return e.format(p,c,r);{p=super.generate(e,r,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(p+" = "+a+";"),e.format(p,c,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ae=class extends ae{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}};var Ye=class extends Ae{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Vf?e:new Vf(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as Ff}from"three";var Qe=class extends Ae{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Ff?e:new Ff(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var It=class extends Ae{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ue?e:new Ue(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var $S=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,zf=/[a-z_0-9]+/gi,X=class extends ae{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let l,c=0,p=this.src;if(this.includes)for(let u=0;u<this.includes.length;u++)e.include(this.includes[u],this);for(let u in this.extensions)e.extensions[u]=!0;let a=[];for(;l=zf.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&He.containsKeyword(f)){let g=this.keywords[f];if(!g){let x=He.getKeywordData(f);x.cache&&(g=e.keywords[f]),g=g||He.getKeyword(f,e),x.cache&&(e.keywords[f]=g)}h=g.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&He.contains(h)&&e.include(He.get(h))}return r==="source"?p:this.isMethod?(this.isInterface||e.include(this,void 0,p),this.name):e.format("( "+p+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=$S.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(zf);if(l){let c=0;for(;c<l.length;){let p=l[c++],a;p==="in"||p==="out"||p==="inout"?a=l[c++]:(a=p,p="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var XS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Bl=class extends ae{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Bl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let l,c,p="",a=XS.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],p=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=p}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}},ye=Bl;ye.PI="PI",ye.PI2="PI2",ye.RECIPROCAL_PI="RECIPROCAL_PI",ye.RECIPROCAL_PI2="RECIPROCAL_PI2",ye.LOG2="LOG2",ye.EPSILON="EPSILON";var YS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),KS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),on=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=YS.exec(e);if(r){let o=r[2],i;for(;i=KS.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var nn=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};He.addKeyword("uv",function(){return new nn});He.addKeyword("uv2",function(){return new nn(1)});import{LinearEncoding as ZS,sRGBEncoding as QS}from"three";var io=class extends ae{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??io.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ZS:return["Linear"];case QS:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=io.Nodes[this.method],l=e.include(s);if(l===io.LINEAR_TO_LINEAR)return e.format(o,i,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,r)}else return e.format(l+"( "+o+" )",i,r)}fromEncoding(e){let r=io.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=io.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},at=io;at.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3
3
|
`)),sRGBToLinear:new X(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
4
4
|
`)),LinearTosRGB:new X(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
5
|
-
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var ve=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as
|
|
5
|
+
`))},at.LINEAR_TO_LINEAR="LinearToLinear",at.SRGB_TO_LINEAR="sRGBToLinear",at.LINEAR_TO_SRGB="LinearTosRGB";var ve=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as JS}from"three";var ft=class extends Ae{constructor(e=new JS,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new nn,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l,c;this.project?l="texture2DProj":l=s?"tex2DBias":"tex2D",s?c=l+"( "+o+", "+i+", "+s+" )":c=l+"( "+o+", "+i+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new at(new ve("",a)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,a),e.removeContext(),e.format(c,a,r)}};var Y=class extends Ae{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var ei=class extends ae{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,r)+"( ",p=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],d=this.inputs[a]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,i,r)}};var El=class extends ae{constructor(e,r,o=El.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}},mt=El;mt.ADD="+",mt.SUB="-",mt.MUL="*",mt.DIV="/";var Te=class extends ae{constructor(e,r=Te.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Te.MIX:case Te.CLAMP:case Te.REFRACT:case Te.SMOOTHSTEP:case Te.FACEFORWARD:return 3;case Te.MIN:case Te.MAX:case Te.MOD:case Te.STEP:case Te.REFLECT:case Te.DISTANCE:case Te.DOT:case Te.CROSS:case Te.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Te.LENGTH:case Te.DISTANCE:case Te.DOT:return"f";case Te.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,p=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Te.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,r);case Te.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,r);case Te.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Te.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Te.MIN:case Te.MAX:case Te.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Te.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Te.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,p===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let d=[];d.push(o),i&&d.push(i),s&&d.push(s);let f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},de=Te;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var sn=class extends ae{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let s=new ei(sn.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new at(new ve("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new at(new ve("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new at(new ve("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new at(new ve("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let l={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(l),this.colorSpaceTLExp=new ve(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new ve(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new ve(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new ve(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new ve("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return c.keywords.cubeUV_TL=this.colorSpaceTLExp,c.keywords.cubeUV_TR=this.colorSpaceTRExp,c.keywords.cubeUV_BL=this.colorSpaceBLExp,c.keywords.cubeUV_BR=this.colorSpaceBRExp,c.keywords.cubeUV=s,c}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ei(sn.Nodes.roughnessToMip,[i]),l=new de(s,sn.Nodes.m0,sn.Nodes.cubeUV_maxMipLevel,de.CLAMP),c=new de(l,de.FLOOR),p=new de(l,de.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new mt(c,new Y(1).setReadonly(!0),mt.ADD)),d=new de(a,u,p,de.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},an=sn;an.Nodes=function(){let e=new on(`struct TextureCubeUVData {
|
|
6
6
|
vec4 tl;
|
|
7
7
|
vec4 tr;
|
|
8
8
|
vec4 br;
|
|
@@ -67,7 +67,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
67
67
|
uv.x -= texelSize;
|
|
68
68
|
vec4 bl = texture2D(envMap, uv);
|
|
69
69
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
-
}`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),f=new ye("float r1 0.8",!0),m=new ye("float v1 0.276",!0),h=new ye("float m1 -1.0",!0),
|
|
70
|
+
}`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new ye("float r0 1.0",!0),u=new ye("float v0 0.339",!0),d=new ye("float m0 -2.0",!0),f=new ye("float r1 0.8",!0),m=new ye("float v1 0.276",!0),h=new ye("float m1 -1.0",!0),g=new ye("float r4 0.4",!0),x=new ye("float v4 0.046",!0),v=new ye("float m4 2.0",!0),A=new ye("float r5 0.305",!0),S=new ye("float v5 0.016",!0),b=new ye("float m5 3.0",!0),D=new ye("float r6 0.21",!0),w=new ye("float v6 0.0038",!0),y=new ye("float m6 4.0",!0),I=[a,u,d,f,m,h,g,x,v,A,S,b,D,w,y],T=new X(`float roughnessToMip(float roughness) {
|
|
71
71
|
float mip = 0.0;
|
|
72
72
|
if (roughness >= r1) {
|
|
73
73
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -81,7 +81,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
81
81
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
82
|
}
|
|
83
83
|
return mip;
|
|
84
|
-
}`,
|
|
84
|
+
}`,I);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var so=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??so.VIEW}getShared(){return this.scope===so.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let l;switch(this.scope){case so.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case so.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case so.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),r)}},Ke=so;Ke.LOCAL="local",Ke.WORLD="world",Ke.VIEW="view",Ke.NORMAL="normal";He.addKeyword("viewNormal",function(){return new Ke(Ke.VIEW)});He.addKeyword("localNormal",function(){return new Ke(Ke.NORMAL)});He.addKeyword("worldNormal",function(){return new Ke(Ke.WORLD)});var nr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??nr.LOCAL}getType(){switch(this.scope){case nr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case nr.LOCAL:case nr.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case nr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case nr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case nr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case nr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},ht=nr;ht.LOCAL="local",ht.WORLD="world",ht.VIEW="view",ht.PROJECTION="projection";He.addKeyword("position",function(){return new ht});He.addKeyword("worldPosition",function(){return new ht(ht.WORLD)});He.addKeyword("viewPosition",function(){return new ht(ht.VIEW)});var Et=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Et.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Et.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Et.VECTOR:{let s=new Ke(Ke.VIEW),l=e.context.roughness,c=s.build(e,"v3"),p=new ht(ht.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,u=`reflect( -normalize( ${p} ), ${c} )`;a&&(u=`normalize( mix( ${u}, ${c}, ${a} * ${a} ) )`);let d=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case Et.CUBE:{let s=new Et(Et.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Et.SPHERE:{let s=new Et(Et.VECTOR).build(e,"v3"),l="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${l};`),i="reflectSphereVec"):i=l;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},ir=Et;ir.CUBE="cube",ir.SPHERE="sphere",ir.VECTOR="vector";var ea=class extends ae{constructor(e=new ft,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new an(this.value,r??new ir(ir.VECTOR),o),this.irradianceNode=new an(this.value,new Ke(Ke.WORLD),new Y(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as ew}from"three";var ta=class extends Ae{constructor(e=new ew,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new ir,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let l;s?l="texCubeBias( "+o+", "+i+", "+s+" )":l="texCube( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},p=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new at(new ve("",p)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,p),e.removeContext(),e.format(l,p,r)}};var jf=["x","y","z","w"],iw=["float","vec2","vec3","vec4"],sw={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},aw={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},ra=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
|
|
85
85
|
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
86
86
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
87
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -126,7 +126,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
126
126
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let l=this.getVars(o),c=l[t];if(!c){let p=l.length;c={name:r||"node"+i+p+(s?"_"+s:""),type:e},l.push(c),l[t]=c}return c}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
127
127
|
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],l=s.type,c=s.name,p=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?r+=e+" "+a.substring(0,a.length-2)+" "+c+`[${p}];
|
|
128
128
|
`:r+=e+" "+a+" "+c+`;
|
|
129
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Xe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,p=new Jn({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}else{let l=this.inputs.uniforms,c=l.list.length,p=new Jn({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof ye?o=this.includes.consts:t instanceof on&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof X&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return
|
|
129
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Xe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,p=new Jn({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}else{let l=this.inputs.uniforms,c=l.list.length,p=new Jn({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(p),l[t].push(p),l[t][p.name]=p,this.uniforms[p.name]=p,p}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof ye?o=this.includes.consts:t instanceof on&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let s=i[t.name];if(s||(s=i[t.name]={node:t,deps:[]},i.push(s),s.src=t.build(this,"source")),t instanceof X&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return iw[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case tw:case rw:return new ta(r);case ow:return new ea(new ft(r));default:return new ft(r)}else{if(r.isVector2)return new Ye(r);if(r.isVector3)return new Qe(r);if(r.isVector4)return new It(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return sw[t]||t}getFormatByType(t){return aw[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return jf[t]}getIndexByElement(t){return jf.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=Uf,e===Uf&&this.context.gamma&&(e=nw),e}};import{Vector2 as co,Vector3 as lr,Vector4 as dn}from"three";var we=class extends Ae{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ue?e:new Ue(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return p?this.generateReadonly(e,r,o,i,s,l):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,s,l,this.getLabel())),e.format(c.vertex.name,i,r)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,r))}generateReadonly(e,r,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var ge=class extends Ae{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,l){return e.format(this.value.toString(),i,r)}};import{UniformsLib as lw,UniformsUtils as cw}from"three";var ao=class extends Xe{constructor(){super("basic");this.nodeType="Basic";this.color=new we(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(cw.merge([lw.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
130
130
|
`));let i=["#include <beginnormal_vertex>",`
|
|
131
131
|
#if !defined( USE_LAYER_DISPLACE )
|
|
132
132
|
#include <defaultnormal_vertex>
|
|
@@ -146,7 +146,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
146
146
|
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
147
147
|
`)}else{this.color===void 0&&(this.color=new we(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
148
148
|
`));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
|
|
149
|
-
`)}return r}};import{UniformsLib as
|
|
149
|
+
`)}return r}};import{UniformsLib as Wf,UniformsUtils as dw}from"three";var Hr=class extends Ae{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};import{Matrix3 as uw}from"three";var ln=class extends Ae{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new uw}generateReadonly(e,r,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Gt=class extends Ae{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector4 as kf}from"three";var Rt=class extends Ae{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof kf?new Array(e).fill(r):new Array(e).fill(new kf(0))}};var ti=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(ti||{}),ot=function(){let t=new X(`vec3 random3(vec3 c) {
|
|
150
150
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
151
151
|
vec3 r;
|
|
152
152
|
r.z = fract(512.0*j);
|
|
@@ -343,7 +343,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
343
343
|
|
|
344
344
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
345
345
|
return clamp(color, 0.0, 1.0).rgb;
|
|
346
|
-
}`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),p=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(p+"("+a.join(",")+")",this.getType(e),r)}};ri.numOctaves=5;import{UniformsLib as
|
|
346
|
+
}`,[ot.simplex,ot.simplexFractal,ot.simplexAshima,ot.fbm,ot.perlin]),p=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(p+"("+a.join(",")+")",this.getType(e),r)}};ri.numOctaves=5;import{UniformsLib as Hf,UniformsUtils as pw}from"three";var oa=class extends Xe{constructor(){super("phong");this.nodeType="Phong";this.color=new we(5855577),this.specular=new we(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pw.merge([Hf.fog,Hf.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
347
347
|
`));let i=["#include <beginnormal_vertex>",`
|
|
348
348
|
#ifndef USE_LAYER_DISPLACE
|
|
349
349
|
#include <defaultnormal_vertex>
|
|
@@ -378,14 +378,14 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
378
378
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
379
379
|
}
|
|
380
380
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
381
|
-
`)}return r}};var
|
|
381
|
+
`)}return r}};var Gl=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Gl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},oi=Gl;oi.Nodes=function(){return{fresnel:new X(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
382
382
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
383
383
|
|
|
384
384
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
385
385
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
386
386
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
387
387
|
return color;
|
|
388
|
-
}`)}}();var
|
|
388
|
+
}`)}}();var Rl=class extends ae{constructor(e,r,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Rl.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ni=Rl;ni.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
389
389
|
vec3 st = position / noiseScale;
|
|
390
390
|
vec3 q = vec3(simplex3d(st),
|
|
391
391
|
simplex3d(st + vec3(1.0)),
|
|
@@ -407,7 +407,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
407
407
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
408
408
|
|
|
409
409
|
return res;
|
|
410
|
-
}`,[e])}}();var
|
|
410
|
+
}`,[e])}}();var Vl=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d,f,m,h,g,x){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=p,this.contourDirection=a,this.positionalLines=u,this.compensation=d,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=g,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),i=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),l=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(i,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let c=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
411
411
|
vID = randomColor.r;
|
|
412
412
|
if (${s}) {
|
|
413
413
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -421,7 +421,7 @@ var sh=Object.create;var Ta=Object.defineProperty;var ah=Object.getOwnPropertyDe
|
|
|
421
421
|
// if this offset is the biggest of all the potential offsets
|
|
422
422
|
gl_Position = ${c}_clipPosition;
|
|
423
423
|
}
|
|
424
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
424
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Vl.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ii=Vl;ii.Nodes=function(){let e=new X(`
|
|
425
425
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
426
426
|
{
|
|
427
427
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -561,7 +561,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
561
561
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
562
562
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
563
563
|
return result;
|
|
564
|
-
}`,[e])}}();var
|
|
564
|
+
}`,[e])}}();var Fl=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Fl.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},si=Fl;si.Nodes=function(){let e=new X(`
|
|
565
565
|
float gaussian(vec2 i) {
|
|
566
566
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
567
567
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
@@ -582,7 +582,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
582
582
|
vec2 uv = U + (scale * aspectRatio) * d;
|
|
583
583
|
// What is the depth of the opaque object we're trying to sample
|
|
584
584
|
float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
|
|
585
|
-
if (opaqueDepth < gl_FragCoord.z) {
|
|
585
|
+
if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
|
|
586
586
|
uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
|
|
587
587
|
lod = lod > 4.0 ? lod : lod / 2.0;
|
|
588
588
|
}
|
|
@@ -649,7 +649,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
649
649
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
650
650
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
651
651
|
return transmission;
|
|
652
|
-
}`,[l])}}();var cn=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d
|
|
652
|
+
}`,[l])}}();var cn=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=p,this.colors=a,this.steps=u,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new X(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
653
653
|
vec4 color = colors[0];
|
|
654
654
|
#ifdef ${o}_IS_VECTOR
|
|
655
655
|
#ifdef ${o}_LINEAR
|
|
@@ -689,7 +689,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
689
689
|
|
|
690
690
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
691
691
|
return color.rgb;
|
|
692
|
-
}`,[cn.Nodes.vectorLinearWorldSpaceDepth,cn.Nodes.vectorLinearObjectSpaceDepth,cn.Nodes.vectorSphericalObjectSpaceDepth,cn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.
|
|
692
|
+
}`,[cn.Nodes.vectorLinearWorldSpaceDepth,cn.Nodes.vectorLinearObjectSpaceDepth,cn.Nodes.vectorSphericalObjectSpaceDepth,cn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ai=cn;ai.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
693
693
|
vec3 n = normalize(direction);
|
|
694
694
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
695
695
|
return ( dist - near ) / ( far - near );
|
|
@@ -703,7 +703,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
703
703
|
}`),i=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
704
704
|
float dist = length(position - origin);
|
|
705
705
|
return ( dist - near ) / ( far - near );
|
|
706
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var li=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var
|
|
706
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var li=class extends ae{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var zl=(e=>(e.NOISE="noise",e.MAP="map",e))(zl||{}),Ul=class extends ae{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new ge(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(zl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ln(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(zl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Ul.Nodes.map),i.push(this.movementOrTexture.getTexture(e,"t")),i.push("uv"),i.push(this.cropOrOffset.build(e,"f")),this.mat&&i.push(this.mat.build(e,"mat3"));break}case"noise":{let l=Object.values(ti)[this.noiseFunctionIndex.value],c=new X(`vec3 orthogonal(vec3 v) {
|
|
707
707
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
708
708
|
}`),p=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
709
709
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
@@ -723,7 +723,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
723
723
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
724
724
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
725
725
|
return displaced_position;
|
|
726
|
-
}`,[p,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ci=
|
|
726
|
+
}`,[p,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ci=Ul;ci.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
|
|
727
727
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
728
728
|
}`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
729
729
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -745,7 +745,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
745
745
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
746
746
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
747
747
|
return displaced_position;
|
|
748
|
-
}`,[e,r])}}();var
|
|
748
|
+
}`,[e,r])}}();var jl=class extends ae{constructor(e,r,o,i,s,l,c,p){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(jl.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ui=jl;ui.Nodes=function(){return{gradient:new X(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
749
749
|
vec4 color = colors[0];
|
|
750
750
|
vec2 m = morph / vUv.xy;
|
|
751
751
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -880,14 +880,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
880
880
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
881
881
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
882
882
|
return col;
|
|
883
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
883
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var kl=class extends ae{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include(kl.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},fi=kl;fi.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
884
884
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
885
885
|
normal *= step( vec3(0.5), cnormal );
|
|
886
886
|
|
|
887
887
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
888
888
|
|
|
889
889
|
return normal;
|
|
890
|
-
}`)}}();var Je={normalRenderTarget:new ft,normalRenderTargetDepth:new ft,transmissionRenderTarget:new ft,transmissionSize:new Ye(2048,2048),transmissionRenderTargetDepth:new ft,pixelRatioNode:new Y(1),resolution:new Ye,penumbraSize:new Gt(5,.5)};for(let n of Object.values(Je))n.isRenderGlobal=!0;var mi=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new we(5855577),this.emissive=new we(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new
|
|
890
|
+
}`)}}();var Je={normalRenderTarget:new ft,normalRenderTargetDepth:new ft,transmissionRenderTarget:new ft,transmissionSize:new Ye(2048,2048),transmissionRenderTargetDepth:new ft,pixelRatioNode:new Y(1),resolution:new Ye,penumbraSize:new Gt(5,.5)};for(let n of Object.values(Je))n.isRenderGlobal=!0;var mi=class extends Xe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new we(5855577),this.emissive=new we(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(dw.merge([Wf.fog,Wf.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
891
891
|
`));let i=["#include <beginnormal_vertex>",`
|
|
892
892
|
#ifndef USE_LAYER_DISPLACE
|
|
893
893
|
#include <defaultnormal_vertex>
|
|
@@ -993,7 +993,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
993
993
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
994
994
|
}
|
|
995
995
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
996
|
-
`)}return r}};import{UniformsLib as
|
|
996
|
+
`)}return r}};import{UniformsLib as Hl,UniformsUtils as fw}from"three";var hi=class extends Xe{constructor(){super("standard");this.nodeType="Standard";this.color=new we(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(fw.merge([Hl.fog,Hl.lights])),Hl.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
997
997
|
`));let i=["#include <beginnormal_vertex>",`
|
|
998
998
|
#if !defined( USE_LAYER_DISPLACE )
|
|
999
999
|
#include <defaultnormal_vertex>
|
|
@@ -1027,7 +1027,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1027
1027
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
|
|
1028
1028
|
}
|
|
1029
1029
|
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
1030
|
-
`)}return r}};import{UniformsLib as
|
|
1030
|
+
`)}return r}};import{UniformsLib as qf,UniformsUtils as mw}from"three";var gi=class extends Xe{constructor(){super("toon");this.nodeType="Toon";this.color=new we(5855577),this.specular=new we(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new ge(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(mw.merge([qf.fog,qf.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1031
1031
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1032
1032
|
#ifndef USE_LAYER_DISPLACE
|
|
1033
1033
|
#include <defaultnormal_vertex>
|
|
@@ -1081,7 +1081,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1081
1081
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
1082
1082
|
}
|
|
1083
1083
|
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
1084
|
-
`)}return r}};import{Vector2 as yi,Vector3 as Tr,Vector4 as
|
|
1084
|
+
`)}return r}};import{Vector2 as yi,Vector3 as Tr,Vector4 as Wl}from"three";function $f(n,t){switch(n.type){case"fresnel":return yw(n,t);case"gradient":return xw(n);case"depth":return vw(n);case"normal":return bw(n);case"noise":return Sw(n,t);case"rainbow":return ww(n);case"toon":return _w(n,t);case"outline":return Tw(n,t);case"transmission":return Aw(n,t);case"color":return gw(n,t)}}function hw(n){return{type:n.type}}function ar(n){let{alpha:t,mode:e}=n;return{...hw(n),alpha:t,mode:e}}function gw(n,t){return{...ar(n),color:Fe(n.color,t)}}function yw(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...ar(n),color:Fe(s,t),bias:e,scale:r,intensity:o,factor:i}}function xw(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...ar(n),gradientType:t,smooth:e,colors:r.map(c=>new Wl(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new yi(...s),morph:new yi(...l),angle:i}}function vw(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:p,smooth:a}=n;return{...ar(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Tr(...s),direction:l?new Tr(...l):new Tr(1,0,0),colors:c.map(u=>new Wl(u[0],u[1],u[2],u[3])),steps:p,smooth:a}}function bw(n){let{cnormal:t}=n;return{...ar(n),cnormal:new Tr(t[0],t[1],t[2])}}function Sw(n,t){return{...ar(n),scale:n.scale,move:n.move,fA:new yi(...n.fA),fB:new yi(...n.fB),size:new Tr(...n.size),distortion:new yi(...n.distortion),colorA:Fe(n.colorA,t),colorB:Fe(n.colorB,t),colorC:Fe(n.colorC,t),colorD:Fe(n.colorD,t),noiseType:n.noiseType}}function ww(n){return{...ar(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Tr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Tr(...n.offset)}}function _w(n,t){return{...ar(n),positioning:n.positioning,colors:n.colors.map(e=>new Wl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Tr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Fe(n.shadowColor,t),offset:new Tr(...n.offset)}}function Tw(n,t){return{...ar(n),outlineColor:Fe(n.outlineColor,t),contourColor:Fe(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:n.contourDirection,positionalLines:n.positionalLines,compensation:n.compensation}}function Aw(n,t){return{...ar(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var Wr=class extends Ue{};import{Vector4 as Cw}from"three";import{Texture as Nw}from"three";var ql=new Map,xi={url:"head",time:0,data:null,next:null,prev:null},un={url:"tail",time:1/0,data:null,next:null,prev:null};xi.next=un;un.prev=xi;var Xf=0;function Yf(n){if(typeof n=="string")return n;let t=Date.now(),e=ql.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},ql.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=un.prev,e.next=un,un.prev.next=e,un.prev=e,t-Xf>1e3*10&&(Xf=t+1e3,setTimeout(()=>{let r=Date.now(),o=xi.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),ql.delete(o.data),o=o.next,o.prev=xi,xi.next=o},900)),e.url}var pn=class{constructor(t,e){this.data=t;this.onImageLoad=e;this.loaded=!1;this.updateSrc(t.data)}updateSrc(t){typeof document>"u"||(this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=Yf(t),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let r of e){let o=this[r];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()})}getTexture(t){let e=this[t];if(e)return e;{let r=new Nw(this.img,void 0,t,t);return this.loaded&&(r.needsUpdate=!0),this[t]=r,r}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var lo=class extends pn{};var qr=class extends Ae{};var $l={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Xl={depth:["colors"]};function Pw(n,t,e){let r=$l[n.type],o=Xl[n.type];if(o!==void 0){let i=n.color;for(let s of o){let l=i[s]?.value?.length;if(l!==void 0&&l!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function Yl(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=t.image(s),c=r;c instanceof lo||c.image.dispose(),c.image=l}if("wrapping"in i){let s=r;s.wrap=i.wrapping}if("repeat"in i||"offset"in i){let s="mat",l=e.uniforms[`f${e.id}_${s}`];"repeat"in i&&(l.repeat=i.repeat),"offset"in i&&(l.offset=i.offset),l.updateMatrix()}return o}function Kf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||Kl(i,e,r))continue;e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof qr))switch(o=o||Pw(e,i,s),l.constructor){case we:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Wr?l.value=new Ue(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case It:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof Wr?l.value=new Ue(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Ye:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case Qe:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case ft:{Yl(s,t,e);break}case Rt:{l.value=s.map(c=>new Cw(...c));break}default:{l.value=s;break}}}return o}var Zl=class extends ae{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Zl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},vi=Zl;vi.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1085
1085
|
vec3 viewDir = normalize( vViewPosition );
|
|
1086
1086
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1087
1087
|
vec3 y = cross( viewDir, x );
|
|
@@ -1093,7 +1093,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1093
1093
|
|
|
1094
1094
|
return matcapColor.rgb;
|
|
1095
1095
|
}
|
|
1096
|
-
`)}}();var bi=class extends qr{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as
|
|
1096
|
+
`)}}();var bi=class extends qr{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as Lw}from"three";var na=class extends qr{constructor(e){super("v3");this.image=e;this._value=new Lw}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Ql=class extends ae{constructor(e,r,o,i,s,l,c,p,a,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=p,this.offset=a,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Ql.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Si=Ql;Si.Nodes=function(){let e=new X(`float rand(float n) {
|
|
1097
1097
|
return fract(sin(n) * 43758.5453123);
|
|
1098
1098
|
}`),r=new X(`float hash1(float p) {
|
|
1099
1099
|
p = fract(p * 0.011);
|
|
@@ -1329,5 +1329,5 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1329
1329
|
|
|
1330
1330
|
return color.xyz;
|
|
1331
1331
|
|
|
1332
|
-
}`,[ot.simplex,e,o,s])}}();import{Matrix3 as Iw}from"three";function $f(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ia=class extends ln{constructor(e,r){super(new Iw);this.repeat=e;this.offset=r;$f(this.value,e,r)}updateMatrix(){$f(this.value,this.repeat,this.offset)}};var cr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)Kl(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return ur.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new na(i),c=new ia(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new he(r.projection??0),u=new he(["x","y","z"].indexOf(r.axis)??0),d=new he(r.side??0),f=new Ye(r.size?new co(r.size[0],r.size[1]):new co(100,100)),m=new Y(r.alpha??1),h=new he(r.mode??0),y=new pi(s,l,p,a,u,d,f,c,m,h),x=new ve(y.calpha,"f");return new We(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},y,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new he(r.mode??0),p=new vi(s,l,c),a=new ve(p.calpha,"f");return new We(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Ze(new lr(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new he(r.noiseType??0),a=new ci(l,c,i,s,p);return new wi(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return Lw(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:qf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?Yl(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends cr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},wi=class extends cr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},ur=class extends cr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,l=new Y(o.alpha),c=new he(o.mode),p;if(o.category==="lambert"){s=new mi;let a=new we(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new oa;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new gi;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new hi;let a=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:a,metalness:u,reflectivity:d},s.roughness=a,s.metalness=u,s.reflectivity=d}else s=new ao,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new ur(e,r,o,s,p)}};function Xf(n){let t=n instanceof cr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Pw(n,t,e,r){switch(n.type){case"color":{let o=new we(r.color??5855577),i=new Y(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new he(r.mode??0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new we(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),l=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),a=new he(r.mode??0),u=new oi(o,i,s,l,c,p,a),d=new ve(u.calpha,"f");return new We(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:p,mode:a},u,a,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new Ze(r.wavelengths??new lr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Ze(r.offset??new lr(0,0,0)),a=new Y(r.alpha??1),u=new ni(o,i,s,l,c,p,a),d=new ve(u.calpha,"f"),f=new he(r.mode??0);return new We(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=Je.transmissionSize,c=Je.transmissionRenderTarget,p=Je.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ye(u/a,1):new Ye(1,a/u),f=new Y(r.alpha??1),m=new si(o,i,s,l,c,p,d,f),h=new ve(m.calpha,"f"),y=new he(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:y},m,y,h)}case"toon":{let o=new he(r.positioning??0),i;r.colors?i=new Rt(r.colors.length,r.colors):(i=new Rt(10,new dn(0,0,0,1)),i.value[1]=new dn(1,1,1,1));let s;r.steps?s=new Gt(r.steps.length,r.steps):(s=new Gt(10,1),s.value[0]=0);let l=new Ze(r.source??new lr(0,0,0)),c=new Hr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Lt(r.shadowColor),d=new Ze(r.offset??new lr(0,0,0)),f=new Y(r.alpha??1),m=new Si(o,i,s,l,c,p,a,u,d,f),h=new ve(m.calpha,"f"),y=new he(r.mode??0);return new We(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:f,mode:y},m,y,h)}case"outline":{let o=new we(r.outlineColor??16777215),i=new we(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),l=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),a=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new Ze(r.contourDirections??new lr(0,1,0)),f=new Hr(r.positionalLines??!1),m=new Hr(r.compensation??!0),h=Je.normalRenderTarget,y=Je.normalRenderTargetDepth,x=Je.pixelRatioNode,v=Je.resolution,A=new Y(r.alpha??1),S=new ii(o,i,s,l,c,p,a,u,d,f,m,v,h,y,x,A),b=new ve(S.calpha,"f"),D=new he(r.mode??0);return new We(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new he(r.gradientType??0),i=new Hr(r.smooth??!1),s=new Y(r.near??50),l=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),a=new Ze(r.origin??new lr),u=new Ze(r.direction??new lr),d=new he(r.num??0),f;r.colors?f=new Rt(d.value+1,r.colors):(f=new Rt(d.value+1,new dn(0,0,0,1)),f.value[1]=new dn(1,1,1,1));let m;r.steps?m=new Gt(d.value+1,r.steps):(m=new Gt(d.value+1,1),m.value[0]=0);let h=new Y(r.alpha??1),y=new he(r.mode??0),x=new ai(o,i,s,l,c,p,a,u,f,m,d,h),v=new ve(x.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:f,steps:m,num:d,alpha:h,mode:y},x,y,v)}case"noise":{let o=new Y(r.scale??1),i=new Ze(r.size??new lr(100,100,100)),s=new Y(r.move??1),l=new Ye(r.fA??new co(1.7,9.2)),c=new Ye(r.fB??new co(8.3,2.8)),p=new Ye(r.distortion??new co(1,1)),a=new Lt(r.colorA),u=new Lt(r.colorB),d=new Lt(r.colorC),f=new Lt(r.colorD),m=new Y(r.alpha??1),h=new he(r.mode??0),y=new he(r.noiseType??0),x=new ri(o,i,s,l,c,p,a,u,d,f,m,y),v=new ve(x.calpha,"f");return new We(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:y},x,h,v)}case"normal":{let o=new Ze(r.cnormal??new lr(1,1,1)),i=new Y(r.alpha??1),s=new he(r.mode??0),l=new fi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new We(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new he(r.gradientType??0),i=new Hr(r.smooth??!1),s;r.colors?s=new Rt(r.colors.length,r.colors):(s=new Rt(10,new dn(0,0,0,1)),s.value[1]=new dn(1,1,1,1));let l;r.steps?l=new Gt(r.steps.length,r.steps):(l=new Gt(10,1),l.value[0]=0);let c=new Ye(r.offset??new co(0,0)),p=new Ye(r.morph??new co(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new he(r.mode??0),f=new ui(o,i,s,l,c,p,a,u),m=new ve(f.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},f,d,m)}default:{let o=new we(1,0,0,1),i=new Y(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new he(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function Lw(n,t,e,r){let o=kf(e,r);return Pw(e,n,t,o)}function Kl(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var St=class extends Mw{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??br.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>cr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof ur),this.lightLayer===void 0&&(this.lightLayer=new ur(0,"",Vr.defaultData("light","basic"),new ao,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=cr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(l=>l.uuid===i);if(s){let l=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},l,o)){let p=cr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof ur);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof We&&(o=new li(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof ur);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof We&&(e=new li(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof wi);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new mt(r,e[o].position,mt.ADD),r=new mt(r,new Y(.5).setReadonly(!0),mt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.category}",`;else{let o=Xl[r.type];o&&o.length?e+=`["${r.type}", "${o.map(i=>r[i]).join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ra;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Ow,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(St.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as Jl,BufferAttribute as Dw,Vector3 as ec,Float32BufferAttribute as Yf}from"three";function Bw(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new ec(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new ec})}t.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=t.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Yf(o,3))}function Ew(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new ec;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Yf(e,3))}function $r(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof St)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Ew(n):Bw(n)}}function Xr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[Jl.seededRandom(r),Jl.seededRandom(r+1e4),Jl.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Dw(e,3))}var Qe=class extends Pt(Gw){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Rw;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=tc[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),l=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),$r(this),r.getAttribute("randomColor")&&Xr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=_i(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new no(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new no(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Vt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),er(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Jt(e)&&(e.freeBooleanPointer(),er(e)&&e.invalidateUpstreamBooleanData())}};var zw=new rc(0,0,1),Kf=new rc,Qf=new rc,Zf=new Fw,fn=class extends Qe{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Vw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Zf.getNormalMatrix(this.matrixWorld),Kf.copy(zw).applyMatrix3(Zf).normalize(),Qf.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Kf,Qf)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),l=new fn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Qe.prototype.raycast.call(this,e,r)}};function sa(n,t){return jw(n)}function jw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Se.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new Uw().parse(n));let e;try{e=_i(t)}catch(r){console.error(r)}if(!e){let r=Se.createFromState(Ho.defaultData(),100,100);t.shape=r,e=_i(t)}return e}var pe;Ks.then(n=>{pe=n});var tm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),rm=new Uint32Array([0,1,2,3]),om=new Uint8Array([4]),Ot=class{static build(n,t,e,r,o){let i,s,l,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Ot.allocate(n,o)}catch(p){console.error(p,n),i=Ot.allocate({positionWASM:tm,indexWASM:rm,verticesPerFaceWASM:om},o)}pe.set_destination_refinement_level(i,0),s=Ot.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ot.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Ot.buildLevel(i,!1,c):l=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:sa(n),r,o,i,s;({positions:r,triIndices:s}=lc(e.getAttribute("position"),e.getIndex()));let l;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;l=[c,p]}return{indices:o,verticesPerFace:i}=cc(r,s,e,l),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=tm,r=rm,o=om);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),y=new Float32Array(pe.HEAPF32.buffer,h,a),x=new Uint32Array(pe.HEAPU32.buffer,h+f,u);y.set(e,0),y.set(i,e.length),y.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(S=>S!==1)&&(v=new kw().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,l=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=pe.HEAPU32[l[p]>>2],u=pe.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=pe.HEAPU32[l[p]>>2],f=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=pe.HEAPU32[l[p]>>2],h=pe.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let y=pe.HEAPU32[l[p]>>2],x=pe.HEAPU32.subarray(y>>2,(y>>2)+c[p]);if(p++,r===void 0){let v=new Jf;if(v.setIndex(new oc(x,1)),v.setAttribute("position",new nc(u,3)),v.setAttribute("normal",new nc(f,3)),t){v.setAttribute("faceMap",new oc(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new em(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=pe.HEAPU32[i[l]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=pe.HEAPU32[i[l]>>2],u=pe.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new Jf;d.setAttribute("position",new nc(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new em(f,3)),d.setIndex(new oc(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||pe.set_destination_refinement_level(n,t);let o=e?pe.get_topological_data2(n,r?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,r?pe.Level.CONTROL:pe.Level.REFINED),i=6,s=pe.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],a=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let f=pe.HEAPU32[s[c]>>2],m=new Uint8Array(pe.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return pe.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var nm=["getX","getY","getZ"];function lc(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let p=0;p<r;p++){let a=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[nm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[nm[d]](a));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var aa=new la,ic=new la,sc=new la,ac=new la;function cc(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),l=0;for(let p=0;p<s.length;p+=2)l+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(l<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??t.length;s<l;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){aa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ic.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),sc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),ac.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ic.sub(aa).normalize(),sc.sub(aa).normalize(),ac.sub(aa).normalize();let c=ic.cross(sc).dot(ac);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0;for(let p=0,a=0;p<n.length;p+=3,a++)n[p+2]===0&&(s.push(a),c++),n[p+2]===e.userData.parameters.depth&&l.push(a);if(e.userData.parameters.extrudeBevelSize===0){let p=l[0];l[0]=l[1],l[1]=p}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Vt={};ph(Vt,{calcBoolean:()=>Xw,calcBooleanTopological:()=>$w,freeMeshSet:()=>Qw,getMeshSet:()=>Yw,transformMeshSet:()=>Kw});var Hw,im=new Promise(n=>{Hw=n});import{Float32BufferAttribute as sm,Sphere as Ww}from"three";var ge,mn;im.then(n=>ge=n);function qw(n,t){let e,{positions:r,triIndices:o}=lc(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:l}=cc(r,o,n);i=l.length,e=[];for(let c=0,p=0;c<i;c++){e.push(l[c]);for(let a=0;a<l[c];a++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let l=0,c=0;c<e.length;)e[c++]=3,i++,e[c++]=o[l++],e[c++]=o[l++],e[c++]=o[l++]}return{positions:r,faceIndices:e,nFaces:i}}function am(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,t):new Float32Array(ge.HEAPF32.buffer,i,t)).set(n,0),i}function lm(n){switch(n){case 0:return ge.OP.UNION;case 1:return ge.OP.INTERSECTION;case 2:return ge.OP.A_MINUS_B;case 3:return ge.OP.B_MINUS_A;case 4:return ge.OP.SYMMETRIC_DIFFERENCE;case 5:return ge.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function $w(n,t){mn===void 0&&(mn=ge.init_csg());let e=am(n),r=ge.csg_calc_topological(mn,e,n.length,lm(t));ge._free(e);let o=6,i=ge.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],p=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],u=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ge.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function Xw(n,t,e,r){mn===void 0&&(mn=ge.init_csg());let o=am(n),i=ge.csg_calc(mn,o,n.length,r,lm(t));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=ge.HEAPU32[l[p]>>2],u=ge.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=ge.HEAPU32[l[p]>>2],f=ge.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new sm(u,3)),e.setAttribute("normal",new sm(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ww),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ge.free_mesh_data(i),m}function Yw(n,t){if(ge===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let h=n.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((y,x)=>y+x,0)+o);for(let y=0,x=0,v=0;y<h.verticesPerFace.length;y++){r[v++]=h.verticesPerFace[y];for(let A=0;A<h.verticesPerFace[y];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=qw(n,t));let i=e.length,s=r.length,l=e.length,c=r.length,p=l*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,a=l*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=ge._malloc(p),f=new Float32Array(ge.HEAPF32.buffer,d,l),m=new Uint32Array(ge.HEAPU32.buffer,d+a,c);return f.set(e,0),m.set(r,0),ge.get_csg_mesh(d,i,d+a,s,o)}function Kw(n,t){ge.transform_csg_mesh(n,t.elements)}function Qw(n){ge.free_csg_mesh(n)}var tc={ConeGeometry:wd,CubeGeometry:_d,CylinderGeometry:Sd,DodecahedronGeometry:Td,EllipseGeometry:Qd,HelixGeometry:rf,IcosahedronGeometry:of,LatheGeometry:nf,NonParametricGeometry:ff,PolygonGeometry:mf,PyramidGeometry:hf,RectangleGeometry:gf,SphereGeometry:yf,PlaneGeometry:xf,BackdropGeometry:vf,StarGeometry:bf,TextFrameGeometry:Ys,TorusGeometry:Sf,TorusKnotGeometry:wf,TriangleGeometry:_f,VectorGeometry:st},_i=n=>tc[n.type].create(n);import{BufferGeometry as cm,Matrix4 as Zw}from"three";var um=new Zw;var ca=class extends Qe{constructor(e=new cm,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];er(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Mf(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Vt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Vt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else er(i)&&i.needsTransformForDownstream===!0?(Vt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(um.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Vt.transformMeshSet(i.booleanMeshSetAddress,um),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Vt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new cm,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Vt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,$r(this),Xr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as m1,OrthographicCamera as h1,PerspectiveCamera as g1,Vector3 as zt,Object3D as fm,Quaternion as y1}from"three";import{BoxBufferGeometry as Jw}from"three";var pr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Jw(30,30,30),t};import{Camera as n1,LineSegments as i1,BufferGeometry as s1,LineBasicMaterial as a1,Color as pc,Vector3 as l1,Float32BufferAttribute as dm}from"three";import{Ray as e1,Sphere as t1,Matrix4 as r1,Vector3 as Ar}from"three";var ua=new e1,uc=new t1,pm=new r1,dr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),uc.copy(i.boundingSphere),uc.applyMatrix4(s),e.ray.intersectsSphere(uc)===!1||(pm.copy(s).invert(),ua.copy(e.ray).applyMatrix4(pm),i.boundingBox!==null&&ua.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let x=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=x,h=v;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),a=u.getX(m+2),l=y(n,e,ua,d,c,p,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let v=i.attributes.position,A=new Ar,S=new Ar,b=new Ar,D=new Ar,w=2,L=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=L*L,P=Math.max(0,f.start),N=Math.min(v.count,f.start+f.count);for(let C=P,k=N-1;C<k;C+=w){if(A.fromBufferAttribute(v,C),S.fromBufferAttribute(v,C+1),ua.distanceSqToSegment(A,S,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(x,v,A,S,b,D,w){let g=new Ar,L=new Ar,T=new Ar,P=new Ar,N=new Ar;if(g.fromBufferAttribute(S,b),L.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(g,L,T,!1,P)===null)return null;N.copy(P),N.applyMatrix4(x.matrixWorld);let k=v.ray.origin.distanceTo(N);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:N.clone(),object:x}}};var pa=new l1,Mt=new n1,dc=class extends i1{constructor(e){let r=new s1,o=new a1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new pc(15711266),p=new pc(15711266),a=new pc(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(f,m,h){d(f,h),d(m,h)}function d(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}r.setAttribute("position",new dm(i,3)),r.setAttribute("color",new dm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Mt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;Ft("n1",r,e,Mt,-i,-s,l),Ft("n2",r,e,Mt,i,-s,l),Ft("n3",r,e,Mt,-i,s,l),Ft("n4",r,e,Mt,i,s,l);let c=l;Ft("f1",r,e,Mt,-i,-s,c),Ft("f2",r,e,Mt,i,-s,c),Ft("f3",r,e,Mt,-i,s,c),Ft("f4",r,e,Mt,i,s,c);let p=c,a=.5;Ft("u1",r,e,Mt,i*.7*a,s*1.1,p),Ft("u2",r,e,Mt,-i*.7*a,s*1.1,p),Ft("u3",r,e,Mt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ft(n,t,e,r,o,i,s){pa.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let p=0,a=l.length;p<a;p++)c.setXYZ(l[p],pa.x,pa.y,pa.z)}}var da=class extends pr(dc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){dr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as c1}from"three";var hn=class extends pr(c1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,hn.geometryHelper,e,r)}};import{AxesHelper as u1}from"three";var gn=class extends pr(u1){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){dr(this.object,gn.geometryHelper,e,r)}update(){}};import{PointLightHelper as p1}from"three";var yn=class extends pr(p1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,yn.geometryHelper,e,r)}};import{SpotLightHelper as d1,Vector3 as f1}from"three";var fa=class extends pr(d1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,fa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=fa._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Ti=fa;Ti._vector=new f1;var fr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Fe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var xn=new zt,fc=new zt,Nr=class extends fr(Pt(m1),da){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Jr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new h1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new g1(o,e/r,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Nr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(xn),this.targetOffset=xn.distanceTo(e)}getTarget(e=new zt){return this.getWorldDirection(fc),this.getWorldPosition(xn),fc.multiplyScalar(this.targetOffset),e.copy(xn).add(fc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(xn),xn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new y1),r=new zt(0,0,1).applyQuaternion(e),o=new zt().copy(fm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new zt().copy(fm.DefaultUp).projectOnPlane(r),s=new zt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new zt),i=e.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new zt),i=this.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,l):this.orthoCamera.setViewOffset(e,r,o,i,s,l)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ro(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near,this.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom,this.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near,this.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov,this.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom,this.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as x1}from"three";var uo=class extends fr(Pt(x1),gn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new uo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as v1,CameraHelper as ma}from"three";var vn=class extends fr(Pt(v1),hn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new ma(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new vn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Cf(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as b1,Vector3 as ha,Box3 as S1,Box3Helper as ga,Color as w1}from"three";var bn=class extends fr(Pt(b1),yn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new S1(i,s),c=new ga(l,new w1(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new bn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ga){let o=this.shadow.camera,i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as _1,CameraHelper as ya,MathUtils as T1,Vector3 as ym,Quaternion as A1}from"three";var mm=new ym,hm=new ym,gm=new A1,Sn=class extends fr(Pt(_1),Ti){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=T1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ya(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Sn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),hm.setFromMatrixPosition(this.matrixWorld),gm.setFromRotationMatrix(this.matrixWorld),mm.copy(this.up).applyQuaternion(gm).negate().multiplyScalar(this.distance),this.target.position.copy(hm).add(mm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var xm=n=>n.tagName==="VIDEO",wn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;xm(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];Xf(s)&&wn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;xm(l)?s=l.videoWidth/l.videoHeight:s=l.width/l.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var xa=class extends Qe{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&wn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var _n=class extends Qe{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var va=class extends _n{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as N1,Mesh as C1,MeshBasicMaterial as I1,ShapeBufferGeometry as P1,Vector2 as L1,Vector3 as O1}from"three";import{FontLoader as M1}from"three/examples/jsm/loaders/FontLoader.js";var Ee=class extends C1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new I1({color:0,opacity:1,visible:!0,transparent:!0,side:N1})){let p=Ee.loadChar(e,o,l);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=l,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new L1,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ee._fontPath}static set FONTS_PATH(e){Ee._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new O1(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ee.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ee.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ee.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ee(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ee.fontCache[e]?r(Ee.fontCache[e]):new M1().load(Ee.FONTS_PATH+e+".json",s=>{Ee.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ee.charCache[e]){if(Ee.charCache[e][o]&&Ee.charCache[e][o].fontFamily===r)return Ee.charCache[e][o]}else Ee.charCache[e]={};let i=Ee.fontCache[r],s=i.generateShapes(e,1);return Ee.charCache[e][o]={geometry:new P1(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ee.charCache[e][o]}},Ut=Ee;Ut.charCache={},Ut.fontCache={},Ut._fontPath="/_assets/_fonts/";import{DoubleSide as bm,MeshBasicMaterial as Sm,Vector3 as D1,Object3D as B1}from"three";import{Vector2 as vm}from"three";var ba=new vm,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new vm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){ba.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(ba),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let l=0;l<this.message.length;l++)this.message[l].char===" "&&(s+=i),ba.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(ba),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var mc=class extends Qe{constructor(e){super(e,new Sm({transparent:!0,opacity:1,visible:!1,side:bm}));this.objectType="TextFrame";this.charContainer=new B1,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new D1(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Ys.create({parameters:{width:r.width,height:r.height}}),s=new mc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Ut.loadFont(o),r.text=e;let i=r.textOrigin,s=new Sm({visible:r.visible,transparent:!0,side:bm}),l=e.split(`
|
|
1333
|
-
`),c=0;this.userData.textFrame.textLines=l.map((p,a)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let f={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let h=new Ut(f,m);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,l=this.charContainer.children.length;s<l;++s)if(this.charContainer.children[s]instanceof Ut&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,l=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=l,p.textOrigin.set(-.5*l,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):l!==i&&(i<l?this.checkCapacity():i>l&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let l=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?l.unshift(i[s].getWord(i[s].message.length-1,-1)):l.unshift(i[s].popChar());if(l.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<l.length;p+=1)for(let a=0;a<l[p].length;a+=1)i[s+1].addChar3D(l[p][a],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let l=e;l<s.length;l+=1)if(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o),!!s[l-1])for(;!s[l-1].endLine;){let c,p=s[l-1].spaceLeft(i);if(s[l].wordSize(0,1)<=p){s[l].containSpace()?c=s[l].getWord(0,1):c=s[l].popChar(0);for(let a=0;a<c.length;a+=1)c[a]&&s[l-1].addChar3D(c[a],o)}else{s[l].isEmpty()?(s[l].endLine&&s[l-1].isEndLine(!0),s.splice(l,1),l-=1):(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let l=e;l<i.length;l++)i[l].updateYLinePos(this.getNewLinePosition(l)),i[l].fullUpdate(o.textOrigin),i[l].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.visible=e}}}async updateFontFamily(e){await Ut.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)l[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let l=0;l<i.length;l++)i[l].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Ut.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++)s[l].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Fe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},fo=mc;fo.VerticalAlign=Qa,fo.HorizontalAlign=Ka,fo.TextTransform=Za;var mo=class extends St{};var Am=Sc(wm());var _m=new Map;function Tm(n){if(typeof n=="string")return n;let t=_m.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},_m.set(n,t)),t.url}var Tn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Tm(t),format:"wav"},this.sound=new Am.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ni=class{constructor(t,e={}){this.deletedMaterial=new mo(br.defaultTwoLayerData("basic"),this);this.deletedImage=new lo(Bs.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new mo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new St(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new lo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new pn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Wr(e.r,e.g,e.b,e.a):this.colors[t]=new Wr(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ue(0,0,0,0))}else return"a"in t?new Ue(t.r,t.g,t.b,t.a):new Ue(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof Tn)return e;{let r=new Tn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Tn&&e.dispose()}),this.audios={}}},tH=new Ni(Ds.emptyData());import{DRACOLoader as E1}from"three/examples/jsm/loaders/DRACOLoader.js";var Yr;function G1(){return Yr||(Yr=new E1,Yr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yr.decoderPending}async function R1(n){if(Yr){let t={attributeIDs:Yr.defaultAttributeIDs,attributeTypes:Yr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Yr.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Nm(n,t){let[e,r]=Ba(Ts.deserialize(new Uint8Array(n)));vd(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await G1();for(let i of o){let s=await R1(qt(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:p,itemSize:a})=>{l[c]={array:p,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as o_,Scene as n_,Vector3 as i_,Fog as s_,Box3 as a_}from"three";import{Box3 as V1,Matrix4 as ho,Sphere as Pm,Vector3 as F1}from"three";var Om=Sc(Im());var hc;Ks.then(n=>{hc=n});var Mm=new ho,z1=new ho,U1=new ho,jt=new V1,Kr=new F1,j1=new ho,k1=new ho,An=class extends Qe{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Ot.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new An(i,s,l||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Ot.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,$r(this),Xr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Qe.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Om.SVD)(r),l=Mm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=z1.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),p=U1.copy(c).transpose();this.shearScale=j1.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=k1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,p),s.every(a=>Math.abs(s[0]-a)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Pm);let r=e.attributes.position,o=e.boundingSphere.center;jt.setFromBufferAttribute(r),jt.getCenter(o),e.boundingSphere.radius=o.distanceTo(jt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;jt.min.set(e[0],e[2],e[4]),jt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(jt.min.applyMatrix4(this.shearScaleInv),jt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Pm);let o=r.boundingSphere.center;jt.getCenter(o),r.boundingSphere.radius=o.distanceTo(jt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Lm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Lm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Lm(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Mm.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as H1,BufferGeometry as W1,DoubleSide as q1,FrontSide as $1}from"three";function Dm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=$1:t.side===1?n.side=H1:n.side=q1)}function X1(n,t){if(Array.isArray(n.material))for(let e of n.material)Dm(e,t);else{let e=n.material;Dm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Bm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=An.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new W1:sa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ps.is2DParametricMesh(o.userData.type)?r=new xa(o,i):o?.userData.type==="VectorGeometry"?r=new fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new va(o,i):t.geometry.type==="BooleanGeometry"?(r=new ca(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new _n(o,i),r.uuid=n,r.fromState(t,e)}return X1(r,t),r}function Em(n,t,e){return t.type==="Mesh"?Bm(n,t,e):t.type==="TextFrame"?fo.createFromState(n,t,e):t.type==="Empty"?uo.createFromState(n,t):t.type==="PointLight"?bn.createFromState(n,t,e):t.type==="SpotLight"?Sn.createFromState(n,t,e):t.type==="DirectionalLight"?vn.createFromState(n,t,e):Vo.is(t.type)?Nr.createFromState(n,t):(console.error(t),new uo)}import{Mesh as Vm,Ray as K1,Matrix4 as Q1,Raycaster as Z1}from"three";function Gm(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Xr(n),$r(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Rm(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function Fm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vm&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Gm(e,e.material[r])&&(t=!0);else Gm(e,e.material)&&(t=!0)}),t}function zm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vm)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Rm(e,e.material[r])&&(t=!0);else Rm(e,e.material)&&(t=!0)}),t}function Um(n){"material"in n&&J1(n.material),"geometry"in n&&n.geometry.dispose()}function J1(n){wc(n).forEach(t=>{t instanceof mo||t.dispose()})}var e_=new Z1,t_=new Q1,r_=new K1;function jm(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=t_.copy(o.matrixWorld).invert(),s=r_.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=e_;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var km=new i_,gc=class extends Zs(n_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new s_(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.bgColor=new Ue(1,1,1,1);this.entityByUuid={};this.ambientLight=new o_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,r)}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=zm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Fm(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Fe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Nr&&this.switchActiveCamera(o)}this.traverse(o=>{er(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Um(e)});for(let e of this.children)or(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Nr.createFromState(gc.PERSONAL_CAMERA_ID,{...Os.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)or(s)&&!s.raycastLock&&s.visible&&((Jt(s)||Qs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),jm(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)or(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)or(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Fe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Nf(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Fe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let l=Em(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),er(i)&&Jt(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],p=this.find(l),a=c?p.recursiveBBox:p.singleBBox;r.push(...a.vertices)}let o=new a_;return o.setFromPoints(r),o.getCenter(km),km}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Qe)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof St&&e(r.material[o]);else r.material instanceof St&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ci=gc;Ci.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as _5}from"three";import{mergeBufferGeometries as N5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Hm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as Wm,ShaderLib as l_}from"three";function qm(n){let t=new Set;return n.traverse(e=>{if(Jt(e))if(Oe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);c_(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Wm,specularColor:new Wm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(l_.physical.uniforms,o.uniforms),e.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):u_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function c_(n){return n.getLayersOfType("transmission").length>0}function u_(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function $m(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Xm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as p_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ym(n){let t=[];return n.traverse(e=>{e instanceof no&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Hm(c),c}),s=p_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function Km(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Qm(n){Object.values(n.shared.materials).forEach(t=>{yc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?yc(e.material):"materials"in e&&e.materials.forEach(r=>{yc(r)})})}function yc(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Zm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends f_{load(t,e,r,o=console.error){let i=new d_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Zm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Zm),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},r,o)}async parse(t){let e=await Nm(t,Qm),r=new Ni(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ci(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Af(s)&&Object.assign(s,{makeDefault:!0})}return o=Ym(o),o=qm(o),o=$m(o),o=Xm(o),o=Km(o),o}};export{xc as default};
|
|
1332
|
+
}`,[ot.simplex,e,o,s])}}();import{Matrix3 as Iw}from"three";function Zf(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var ia=class extends ln{constructor(e,r){super(new Iw);this.repeat=e;this.offset=r;Zf(this.value,e,r)}updateMatrix(){Zf(this.value,this.repeat,this.offset)}};var cr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in r)Kl(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return ur.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new na(i),c=new ia(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new ge(r.projection??0),u=new ge(["x","y","z"].indexOf(r.axis)??0),d=new ge(r.side??0),f=new Ye(r.size?new co(r.size[0],r.size[1]):new co(100,100)),m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new pi(s,l,p,a,u,d,f,c,m,h),x=new ve(g.calpha,"f");return new We(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new bi(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new ge(r.mode??0),p=new vi(s,l,c),a=new ve(p.calpha,"f");return new We(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Qe(new lr(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new ge(r.noiseType??0),a=new ci(l,c,i,s,p);return new wi(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return Mw(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:Kf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?Yl(o.props,r,this):!0;return!1}dispose(){}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},We=class extends cr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},wi=class extends cr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},ur=class extends cr{constructor(e,r,o,i,s){super(e,r,o,s);this.data=o;this.node=i}static createLigherLayer(e,r,o,i){let s,l=new Y(o.alpha),c=new ge(o.mode),p;if(o.category==="lambert"){s=new mi;let a=new we(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new oa;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new gi;let a=new Y(o.shininess??30),u=new we(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new hi;let a=new Y(o.roughness??.3),u=new Y(o.metalness??0),d=new Y(o.reflectivity??.5);p={roughness:a,metalness:u,reflectivity:d},s.roughness=a,s.metalness=u,s.reflectivity=d}else s=new ao,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new ur(e,r,o,s,p)}};function Qf(n){let t=n instanceof cr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function Ow(n,t,e,r){switch(n.type){case"color":{let o=new we(r.color??5855577),i=new Y(r.alpha??1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ge(r.mode??0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new we(r.color??16777215),i=new Y(r.bias??.1),s=new Y(r.scale??1),l=new Y(r.intensity??2),c=new Y(r.factor??1),p=new Y(r.alpha??1),a=new ge(r.mode??0),u=new oi(o,i,s,l,c,p,a),d=new ve(u.calpha,"f");return new We(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:p,mode:a},u,a,d)}case"rainbow":{let o=new Y(r.filmThickness??30),i=new Y(r.movement??0),s=new Qe(r.wavelengths??new lr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new Qe(r.offset??new lr(0,0,0)),a=new Y(r.alpha??1),u=new ni(o,i,s,l,c,p,a),d=new ve(u.calpha,"f"),f=new ge(r.mode??0);return new We(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=Je.transmissionSize,c=Je.transmissionRenderTarget,p=Je.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ye(u/a,1):new Ye(1,a/u),f=new Y(r.alpha??1),m=new si(o,i,s,l,c,p,d,f),h=new ve(m.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new ge(r.positioning??0),i;r.colors?i=new Rt(r.colors.length,r.colors):(i=new Rt(10,new dn(0,0,0,1)),i.value[1]=new dn(1,1,1,1));let s;r.steps?s=new Gt(r.steps.length,r.steps):(s=new Gt(10,1),s.value[0]=0);let l=new Qe(r.source??new lr(0,0,0)),c=new Hr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new It(r.shadowColor),d=new Qe(r.offset??new lr(0,0,0)),f=new Y(r.alpha??1),m=new Si(o,i,s,l,c,p,a,u,d,f),h=new ve(m.calpha,"f"),g=new ge(r.mode??0);return new We(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new we(r.outlineColor??16777215),i=new we(r.contourColor??16777215),s=new Y(r.outlineWidth??.1),l=new Y(r.contourWidth??.1),c=new Y(r.outlineThreshold??.1),p=new Y(r.contourThreshold??.1),a=new Y(r.outlineSmoothing??.1),u=new Y(r.contourFrequency??.1),d=new Qe(r.contourDirections??new lr(0,1,0)),f=new Hr(r.positionalLines??!1),m=new Hr(r.compensation??!0),h=Je.normalRenderTarget,g=Je.normalRenderTargetDepth,x=Je.pixelRatioNode,v=Je.resolution,A=new Y(r.alpha??1),S=new ii(o,i,s,l,c,p,a,u,d,f,m,v,h,g,x,A),b=new ve(S.calpha,"f"),D=new ge(r.mode??0);return new We(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:A,mode:D},S,D,b)}case"depth":{let o=new ge(r.gradientType??0),i=new Hr(r.smooth??!1),s=new Y(r.near??50),l=new Y(r.far??200),c=new Y(r.isVector??1),p=new Y(r.isWorldSpace??0),a=new Qe(r.origin??new lr),u=new Qe(r.direction??new lr),d;r.colors?d=new Rt(r.colors.length,r.colors):(d=new Rt(2,new dn(0,0,0,1)),d.value[1]=new dn(1,1,1,1));let f;r.steps?f=new Gt(r.steps.length,r.steps):(f=new Gt(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ai(o,i,s,l,c,p,a,u,d,f,m),x=new ve(g.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,x)}case"noise":{let o=new Y(r.scale??1),i=new Qe(r.size??new lr(100,100,100)),s=new Y(r.move??1),l=new Ye(r.fA??new co(1.7,9.2)),c=new Ye(r.fB??new co(8.3,2.8)),p=new Ye(r.distortion??new co(1,1)),a=new It(r.colorA),u=new It(r.colorB),d=new It(r.colorC),f=new It(r.colorD),m=new Y(r.alpha??1),h=new ge(r.mode??0),g=new ge(r.noiseType??0),x=new ri(o,i,s,l,c,p,a,u,d,f,m,g),v=new ve(x.calpha,"f");return new We(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new Qe(r.cnormal??new lr(1,1,1)),i=new Y(r.alpha??1),s=new ge(r.mode??0),l=new fi(o,i),c=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new We(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new ge(r.gradientType??0),i=new Hr(r.smooth??!1),s;r.colors?s=new Rt(r.colors.length,r.colors):(s=new Rt(10,new dn(0,0,0,1)),s.value[1]=new dn(1,1,1,1));let l;r.steps?l=new Gt(r.steps.length,r.steps):(l=new Gt(10,1),l.value[0]=0);let c=new Ye(r.offset??new co(0,0)),p=new Ye(r.morph??new co(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new ge(r.mode??0),f=new ui(o,i,s,l,c,p,a,u),m=new ve(f.calpha,"f");return new We(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},f,d,m)}default:{let o=new we(1,0,0,1),i=new Y(1),s=new ve("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ge(0);return o.alpha=i,new We(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function Mw(n,t,e,r){let o=$f(e,r);return Ow(e,n,t,o)}function Kl(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var St=class extends Bw{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile,this.transparent=!0,this.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??br.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>cr.create(this.layerIdGen++,i.id,i.data,r)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r)}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(r=>r instanceof ur),this.lightLayer===void 0&&(this.lightLayer=new ur(0,"",Vr.defaultData("light","basic"),new ao,{})),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let i=e.path[1];if(i===void 0){if(this.layers.reverse(),e.type===4){let s=cr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(c=>c.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(l=>l.uuid===i);if(s){let l=r.layers.data(i);if(s.updateByOp({...e,path:e.path.slice(2)},l,o)){let p=cr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof We),r=this.layers.findIndex(o=>o instanceof ur);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let s=this.layers[i];s instanceof We&&(o=new li(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new ve("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof ur);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof We&&(e=new li(e,i.color,i.alpha,i.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof wi);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new mt(r,e[o].position,mt.ADD),r=new mt(r,new Y(.5).setReadonly(!0),mt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,r){let o=(i,s,l)=>Math.min(Math.max(i,s),l);for(let i of this.layers)if(i.type==="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.category.toUpperCase()}",`;else{let o=($l[r.type]??[]).map(l=>r[l]),i=(Xl[r.type]??[]).map(l=>r[l]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ra;return this.lights=this.lightLayer.data.category!=="basic",r.setMaterial(this,e.renderer),r.build(this.fragment,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.transparent=r.requires.transparent||this.blending>Dw,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(St.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as Jl,BufferAttribute as Ew,Vector3 as ec,Float32BufferAttribute as Jf}from"three";function Gw(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position)return;let t=new Map,e=n.geometry.attributes.position.array,r=n.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=new ec(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new ec})}t.forEach((i,s)=>{for(let l of i.normals)i.result.add(l);i.result.divideScalar(i.normals.length)});for(let i=0;i<e.length;i+=3){let s=`${e[i]}_${e[i+1]}_${e[i+2]}`,l=t.get(s)?.result;l&&(o[i]=l.x,o[i+1]=l.y,o[i+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Jf(o,3))}function Rw(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=new ec;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;n.geometry.setAttribute("extrudeNormal",new Jf(e,3))}function $r(n){if(n.objectType!=="TextFrame"){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof St)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Rw(n):Gw(n)}}function Xr(n){if(!n.geometry.attributes.position)return;let t=n.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(n.uuid.replace(/\D/g,"")),o=[Jl.seededRandom(r),Jl.seededRandom(r+1e4),Jl.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Ew(e,3))}var Ze=class extends Lt(Vw){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Fw;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let r=this.geometry,o=tc[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),l=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=l,this.geometry.computeBoundingSphere(),$r(this),r.getAttribute("randomColor")&&Xr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=_i(r),i=this.material;return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new no(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new no(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Vt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),er(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)Jt(e)&&(e.freeBooleanPointer(),er(e)&&e.invalidateUpstreamBooleanData())}};var jw=new rc(0,0,1),em=new rc,tm=new rc,rm=new Uw,fn=class extends Ze{constructor(e=st.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new zw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),rm.getNormalMatrix(this.matrixWorld),em.copy(jw).applyMatrix3(rm).normalize(),tm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(em,tm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=st.create(Object.assign({},i,{shape:r})),l=new fn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Ze.prototype.raycast.call(this,e,r)}};function sa(n,t){return Hw(n)}function Hw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Se.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new kw().parse(n));let e;try{e=_i(t)}catch(r){console.error(r)}if(!e){let r=Se.createFromState(Ho.defaultData(),100,100);t.shape=r,e=_i(t)}return e}var pe;Ks.then(n=>{pe=n});var im=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),sm=new Uint32Array([0,1,2,3]),am=new Uint8Array([4]),Ot=class{static build(n,t,e,r,o){let i,s,l,c=n?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),n.positionWASM!==void 0){e&&e!==0&&(pe.free_bvh(e),pe.free_subdivision_surface(e));try{i=Ot.allocate(n,o)}catch(p){console.error(p,n),i=Ot.allocate({positionWASM:im,indexWASM:sm,verticesPerFaceWASM:am},o)}pe.set_destination_refinement_level(i,0),s=Ot.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ot.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(pe.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Ot.buildLevel(i,!1,c):l=null),{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:sa(n),r,o,i,s;({positions:r,triIndices:s}=lc(e.getAttribute("position"),e.getIndex()));let l;if(n.type==="CylinderGeometry"&&n.cornerRadius===0&&n.hollow===0&&n.openEnded===!1){let c=n.radialSegments*n.heightSegments*3*2,p=c+n.radialSegments*3;l=[c,p]}return{indices:o,verticesPerFace:i}=cc(r,s,e,l),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=im,r=sm,o=am);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=pe._malloc(d),g=new Float32Array(pe.HEAPF32.buffer,h,a),x=new Uint32Array(pe.HEAPU32.buffer,h+f,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),x.set(r,0),x.set(o,r.length);let v;n?.scaleBaked?.some(S=>S!==1)&&(v=new Ww().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?pe.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):pe.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return pe._free(h),A}static buildLevel(n,t,e,r,o){let i=o?pe.get_mesh_data2(n,t?pe.Level.CONTROL:pe.Level.REFINED,e,o.elements):pe.get_mesh_data(n,t?pe.Level.CONTROL:pe.Level.REFINED,e),s=8,l=pe.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=pe.HEAPU32[l[p]>>2],u=pe.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=pe.HEAPU32[l[p]>>2],f=pe.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=pe.HEAPU32[l[p]>>2],h=pe.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=pe.HEAPU32[l[p]>>2],x=pe.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new om;if(v.setIndex(new oc(x,1)),v.setAttribute("position",new nc(u,3)),v.setAttribute("normal",new nc(f,3)),t){v.setAttribute("faceMap",new oc(h,1));let A=new Float32Array(f.length/3*4).fill(0);v.setAttribute("color",new nm(A,4))}return pe.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,pe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=pe.get_wireframe_data_for_base_level(n),o=4,i=pe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=pe.HEAPU32[i[l]>>2],p=pe.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=pe.HEAPU32[i[l]>>2],u=pe.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new om;d.setAttribute("position",new nc(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new nm(f,3)),d.setIndex(new oc(u,1)),pe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,pe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||pe.set_destination_refinement_level(n,t);let o=e?pe.get_topological_data2(n,r?pe.Level.CONTROL:pe.Level.REFINED,e.elements):pe.get_topological_data(n,r?pe.Level.CONTROL:pe.Level.REFINED),i=6,s=pe.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=pe.HEAPU32[s[c]>>2],a=new Float32Array(pe.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=pe.HEAPU32[s[c]>>2],d=new Uint32Array(pe.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let f=pe.HEAPU32[s[c]>>2],m=new Uint8Array(pe.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return pe.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var lm=["getX","getY","getZ"];function lc(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let p=0;p<r;p++){let a=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(n[lm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[lm[d]](a));e[u]=o,i.push(o),o++}}let c=[];for(let p=0;p<i.length;p+=3)i[p]===i[p+1]||i[p]===i[p+2]||i[p+1]===i[p+2]||c.push(i[p],i[p+1],i[p+2]);return{positions:s,triIndices:c}}var aa=new la,ic=new la,sc=new la,ac=new la;function cc(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),l=0;for(let p=0;p<s.length;p+=2)l+=(s[p]-s[(p===0?s.length:p)-2])*(s[p+1]+s[(p===0?s.length:p)-1]);n.length=0;let c=0;if(l<0)for(let p=0;p<s.length;p+=2)n.push(s[p],s[p+1],0),o.push(c++);else for(let p=s.length-2;p>=0;p-=2)n.push(s[p],s[p+1],0),o.push(c++);return i.push(c),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??t.length;s<l;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){aa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),ic.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),sc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),ac.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),ic.sub(aa).normalize(),sc.sub(aa).normalize(),ac.sub(aa).normalize();let c=ic.cross(sc).dot(ac);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,u=0;a<n.length;a+=3,u++)n[a+2]===0&&(s.push(u),c++),n[a+2]===p&&l.push(u);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Vt={};hh(Vt,{calcBoolean:()=>Kw,calcBooleanTopological:()=>Yw,freeMeshSet:()=>Jw,getMeshSet:()=>Zw,transformMeshSet:()=>Qw});var qw,cm=new Promise(n=>{qw=n});import{Float32BufferAttribute as um,Sphere as $w}from"three";var he,mn;cm.then(n=>he=n);function Xw(n,t,e){let r,{positions:o,triIndices:i}=lc(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:l,verticesPerFace:c}=cc(o,i,n);s=c.length,r=[];for(let p=0,a=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(l[a++])}}else{let l=i.length;r=Array(l+l/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function pm(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function dm(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function Yw(n,t){mn===void 0&&(mn=he.init_csg());let e=pm(n),r=he.csg_calc_topological(mn,e,n.length,dm(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=he.HEAPU32[i[l]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=he.HEAPU32[i[l]>>2],u=new Uint32Array(he.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=he.HEAPU32[i[l]>>2],f=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function Kw(n,t,e,r){mn===void 0&&(mn=he.init_csg());let o=pm(n),i=he.csg_calc(mn,o,n.length,r,dm(t));he._free(o);let s=5,l=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=he.HEAPU32[l[p]>>2],u=he.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=he.HEAPU32[l[p]>>2],f=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new um(u,3)),e.setAttribute("normal",new um(f,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new $w),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},he.free_mesh_data(i),m}function Zw(n,t,e){if(he===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((x,v)=>x+v,0)+i);for(let x=0,v=0,A=0;x<g.verticesPerFace.length;x++){o[A++]=g.verticesPerFace[x];for(let S=0;S<g.verticesPerFace[x];S++)o[A++]=g.indices[v++]}}else({positions:r,faceIndices:o,nFaces:i}=Xw(n,t,e));let s=r.length,l=o.length,c=r.length,p=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=he._malloc(a),m=new Float32Array(he.HEAPF32.buffer,f,c),h=new Uint32Array(he.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),he.get_csg_mesh(f,s,f+u,l,i)}function Qw(n,t){he.transform_csg_mesh(n,t.elements)}function Jw(n){he.free_csg_mesh(n)}var tc={ConeGeometry:Nd,CubeGeometry:Cd,CylinderGeometry:Ad,DodecahedronGeometry:Pd,EllipseGeometry:tf,HelixGeometry:af,IcosahedronGeometry:lf,LatheGeometry:cf,NonParametricGeometry:yf,PolygonGeometry:xf,PyramidGeometry:vf,RectangleGeometry:bf,SphereGeometry:Sf,PlaneGeometry:wf,BackdropGeometry:_f,StarGeometry:Tf,TextFrameGeometry:Ys,TorusGeometry:Af,TorusKnotGeometry:Nf,TriangleGeometry:Cf,VectorGeometry:st},_i=n=>tc[n.type].create(n);import{BufferGeometry as fm,Matrix4 as e1}from"three";var mm=new e1;var ca=class extends Ze{constructor(e=new fm,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];er(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(Gf(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Vt.getMeshSet(s.geometry,e===!0,r),s.booleanMeshSetAddress===-1)return;Vt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else er(s)&&s.needsTransformForDownstream===!0?(Vt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(mm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Vt.transformMeshSet(s.booleanMeshSetAddress,mm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Vt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new fm,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Vt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,$r(this),Xr(this)}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as g1,OrthographicCamera as y1,PerspectiveCamera as x1,Vector3 as zt,Object3D as ym,Quaternion as v1}from"three";import{BoxBufferGeometry as t1}from"three";var pr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new t1(30,30,30),t};import{Camera as s1,LineSegments as a1,BufferGeometry as l1,LineBasicMaterial as c1,Color as pc,Vector3 as u1,Float32BufferAttribute as gm}from"three";import{Ray as r1,Sphere as o1,Matrix4 as n1,Vector3 as Ar}from"three";var ua=new r1,uc=new o1,hm=new n1,dr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),uc.copy(i.boundingSphere),uc.applyMatrix4(s),e.ray.intersectsSphere(uc)===!1||(hm.copy(s).invert(),ua.copy(e.ray).applyMatrix4(hm),i.boundingBox!==null&&ua.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let x=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=x,h=v;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),a=u.getX(m+2),l=g(n,e,ua,d,c,p,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let v=i.attributes.position,A=new Ar,S=new Ar,b=new Ar,D=new Ar,w=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=I*I,L=Math.max(0,f.start),N=Math.min(v.count,f.start+f.count);for(let C=L,k=N-1;C<k;C+=w){if(A.fromBufferAttribute(v,C),S.fromBufferAttribute(v,C+1),ua.distanceSqToSegment(A,S,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let oe=e.ray.origin.distanceTo(D);oe<e.near||oe>e.far||r.push({distance:oe,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,S,b,D,w){let y=new Ar,I=new Ar,T=new Ar,L=new Ar,N=new Ar;if(y.fromBufferAttribute(S,b),I.fromBufferAttribute(S,D),T.fromBufferAttribute(S,w),A.intersectTriangle(y,I,T,!1,L)===null)return null;N.copy(L),N.applyMatrix4(x.matrixWorld);let k=v.ray.origin.distanceTo(N);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:N.clone(),object:x}}};var pa=new u1,Mt=new s1,dc=class extends a1{constructor(e){let r=new l1,o=new c1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new pc(15711266),p=new pc(15711266),a=new pc(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(f,m,h){d(f,h),d(m,h)}function d(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}r.setAttribute("position",new gm(i,3)),r.setAttribute("color",new gm(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=l,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Mt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;Ft("n1",r,e,Mt,-i,-s,l),Ft("n2",r,e,Mt,i,-s,l),Ft("n3",r,e,Mt,-i,s,l),Ft("n4",r,e,Mt,i,s,l);let c=l;Ft("f1",r,e,Mt,-i,-s,c),Ft("f2",r,e,Mt,i,-s,c),Ft("f3",r,e,Mt,-i,s,c),Ft("f4",r,e,Mt,i,s,c);let p=c,a=.5;Ft("u1",r,e,Mt,i*.7*a,s*1.1,p),Ft("u2",r,e,Mt,-i*.7*a,s*1.1,p),Ft("u3",r,e,Mt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ft(n,t,e,r,o,i,s){pa.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let p=0,a=l.length;p<a;p++)c.setXYZ(l[p],pa.x,pa.y,pa.z)}}var da=class extends pr(dc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){dr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as p1}from"three";var hn=class extends pr(p1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,hn.geometryHelper,e,r)}};import{AxesHelper as d1}from"three";var gn=class extends pr(d1){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){dr(this.object,gn.geometryHelper,e,r)}update(){}};import{PointLightHelper as f1}from"three";var yn=class extends pr(f1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,yn.geometryHelper,e,r)}};import{SpotLightHelper as m1,Vector3 as h1}from"three";var fa=class extends pr(m1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){dr(this.object,fa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=fa._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,l=this.cone.material.length;s<l;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Ti=fa;Ti._vector=new h1;var fr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Fe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows)}return this}};var xn=new zt,fc=new zt,Nr=class extends fr(Lt(g1),da){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=Jr.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new y1(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new x1(o,e/r,i??50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic()}static createFromState(e,r){let o=new Nr().fromState(r);return o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(xn),this.targetOffset=xn.distanceTo(e)}getTarget(e=new zt){return this.getWorldDirection(fc),this.getWorldPosition(xn),fc.multiplyScalar(this.targetOffset),e.copy(xn).add(fc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(xn),xn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new v1),r=new zt(0,0,1).applyQuaternion(e),o=new zt().copy(ym.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new zt().copy(ym.DefaultUp).projectOnPlane(r),s=new zt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new zt),i=e.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new zt),i=this.getWorldDirection(new zt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,l):this.orthoCamera.setViewOffset(e,r,o,i,s,l)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ro(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.zoom),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as b1}from"three";var uo=class extends fr(Lt(b1),gn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new uo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as S1,CameraHelper as ma}from"three";var vn=class extends fr(Lt(S1),hn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let i=new ma(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new vn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ma&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Of(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as w1,Vector3 as ha,Box3 as _1,Box3Helper as ga,Color as T1}from"three";var bn=class extends fr(Lt(w1),yn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new _1(i,s),c=new ga(l,new T1(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new bn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ga&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof ga){let o=this.shadow.camera,i=new ha(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ha(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as A1,CameraHelper as ya,MathUtils as N1,Vector3 as Sm,Quaternion as C1}from"three";var xm=new Sm,vm=new Sm,bm=new C1,Sn=class extends fr(Lt(A1),Ti){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let o=this.shadow.camera;o.fov=N1.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new ya(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Sn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ya&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),vm.setFromMatrixPosition(this.matrixWorld),bm.setFromRotationMatrix(this.matrixWorld),xm.copy(this.up).applyQuaternion(bm).negate().multiplyScalar(this.distance),this.target.position.copy(vm).add(xm),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var wm=n=>n.tagName==="VIDEO",wn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;wm(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.layers;for(let i=0;i<o.length;i++){let s=o[i];Qf(s)&&wn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;wm(l)?s=l.videoWidth/l.videoHeight:s=l.width/l.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var xa=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&wn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var _n=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var va=class extends _n{constructor(e,r){super(e,r);this.objectType="NonParametric"}};import{DoubleSide as P1,Mesh as L1,MeshBasicMaterial as I1,ShapeBufferGeometry as O1,Vector2 as M1,Vector3 as D1}from"three";import{FontLoader as B1}from"three/examples/jsm/loaders/FontLoader.js";var Ee=class extends L1{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new I1({color:0,opacity:1,visible:!0,transparent:!0,side:P1})){let p=Ee.loadChar(e,o,l);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=l,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new M1,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ee._fontPath}static set FONTS_PATH(e){Ee._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new D1(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ee.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ee.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ee.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ee(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ee.fontCache[e]?r(Ee.fontCache[e]):new B1().load(Ee.FONTS_PATH+e+".json",s=>{Ee.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ee.charCache[e]){if(Ee.charCache[e][o]&&Ee.charCache[e][o].fontFamily===r)return Ee.charCache[e][o]}else Ee.charCache[e]={};let i=Ee.fontCache[r],s=i.generateShapes(e,1);return Ee.charCache[e][o]={geometry:new O1(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ee.charCache[e][o]}},Ut=Ee;Ut.charCache={},Ut.fontCache={},Ut._fontPath="/_assets/_fonts/";import{DoubleSide as Tm,MeshBasicMaterial as Am,Vector3 as E1,Object3D as G1}from"three";import{Vector2 as _m}from"three";var ba=new _m,po=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new _m(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){ba.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(ba),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let l=0;l<this.message.length;l++)this.message[l].char===" "&&(s+=i),ba.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(ba),e)}clone(){let t=new po(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var mc=class extends Ze{constructor(e){super(e,new Am({transparent:!0,opacity:1,visible:!1,side:Tm}));this.objectType="TextFrame";this.charContainer=new G1,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new E1(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Ys.create({parameters:{width:r.width,height:r.height}}),s=new mc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Ut.loadFont(o),r.text=e;let i=r.textOrigin,s=new Am({visible:r.visible,transparent:!0,side:Tm}),l=e.split(`
|
|
1333
|
+
`),c=0;this.userData.textFrame.textLines=l.map((p,a)=>{let u=new po(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let f={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let h=new Ut(f,m);return u.addChar3D(h,i),this.charContainer.add(h),h}),c+=u.maxCharSize*u.lineHeight,u}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,l=this.charContainer.children.length;s<l;++s)if(this.charContainer.children[s]instanceof Ut&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,l=e.parameters?.width??i,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=l,p.textOrigin.set(-.5*l,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):l!==i&&(i<l?this.checkCapacity():i>l&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let l=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?l.unshift(i[s].getWord(i[s].message.length-1,-1)):l.unshift(i[s].popChar());if(l.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let c=0;for(let p=0;p<l.length;p+=1)for(let a=0;a<l[p].length;a+=1)i[s+1].addChar3D(l[p][a],o,c),c+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let l=e;l<s.length;l+=1)if(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o),!!s[l-1])for(;!s[l-1].endLine;){let c,p=s[l-1].spaceLeft(i);if(s[l].wordSize(0,1)<=p){s[l].containSpace()?c=s[l].getWord(0,1):c=s[l].popChar(0);for(let a=0;a<c.length;a+=1)c[a]&&s[l-1].addChar3D(c[a],o)}else{s[l].isEmpty()?(s[l].endLine&&s[l-1].isEndLine(!0),s.splice(l,1),l-=1):(s[l].updateYLinePos(this.getNewLinePosition(l)),s[l].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let l=e;l<i.length;l++)i[l].updateYLinePos(this.getNewLinePosition(l)),i[l].fullUpdate(o.textOrigin),i[l].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++){let c=s[l].material;c.visible=e}}}async updateFontFamily(e){await Ut.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)l[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let l=0;l<i.length;l++)i[l].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Ut.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let l=i[s].message;for(let c=0;c<l.length;c++)i[s].message[c].updateChar(l[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let l=0;l<s.length;l++)s[l].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Fe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}},fo=mc;fo.VerticalAlign=Za,fo.HorizontalAlign=Ka,fo.TextTransform=Qa;var mo=class extends St{};var Lm=Sc(Nm());var Cm=new Map;function Pm(n){if(typeof n=="string")return n;let t=Cm.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},Cm.set(n,t)),t.url}var Tn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._isStarted=!1;this.onEnd=()=>{this._loop>1?this.loopsRemaining===1/0?this.play():this.loopsRemaining>1?(this.play(),this.loopsRemaining--):this._isStarted=!1:this._isStarted=!1};let i;typeof t=="string"?i={src:t}:i={src:Pm(t),format:"wav"},this.sound=new Lm.Howl(i),this.sound.on("end",this.onEnd),this._src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get src(){return this._src}get isStarted(){return this._isStarted}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._isStarted=!0,this.delay?(this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)):this.sound.play()}pause(){this._isStarted=!1,this.sound.pause(),this.clearFade(),this.clearDelay()}stop(){this._isStarted=!1,this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay()}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Ni=class{constructor(t,e={}){this.deletedMaterial=new mo(br.defaultTwoLayerData("basic"),this);this.deletedImage=new lo(Bs.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,new mo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data);this.penumbraSize=t.penumbraSize}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):new St(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new lo(e,this.onImageLoad),!1)}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):new pn(t,this.onImageLoad)}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Wr(e.r,e.g,e.b,e.a):this.colors[t]=new Wr(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ue(0,0,0,0))}else return"a"in t?new Ue(t.r,t.g,t.b,t.a):new Ue(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof Tn)return e;{let r=new Tn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Tn&&e.dispose()}),this.audios={}}},nH=new Ni(Ds.emptyData());import{DRACOLoader as R1}from"three/examples/jsm/loaders/DRACOLoader.js";var Yr;function V1(){return Yr||(Yr=new R1,Yr.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Yr.decoderPending}async function F1(n){if(Yr){let t={attributeIDs:Yr.defaultAttributeIDs,attributeTypes:Yr.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Yr.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function Im(n,t){let[e,r]=Ba(Ts.deserialize(new Uint8Array(n)));_d(e);let o=[];e.scene.objects.traverse((i,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await V1();for(let i of o){let s=await F1(qt(i.geometry.data.draco));if(s){s.index&&(i.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let l={};s.attributes.forEach(({name:c,array:p,itemSize:a})=>{l[c]={array:p,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}import{HemisphereLight as i_,Scene as s_,Vector3 as a_,Fog as l_,Box3 as c_}from"three";import{Box3 as z1,Matrix4 as ho,Sphere as Dm,Vector3 as U1}from"three";var Em=Sc(Mm());var hc;Ks.then(n=>{hc=n});var Gm=new ho,j1=new ho,k1=new ho,jt=new z1,Kr=new U1,H1=new ho,W1=new ho,An=class extends Ze{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new ho;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new ho;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Ot.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new An(i,s,l||void 0,c);return r.geometry.phongAngle!==void 0&&(p.phongAngle=r.geometry.phongAngle),p.calcBoundingBox(),p.freeSubdivPointer(),p.uuid=e,p.fromState(r),p}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Ot.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,$r(this),Xr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ot.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ot.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ze.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,Em.SVD)(r),l=Gm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),c=j1.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),p=k1.copy(c).transpose();this.shearScale=H1.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=W1.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,p),s.every(a=>Math.abs(s[0]-a)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Dm);let r=e.attributes.position,o=e.boundingSphere.center;jt.setFromBufferAttribute(r),jt.getCenter(o),e.boundingSphere.radius=o.distanceTo(jt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;jt.min.set(e[0],e[2],e[4]),jt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(jt.min.applyMatrix4(this.shearScaleInv),jt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new Dm);let o=r.boundingSphere.center;jt.getCenter(o),r.boundingSphere.radius=o.distanceTo(jt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),jt.getSize(Kr);let i={width:Kr.x,height:Kr.y,depth:Kr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,Bm(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Bm(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Bm(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Gm.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as q1,BufferGeometry as $1,DoubleSide as X1,FrontSide as Y1}from"three";function Rm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=Y1:t.side===1?n.side=q1:n.side=X1)}function K1(n,t){if(Array.isArray(n.material))for(let e of n.material)Rm(e,t);else{let e=n.material;Rm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Vm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=An.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new $1:sa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ls.is2DParametricMesh(o.userData.type)?r=new xa(o,i):o?.userData.type==="VectorGeometry"?r=new fn(o,i):t.geometry.type==="NonParametricGeometry"?r=new va(o,i):t.geometry.type==="BooleanGeometry"?(r=new ca(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new _n(o,i),r.uuid=n,r.fromState(t,e)}return K1(r,t),r}function Fm(n,t,e){return t.type==="Mesh"?Vm(n,t,e):t.type==="TextFrame"?fo.createFromState(n,t,e):t.type==="Empty"?uo.createFromState(n,t):t.type==="PointLight"?bn.createFromState(n,t,e):t.type==="SpotLight"?Sn.createFromState(n,t,e):t.type==="DirectionalLight"?vn.createFromState(n,t,e):Vo.is(t.type)?Nr.createFromState(n,t):(console.error(t),new uo)}import{Mesh as jm,Ray as Q1,Matrix4 as J1,Raycaster as e_}from"three";function zm(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Xr(n),$r(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Um(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),e}function km(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof jm&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)zm(e,e.material[r])&&(t=!0);else zm(e,e.material)&&(t=!0)}),t}function Hm(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof jm)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Um(e,e.material[r])&&(t=!0);else Um(e,e.material)&&(t=!0)}),t}function Wm(n){"material"in n&&t_(n.material),"geometry"in n&&n.geometry.dispose()}function t_(n){wc(n).forEach(t=>{t instanceof mo||t.dispose()})}var r_=new e_,o_=new J1,n_=new Q1;function qm(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=o_.copy(o.matrixWorld).invert(),s=n_.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=r_;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(n,!1).length>0&&e.push({object:n})}}var $m=new a_,gc=class extends Qs(s_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new l_(16777215,.1,2e3);this.fogUseBGColor=!1;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.bgColor=new Ue(1,1,1,1);this.entityByUuid={};this.ambientLight=new i_(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,r)}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Hm(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=km(this),this.needsNormalDirty=!1),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Fe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Nr&&this.switchActiveCamera(o)}this.traverse(o=>{er(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Wm(e)});for(let e of this.children)or(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Nr.createFromState(gc.PERSONAL_CAMERA_ID,{...Os.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)or(s)&&!s.raycastLock&&s.visible&&((Jt(s)||Zs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),qm(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)or(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)or(r)&&r.visible&&r.traverseVisibleEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Fe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){If(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Fe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let l=Fm(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),er(i)&&Jt(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],p=this.find(l),a=c?p.recursiveBBox:p.singleBBox;r.push(...a.vertices)}let o=new c_;return o.setFromPoints(r),o.getCenter($m),$m}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Ze)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof St&&e(r.material[o]);else r.material instanceof St&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(c=>{c.uniforms[`f${c.id}_aspectRatio`].value.x=o,c.uniforms[`f${c.id}_aspectRatio`].value.y=i})})}},Ci=gc;Ci.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{Mesh as N5}from"three";import{mergeBufferGeometries as L5}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Xm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as Ym,ShaderLib as u_}from"three";function Km(n){let t=new Set;return n.traverse(e=>{if(Jt(e))if(Oe(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(p_(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ym,specularColor:new Ym});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign(u_.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else d_(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function p_(n){return n.getLayersOfType("transmission").length>0}function d_(n){let t=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let r=e.uniforms["f"+e.id+"_alpha"];r&&(t+=(1-t)*r.value)}}),t<1}function Zm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Qm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as f_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Jm(n){let t=[];return n.traverse(e=>{e instanceof no&&t.push(e)}),t.forEach(e=>{let r=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Xm(c),c}),s=f_(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function eh(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function th(n){Object.values(n.shared.materials).forEach(t=>{yc(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?yc(e.material):"materials"in e&&e.materials.forEach(r=>{yc(r)})})}function yc(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var rh="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",xc=class extends h_{load(t,e,r,o=console.error){let i=new m_(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(rh+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(rh),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let l=await this.parse(s);e(l)}catch(l){o(l)}},r,o)}async parse(t){let e=await Im(t,th),r=new Ni(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Ci(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Lf(s)&&Object.assign(s,{makeDefault:!0})}return o=Jm(o),o=Km(o),o=Zm(o),o=Qm(o),o=eh(o),o}};export{xc as default};
|