@splinetool/loader 0.9.80 → 0.9.83
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 +318 -317
- package/build/SplineLoader.js +318 -317
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDescriptor;var zf=Object.getOwnPropertyNames;var Uf=Object.getPrototypeOf,kf=Object.prototype.hasOwnProperty;var gc=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),yc=(i,t)=>{for(var e in t)Hi(i,e,{get:t[e],enumerable:!0})},xc=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zf(t))!kf.call(i,o)&&o!==e&&Hi(i,o,{get:()=>t[o],enumerable:!(r=Vf(t,o))||r.enumerable});return i};var vc=(i,t,e)=>(e=i!=null?Ff(Uf(i)):{},xc(t||!i||!i.__esModule?Hi(e,"default",{value:i,enumerable:!0}):e,i)),jf=i=>xc(Hi({},"__esModule",{value:!0}),i);var ef=gc(Da=>{(function(){"use strict";var i=function(){this.init()};i.prototype={init:function(){var l=this||t;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var u=this||t;if(l=parseFloat(l),u.ctx||p(),typeof l<"u"&&l>=0&&l<=1){if(u._volume=l,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.volume=h._volume*l)}return u}return u._volume},mute:function(l){var u=this||t;u.ctx||p(),u._muted=l,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(l?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);h&&h._node&&(h._node.muted=l?!0:h._muted)}return u},stop:function(){for(var l=this||t,u=0;u<l._howls.length;u++)l._howls[u].stop();return l},unload:function(){for(var l=this||t,u=l._howls.length-1;u>=0;u--)l._howls[u].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,p()),l},codecs:function(l){return(this||t)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||t;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var u=new Audio;u.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return l}if(!u||typeof u.canPlayType!="function")return l;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),m=l._navigator?l._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.match(/Version\/(.*?) /),v=g&&x&&parseInt(x[1],10)<15;return l._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$/,"")},l},_unlockAudio:function(){var l=this||t;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var u=function(d){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var m=new Audio;m._unlocked=!0,l._releaseHtml5Audio(m)}catch{l.noAudio=!0;break}for(var f=0;f<l._howls.length;f++)if(!l._howls[f]._webAudio)for(var h=l._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=l._howls[f]._soundById(h[g]);x&&x._node&&!x._node._unlocked&&(x._node._unlocked=!0,x._node.load())}l._autoResume();var v=l.ctx.createBufferSource();v.buffer=l._scratchBuffer,v.connect(l.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),v.onended=function(){v.disconnect(0),l._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<l._howls.length;A++)l._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),l}},_obtainHtml5Audio:function(){var l=this||t;if(l._html5AudioPool.length)return l._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(l){var u=this||t;return l._unlocked&&u._html5AudioPool.push(l),u},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<l._howls.length;u++)if(l._howls[u]._webAudio){for(var d=0;d<l._howls[u]._sounds.length;d++)if(!l._howls[u]._sounds[d]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var m=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(m,m)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!t.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var u=0;u<l._howls.length;u++)l._howls[u]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var t=new i,e=function(l){var u=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(l)};e.prototype={init:function(l){var u=this;return t.ctx||p(),u._autoplay=l.autoplay||!1,u._format=typeof l.format!="string"?l.format:[l.format],u._html5=l.html5||!1,u._muted=l.mute||!1,u._loop=l.loop||!1,u._pool=l.pool||5,u._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,u._rate=l.rate||1,u._sprite=l.sprite||{},u._src=typeof l.src!="string"?l.src:[l.src],u._volume=l.volume!==void 0?l.volume:1,u._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=l.onend?[{fn:l.onend}]:[],u._onfade=l.onfade?[{fn:l.onfade}]:[],u._onload=l.onload?[{fn:l.onload}]:[],u._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],u._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],u._onpause=l.onpause?[{fn:l.onpause}]:[],u._onplay=l.onplay?[{fn:l.onplay}]:[],u._onstop=l.onstop?[{fn:l.onstop}]:[],u._onmute=l.onmute?[{fn:l.onmute}]:[],u._onvolume=l.onvolume?[{fn:l.onvolume}]:[],u._onrate=l.onrate?[{fn:l.onrate}]:[],u._onseek=l.onseek?[{fn:l.onseek}]:[],u._onunlock=l.onunlock?[{fn:l.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 l=this,u=null;if(t.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var d=0;d<l._src.length;d++){var m,f;if(l._format&&l._format[d])m=l._format[d];else{if(f=l._src[d],typeof f!="string"){l._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){u=l._src[d];break}}if(!u){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=u,l._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new r(l),l._webAudio&&n(l),l},play:function(l,u){var d=this,m=null;if(typeof l=="number")m=l,l=null;else{if(typeof l=="string"&&d._state==="loaded"&&!d._sprite[l])return null;if(typeof l>"u"&&(l="__default",!d._playLock)){for(var f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?l=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!l&&(l=g._sprite||"__default"),d._state!=="loaded"){g._sprite=l,g._ended=!1;var x=g._id;return d._queue.push({event:"play",action:function(){d.play(x)}}),x}if(m&&!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[l][0]/1e3),A=Math.max(0,(d._sprite[l][0]+d._sprite[l][1])/1e3-v),_=A*1e3/Math.abs(g._rate),b=d._sprite[l][0]/1e3,D=(d._sprite[l][0]+d._sprite[l][1])/1e3;g._sprite=l,g._ended=!1;var S=function(){g._paused=!1,g._seek=v,g._start=b,g._stop=D,g._loop=!!(g._loop||d._sprite[l][2])};if(v>=D){d._ended(g);return}var y=g._node;if(d._webAudio){var I=function(){d._playLock=!1,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,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),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),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 N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.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,S(),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}l!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_):(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(j){d._emit("playerror",g._id,j)}};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 C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!1),d._clearTimer(g._id)}}return g._id},pause:function(l){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(l)}}),u;for(var d=u._getSoundIds(l),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._id:null)}return u},stop:function(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(l)}}),d;for(var m=d._getSoundIds(l),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),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(l,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(l,u)}}),d;if(typeof u>"u")if(typeof l=="boolean")d._muted=l;else return d._muted;for(var m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);h&&(h._muted=l,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:l),d._emit("mute",h._id))}return d},volume:function(){var l=this,u=arguments,d,m;if(u.length===0)return l._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,u)}}),l;typeof m>"u"&&(l._volume=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)g=l._soundById(m[x]),g&&(g._volume=d,u[2]||l._stopFade(m[x]),l._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),l._emit("volume",g._id))}else return g=m?l._soundById(m):l._sounds[0],g?g._volume:0;return l},fade:function(l,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(l,u,d,m)}}),f;l=Math.min(Math.max(0,parseFloat(l)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(l,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._webAudio&&!x._muted){var v=t.ctx.currentTime,A=v+d/1e3;x._volume=l,x._node.gain.setValueAtTime(l,v),x._node.gain.linearRampToValueAtTime(u,A)}f._startFadeInterval(x,l,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(l,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();l._fadeTo=d,l._interval=setInterval(function(){var D=(Date.now()-b)/m;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?l._volume=x:g.volume(x,l._id,!0),h&&(g._volume=x),(d<u&&x<=d||d>u&&x>=d)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,g.volume(d,l._id),g._emit("fade",l._id))},_)},_stopFade:function(l){var u=this,d=u._soundById(l);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,l),d._fadeTo=null,u._emit("fade",l)),u},loop:function(){var l=this,u=arguments,d,m,f;if(u.length===0)return l._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],l._loop=d;else return f=l._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=l._getSoundIds(m),g=0;g<h.length;g++)f=l._soundById(h[g]),f&&(f._loop=d,l._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._stop,l.playing(h[g])&&(l.pause(h[g],!0),l.play(h[g],!0)))));return l},rate:function(){var l=this,u=arguments,d,m;if(u.length===0)m=l._sounds[0]._id;else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));var g;if(typeof d=="number"){if(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,u)}}),l;typeof m>"u"&&(l._rate=d),m=l._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=l._soundById(m[x]),g){l.playing(m[x])&&(g._rateSeek=l.seek(m[x]),g._playStart=l._webAudio?t.ctx.currentTime:g._playStart),g._rate=d,l._webAudio&&g._node&&g._node.bufferSource?g._node.bufferSource.playbackRate.setValueAtTime(d,t.ctx.currentTime):g._node&&(g._node.playbackRate=d);var v=l.seek(m[x]),A=(l._sprite[g._sprite][0]+l._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(l._endTimers[m[x]]||!g._paused)&&(l._clearTimer(m[x]),l._endTimers[m[x]]=setTimeout(l._ended.bind(l,g),_)),l._emit("rate",g._id)}}else return g=l._soundById(m),g?g._rate:l._rate;return l},seek:function(){var l=this,u=arguments,d,m;if(u.length===0)l._sounds.length&&(m=l._sounds[0]._id);else if(u.length===1){var f=l._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):l._sounds.length&&(m=l._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"u")return 0;if(typeof d=="number"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,u)}}),l;var g=l._soundById(m);if(g)if(typeof d=="number"&&d>=0){var x=l.playing(m);x&&l.pause(m,!0),g._seek=d,g._ended=!1,l._clearTimer(m),!l._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&l.play(m,!0),l._emit("seek",m)};if(x&&!l._webAudio){var A=function(){l._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(l._webAudio){var _=l.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*Math.abs(g._rate))}else return g._node.currentTime;return l},playing:function(l){var u=this;if(typeof l=="number"){var d=u._soundById(l);return d?!d._paused:!1}for(var m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(l){var u=this,d=u._duration,m=u._soundById(l);return m&&(d=u._sprite[m._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var l=this,u=l._sounds,d=0;d<u.length;d++)u[d]._paused||l.stop(u[d]._id),l._webAudio||(l._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,l._clearTimer(u[d]._id);var m=t._howls.indexOf(l);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===l._src||l._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[l._src],t.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,u,d,m){var f=this,h=f["_on"+l];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(l,u,d){var m=this,f=m["_on"+l],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(l)m["_on"+l]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(l,u,d){var m=this;return m.on(l,u,d,1),m},_emit:function(l,u,d){for(var m=this,f=m["_on"+l],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||l==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(l,f[h].fn,f[h].id));return m._loadQueue(l),m},_loadQueue:function(l){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===l&&(u._queue.shift(),u._loadQueue()),l||d.action()}return u},_ended:function(l){var u=this,d=l._sprite;if(!u._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(u._ended.bind(u,l),100),u;var m=!!(l._loop||u._sprite[d][2]);if(u._emit("end",l._id),!u._webAudio&&m&&u.stop(l._id,!0).play(l._id),u._webAudio&&m){u._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=t.ctx.currentTime;var f=(l._stop-l._start)*1e3/Math.abs(l._rate);u._endTimers[l._id]=setTimeout(u._ended.bind(u,l),f)}return u._webAudio&&!m&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,u._clearTimer(l._id),u._cleanBuffer(l._node),t._autoSuspend()),!u._webAudio&&!m&&u.stop(l._id,!0),u},_clearTimer:function(l){var u=this;if(u._endTimers[l]){if(typeof u._endTimers[l]!="function")clearTimeout(u._endTimers[l]);else{var d=u._soundById(l);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[l],!1)}delete u._endTimers[l]}return u},_soundById:function(l){for(var u=this,d=0;d<u._sounds.length;d++)if(l===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var l=this;l._drain();for(var u=0;u<l._sounds.length;u++)if(l._sounds[u]._ended)return l._sounds[u].reset();return new r(l)},_drain:function(){var l=this,u=l._pool,d=0,m=0;if(!(l._sounds.length<u)){for(m=0;m<l._sounds.length;m++)l._sounds[m]._ended&&d++;for(m=l._sounds.length-1;m>=0;m--){if(d<=u)return;l._sounds[m]._ended&&(l._webAudio&&l._sounds[m]._node&&l._sounds[m]._node.disconnect(0),l._sounds.splice(m,1),d--)}}},_getSoundIds:function(l){var u=this;if(typeof l>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._id);return d}else return[l]},_refreshBuffer:function(l){var u=this;return l._node.bufferSource=t.ctx.createBufferSource(),l._node.bufferSource.buffer=o[u._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,t.ctx.currentTime),u},_cleanBuffer:function(l){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),d))try{l.bufferSource.buffer=t._scratchBuffer}catch{}return l.bufferSource=null,u},_clearSound:function(l){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(l){this._parent=l,this.init()};r.prototype={init:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,u._sounds.push(l),l.create(),l},create:function(){var l=this,u=l._parent,d=t._muted||l._muted||l._parent._muted?0:l._volume;return u._webAudio?(l._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),l._node.gain.setValueAtTime(d,t.ctx.currentTime),l._node.paused=!0,l._node.connect(t.masterGain)):t.noAudio||(l._node=t._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(t._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=u._src,l._node.preload=u._preload===!0?"auto":u._preload,l._node.volume=d*t.volume(),l._node.load()),l},reset:function(){var l=this,u=l._parent;return l._muted=u._muted,l._loop=u._loop,l._volume=u._volume,l._rate=u._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++t._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,u=l._parent;u._duration=Math.ceil(l._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()),l._node.removeEventListener(t._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,u=l._parent;u._duration===1/0&&(u._duration=Math.ceil(l._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},n=function(l){var u=l._src;if(o[u]){l._duration=o[u].duration,c(l);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);a(m.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,u,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(g){h.setRequestHeader(g,l._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}a(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[u],l.load())},s(h)}},s=function(l){try{l.send()}catch{l.onerror()}},a=function(l,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(l).then(m).catch(d):t.ctx.decodeAudioData(l,m,d)},c=function(l,u){u&&!l._duration&&(l._duration=u.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._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 l=/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(l&&d&&d<9){var m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(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 Da<"u"&&(Da.Howler=t,Da.Howl=e),typeof global<"u"?(global.HowlerGlobal=i,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=i,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,n,s){var a=this;if(!a.ctx||!a.ctx.listener)return a;var c=a._orientation;if(e=typeof e!="number"?c[1]:e,r=typeof r!="number"?c[2]:r,o=typeof o!="number"?c[3]:o,n=typeof n!="number"?c[4]:n,s=typeof s!="number"?c[5]:s,typeof t=="number")a._orientation=[t,e,r,o,n,s],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(n,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(s,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(t,e,r,o,n,s);else return c;return a},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 n=r._getSoundIds(e),s=0;s<n.length;s++){var a=r._soundById(n[s]);if(a)if(typeof t=="number")a._stereo=t,a._pos=[t,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&i(a,o),o==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(t,0,0):a._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",a._id);else return a._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"pos",action:function(){n.pos(t,e,r,o)}}),n;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")n._pos=[t,e,r];else return n._pos;for(var s=n._getSoundIds(o),a=0;a<s.length;a++){var c=n._soundById(s[a]);if(c)if(typeof t=="number")c._pos=[t,e,r],c._node&&((!c._panner||c._panner.pan)&&i(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)),n._emit("pos",c._id);else return c._pos}return n},Howl.prototype.orientation=function(t,e,r,o){var n=this;if(!n._webAudio)return n;if(n._state!=="loaded")return n._queue.push({event:"orientation",action:function(){n.orientation(t,e,r,o)}}),n;if(e=typeof e!="number"?n._orientation[1]:e,r=typeof r!="number"?n._orientation[2]:r,typeof o>"u")if(typeof t=="number")n._orientation=[t,e,r];else return n._orientation;for(var s=n._getSoundIds(o),a=0;a<s.length;a++){var c=n._soundById(s[a]);if(c)if(typeof t=="number")c._orientation=[t,e,r],c._node&&(c._panner||(c._pos||(c._pos=n._pos||[0,0,-.5]),i(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)),n._emit("orientation",c._id);else return c._orientation}return n},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,n;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 n=t._soundById(parseInt(e[0],10)),n?n._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var s=t._getSoundIds(o),a=0;a<s.length;a++)if(n=t._soundById(s[a]),n){var c=n._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=n._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):(n._pos||(n._pos=t._pos||[0,0,-.5]),i(n,"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 i=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 lf=gc((Ba,af)=>{(function(i,t){typeof Ba=="object"&&typeof af<"u"?t(Ba):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Ba,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,c,p,l,u,d,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).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(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<n)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,a=y;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<n)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,a=c;a<v;a++)f+=b[s][a]*b[y][a];for(a=c;a<v;a++)b[s][a]=b[s][a]+f*_[a]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,a=c;a<v;a++)f+=b[y][a]*D[a][s];for(a=c;a<v;a++)D[a][s]=D[a][s]+f*D[a][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[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<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,a=c;a<A;a++)f+=b[a][y]*b[a][s];for(u=f/m,a=y;a<A;a++)b[a][s]=b[a][s]+u*b[a][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,a=v-1;0<=a;a--)for(var L=0;L<50;L++){for(I=!1,c=a;0<=c;c--){if(Math.abs(_[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(l=0,p=c-(f=1),y=c;y<a+1&&(u=f*_[y],_[y]=l*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),l=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*l+x*f,b[s][y]=-g*f+x*l}if(x=T[a],c===a){if(x<0&&(T[a]=-x,r))for(s=0;s<v;s++)D[s][a]=-D[s][a];break}for(h=T[c],u=(((g=T[a-1])-x)*(g+x)+((d=_[a-1])-(m=_[a]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=l=1);y<a+1;y++){if(d=_[y],g=T[y],m=f*d,d*=l,x=Math.sqrt(u*u+m*m),u=h*(l=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*l,m=g*f,g*=l,r)for(s=0;s<v;s++)h=D[s][y-1],x=D[s][y],D[s][y-1]=h*l+x*f,D[s][y]=-h*f+x*l;if(x=Math.sqrt(u*u+m*m),u=(l=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*d+l*g,e)for(s=0;s<A;s++)g=b[s][y-1],x=b[s][y],b[s][y-1]=g*l+x*f,b[s][y]=-g*f+x*l}_[c]=0,_[a]=u,T[a]=h}for(y=0;y<v;y++)T[y]<o&&(T[y]=0);return{u:b,q:T,v:D}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var u_={};yc(u_,{default:()=>Ea});module.exports=jf(u_);var Ga=require("three");function Wi(i,t){return Object.setPrototypeOf(i,t),i}function bc(i){return Array.isArray(i)?i:[i]}var Hf=typeof global=="object"&&global&&global.Object===Object&&global,qi=Hf;var Wf=typeof self=="object"&&self&&self.Object===Object&&self,qf=qi||Wf||Function("return this")(),$e=qf;var $f=$e.Symbol,yt=$f;var _c=Object.prototype,Xf=_c.hasOwnProperty,Yf=_c.toString,Vn=yt?yt.toStringTag:void 0;function Kf(i){var t=Xf.call(i,Vn),e=i[Vn];try{i[Vn]=void 0;var r=!0}catch{}var o=Yf.call(i);return r&&(t?i[Vn]=e:delete i[Vn]),o}var Sc=Kf;var Qf=Object.prototype,Zf=Qf.toString;function Jf(i){return Zf.call(i)}var wc=Jf;var eh="[object Null]",th="[object Undefined]",Tc=yt?yt.toStringTag:void 0;function rh(i){return i==null?i===void 0?th:eh:Tc&&Tc in Object(i)?Sc(i):wc(i)}var Dt=rh;function oh(i){return i!=null&&typeof i=="object"}var dt=oh;var nh="[object Symbol]";function ih(i){return typeof i=="symbol"||dt(i)&&Dt(i)==nh}var Mo=ih;function sh(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var $i=sh;var ah=Array.isArray,Xe=ah;var lh=1/0,Ac=yt?yt.prototype:void 0,Cc=Ac?Ac.toString:void 0;function Nc(i){if(typeof i=="string")return i;if(Xe(i))return $i(i,Nc)+"";if(Mo(i))return Cc?Cc.call(i):"";var t=i+"";return t=="0"&&1/i==-lh?"-0":t}var Oc=Nc;function ch(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var mt=ch;function uh(i){return i}var Xi=uh;var ph="[object AsyncFunction]",dh="[object Function]",mh="[object GeneratorFunction]",fh="[object Proxy]";function hh(i){if(!mt(i))return!1;var t=Dt(i);return t==dh||t==mh||t==ph||t==fh}var Do=hh;var gh=$e["__core-js_shared__"],Yi=gh;var Lc=function(){var i=/[^.]+$/.exec(Yi&&Yi.keys&&Yi.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function yh(i){return!!Lc&&Lc in i}var Ic=yh;var xh=Function.prototype,vh=xh.toString;function bh(i){if(i!=null){try{return vh.call(i)}catch{}try{return i+""}catch{}}return""}var Or=bh;var _h=/[\\^$.*+?()[\]{}|]/g,Sh=/^\[object .+?Constructor\]$/,wh=Function.prototype,Th=Object.prototype,Ah=wh.toString,Ch=Th.hasOwnProperty,Nh=RegExp("^"+Ah.call(Ch).replace(_h,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Oh(i){if(!mt(i)||Ic(i))return!1;var t=Do(i)?Nh:Sh;return t.test(Or(i))}var Pc=Oh;function Lh(i,t){return i?.[t]}var Mc=Lh;function Ih(i,t){var e=Mc(i,t);return Pc(e)?e:void 0}var Tt=Ih;var Ph=Tt($e,"WeakMap"),Ki=Ph;var Dc=Object.create,Mh=function(){function i(){}return function(t){if(!mt(t))return{};if(Dc)return Dc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Bc=Mh;function Dh(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Ec=Dh;function Bh(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Qi=Bh;var Eh=800,Gh=16,Rh=Date.now;function Fh(i){var t=0,e=0;return function(){var r=Rh(),o=Gh-(r-e);if(e=r,o>0){if(++t>=Eh)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Gc=Fh;function Vh(i){return function(){return i}}var Rc=Vh;var zh=function(){try{var i=Tt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Bo=zh;var Uh=Bo?function(i,t){return Bo(i,"toString",{configurable:!0,enumerable:!1,value:Rc(t),writable:!0})}:Xi,Fc=Uh;var kh=Gc(Fc),Zi=kh;function jh(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Vc=jh;var Hh=9007199254740991,Wh=/^(?:0|[1-9]\d*)$/;function qh(i,t){var e=typeof i;return t=t??Hh,!!t&&(e=="number"||e!="symbol"&&Wh.test(i))&&i>-1&&i%1==0&&i<t}var Ji=qh;function $h(i,t,e){t=="__proto__"&&Bo?Bo(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Eo=$h;function Xh(i,t){return i===t||i!==i&&t!==t}var Vr=Xh;var Yh=Object.prototype,Kh=Yh.hasOwnProperty;function Qh(i,t,e){var r=i[t];(!(Kh.call(i,t)&&Vr(r,e))||e===void 0&&!(t in i))&&Eo(i,t,e)}var es=Qh;function Zh(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],c=r?r(e[a],i[a],a,e,i):void 0;c===void 0&&(c=i[a]),o?Eo(e,a,c):es(e,a,c)}return e}var zt=Zh;var zc=Math.max;function Jh(i,t,e){return t=zc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=zc(r.length-t,0),s=Array(n);++o<n;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Ec(i,this,a)}}var ts=Jh;function eg(i,t){return Zi(ts(i,t,Xi),i+"")}var Uc=eg;var tg=9007199254740991;function rg(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=tg}var rs=rg;function og(i){return i!=null&&rs(i.length)&&!Do(i)}var zr=og;function ng(i,t,e){if(!mt(e))return!1;var r=typeof t;return(r=="number"?zr(e)&&Ji(t,e.length):r=="string"&&t in e)?Vr(e[t],i):!1}var kc=ng;function ig(i){return Uc(function(t,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&kc(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),t=Object(t);++r<o;){var a=e[r];a&&i(t,a,r,n)}return t})}var jc=ig;var sg=Object.prototype;function ag(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||sg;return i===e}var Go=ag;function lg(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Hc=lg;var cg="[object Arguments]";function ug(i){return dt(i)&&Dt(i)==cg}var Fa=ug;var Wc=Object.prototype,pg=Wc.hasOwnProperty,dg=Wc.propertyIsEnumerable,mg=Fa(function(){return arguments}())?Fa:function(i){return dt(i)&&pg.call(i,"callee")&&!dg.call(i,"callee")},uo=mg;function fg(){return!1}var qc=fg;var Yc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$c=Yc&&typeof module=="object"&&module&&!module.nodeType&&module,hg=$c&&$c.exports===Yc,Xc=hg?$e.Buffer:void 0,gg=Xc?Xc.isBuffer:void 0,yg=gg||qc,Ro=yg;var xg="[object Arguments]",vg="[object Array]",bg="[object Boolean]",_g="[object Date]",Sg="[object Error]",wg="[object Function]",Tg="[object Map]",Ag="[object Number]",Cg="[object Object]",Ng="[object RegExp]",Og="[object Set]",Lg="[object String]",Ig="[object WeakMap]",Pg="[object ArrayBuffer]",Mg="[object DataView]",Dg="[object Float32Array]",Bg="[object Float64Array]",Eg="[object Int8Array]",Gg="[object Int16Array]",Rg="[object Int32Array]",Fg="[object Uint8Array]",Vg="[object Uint8ClampedArray]",zg="[object Uint16Array]",Ug="[object Uint32Array]",Me={};Me[Dg]=Me[Bg]=Me[Eg]=Me[Gg]=Me[Rg]=Me[Fg]=Me[Vg]=Me[zg]=Me[Ug]=!0;Me[xg]=Me[vg]=Me[Pg]=Me[bg]=Me[Mg]=Me[_g]=Me[Sg]=Me[wg]=Me[Tg]=Me[Ag]=Me[Cg]=Me[Ng]=Me[Og]=Me[Lg]=Me[Ig]=!1;function kg(i){return dt(i)&&rs(i.length)&&!!Me[Dt(i)]}var Kc=kg;function jg(i){return function(t){return i(t)}}var Fo=jg;var Qc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zn=Qc&&typeof module=="object"&&module&&!module.nodeType&&module,Hg=zn&&zn.exports===Qc,Va=Hg&&qi.process,Wg=function(){try{var i=zn&&zn.require&&zn.require("util").types;return i||Va&&Va.binding&&Va.binding("util")}catch{}}(),Lr=Wg;var Zc=Lr&&Lr.isTypedArray,qg=Zc?Fo(Zc):Kc,os=qg;var $g=Object.prototype,Xg=$g.hasOwnProperty;function Yg(i,t){var e=Xe(i),r=!e&&uo(i),o=!e&&!r&&Ro(i),n=!e&&!r&&!o&&os(i),s=e||r||o||n,a=s?Hc(i.length,String):[],c=a.length;for(var p in i)(t||Xg.call(i,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||n&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Ji(p,c)))&&a.push(p);return a}var ns=Yg;function Kg(i,t){return function(e){return i(t(e))}}var is=Kg;var Qg=is(Object.keys,Object),Jc=Qg;var Zg=Object.prototype,Jg=Zg.hasOwnProperty;function ey(i){if(!Go(i))return Jc(i);var t=[];for(var e in Object(i))Jg.call(i,e)&&e!="constructor"&&t.push(e);return t}var eu=ey;function ty(i){return zr(i)?ns(i):eu(i)}var Vo=ty;function ry(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var tu=ry;var oy=Object.prototype,ny=oy.hasOwnProperty;function iy(i){if(!mt(i))return tu(i);var t=Go(i),e=[];for(var r in i)r=="constructor"&&(t||!ny.call(i,r))||e.push(r);return e}var ru=iy;function sy(i){return zr(i)?ns(i,!0):ru(i)}var nr=sy;var ay=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ly=/^\w*$/;function cy(i,t){if(Xe(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Mo(i)?!0:ly.test(i)||!ay.test(i)||t!=null&&i in Object(t)}var ou=cy;var uy=Tt(Object,"create"),Ir=uy;function py(){this.__data__=Ir?Ir(null):{},this.size=0}var nu=py;function dy(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var iu=dy;var my="__lodash_hash_undefined__",fy=Object.prototype,hy=fy.hasOwnProperty;function gy(i){var t=this.__data__;if(Ir){var e=t[i];return e===my?void 0:e}return hy.call(t,i)?t[i]:void 0}var su=gy;var yy=Object.prototype,xy=yy.hasOwnProperty;function vy(i){var t=this.__data__;return Ir?t[i]!==void 0:xy.call(t,i)}var au=vy;var by="__lodash_hash_undefined__";function _y(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Ir&&t===void 0?by:t,this}var lu=_y;function zo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}zo.prototype.clear=nu;zo.prototype.delete=iu;zo.prototype.get=su;zo.prototype.has=au;zo.prototype.set=lu;var za=zo;function Sy(){this.__data__=[],this.size=0}var cu=Sy;function wy(i,t){for(var e=i.length;e--;)if(Vr(i[e][0],t))return e;return-1}var Ur=wy;var Ty=Array.prototype,Ay=Ty.splice;function Cy(i){var t=this.__data__,e=Ur(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Ay.call(t,e,1),--this.size,!0}var uu=Cy;function Ny(i){var t=this.__data__,e=Ur(t,i);return e<0?void 0:t[e][1]}var pu=Ny;function Oy(i){return Ur(this.__data__,i)>-1}var du=Oy;function Ly(i,t){var e=this.__data__,r=Ur(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var mu=Ly;function Uo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Uo.prototype.clear=cu;Uo.prototype.delete=uu;Uo.prototype.get=pu;Uo.prototype.has=du;Uo.prototype.set=mu;var kr=Uo;var Iy=Tt($e,"Map"),jr=Iy;function Py(){this.size=0,this.__data__={hash:new za,map:new(jr||kr),string:new za}}var fu=Py;function My(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var hu=My;function Dy(i,t){var e=i.__data__;return hu(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Hr=Dy;function By(i){var t=Hr(this,i).delete(i);return this.size-=t?1:0,t}var gu=By;function Ey(i){return Hr(this,i).get(i)}var yu=Ey;function Gy(i){return Hr(this,i).has(i)}var xu=Gy;function Ry(i,t){var e=Hr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var vu=Ry;function ko(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}ko.prototype.clear=fu;ko.prototype.delete=gu;ko.prototype.get=yu;ko.prototype.has=xu;ko.prototype.set=vu;var Un=ko;var Fy="Expected a function";function Ua(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Fy);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,r);return e.cache=n.set(o,s)||n,s};return e.cache=new(Ua.Cache||Un),e}Ua.Cache=Un;var bu=Ua;var Vy=500;function zy(i){var t=bu(i,function(r){return e.size===Vy&&e.clear(),r}),e=t.cache;return t}var _u=zy;var Uy=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ky=/\\(\\)?/g,jy=_u(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Uy,function(e,r,o,n){t.push(o?n.replace(ky,"$1"):r||e)}),t}),Su=jy;function Hy(i){return i==null?"":Oc(i)}var wu=Hy;function Wy(i,t){return Xe(i)?i:ou(i,t)?[i]:Su(wu(i))}var jo=Wy;var qy=1/0;function $y(i){if(typeof i=="string"||Mo(i))return i;var t=i+"";return t=="0"&&1/i==-qy?"-0":t}var ss=$y;function Xy(i,t){t=jo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[ss(t[e++])];return e&&e==r?i:void 0}var Tu=Xy;function Yy(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Ho=Yy;var Au=yt?yt.isConcatSpreadable:void 0;function Ky(i){return Xe(i)||uo(i)||!!(Au&&i&&i[Au])}var Cu=Ky;function Nu(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Cu),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Nu(a,t-1,e,r,o):Ho(o,a):r||(o[o.length]=a)}return o}var Ou=Nu;function Qy(i){var t=i==null?0:i.length;return t?Ou(i,1):[]}var Lu=Qy;function Zy(i){return Zi(ts(i,void 0,Lu),i+"")}var Iu=Zy;var Jy=is(Object.getPrototypeOf,Object),Wo=Jy;var e0="[object Object]",t0=Function.prototype,r0=Object.prototype,Pu=t0.toString,o0=r0.hasOwnProperty,n0=Pu.call(Object);function i0(i){if(!dt(i)||Dt(i)!=e0)return!1;var t=Wo(i);if(t===null)return!0;var e=o0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Pu.call(e)==n0}var as=i0;function s0(i,t,e){var r=-1,o=i.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 n=Array(o);++r<o;)n[r]=i[r+t];return n}var Mu=s0;function a0(){this.__data__=new kr,this.size=0}var Du=a0;function l0(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Bu=l0;function c0(i){return this.__data__.get(i)}var Eu=c0;function u0(i){return this.__data__.has(i)}var Gu=u0;var p0=200;function d0(i,t){var e=this.__data__;if(e instanceof kr){var r=e.__data__;if(!jr||r.length<p0-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Un(r)}return e.set(i,t),this.size=e.size,this}var Ru=d0;function qo(i){var t=this.__data__=new kr(i);this.size=t.size}qo.prototype.clear=Du;qo.prototype.delete=Bu;qo.prototype.get=Eu;qo.prototype.has=Gu;qo.prototype.set=Ru;var ls=qo;function m0(i,t){return i&&zt(t,Vo(t),i)}var Fu=m0;function f0(i,t){return i&&zt(t,nr(t),i)}var Vu=f0;var ju=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zu=ju&&typeof module=="object"&&module&&!module.nodeType&&module,h0=zu&&zu.exports===ju,Uu=h0?$e.Buffer:void 0,ku=Uu?Uu.allocUnsafe:void 0;function g0(i,t){if(t)return i.slice();var e=i.length,r=ku?ku(e):new i.constructor(e);return i.copy(r),r}var cs=g0;function y0(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var s=i[e];t(s,e,i)&&(n[o++]=s)}return n}var Hu=y0;function x0(){return[]}var us=x0;var v0=Object.prototype,b0=v0.propertyIsEnumerable,Wu=Object.getOwnPropertySymbols,_0=Wu?function(i){return i==null?[]:(i=Object(i),Hu(Wu(i),function(t){return b0.call(i,t)}))}:us,$o=_0;function S0(i,t){return zt(i,$o(i),t)}var qu=S0;var w0=Object.getOwnPropertySymbols,T0=w0?function(i){for(var t=[];i;)Ho(t,$o(i)),i=Wo(i);return t}:us,ps=T0;function A0(i,t){return zt(i,ps(i),t)}var $u=A0;function C0(i,t,e){var r=t(i);return Xe(i)?r:Ho(r,e(i))}var ds=C0;function N0(i){return ds(i,Vo,$o)}var Xu=N0;function O0(i){return ds(i,nr,ps)}var ms=O0;var L0=Tt($e,"DataView"),fs=L0;var I0=Tt($e,"Promise"),hs=I0;var P0=Tt($e,"Set"),gs=P0;var Yu="[object Map]",M0="[object Object]",Ku="[object Promise]",Qu="[object Set]",Zu="[object WeakMap]",Ju="[object DataView]",D0=Or(fs),B0=Or(jr),E0=Or(hs),G0=Or(gs),R0=Or(Ki),po=Dt;(fs&&po(new fs(new ArrayBuffer(1)))!=Ju||jr&&po(new jr)!=Yu||hs&&po(hs.resolve())!=Ku||gs&&po(new gs)!=Qu||Ki&&po(new Ki)!=Zu)&&(po=function(i){var t=Dt(i),e=t==M0?i.constructor:void 0,r=e?Or(e):"";if(r)switch(r){case D0:return Ju;case B0:return Yu;case E0:return Ku;case G0:return Qu;case R0:return Zu}return t});var Xo=po;var F0=Object.prototype,V0=F0.hasOwnProperty;function z0(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&V0.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ep=z0;var U0=$e.Uint8Array,ka=U0;function k0(i){var t=new i.constructor(i.byteLength);return new ka(t).set(new ka(i)),t}var Yo=k0;function j0(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var tp=j0;var H0=/\w*$/;function W0(i){var t=new i.constructor(i.source,H0.exec(i));return t.lastIndex=i.lastIndex,t}var rp=W0;var op=yt?yt.prototype:void 0,np=op?op.valueOf:void 0;function q0(i){return np?Object(np.call(i)):{}}var ip=q0;function $0(i,t){var e=t?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ys=$0;var X0="[object Boolean]",Y0="[object Date]",K0="[object Map]",Q0="[object Number]",Z0="[object RegExp]",J0="[object Set]",ex="[object String]",tx="[object Symbol]",rx="[object ArrayBuffer]",ox="[object DataView]",nx="[object Float32Array]",ix="[object Float64Array]",sx="[object Int8Array]",ax="[object Int16Array]",lx="[object Int32Array]",cx="[object Uint8Array]",ux="[object Uint8ClampedArray]",px="[object Uint16Array]",dx="[object Uint32Array]";function mx(i,t,e){var r=i.constructor;switch(t){case rx:return Yo(i);case X0:case Y0:return new r(+i);case ox:return tp(i,e);case nx:case ix:case sx:case ax:case lx:case cx:case ux:case px:case dx:return ys(i,e);case K0:return new r;case Q0:case ex:return new r(i);case Z0:return rp(i);case J0:return new r;case tx:return ip(i)}}var sp=mx;function fx(i){return typeof i.constructor=="function"&&!Go(i)?Bc(Wo(i)):{}}var xs=fx;var hx="[object Map]";function gx(i){return dt(i)&&Xo(i)==hx}var ap=gx;var lp=Lr&&Lr.isMap,yx=lp?Fo(lp):ap,cp=yx;var xx="[object Set]";function vx(i){return dt(i)&&Xo(i)==xx}var up=vx;var pp=Lr&&Lr.isSet,bx=pp?Fo(pp):up,dp=bx;var _x=1,Sx=2,wx=4,mp="[object Arguments]",Tx="[object Array]",Ax="[object Boolean]",Cx="[object Date]",Nx="[object Error]",fp="[object Function]",Ox="[object GeneratorFunction]",Lx="[object Map]",Ix="[object Number]",hp="[object Object]",Px="[object RegExp]",Mx="[object Set]",Dx="[object String]",Bx="[object Symbol]",Ex="[object WeakMap]",Gx="[object ArrayBuffer]",Rx="[object DataView]",Fx="[object Float32Array]",Vx="[object Float64Array]",zx="[object Int8Array]",Ux="[object Int16Array]",kx="[object Int32Array]",jx="[object Uint8Array]",Hx="[object Uint8ClampedArray]",Wx="[object Uint16Array]",qx="[object Uint32Array]",Pe={};Pe[mp]=Pe[Tx]=Pe[Gx]=Pe[Rx]=Pe[Ax]=Pe[Cx]=Pe[Fx]=Pe[Vx]=Pe[zx]=Pe[Ux]=Pe[kx]=Pe[Lx]=Pe[Ix]=Pe[hp]=Pe[Px]=Pe[Mx]=Pe[Dx]=Pe[Bx]=Pe[jx]=Pe[Hx]=Pe[Wx]=Pe[qx]=!0;Pe[Nx]=Pe[fp]=Pe[Ex]=!1;function vs(i,t,e,r,o,n){var s,a=t&_x,c=t&Sx,p=t&wx;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!mt(i))return i;var l=Xe(i);if(l){if(s=ep(i),!a)return Qi(i,s)}else{var u=Xo(i),d=u==fp||u==Ox;if(Ro(i))return cs(i,a);if(u==hp||u==mp||d&&!o){if(s=c||d?{}:xs(i),!a)return c?$u(i,Vu(s,i)):qu(i,Fu(s,i))}else{if(!Pe[u])return o?i:{};s=sp(i,u,a)}}n||(n=new ls);var m=n.get(i);if(m)return m;n.set(i,s),dp(i)?i.forEach(function(g){s.add(vs(g,t,e,g,i,n))}):cp(i)&&i.forEach(function(g,x){s.set(x,vs(g,t,e,x,i,n))});var f=p?c?ms:Xu:c?nr:Vo,h=l?void 0:f(i);return Vc(h||i,function(g,x){h&&(x=g,g=i[x]),es(s,x,vs(g,t,e,x,i,n))}),s}var bs=vs;var $x=1,Xx=4;function Yx(i){return bs(i,$x|Xx)}var kn=Yx;function Kx(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var c=s[i?a:++o];if(e(n[c],c,n)===!1)break}return t}}var gp=Kx;var Qx=gp(),yp=Qx;function Zx(i,t,e){(e!==void 0&&!Vr(i[t],e)||e===void 0&&!(t in i))&&Eo(i,t,e)}var jn=Zx;function Jx(i){return dt(i)&&zr(i)}var xp=Jx;function ev(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var Hn=ev;function tv(i){return zt(i,nr(i))}var vp=tv;function rv(i,t,e,r,o,n,s){var a=Hn(i,e),c=Hn(t,e),p=s.get(c);if(p){jn(i,e,p);return}var l=n?n(a,c,e+"",i,t,s):void 0,u=l===void 0;if(u){var d=Xe(c),m=!d&&Ro(c),f=!d&&!m&&os(c);l=c,d||m||f?Xe(a)?l=a:xp(a)?l=Qi(a):m?(u=!1,l=cs(c,!0)):f?(u=!1,l=ys(c,!0)):l=[]:as(c)||uo(c)?(l=a,uo(a)?l=vp(a):(!mt(a)||Do(a))&&(l=xs(c))):u=!1}u&&(s.set(c,l),o(l,c,r,n,s),s.delete(c)),jn(i,e,l)}var bp=rv;function _p(i,t,e,r,o){i!==t&&yp(t,function(n,s){if(o||(o=new ls),mt(n))bp(i,t,s,e,_p,r,o);else{var a=r?r(Hn(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),jn(i,s,a)}},nr)}var Sp=_p;function ov(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var wp=ov;function nv(i,t){return t.length<2?i:Tu(i,Mu(t,0,-1))}var Tp=nv;var iv=jc(function(i,t,e){Sp(i,t,e)}),mo=iv;function sv(i,t){return t=jo(t,i),i=Tp(i,t),i==null||delete i[ss(wp(t))]}var Ap=sv;function av(i){return as(i)?void 0:i}var Cp=av;var lv=1,cv=2,uv=4,pv=Iu(function(i,t){var e={};if(i==null)return e;var r=!1;t=$i(t,function(n){return n=jo(n,i),r||(r=n.length>1),n}),zt(i,ms(i),e),r&&(e=bs(e,lv|cv|uv,Cp));for(var o=t.length;o--;)Ap(e,t[o]);return e}),Ko=pv;var Qo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Qo||(Qo={}));var fo;(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(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(fo||(fo={}));var Np;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n]}e.lerp=t})(Np||(Np={}));var Zo;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function t(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=t;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function r(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=r})(Zo||(Zo={}));var Op;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Op||(Op={}));var Wr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var c=0,p=s.length;c<p;c+=3){let l=n[3]*s[c]+n[7]*s[c+1]+n[11]*s[c+2]+n[15];a[c]=(n[0]*s[c]+n[4]*s[c+1]+n[8]*s[c+2]+n[12])/l,a[c+1]=(n[1]*s[c]+n[5]*s[c+1]+n[9]*s[c+2]+n[13])/l,a[c+2]=(n[2]*s[c]+n[6]*s[c+1]+n[10]*s[c+2]+n[14])/l}return a}o.applyMatrix4=r})(Wr||(Wr={}));var Bt;(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 n(p){return p=Math.floor(p),{r:(p>>16&255)/255,g:(p>>8&255)/255,b:(p&255)/255}}c.fromHex=n;function s(p,l){return p.r===l.r&&p.g===l.g&&p.b===l.b}c.equals=s;function a(p,l,u){return{r:p.r+(l.r-p.r)*u,g:p.g+(l.g-p.g)*u,b:p.b+(l.b-p.b)*u}}c.lerp=a})(Bt||(Bt={}));var Et;(s=>{s.white={...Bt.white,a:1};function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,c){return{...Bt.fromHex(a),a:c}}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,c){return Bt.equals(a,c)&&a.a===c.a}s.equals=o;function n(a,c,p){return{r:a.r+(c.r-a.r)*p,g:a.g+(c.g-a.g)*p,b:a.b+(c.b-a.b)*p,a:a.a+(c.a-a.a)*p}}s.lerp=n})(Et||(Et={}));var _s;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(_s||(_s={}));var Lp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Lp||(Lp={}));var Ip;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Ip||(Ip={}));var Ss;(t=>{function i(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=i})(Ss||(Ss={}));var ke=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,ke.prototype),n}}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:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,ke.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,ke.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Wn(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&Wn(r)}return Object.freeze(i)}function Pp(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var ws=class extends Error{};function ir(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(s)}return r}function Ts(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Mp(){return typeof process<"u"}function Dp(i,t){for(let e of i)t(e.id,e.data),Dp(e.children,t)}function Bp(i,t){t(i.id,i.data);for(let e of i.children)Bp(e,t)}var Ut=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ut.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(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&&Bp(o,r)}}traverse(e){Dp(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 n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(l=>l.id===e);if(a<0)throw new Error("not expected");let c=s[a];return s=[...s],s[a]={...c,data:r},this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,c=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let p=n.findIndex(l=>l.id===c);if(p<0)throw new Error;n=[...n],n[p]={...n[p],children:a}}Object.setPrototypeOf(n,Ut.prototype);let s=n;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:n,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),l={fi:o,id:n,data:s,children:a};return p=[...p,l],p.sort((d,m)=>d.fi-m.fi),e.localIndex=p.indexOf(l),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:n}}}}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 n=this.childrenArray(o),s=n.findIndex(p=>p.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===n)throw new ws("cyclic tree");m=this.parent(m)}}let s=this.parent(n);if(s===void 0)return null;let a=s,c=this.childrenArray(s),p=c.findIndex(m=>m.id===n);c=[...c];let l=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((m,f)=>m.fi-f.fi),e.localIndex=c.indexOf(l),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:a,fi:d,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].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),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Pp(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),s=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=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 n=this.childrenArray(e);if(r===null){if(n.length===0)return ir(0,o,o);{let s=n[0].fi;return ir(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=n.find(c=>c.fi>s.fi);if(a===void 0){let c=n[n.length-1].fi;return ir(c,c+o,o)}else return ir(s.fi,a.fi,o)}}};var As;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},s=[...e],a=!1;if(o)for(let c of Object.keys(o)){let p=parseInt(c);if(isNaN(p))throw new Error("wrong index");n[c]=s[p],s[p]=o[c],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s={...e},a=!1;if(o)for(let c of Object.keys(o)){n[c]=s[c];let p=o[c];p===void 0?delete s[c]:s[c]=p,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}}t.runOp=i})(As||(As={}));var Ee=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ee.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Wn(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 n=this,s=n.findIndex(p=>p.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ee.prototype);let r=e;return Mp()||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:n}=e,s=this,a={fi:r,id:o,data:n};return s=[...s,a],s.sort((p,l)=>p.fi-l.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,n=o.findIndex(c=>c.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(l=>l.id===o);if(s===-1)return null;let a=n[s].fi,c={...n[s],fi:r};return n[s]=c,n.sort((l,u)=>l.fi-u.fi),e.localIndex=n.indexOf(c),{data:this.modifyArrayBy(n),actual:e,reverse:{type:6,fi:a,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 ir(0,r,r);{let n=o[0].fi;return ir(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return ir(a,a+r,r)}else return ir(n.fi,s.fi,r)}}};var Ep=Symbol(),Ns=Symbol(),Jo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Cs);){let n=r._path,s=r._current;if(n!==""&&o.splice(0,0,n),r=r._parent,r===null)return;r.update(n,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ns];r&&r(),delete this._children[t]}}}},Ha=class extends Jo{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,As.runOp(this._current,t))}},Wa=class extends Jo{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,ke.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Gp={get(i,t){if(t===Ns)return()=>{i._parent=null};if(t===Ep)return i._current;let{_current:e,_children:r}=i;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 n=e[t],s=Os(i,t,n);return s!==n?(r===void 0&&(r={},i._children=r),r[t]=s,s):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},dv={...Gp,set(i,t,e){let r={type:0,props:{[t]:Xa(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},mv={...Gp,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},en=class extends Jo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ns]=()=>{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 n=e.get(t)?.data,s=Os(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}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 n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],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)}},tn=class extends Jo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ns]=()=>{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 n=e.get(t)?.data,s=Os(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}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 n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function ja(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ls.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var Cs=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){ja(this.ts,e,t),ja(this.actual,r,t),ja(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Os(i,t,e){return e instanceof Ut?new en(i,t,e):e instanceof Ee?new tn(i,t,e):e instanceof ke?new Proxy(new Wa(i,t,e),mv):e!==null&&typeof e=="object"?Ts(e)?e:new Proxy(new Ha(i,t,e),dv):e}function qa(i){let t=new Cs(i);return[Os(t,"",i),t]}function $a(i,t){let[e,r]=qa(i);return t(e),r.result()}function Xa(i){return i instanceof en||i instanceof tn?i._current:i!==null&&typeof i=="object"?i[Ep]:i}var Ls;(r=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}r.equal=i;function t(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let c={...n};return Object.keys(a).forEach(p=>{delete c[p]}),c}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Ut||o instanceof en)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Ee||o instanceof tn)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}r.zoom=e})(Ls||(Ls={}));var Is=class{},qn=class extends Is{constructor(e){super();this.id=e}},$n=class extends Is{constructor(e){super();this.data=e}};var Ka;try{Ka=new TextDecoder}catch{}var te,$r,w=0;var Hp=[],Qa=Hp,Za=0,At={},we,qr,kt=0,sr=0,Gt,Pr,xt=[],Oe,Rp={useRecords:!1,mapsAsObjects:!0},Xn=class{},el=new Xn;el.name="MessagePack 0xC1";var rn=!1,ar=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 Yp(()=>(Ms(),this?this.unpack(t,e):ar.prototype.unpack.call(Rp,t,e)));$r=e>-1?e:t.length,w=0,Za=0,sr=0,qr=null,Qa=Hp,Gt=null,te=t;try{Oe=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 ar){if(At=this,this.structures)return we=this.structures,Ps();(!we||we.length>0)&&(we=[])}else At=Rp,(!we||we.length>0)&&(we=[]);return Ps()}unpackMultiple(t,e){let r,o=0;try{rn=!0;let n=t.length,s=this?this.unpack(t,n):Es.unpack(t,n);if(e){for(e(s);w<n;)if(o=w,e(Ps())===!1)return}else{for(r=[s];w<n;)o=w,r.push(Ps());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{rn=!1,Ms()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ps(){try{if(!At.trusted&&!rn){let t=we.sharedLength||0;t<we.length&&(we.length=t)}let i=Fe();if(w==$r)we.restoreStructures&&Fp(),we=null,te=null,Pr&&(Pr=null);else if(w>$r){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!rn)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw we.restoreStructures&&Fp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Fp(){for(let i in we.restoreStructures)we[i]=we.restoreStructures[i];we.restoreStructures=null}function Fe(){let i=te[w++];if(i<160)if(i<128){if(i<64)return i;{let t=we[i&63]||At.getStructures&&Wp()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[$p()]=Fe();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Fe(),Fe());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Fe();return t}else if(i<192){let t=i-160;if(sr>=w)return qr.slice(w-kt,(w+=t)-kt);if(sr==0&&$r<140){let e=t<16?rl(t):qp(t);if(e!=null)return e}return Ja(t)}else{let t;switch(i){case 192:return null;case 193:return Gt?(t=Fe(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ya(te[w++]);case 197:return t=Oe.getUint16(w),w+=2,Ya(t);case 198:return t=Oe.getUint32(w),w+=4,Ya(t);case 199:return ho(te[w++]);case 200:return t=Oe.getUint16(w),w+=2,ho(t);case 201:return t=Oe.getUint32(w),w+=4,ho(t);case 202:if(t=Oe.getFloat32(w),At.useFloat32>2){let e=Bs[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=Oe.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=Oe.getUint16(w),w+=2,t;case 206:return t=Oe.getUint32(w),w+=4,t;case 207:return At.int64AsNumber?(t=Oe.getUint32(w)*4294967296,t+=Oe.getUint32(w+4)):t=Oe.getBigUint64(w),w+=8,t;case 208:return Oe.getInt8(w++);case 209:return t=Oe.getInt16(w),w+=2,t;case 210:return t=Oe.getInt32(w),w+=4,t;case 211:return At.int64AsNumber?(t=Oe.getInt32(w)*4294967296,t+=Oe.getUint32(w+4)):t=Oe.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return jp(te[w++]&63);{let e=xt[t];if(e)return e.read?(w++,e.read(Fe())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,jp(te[w++]&63,te[w++])):ho(2);case 214:return ho(4);case 215:return ho(8);case 216:return ho(16);case 217:return t=te[w++],sr>=w?qr.slice(w-kt,(w+=t)-kt):hv(t);case 218:return t=Oe.getUint16(w),w+=2,sr>=w?qr.slice(w-kt,(w+=t)-kt):gv(t);case 219:return t=Oe.getUint32(w),w+=4,sr>=w?qr.slice(w-kt,(w+=t)-kt):yv(t);case 220:return t=Oe.getUint16(w),w+=2,zp(t);case 221:return t=Oe.getUint32(w),w+=4,zp(t);case 222:return t=Oe.getUint16(w),w+=2,Up(t);case 223:return t=Oe.getUint32(w),w+=4,Up(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var fv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function tl(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>fv.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Fe);return i.highByte===0&&(i.read=Vp(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Fe()}return r}return e.count=0,i.highByte===0?Vp(t,e):e}var Vp=(i,t)=>function(){let e=te[w++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=we[r]||Wp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Wp(){let i=Yp(()=>(te=null,At.getStructures()));return we=At._mergeStructures(i,we)}var Ja=Ds,hv=Ds,gv=Ds,yv=Ds;function Ds(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ka)return Ka.decode(te.subarray(w,w+=i));let e=w+i,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[w++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[w++]&63,s=te[w++]&63,a=te[w++]&63,c=(o&7)<<18|n<<12|s<<6|a;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+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function zp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Fe();return t}function Up(i){if(At.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[$p()]=Fe();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Fe(),Fe());return t}}var nt=String.fromCharCode;function qp(i){let t=w,e=new Array(i);for(let r=0;r<i;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return nt.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return nt(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(i<3)return nt(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return nt(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(i<6){if(i===4)return nt(t,e,r,o);{let n=te[w++];if((n&128)>0){w-=5;return}return nt(t,e,r,o,n)}}else if(i<8){let n=te[w++],s=te[w++];if((n&128)>0||(s&128)>0){w-=6;return}if(i<7)return nt(t,e,r,o,n,s);let a=te[w++];if((a&128)>0){w-=7;return}return nt(t,e,r,o,n,s,a)}else{let n=te[w++],s=te[w++],a=te[w++],c=te[w++];if((n&128)>0||(s&128)>0||(a&128)>0||(c&128)>0){w-=8;return}if(i<10){if(i===8)return nt(t,e,r,o,n,s,a,c);{let p=te[w++];if((p&128)>0){w-=9;return}return nt(t,e,r,o,n,s,a,c,p)}}else if(i<12){let p=te[w++],l=te[w++];if((p&128)>0||(l&128)>0){w-=10;return}if(i<11)return nt(t,e,r,o,n,s,a,c,p,l);let u=te[w++];if((u&128)>0){w-=11;return}return nt(t,e,r,o,n,s,a,c,p,l,u)}else{let p=te[w++],l=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(l&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(i<14){if(i===12)return nt(t,e,r,o,n,s,a,c,p,l,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return nt(t,e,r,o,n,s,a,c,p,l,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(i<15)return nt(t,e,r,o,n,s,a,c,p,l,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return nt(t,e,r,o,n,s,a,c,p,l,u,d,m,f,h)}}}}}function Ya(i){return At.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=i):te.subarray(w,w+=i)}function ho(i){let t=te[w++];if(xt[t])return xt[t](te.subarray(w,w+=i));throw new Error("Unknown extension type "+t)}var kp=new Array(4096);function $p(){let i=te[w++];if(i>=160&&i<192){if(i=i-160,sr>=w)return qr.slice(w-kt,(w+=i)-kt);if(!(sr==0&&$r<180))return Ja(i)}else return w--,Fe();let t=(i<<5^(i>1?Oe.getUint16(w):i>0?te[w]:0))&4095,e=kp[t],r=w,o=w+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Oe.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],kp[t]=e,e.bytes=i;r<o;)n=Oe.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?rl(i):qp(i);return a!=null?e.string=a:e.string=Ja(i)}var jp=(i,t)=>{var e=Fe();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=we[i];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[i]=o),we[i]=e,e.read=tl(e,r),e.read()},Xp=typeof self=="object"?self:global;xt[0]=()=>{};xt[0].noBuffer=!0;xt[101]=()=>{let i=Fe();return(Xp[i[0]]||Error)(i[1])};xt[105]=i=>{let t=Oe.getUint32(w-4);Pr||(Pr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let n=Fe();return o.used?Object.assign(r,n):(o.target=n,n)};xt[112]=i=>{let t=Oe.getUint32(w-4),e=Pr.get(t);return e.used=!0,e.target};xt[115]=()=>new Set(Fe());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");xt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Xp[e](Uint8Array.prototype.slice.call(i,1).buffer)};xt[120]=()=>{let i=Fe();return new RegExp(i[0],i[1])};xt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=w;w+=t-4,Gt=[Fe(),Fe()],Gt.position0=0,Gt.position1=0;let r=w;w=e;try{return Fe()}finally{w=r}};xt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Yp(i){let t=$r,e=w,r=Za,o=kt,n=sr,s=qr,a=Qa,c=Pr,p=Gt,l=new Uint8Array(te.slice(0,$r)),u=we,d=we.slice(0,we.length),m=At,f=rn,h=i();return $r=t,w=e,Za=r,kt=o,sr=n,qr=s,Qa=a,Pr=c,Gt=p,te=l,rn=f,we=u,we.splice(0,we.length,...d),At=m,Oe=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function Ms(){te=null,Pr=null,we=null}function Kp(i){i.unpack?xt[i.type]=i.unpack:xt[i.type]=i}var Bs=new Array(147);for(let i=0;i<256;i++)Bs[i]=+("1e"+Math.floor(45.15-i*.30103));var Es=new ar({useRecords:!1}),xv=Es.unpack,vv=Es.unpackMultiple,bv=Es.unpack,Gs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},_v=new Float32Array(1),UO=new Uint8Array(_v.buffer,0,4);var Rs;try{Rs=new TextEncoder}catch{}var Fs,il,Vs=typeof Buffer<"u",nl=Vs?Buffer.allocUnsafeSlow:Uint8Array,ed=Vs?Buffer:Uint8Array,Qp=Vs?4294967296:2144337920,R,je,O=0,lr,cr=null,Sv=/[\u0080-\uFFFF]/,Yn=Symbol("record-id"),go=class extends ar{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,c=0,p=ed.prototype.utf8Write?function(y,I,T){return R.utf8Write(y,I,T)}:Rs&&Rs.encodeInto?function(y,I){return Rs.encodeInto(y,R.subarray(I)).written}:!1,l=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,I){if(R||(R=new nl(8192),je=new DataView(R.buffer,0,8192),O=0),lr=R.length-10,lr-O<2048?(R=new nl(R.length),je=new DataView(R.buffer,0,R.length),lr=R.length-10,O=0):O=O+7&2147483640,r=O,a=l.structuredClone?new Map:null,l.bundleStrings?(cr=["",""],R[O++]=214,R[O++]=98,cr.position=O-r,O+=4):cr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.getStructures()));let T=o.sharedLength||0;if(T>m)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 C=o[L];if(!C)continue;let N,j=o.transitions;for(let W=0,ne=C.length;W<ne;W++){let ue=C[W];N=j[ue],N||(N=j[ue]=Object.create(null)),j=N}j[Yn]=L+64}c=T}u||(o.nextId=T+64)}n&&(n=!1),s=o||[];try{if(b(y),cr){je.setUint32(cr.position+r,O-cr.position-r);let T=cr;cr=null,b(T[0]),b(T[1])}if(l.offset=O,a&&a.idsToInsert){O+=a.idsToInsert.length*6,O>lr&&S(O),l.offset=O;let T=Tv(R.subarray(r,O),a.idsToInsert);return a=null,T}return I&rd?(R.start=r,R.end=O,R):R.subarray(r,O)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=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][Yn]=0;v=[]}if(n&&l.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let L=R.subarray(r,O);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(y)):(c=T,L)}}I&Pv&&(O=r)}};let b=y=>{O>lr&&(R=S(O));var I=typeof y,T;if(I==="string"){let L=y.length;if(cr&&L>=8&&L<4096){let j=Sv.test(y);cr[j?0:1]+=y,R[O++]=193,b(j?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let N=L*3;if(O+N>lr&&(R=S(O+N)),L<64||!p){let j,W,ne,ue=O+C;for(j=0;j<L;j++)W=y.charCodeAt(j),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),j++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);T=ue-O-C}else T=p(y,O+C,N);T<32?R[O++]=160|T:T<256?(C<2&&R.copyWithin(O+2,O+1,O+1+T),R[O++]=217,R[O++]=T):T<65536?(C<3&&R.copyWithin(O+3,O+2,O+2+T),R[O++]=218,R[O++]=T>>8,R[O++]=T&255):(C<5&&R.copyWithin(O+5,O+3,O+3+T),R[O++]=219,je.setUint32(O,T),O+=4),O+=T}else if(I==="number")if(y>>>0===y)y<64?R[O++]=y:y<256?(R[O++]=204,R[O++]=y):y<65536?(R[O++]=205,R[O++]=y>>8,R[O++]=y&255):(R[O++]=206,je.setUint32(O,y),O+=4);else if(y>>0===y)y>=-32?R[O++]=256+y:y>=-128?(R[O++]=208,R[O++]=y+256):y>=-32768?(R[O++]=209,je.setInt16(O,y),O+=2):(R[O++]=210,je.setInt32(O,y),O+=4);else{let L;if((L=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[O++]=202,je.setFloat32(O,y);let C;if(L<4||(C=y*Bs[(R[O]&127)<<1|R[O+1]>>7])>>0===C){O+=4;return}else O--}R[O++]=203,je.setFloat64(O,y),O+=8}else if(I==="object")if(!y)R[O++]=192;else{if(a){let C=a.get(y);if(C){if(!C.id){let N=a.idsToInsert||(a.idsToInsert=[]);C.id=N.push(C)}R[O++]=214,R[O++]=112,je.setUint32(O,C.id),O+=4;return}else a.set(y,{offset:O-r})}let L=y.constructor;if(L===Object)D(y,!0);else if(L===Array){T=y.length,T<16?R[O++]=144|T:T<65536?(R[O++]=220,R[O++]=T>>8,R[O++]=T&255):(R[O++]=221,je.setUint32(O,T),O+=4);for(let C=0;C<T;C++)b(y[C])}else if(L===Map){T=y.size,T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,je.setUint32(O,T),O+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=Fs.length;C<N;C++){let j=il[C];if(y instanceof j){let W=Fs[C];if(W.write){W.type&&(R[O++]=212,R[O++]=W.type,R[O++]=0),b(W.write.call(this,y));return}let ne=R,ue=je,se=O;R=null;let K;try{K=W.pack.call(this,y,U=>(R=ne,ne=null,O+=U,O>lr&&S(O),{target:R,targetView:je,position:O-U}),b)}finally{ne&&(R=ne,je=ue,O=se,lr=R.length-10)}K&&(K.length+O>lr&&S(K.length+O),O=wv(K,R,O,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[O++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[O++]=211,je.setBigInt64(O,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[O++]=207,je.setBigUint64(O,y);else if(this.largeBigIntToFloat)R[O++]=203,je.setFloat64(O,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");O+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[O++]=192:(R[O++]=212,R[O++]=0,R[O++]=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[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,je.setUint32(O,T),O+=4);let L;for(let C=0;C<T;C++)b(L=I[C]),b(y[L])}:(y,I)=>{R[O++]=222;let T=O-r;O+=2;let L=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),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)),C=0;for(let j=0,W=I.length;j<W;j++){let ne=I[j];T=L[ne],T||(T=L[ne]=Object.create(null),C++),L=T}let N=L[Yn];if(N)N>=96&&h?(R[O++]=((N-=96)&31)+96,R[O++]=N>>5):R[O++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=I.highByte=N>=96&&h?N-96>>5:-1;L[Yn]=N,s[N-64]=I,N<g?(I.isShared=!0,s.sharedLength=N-63,n=!0,j>=0?(R[O++]=(N&31)+96,R[O++]=j):R[O++]=N):(j>=0?(R[O++]=213,R[O++]=114,R[O++]=(N&31)+96,R[O++]=j):(R[O++]=212,R[O++]=114,R[O++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[Yn]=0),v.push(L),b(I))}for(let j=0,W=I.length;j<W;j++)b(y[I[j]])},S=y=>{let I;if(y>16777216){if(y-r>Qp)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Qp,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 nl(I);return je=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),O-=r,r=0,lr=T.length-10,R=T}}useBuffer(t){R=t,je=new DataView(R.buffer,R.byteOffset,R.byteLength),O=0}};il=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Xn];Fs=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:s}=t(6);o[s++]=214,o[s++]=255,n.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:s}=t(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?Zp(i,16,t):Jp(Vs?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==ed&&this.structuredClone?Zp(i,ol.indexOf(e.name),t):Jp(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Zp(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function Jp(i,t){let e=i.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:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function wv(i,t,e,r){let o=i.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(i,e),e+=o,e}function Tv(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,s)=>n.offset>s.offset?1:-1);e=t.pop();){let n=e.offset,s=e.id;i.copyWithin(n+r,n,o),r-=6;let a=n+r;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function yo(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");il.unshift(i.Class),Fs.unshift(i)}Kp(i)}var td=new go({useRecords:!1}),Av=td.pack,Cv=td.pack;var{NEVER:Nv,ALWAYS:Ov,DECIMAL_ROUND:Lv,DECIMAL_FIT:Iv}=Gs,rd=512,Pv=1024;var od=new go({structuredClone:!0});yo({Class:ke.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,ke.prototype),i}});yo({Class:Ee.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ee.prototype),i}});yo({Class:Ut.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ut.prototype),i}});yo({Class:qn.prototype.constructor,type:4,write(i){return i.id},read(i){return new qn(i)}});yo({Class:$n.prototype.constructor,type:5,write(i){return i.data},read(i){return new $n(i)}});function Mv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function sl(i){if(Ts(i))return i;if(Array.isArray(i))return i.map(sl);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=sl(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var zs;(r=>{function i(o){return od.pack(o)}r.serialize=i;function t(o){return od.unpack(o)}r.deserialize=t;function e(o){return Mv(i(sl(o))).toString()}r.checksum=e})(zs||(zs={}));var Us;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Us||(Us={}));var ks;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Et.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:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ks||(ks={}));var al;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(al||(al={}));var ll;(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})(ll||(ll={}));var js;(t=>t.defaultData={...ll.defaultData,...al.defaultData,cloner:null,booleanExclude:null})(js||(js={}));var cl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(cl||{}),ul=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(ul||{}),pl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(pl||{}),Hs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Hs||(Hs={}));var Xr;(r=>{function i(o,n){return o==="light"&&n?t(n):e(o)}r.defaultData=i;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:Bt.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:{...Bt.fromHex(6710886),a:1},colorB:{...Bt.fromHex(6710886),a:1},colorC:{...Bt.fromHex(16777215),a:1},colorD:{...Bt.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:Et.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:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.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}}}})(Xr||(Xr={}));var Mr;(a=>{function i(c){return!c.layers.some(l=>{if(l.data.type==="texture"&&l.data.projection!==0||l.data.type==="depth"&&!l.data.isWorldSpace||l.data.type==="noise"||l.data.type==="displace")return!0})&&!e(c)}a.isMergable=i;function t(c){let p="";return c.layers.forEach(l=>{Object.entries(l.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):p+=`${d}`})}),p}a.getHash=t;function e(c){let p=0;for(let l of c.layers)"alpha"in l.data&&l.data.type!=="light"&&l.data.type!=="fresnel"&&(p+=(1-p)*l.data.alpha);return p<1}a.isTransparent=e;function r(){return{layers:new Ee}}a.defaultEmptyData=r;function o(c="layer1",p="layer2"){return n("phong",c,p)}a.defaultData=o;function n(c,p="layer1",l="layer2"){let u=new Ee;return u.push({fi:0,data:Xr.defaultData("light",c),id:p}),u.push({fi:1,data:Xr.defaultData("color"),id:l}),{layers:u}}a.defaultTwoLayerData=n;function s(c,p="basic",l="layer1",u="layer2"){let d=Xr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Ee;return m.push({fi:0,data:d,id:l}),m.push({fi:1,data:Xr.defaultData("light",p),id:u}),{layers:m}}a.defaultTwoLayerTextureData=s})(Mr||(Mr={}));var on;(t=>{function i(){return{points:new Ee,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(on||(on={}));var Ws;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Ws||(Ws={}));var Kn;(t=>{function i(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:on.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=i})(Kn||(Kn={}));var Qn;(o=>{o.identity={..._s.identity,hiddenMatrix:Wr.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,s){return{position:s?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Zo.isEqual(n.position,s.position)?null:s.position,rotation:Zo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Zo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Qn||(Qn={}));var Dr;(t=>t.defaultData={states:new Ee,events:new Ee,visible:!0,raycastLock:!1,...Qn.identity})(Dr||(Dr={}));var nd;(t=>t.defaultData={type:"Empty",...Dr.defaultData})(nd||(nd={}));var qs;(t=>t.defaultData={type:"Mesh",...Dr.defaultData,...js.defaultData})(qs||(qs={}));var id;(t=>t.defaultData={type:"TextFrame",...Dr.defaultData,...Hs.defaultData})(id||(id={}));var $s;(t=>t.defaultData={...Dr.defaultData,...Qn.identity,...fo.defaultData})($s||($s={}));var sd;(t=>{function i(e){return{...Dr.defaultData,...ks.defaultData(e)}}t.defaultData=i})(sd||(sd={}));var ad;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ee,events:new Ee,...fo.defaultData},r.defaultMeshObject={name:"Rectangle",...Dr.defaultData,...qs.defaultData,geometry:Kn.defaultData("RectangleGeometry"),material:Mr.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Dr.defaultData,...qs.defaultData,geometry:Kn.defaultData("BooleanGeometry"),material:Mr.defaultTwoLayerData("phong","layer1","layer2")}))(ad||(ad={}));var ld;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=$a(n.material,s=>{if(typeof s!="string")for(let[a,c]of Object.entries(o.material.layers)){let p=s.layers.data(a);p&&mo(p,c)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let c=o.materials[a];if(typeof c!="string")for(let[p,l]of Object.entries(c.layers)){let u=s[a]?.layers?.data(p);u&&mo(u,l)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,Qn.merge(n,o)),Qo.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Us.is(r.type)){let s=o;s.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=Bt.clone(s.color))}return n}e.patch=t})(ld||(ld={}));var Dv={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},Bv={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},Xs={CC0:Dv,Originals:Bv};var Ys;(c=>{let i=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},l=0;for(let u of i)p[`image_${l}`]={data:u,name:`Image ${l}`,asset:!1},l++;l=0;for(let u of t)p[`matcap_${l}`]={data:u,name:`Matcap ${l}`,asset:!1},l++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},l={...Xs.CC0,...Xs.Originals},u=0;for(let[d,m]of Object.entries(l)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in Xs.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new ke,images:new ke,colors:new ke,audios:new ke,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function a(){return{materials:new ke,images:Wi(e(),ke.prototype),colors:Wi(r(),ke.prototype),audios:Wi(o(),ke.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=a})(Ys||(Ys={}));var Ks;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(Ks||(Ks={}));var cd=require("three"),ct=class extends cd.Color{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}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}};var dd=require("three");var De=require("three"),pd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??r;return o===n?(o=r,n=r):o>n?(o=r,n=n*r/o):(o=o*r/n,n=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:n})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:c,radiusTop:p,radiusBottom:l,cornerRadius:u,cornerSegments:d,hollow:m}=i.parameters,f;return u||m?f=new Zn(p,l,r,o,n,s,a,c*Math.PI/180,u,u,d,m):f=new De.CylinderBufferGeometry(p,l,r,o,n,s,a,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...i,type:"CylinderGeometry"}})}};function Yr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function ud(i){return new De.Vector2(i.y,-i.x)}var Zn=class extends De.BufferGeometry{constructor(t,e,r,o,n,s,a,c,p,l,u,d,m=!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,n=Math.floor(n)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,l=0);let f=[],h=[],g=[],x=[],v=0,A=r/2,_=new De.Vector3,b=new De.Vector3;m&&t==0&&(t=p),m&&e==0&&(e=l);let D=new De.Vector2(t,A),S=new De.Vector2(e,-A),y=null,I=null,T=null,L=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let ne=D.clone();ne.x-=N;let ue=Math.PI-C.angle(),se=C.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),l=Math.min(l,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new De.Vector2(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(l>0){let z=l/U;I=S.clone().sub(new De.Vector2(z,-l)),S.add(C.clone().setLength(z)),d&&(L=I.clone(),L.x-=N-F*l,ne.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let P=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+a,ee=new De.Vector2(Math.sin(J),Math.cos(J));L&&I?(Q(M,q,ee,ue,l,L,-1,!0),Q(M,q,ee,se,l,I,-1,!1)):I?(k(M,ee,I.x,0,-1),Q(M,q,ee,se,l,I,-1,!1)):s||k(M,ee,e,W,-1);let H=ud(C).normalize();if(Yr(H,ee,_),!P)for(let Z=0;Z<=n;Z++){let $=Z/n,re=C.clone().multiplyScalar($).add(S);Yr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ue,p,y,1,!1),Q(M,q,ee,se,p,T,1,!0)):y?(Q(M,q,ee,ue,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!P){let Z=ud(C).multiplyScalar(-1).normalize();Yr(Z,ee,_);for(let $=0;$<=n;$++){let re=$/n,ce=C.clone().multiplyScalar(-re).add(ne);Yr(ce,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.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==n)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];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+c)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(h,3)),this.setAttribute("normal",new De.Float32BufferAttribute(g,3)),this.setAttribute("uv",new De.Float32BufferAttribute(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let ce=re/u,ie=Z<0?ce:1-ce;$&&(ie-=1),ie*=J;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*Z),Re=fe.clone().multiplyScalar(ee).add(H);Yr(Re,q,b),h.push(b.x,b.y,b.z),Yr(fe,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new De.Vector3,Z=new De.Vector2,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Yr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new De.Vector2(Math.sin(q),Math.cos(q)),ee=new De.Vector2(-Math.cos(q),Math.sin(q)),H=new De.Vector3,Z=z<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),$=new De.Vector2((t+e+j+W)/4,0);Yr($,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 ce of M){let ie=h.slice(ce*3,ce*3+3);h.push(...ie),g.push(ee.x,0,ee.y);let fe=x.slice(ce*2,ce*2+2);x.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)Z(re,ce,ce+1);Z(re,v-1,re+1)}}};var md=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,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},i.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(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:c,cornerRadiusTop:p,cornerRadiusBottom:l,cornerSegments:u}=i.parameters,d;return p>0||l>0||c<360?d=new Zn(0,t/2,r,o,n,s,a,c*Math.PI/180,p,l,u,0,!0):d=new dd.ConeBufferGeometry(t/2,r,o,n,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...i,type:"ConeGeometry"}})}};var Ct=require("three"),fd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.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(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:c}=i.parameters,p;return a==0?p=new Ct.BoxBufferGeometry(t,e,r,o,n,s):p=new fl(t,e,r,o,n,s,a,c),Object.assign(p,{userData:{...i,type:"CubeGeometry"}})}},ml=Math.PI/2,fl=class extends Ct.BufferGeometry{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,c=4){super(),this.type="BoxBufferGeometry";let p=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),c=Math.floor(c),a=Math.min(a,t/2,e/2,r/2);let l=[],u=[],d=[],m=[],f=0,h=0;g("z","y","x",-1,-1,r,e,t,s,n,0),g("z","y","x",1,-1,r,e,-t,s,n,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,n,4),g("x","y","z",-1,-1,t,e,-r,o,n,5),a>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,n,0),x("y","x","z",1,-1,-1,e,t,r,n,1),x("y","x","z",1,1,1,e,t,r,n,1),x("y","x","z",-1,1,-1,e,t,r,n,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(l),this.setAttribute("position",new Ct.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ct.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Ct.Float32BufferAttribute(m,2));function g(A,_,b,D,S,y,I,T,L,C,N){let j=(y-2*a)/L,W=(I-2*a)/C,ne=y/2-a,ue=I/2-a,se=T/2,K=L+1,U=C+1,F=0,E=0,B=new Ct.Vector3;for(let P=0;P<U;P++){let G=P*W-ue;for(let Q=0;Q<K;Q++){let k=Q*j-ne;B[A]=k*D,B[_]=G*S,B[b]=se,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/L),m.push(1-P/C),F+=1}}for(let P=0;P<C;P++)for(let G=0;G<L;G++){let Q=f+G+K*P,k=f+G+K*(P+1),V=f+(G+1)+K*(P+1),z=f+(G+1)+K*P;l.push(Q,k,z),l.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,I,T,L,C,N){let j=(I-2*a)/C,W=I/2-a,ne=T/2-a,ue=L/2,se=C+1,K=0,U=0,F=new Ct.Vector3,E=new Ct.Vector3;for(let B=0;B<c+1;B++){let P=B/c*ml,G=Math.sin(P)*a,Q=(1-Math.cos(P))*a,k=Math.sin(P),V=Math.cos(P);F[_]=(ne+G)*S,F[b]=(ue-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<se;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let P=0;P<C;P++){let G=f+P+se*B,Q=f+P+se*(B+1),k=f+(P+1)+se*(B+1),V=f+(P+1)+se*B;l.push(G,Q,V),l.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new Ct.Vector3,S=new Ct.Vector3(t/2,e/2,r/2);S.subScalar(a);let y=[],I=A*_*b>0?(L,C,N)=>l.push(L,C,N):(L,C,N)=>l.push(L,N,C);for(let L=0;L<=c;L++){let C=[],N=ml*(1-L/c),j=Math.cos(N),W=Math.sin(N),ne=0;for(let ue=0;ue<=L;ue++){let se=Math.cos(ne),K=Math.sin(ne);D.x=j*se,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,a);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),ne+=ml/L}y.push(C)}let T=y.length-1;for(let L=0;L<T;L++){let C=y[L],N=y[L+1],j=C.length-1;I(C[0],N[1],N[0]);for(let W=1;W<=j;W++)I(C[W-1],C[W],N[W]),I(C[W],N[W+1],N[W])}}}};var Ve=require("three"),Kr=class extends Ve.BufferGeometry{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],c=[],p=[];l(),u(),this.setAttribute("position",new Ve.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Ve.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Ve.Float32BufferAttribute(c,2));return;function l(){n=Math.min(1-1e-5,n),n==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Ve.Vector3,h=f.clone(),g=new Ve.Triangle,x=n*o,v=o-x,A=s+1,_=new Ve.Vector3,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new Ve.Vector3().fromArray(t,U*3).setLength(o)),y=[],I=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,P,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],P=U.distanceToSquared(S[E]),G=Math.min(G,P),F.push([E,B,P])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,P]=F[V];let q=y[E]?.includes(K)==!0;P<=G&&k.push(E+ +q*I),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let P=0;P<=s;P++){F=P*(P+1)/2,E=(P+1)*(P+2)/2;for(let G=0;G<s-P;G++)[K,U]=[F+G+P+2,E+G+P+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let L=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),ne=[],ue=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),L.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%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,ue[K][k])}let F=[],E=[],B=[],P=new Ve.Vector3;s==0&&[...ue[K]].reduce((k,V)=>k.add(V),P).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ue[K][z],q=ue[K][k];f.copy(M).sub(L),h.copy(q).sub(L);let J=L.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(P):C.copy(L).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],ce=Z[$+1];j.subVectors(re,L),W.subVectors(ce,L),N.crossVectors(j,W).normalize();for(let ie=0;ie<A;ie++){let fe=[J,ee][$]*ie/A;f.copy(j).applyAxisAngle(N,fe).add(L),F.push(f.clone()),$&&(b(f,L),V.push([ie==0?re:f.clone(),_.clone()]))}$&&(b(ce,L),V.push([ce,_.clone()]))}B.push(V)}ne.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(L).setLength(E[k]).add(L),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[z+A]);let q=T.map(J=>M[J]);a.push(...q.map(J=>[J.x,J.y,J.z]).flat()),p.push(...q.map(J=>(b(J,L),[_.x,_.y,_.z])).flat())}}let se=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<I){let E=y[F].findIndex(G=>G%I==K),B=ne[K][U],P=ne[F][E];for(let G=0;G<A;G++){let Q=B[G],k=P[A-G],V=B[G+1],z=P[A-(G+1)];[Q,k,V,V,k,z].forEach(M=>{a.push(M[0].x,M[0].y,M[0].z),p.push(M[1].x,M[1].y,M[1].z)})}se.push(B[0][0],P[A][0],B[A][0],P[0][0])}}for(;se.length;){let K,U,F,E;[K,U]=se.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=se.indexOf(U),E=F%2,U=se.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let P=_.dot(B[0])<0;P&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +P],B[G+1-+P],B[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new Ve.Vector3;for(let S=0;S<a.length;S+=3){d.x=a[S+0],d.y=a[S+1],d.z=a[S+2];let y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let m=new Ve.Vector3,f=new Ve.Vector3,h=new Ve.Vector3,g=new Ve.Vector3,x=new Ve.Vector2,v=new Ve.Vector2,A=new Ve.Vector2,_=(S,y,I,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<a.length;S+=9,y+=6){m.set(a[S+0],a[S+1],a[S+2]),f.set(a[S+3],a[S+4],a[S+5]),h.set(a[S+6],a[S+7],a[S+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(m).add(f).add(h).divideScalar(3);let I=b(g);_(x,y+0,m,I),_(v,y+2,f,I),_(A,y+4,h,I)}for(let S=0;S<c.length;S+=6){let y=c[S+0],I=c[S+2],T=c[S+4],L=Math.max(y,I,T),C=Math.min(y,I,T);L>.9&&C<.1&&(y<.2&&(c[S+0]+=1),I<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new Kr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var hd=require("three"),gd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.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(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(t*.5,n,s):new hd.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Kr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],a=[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,a,c,t,e,r),this.type=c}static fromJSON(t){return new Jn(t.radius,t.corner,t.cornerSides)}};var be=require("three");var he=require("three"),ei=1e-12,nn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.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 nn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},sn=class extends nn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new sn(this.parent).copy(this)}},Xt=class extends nn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new sn(this),new sn(this))}static create(e,r){let o=new Xt(e,new he.Vector2(...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,n=this.controls.length;o<n;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 Xt(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 he.Vector2,r=new he.Vector2){let[o,n]=this.computeTangents();return o&&n&&(yd(o,e),yd(n,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function yd(i,t=new he.Vector2){let e=i.length();return t.set(-i.y/e,i.x/e)}var gl=i=>i,an=new he.Vector2,Qs=new he.Vector2,Ev=new he.Vector2,Gv=new he.Vector2,Rv=new he.Vector2,Fv=new he.Vector2,vd=new he.Vector3,bd=new he.Vector3;function _d(i){let t=new he.Vector2;t.addVectors(i.v0,an.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(i.v2,Qs.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(i.v0,t,e,i.v2)}function ti(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function Vv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function zv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function yl(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function Sd(i,t,e){return xd(i,t)&&xd(t,e)&&hl(i.position,t.position,e.position)}function hl(i,t,e){return an.copy(t).sub(i).cross(Qs.copy(e).sub(i))===0}function wd(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),s=(i.y+t.y)/2,a=(i.x+t.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,p=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+c,s+p),o.set(a-c,s-p),[r,o]}function Td(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Ad(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,c=e.x-i.x,p=e.y-i.y,l=Math.sqrt((s+c)*(s+c)+(a+p)*(a+p)),u;return yl(t,i,e)>Math.PI&&(l*=-1),ti(p,a)?u=(a+p)*(r/l-.5)*8/3/(s-c):u=(s+c)*(r/l-.5)*8/3/(p-a),o.set(t.x-u*a,t.y+u*s),n.set(e.x+u*p,e.y-u*c),[o,n]}function xl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function xd(i,t){return hl(i.position,i.controls[1].position,t.position)&&hl(i.position,t.controls[0].position,t.position)}function Cd(i,t,e,r,o=.5){let n=an.subVectors(t,i).multiplyScalar(o).add(i),s=Qs.subVectors(e,t).multiplyScalar(o).add(t),a=Ev.subVectors(r,e).multiplyScalar(o).add(e),c=n,p=Gv.subVectors(s,n).multiplyScalar(o).add(n),l=Rv.subVectors(a,s).multiplyScalar(o).add(s),u=a,d=Fv.subVectors(l,p).multiplyScalar(o).add(p);return[i.x,i.y,c.x,c.y,p.x,p.y,d.x,d.y,l.x,l.y,u.x,u.y,r.x,r.y]}function Nd(i,t,e=12,r=!0){let o=bd.set(0,0,0),n,s=0,a=[];for(let c=0;c<t.length;c++){let p=gl(t[c]),l=an,u=Qr(p,e);a.push(u);for(let d=0;d<=u;d++)if(p instanceof he.CubicBezierCurve||p instanceof he.QuadraticBezierCurve||p instanceof he.LineCurve){if(p.getPoint(d/u,l),o.set(l.x,l.y,0),n!==void 0&&zv(n,o))continue;n===void 0&&(n=vd),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function Od(i,t,e,r=12,o=!0){let n=bd.set(0,0,0),s=0,a=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,l=gl(t[c]),u=an,d=Qr(l,r);a.push(d);for(let m=0;m<=d;m++)if(l instanceof he.CubicBezierCurve||l instanceof he.QuadraticBezierCurve||l instanceof he.LineCurve){if(l.getPoint(m/d,u),n.set(u.x,u.y,0),p?.equals(n))continue;p===void 0?p=vd:(i.setXYZ(s,p.x,p.y,p.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),p.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function vl(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let c=Qr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),a+=c}s.curveAfter!==void 0&&(a+=Qr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Qr(i[0].roundedCurveCorner,t)*.5),r}function Qr(i,t=12){return i&&i instanceof he.EllipseCurve?t*2:i&&(i instanceof he.LineCurve||i instanceof he.LineCurve3)?1:i&&i instanceof he.SplineCurve?t*i.points.length:t}function Ld(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=gl(t[s]),c=Qr(a,e),p=an;for(let l=0;l<=c;l++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(l/c,p),o!==void 0&&Vv(o,p,ei))continue;o===void 0&&(o=Qs),o.copy(p),i.push(p.x,p.y),n++}}return ti(i[0],i[i.length-2],ei)&&ti(i[1],i[i.length-1],ei)&&(i.pop(),i.pop()),r&&n>1&&!(ti(i[n-1],i[1],ei)&&ti(i[n-2],i[0],ei))&&(i.push(i[0],i[1]),n++),i}var bl=new be.Vector2,Uv=new be.Vector2,kv=new be.Vector2,jv=new be.Vector2,Hv=new be.Vector2,Wv=new be.Vector2,Ce=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ce;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Xt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Ce.createFromState(s)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}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(n=>n.uuid===e);if(o<0){let n=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let c=this.shapeHoles[s],p=c.points.length-1,l=c.getPointIndexById(e);if(l<0)n+=p;else return l+n}}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 n=this.shapeHoles[r],s=e-this.points.length;if(s<=n.points.length-1)return n.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,n=this.shapeHoles.length;o<n;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;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=bl.set(e,r);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=be.MathUtils.generateUUID()){let n;e instanceof be.Vector2?n=e:n=new be.Vector2(e,r);let s=new Xt(o,n);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 n=this.points[r];if(n.uuid===e)return n}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 n=o?this.roundedCurveDivisions:this.curveDivisions;return Nd(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=vl(this.points,e,!1),this.roundedCurveDivisions=vl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Od(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Ld(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Qr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((c,p)=>c+p,0));for(let c=0,p=n.length;c<p;c++){let l=n[c];if(a<o+l)return[c,(a-o+1)/l];o+=l}return[0,1]}getCurveT(e,r,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,c=a[e];if(xl(n,s)){let u=n.position.distanceTo(s.position);return n.position.distanceTo(bl.set(o.x,o.y))/u}let p=0;for(let u=0;u<e;u++)p+=a[u];return(r-p)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){xl(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 n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],c=this.points[n-1]??this.points[this.points.length-1],p=this.points[n+1]??this.points[0],l=a.roundness,u=c&&p&&Sd(c,a,p);if(!a.controlsMoved()&&l>0&&!u){let d=a.curveBefore,m=a.curveAfter;if(d===void 0||m===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(l,g*.499),A=Math.min(l,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,bl),y=m.getPointAt(D,Uv);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=yl(S,a.position,y)/2,L=Math.tan(T)*S.distanceTo(a.position),[C,N]=wd(S,y,L,kv,jv),j=Td(C,N,a.position),[W,ne]=Ad(j,S,y,L,Hv,Wv);I=new be.CubicBezierCurve(S.clone(),W.clone(),ne.clone(),y.clone())}else I=new be.QuadraticBezierCurve(S.clone(),a.position.clone(),y.clone());a.roundedCurveCorner=I,this.roundedCurves.splice(n+o,0,I),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof be.LineCurve)n!==void 0&&r.v2.copy(n),s!==void 0&&r.v1.copy(s);else{let a=e,c=r,p=a.getUtoTmapping(o,0),l=Cd(a.v0,a.v1,a.v2,a.v3,p);return n!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),s!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return r}clone(){let e=new Ce(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 n=o*7,s=e.points[n+0],a=e.points[n+1],c=e.points[n+2],p=e.points[n+3],l=e.points[n+4],u=e.points[n+5],d=e.points[n+6],m=new Xt(be.MathUtils.generateUUID(),new be.Vector2(s,a));m.controls[0].position.set(c,p),m.controls[1].position.set(l,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ce;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof be.CubicBezierCurve&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,c;for(a=0,c=n.length;a<c;a++)n[a]instanceof be.QuadraticBezierCurve&&(n[a]=_d(n[a]));for(a=0,c=n.length;a<c;a++){let u=n[a],d=a>0?n[a-1]:null,m;u instanceof be.CubicBezierCurve?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof be.LineCurve&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=n[n.length-1],l=!1;return p instanceof be.CubicBezierCurve?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),l=!0):p instanceof be.LineCurve&&p.v2.equals(s[0].position)&&(l=!0),this.isClosed=l,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Ce;return s.fromShape(n),s})),this.update(),this}};var Sl=Math.PI*2;function _l({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function qv(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),s=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function Id(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function $v(i,t,e,r,o,n,s,a,c,p){let l=Math.pow(o,2),u=Math.pow(n,2),d=Math.pow(s,2),m=Math.pow(a,2),f=l*u-l*m-u*d;f<0&&(f=0),f/=l*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/n*a,g=f*-n/o*s,x=h+(i+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(a-g)/n,b=(-s-h)/o,D=(-a-g)/n,S=Id(1,0,A,_),y=Id(A,_,b,D);return!p&&y>0&&(y-=Sl),p&&y<0&&(y+=Sl),{centerx:x,centery:v,ang1:S,ang2:y}}function Pd({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let c=[];if(o===0||n===0)return[];let p=(i-e)/2,l=(t-r)/2;if(p===0&&l===0)return[];o=Math.abs(o),n=Math.abs(n);let u=Math.pow(p,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(n,2);u>1&&(o*=Math.sqrt(u),n*=Math.sqrt(u));let d=$v(i,t,e,r,o,n,p,l,s,a),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(Sl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push(qv(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=_l(A[0],o,n,h,g),{x:D,y:S}=_l(A[1],o,n,h,g),{x:y,y:I}=_l(A[2],o,n,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:I}})}var vo=require("three");var Be;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Be||(Be={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function pe(i,t){if(!i)throw t||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){pe(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){pe(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.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},i.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))},i.intersect=function(t,e,r,o,n){var s,a,c;i.vertLeq(t,e)||(c=t,t=e,e=c),i.vertLeq(r,o)||(c=r,r=o,o=c),i.vertLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),i.vertLeq(r,e)?i.vertLeq(e,o)?(s=i.edgeEval(t,r,e),a=i.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,e.s)):(s=i.edgeSign(t,r,e),a=-i.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(c=t,t=e,e=c),i.transLeq(r,o)||(c=r,r=o,o=c),i.transLeq(t,r)||(c=t,t=r,r=c,c=e,e=o,o=c),i.transLeq(r,e)?i.transLeq(e,o)?(s=i.transEval(t,r,e),a=i.transEval(r,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,e.t)):(s=i.transSign(t,r,e),a=-i.transSign(t,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,o.t)):n.t=(r.t+e.t)/2},i}(),ri=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Zs=function(){function i(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(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),ln=function(){function i(){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 i}(),Md=function(){function i(){var t=new ln,e=new ri,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 i.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},i.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},i.prototype.makeVertex_=function(t,e,r){var o=t;pe(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;pe(o,"Face can't be null");var n=r.prev;o.prev=n,n.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)},i.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},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var t=new ln,e=new ln,r=new ri,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},i.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 n=new ln;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ri;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},i.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 ri;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)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new ln;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.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},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var s=new ri;this.makeFace_(s,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,s,a;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)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,s,a,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,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),c=this.countFaceVerts_(n.Lface),a+c-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ae.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,s,a,c,p;for(n=t,n=t;(o=n.next)!==t;n=o){pe(o.prev===n),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)pe(c.Sym.next===p.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(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)},i}(),Dd=function(){function i(){this.handle=null}return i}(),Bd=function(){function i(){this.key=null,this.node=0}return i}(),Xv=function(){function i(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 Dd,this.handles[r]=new Bd;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,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,pe(s<=this.max),n=e[s].handle,s>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t>>1,n=e[s].handle,s===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Dd;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Bd}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},i.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},i.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;pe(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},i}(),wl=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Ed=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Yv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Ed,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.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},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Ed;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),Kv=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,s=r.eUp;if(n.Dst===o)return s.Dst===o?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),c=ae.edgeEval(s.Dst,o,s.Org);return a>=c},i.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){pe(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new wl;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},i.isWindingInside=function(t,e){switch(t.windingRule){case Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),i.finishRegion(t,s),a=n.eUp,s=n}return a},i.addRightEdges=function(t,e,r,o,n,s){var a,c,p,l,u=!0;p=r;do pe(ae.vertLeq(p.Org,p.Dst)),i.addRegionBelow(t,e,p.Sym),p=p.Onext;while(p!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),c=e,l=n;a=i.regionBelow(c),p=a.eUp.Sym,p.Org===l.Org;)p.Onext!==l&&(t.mesh.splice(p.Oprev,p),t.mesh.splice(l.Oprev,p)),a.windingNumber=c.windingNumber-p.winding,a.inside=i.isWindingInside(t,a.windingNumber),c.dirty=!0,!u&&i.checkForRightSplice(t,c)&&(i.addWinding(p,l),i.deleteRegion(t,c),t.mesh.delete(l)),u=!1,c=a,l=p;c.dirty=!0,pe(c.windingNumber-p.winding===a.windingNumber),s&&i.walkDirtyRegions(t,c)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),n=ae.vertL1dist(r,t),s=.5*n/(o+n),a=.5*o/(o+n);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},i.getIntersectData=function(t,e,r,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s;if(pe(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s=o.Org,a=n.Org,c=o.Dst,p=n.Dst,l,u,d=new ln,m,f;if(pe(!ae.vertEq(p,c)),pe(ae.edgeSign(c,t.event,s)<=0),pe(ae.edgeSign(p,t.event,a)>=0),pe(s!==t.event&&a!==t.event),pe(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(l=Math.min(s.t,c.t),u=Math.max(a.t,p.t),l>u))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(p,s,a)>0)return!1}else if(ae.edgeSign(c,a,s)<0)return!1;return i.debugEvent(t),ae.intersect(c,s,p,a,d),pe(Math.min(s.t,c.t)<=d.t),pe(d.t<=Math.max(a.t,p.t)),pe(Math.min(p.s,c.s)<=d.s),pe(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=ae.vertLeq(s,a)?s:a,ae.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(i.checkForRightSplice(t,e),!1):!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)>=0||!ae.vertEq(p,t.event)&&ae.edgeSign(p,t.event,d)<=0?p===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(c,t.event,d)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(p,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,c,a,p),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,s=i.regionBelow(e),a=e.eUp,c=s.eUp,p=!1;if(a.Dst!==c.Dst&&i.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(n.Oprev,a),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),s),p=!0),ae.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=i.finishLeftRegions(t,s,null),p=!0),p){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ae.vertLeq(c.Org,a.Org)?o=c.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,s,a,c;if(o=e.eUp,ae.vertEq(o.Org,r)){pe(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.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),i.sweepEvent(t,r);return}pe(!1),e=i.topRightRegion(e),c=i.regionBelow(e),s=c.eUp.Sym,n=a=s.Onext,c.fixUpperEdge&&(pe(n!==s),i.deleteRegion(t,c),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,c,p=new wl;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)c=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var l=t.mesh.connect(a.Dnext,e.anEdge);c=l.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,c):i.computeWinding(t,i.addRegionBelow(t,r,c)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);pe(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(t,n,null);a.Onext===s?i.connectRightVertex(t,o,a):i.addRightEdges(t,o,a.Onext,s,s,!0)},i.addSentinel=function(t,e,r,o){var n=new wl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new Yv(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;i.addSentinel(t,o,n,s),i.addSentinel(t,o,n,a)},i.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++r===1)),pe(e.windingNumber===0),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.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))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new Xv(n,ae.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)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),Qv=function(){function i(){this.mesh=new Md,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=Be.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 i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.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},i.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},i.prototype.computeNormal_=function(t){var e,r,o,n,s,a,c=[0,0,0],p=[0,0,0],l=[0,0,0],u=[0,0,0],d=[0,0,0],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)n=e.coords[g],p[g]=n,f[g]=e,c[g]=n,m[g]=e;for(e=h.next;e!==h;e=e.next)for(var x=0;x<3;++x)n=e.coords[x],n<p[x]&&(p[x]=n,f[x]=e),n>c[x]&&(c[x]=n,m[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(a=0,r=f[v],o=m[v],l[0]=r.coords[0]-o.coords[0],l[1]=r.coords[1]-o.coords[1],l[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]=l[1]*u[2]-l[2]*u[1],d[1]=l[2]*u[0]-l[0]*u[2],d[2]=l[0]*u[1]-l[1]*u[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(l)]=1)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<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]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!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),n=!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 a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);n&&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))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.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},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,s=0,a=0,c;r>3&&t.mergeConvexFaces(r);for(var p=t.vHead.next;p!==t.vHead;p=p.next)p.n=-1;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(l.n=-1,!!l.inside){n=l.anEdge,c=0;do{var p=n.Org;p.n===-1&&(p.n=a,a++),c++,n=n.Lnext}while(n!==l.anEdge);if(c>r)throw"Face vertex greater that support polygon";l.n=s,++s}this.elementCount=s,e===Ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;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,l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){n=l.anEdge,c=0;do{var p=n.Org;this.elements[d++]=p.n,c++,n=n.Lnext}while(n!==l.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=l.anEdge;do this.elements[d++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==l.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.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,l=0;n=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.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[l++]=n,this.elements[l++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Md),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},i.prototype.tesselate=function(t,e,r,o,n,s){if(t===void 0&&(t=Be.ODD),e===void 0&&(e=Ze.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Kv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function xo(i){var t=i.windingRule,e=t===void 0?Be.ODD:t,r=i.elementType,o=r===void 0?Ze.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,c=a===void 0?2:a,p=i.normal,l=p===void 0?[0,0,1]:p,u=i.contours,d=u===void 0?[]:u,m=i.strict,f=m===void 0?!0:m,h=i.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new Qv;i.edgeCreateCallback&&(x.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(x.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<d.length;v++)x.addContour(c||2,d[v]);return x.tesselate(e,o,s,c,l,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var LI=Be.ODD,II=Be.NONZERO,PI=Be.POSITIVE,MI=Be.NEGATIVE,DI=Be.ABS_GEQ_TWO,BI=Ze.POLYGONS,EI=Ze.CONNECTED_POLYGONS,GI=Ze.BOUNDARY_CONTOURS;var cn=class extends vo.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,c=!0,p=!0,l,u;for(let f=0,h=n.length/2;f<h;f++){let g=f*2,x=n[g+0],v=n[g+1];if(l!==void 0&&x!==l&&(c=!1),u!==void 0&&v!==u&&(p=!1),l=x,u=v,!c&&!p)break}!c&&!p&&(a=xo({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=a?.vertexCount??1,m=a?.elementCount??1;if(this._positionAttribute=new vo.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new vo.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new vo.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new vo.BufferAttribute(new Uint32Array(m*3),1),a){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=a.vertices[D+0],y=a.vertices[D+1],I=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,I,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=a.elements[D+0],y=a.elements[D+1],I=a.elements[D+2];this._indexAttribute.setX(D+0,S),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,(a?.elementCount??1)*3)}clone(){let e=new cn(this._shape,this._curveSegments);return e.userData=kn(this.userData),e}};var bo=require("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,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*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),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,3*t);s+=3*t;let p=new Float32Array(o,s*n,2*t);a.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=a,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)}},oi=Js;oi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),un=class extends bo.BufferGeometry{constructor(e,r,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=n,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 a=this._shape.extractShapePointsToFlatArray([],n),c=this._shape.shapeHoles.map(S=>{let y=S.extractShapePointsToFlatArray([],n),I=[];for(let T=y.length-1;T>=1;T-=2){let L=y[T-1],C=y[T-0];I.push(L,C)}return I}),p=xo({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),l=xo({windingRule:Be.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]});if(!p)throw new Error("error generating geometry");let u=p.elementCount;if(l){p.elementCount+=l.elementCount;for(let S=0;S<l.elements.length;S++){let y=l.elements[S],I=S%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let S=0;S<l.vertexIndices.length;S++){let y=l.vertexIndices[S],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let S=0;S<l.vertices.length;S++){let y=l.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let I=S*2,T=p.vertices[I+0],L=p.vertices[I+1];T<d&&(d=T),T>m&&(m=T),L<f&&(f=L),L>h&&(h=L)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new oi(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,I=S*2,T=p.elements[I+0],L=p.elements[I+1],C=T+L,N={start:T,count:L,normals:[],continuous:[],concave:[]},j=T,W=C-1,ne=T+1,ue=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],P=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[ne*2+0],k=p.vertices[ne*2+1],V=P-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=P-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[Z].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);N.continuous[F]=ie.dot(fe)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,ne]=[j,ne,ne+1],ne>=C&&(ne-=L)}while(ne!==T+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((F,E)=>[E,E]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,P=[],G=[],Q=[],k=[],V=0;for(let M=0;M<L;M++){let q=M*2,J=(M-1+L)%L*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,ce=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ie=Math.atan2($,Z),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Re=fe-ie;if(N.continuous[M]||y){let ge=ie+Re/2,qe=Math.cos(ge)*B,Ae=Math.sin(ge)*B;P[2*V+0]=ee+qe*(y?-1:1),P[2*V+1]=H+Ae*(y?-1:1),k[V]=M,V++}else{let ge=Math.max(1,Math.floor(n/4*Math.abs(Re)/Math.PI));for(let qe=0;qe<=ge;qe++){let Ae=ie+Re*(qe/ge),St=Math.cos(Ae)*B,Vt=Math.sin(Ae)*B;P[2*V+0]=ee+St,P[2*V+1]=H+Vt,k[V]=M,V++}}}else P[2*V+0]=ee+Z,P[2*V+1]=H+$,k[V]=M,G[M]=V,V++,P[2*V+0]=ee,P[2*V+1]=H,k[V]=M,V++,P[2*V+0]=ee+re,P[2*V+1]=H+ce,k[V]=M,Q[M]=V,V++}let z=xo({windingRule:Be.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[P],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.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 ${F}'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 Z=H%L,$=(H+1)%L;if(!N.continuous[Z]||!N.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}}}se.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:P})}let K=(F,E,B)=>{let P=0,G=F.boundary.vertexIndices.length;for(;P<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,P++;return P},U=x.length;for(let F=1;F<se.length;F++){let E=se[F-1],B=se[F],P=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!P||!G)break;let Q=N.concave.length,k=0,V=Tl(k,L);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Tl(k,L);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%P;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%L;let q=k,J=this.buildBevelVert(N,E,(z-1+P)%P),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,ce=!1;do{V=Tl(k,L);let ie=K(E,z,V),fe=K(B,M,V),Re=ce;if(ce=!1,ie&&!fe){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%P,ge/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let ge=0;ge<fe;ge++)re=this.buildBevelVert(N,B,(M+ge)%G,ge/(fe-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ie&&fe)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Re?(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,ie===fe)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%P,ge/(ie-1)),re=this.buildBevelVert(N,B,(M+ge)%G,ge/(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(ie>fe){let ge=ie/fe,qe=0;for(let Ae=1;Ae<ie;Ae++)$=this.buildBevelVert(N,E,(z+Ae)%P,Ae/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,Ae>(qe+1)*ge&&(qe++,re=this.buildBevelVert(N,B,(M+qe)%G,qe/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let ge=fe/ie,qe=0;for(let Ae=1;Ae<fe;Ae++)re=this.buildBevelVert(N,B,(M+Ae)%G,Ae/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,Ae>(qe+1)*ge&&(qe++,$=this.buildBevelVert(N,E,(z+qe)%P,qe/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ie)%P,M=(M+fe)%G,k=(k+1)%Q}while(k!==q)}{let F=se[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let P=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,P.topN,P.bottomN),x.push(G.topP,P.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],P=x[E-1],G=x[E-0];F.push(G,P,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],P=se[se.length-1].boundary.vertices[E-0];F.push(B,P)}v.push(F)}if(!y){let F=se[se.length-1],E=xo({windingRule:se.length>1?Be.POSITIVE:Be.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[F.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 P=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(P.top,G.top,Q.top),x.push(Q.bottom,G.bottom,P.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new bo.BufferAttribute(Uint32Array.from(x),1),_=new bo.BufferAttribute(this._buffer.positions,3),b=new bo.BufferAttribute(this._buffer.normals,3),D=new bo.BufferAttribute(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),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 n=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(n-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),l=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[l+0]=n,this._buffer.positions[l+1]=s,this._buffer.positions[l+2]=this._depth,this._buffer.normals[l+0]=0,this._buffer.normals[l+1]=0,this._buffer.normals[l+2]=1,this._buffer.uvs[u+0]=a,this._buffer.uvs[u+1]=c,this._buffer.positions[l+3]=n,this._buffer.positions[l+4]=s,this._buffer.positions[l+5]=0,this._buffer.normals[l+3]=0,this._buffer.normals[l+4]=0,this._buffer.normals[l+5]=-1,this._buffer.uvs[u+2]=a,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,n=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,c]=r.boundary.vertexIndices[o],p,l,u,d;a!==c?(l=a,p=c,d=!1,u=e.continuous[l]&&e.continuous[p]):(p=a,l=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let m=Math.cos(r.angle),f=Math.sin(r.angle),h=o*2,g=p*2,x=l*2,v=r.boundary.vertices[h+0],A=r.boundary.vertices[h+1],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-S,ne=T-y;S=S+W*(1-n),y=y+ne*(1-n);let ue=Math.sqrt(S*S+y*y);S/=ue,y/=ue}let L=this._buffer.get(u?2:4),C=L*3,N=L*2,j={i:o,fi:p,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(L+=2,C+=6,N+=4,j.topP=L+0,j.bottomP=L+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=I*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=I*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new un(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=kn(this.userData),e}};var vt=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ce?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ce(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let c=s??new Ce(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:c}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new cn(i.shape,o):s=new un(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var dn=require("three"),Rd=Math.PI*2,Fd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=i.parameters,p=i.shape,l=t*.5,u=e*.5,d=Zv(p,l,u,o*Math.PI/180,r,n);p.isClosed=!0,p.update();let m=vt.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...i,type:"EllipseGeometry"}})}};function Zv(i,t,e,r,o,n){if(r>=Rd)return o>30||o%4===0?(eb(i,t,e,n),Math.round(o/4)):Gd(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,c={x:Math.cos(a)*t,y:Math.sin(a)*e},p=Pd({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?Jv(i,s.x,s.y,p,o,t,e,n):Gd(i,r,o,t,e,n)}function Jv(i,t,e,r,o,n,s,a){let c=Math.round(o/r.length);i.addPoint(pn(t,e));for(let p=0,l=r.length;p<l;p++){let u=r[p],d=i.points[p],m=pn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),i.addPoint(m)}return a>0?Vd(i,n,s,a):i.addPoint(pn(0,0)),c}function Gd(i,t,e,r,o,n){let s=-t/e;for(let a=0;a<=e;a++){let c=s*a,p=Math.sin(c)*r,l=Math.cos(c)*o;i.addPoint(pn(p,l))}return t<Rd?n>0?Vd(i,r,o,n):i.addPoint(pn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&zd(i,r,o,n)),1}function eb(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,c=e*s;i.addPoint(ea(o-t,n,o-t,n-c,o-t,n+c)),i.addPoint(ea(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(ea(o+t,n,o+t,n+c,o+t,n-c)),i.addPoint(ea(o,n-e,o+a,n-e,o-a,n-e)),r>0&&zd(i,t,e,r)}function pn(i,t){return new Xt(dn.MathUtils.generateUUID(),new dn.Vector2(i,t))}function ea(i,t,e,r,o,n){let s=pn(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Vd(i,t,e,r){Ud(i,t,e,r).forEach(n=>i.addPoint(n))}function zd(i,t,e,r){let o=Ud(i,t,e,r),n=new Ce;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Ud(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new dn.Vector2(o/t,n/e),a=i.points.map(c=>{let p=c.clone();return p.uuid=dn.MathUtils.generateUUID(),p}).reverse();return a.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),l=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(l),c.controls[1].position.copy(p)}),a}var Er=require("three"),kd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),s=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:c,pathSegments:p,cornerRadius:l,cornerSegments:u}=i.parameters,d=new ni(!1,t,e,r,o,n,s,a,c,p,l,u);return Object.assign(d,{userData:{...i,type:"HelixGeometry"}})}},ni=class extends Er.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,n=1,s=1,a=1,c=1,p=1,l=1,u=1,d=1){super();let m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new Er.Vector3,h=new Er.Vector3,g=f(),x=f(),v=f(),A,_,b,D,S,y,I,T,L=f(),C=f(),N=f(),j=f(),W=f(),ne=f(),ue=f(),se=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(a*s),E=F+1,B=K/F,P=-K/2,G=l+1,Q=2*Math.PI/l,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(Ue=>Array($*Ue).fill(0)),fe=[],Re=n-c;function ge(Ue,Mt){let or=Math.PI/2;y=Mt*B,T=2*Math.PI*(y%U)/U+or,y+=P,I=Math.sin(T)*Re,S=Math.cos(T)*Re,t?Ue.set(S,I,y):Ue.set(S,y,I)}ge(h,-1e-10),ge(g,0),L.copy(h),ge(h,1);let qe=h.distanceTo(g),Ae=M+z,St=qe*F+2*Ae,Vt=z,Io=St-Ae;for(let Ue=0;Ue<=F;Ue++){ge(x,Ue),se.subVectors(x,L).normalize(),L.copy(x),ne.copy(x).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Mt=Ue===0,or=Ue===F,Pf=Mt?3*Math.PI/2:k,Mf=Mt?Vt:Io,Df=Mt?G:Z,Bf=Mt?0:$-G,Ef=se.clone().multiplyScalar(Mt?-M:M).add(x),Gf=se.clone().multiplyScalar(Mt?-1:1).normalize();for(let Nr=0;Nr<G;Nr++){let hc=Nr*Q;if(C.addVectors(h.copy(ne).multiplyScalar(c*Math.cos(hc)),g.copy(ue).multiplyScalar(c*Math.sin(hc))),N.copy(C).normalize(),Mt||or){m||(q=Bf+Nr,[0,1,2].forEach(wt=>{re[q*3+wt]=Ef.getComponent(wt),ce[q*3+wt]=Gf.getComponent(wt)}),ie[q*2]=+or,ie[q*2+1]=Nr/l),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let wt=0;wt<d;wt++){let Ra=wt*k+Pf;j.addVectors(h.copy(se).multiplyScalar(M*Math.sin(Ra)),g.copy(N).multiplyScalar(M*Math.cos(Ra))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=Df+wt*G+Nr,[0,1,2].forEach(ji=>{re[q*3+ji]=g.getComponent(ji),ce[q*3+ji]=W.getComponent(ji)});let Rf=+Mt+Math.sin(Ra);ie[q*2]=(Mf+M*Rf)/St,ie[q*2+1]=Nr/l}}g.addVectors(x,C),q=H+Ue*G+Nr,[0,1,2].forEach(wt=>{re[q*3+wt]=g.getComponent(wt),ce[q*3+wt]=N.getComponent(wt)}),ie[q*2]=(Ae+Ue*qe)/St,ie[q*2+1]=Nr/l}}let Pt=E+2*d+J,Po=1,[Ui,ki]=m?[Po,Po+E-1]:[0,Pt-1];for(let Ue=Ui;Ue<=ki-1;Ue++){let Mt=m&&Ue===ki-1;for(let or=0;or<G-1;or++)A=Ue*G+or,_=A+1,b=(Mt?or:A)+G,D=(Mt?or+1:_)+G,Ue===0?fe.push(_,D,b):Ue===Pt-2?fe.push(A,_,b):fe.push(A,_,b,_,D,b)}this.setIndex(fe),this.setAttribute("position",new Er.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(ie,2))}};var jd=require("three");var Hd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.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(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new ii(t*.5,n,s):new jd.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},ii=class extends Kr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-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],a="IcosahedronGeometry";super(n,s,a,t,e,r),this.type=a}static fromJSON(t){return new ii(t.radius,t.corner,t.cornerSides)}};var ta=require("three"),Wd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.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}]},i.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(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new ta.Shape;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 n=new ta.LatheBufferGeometry(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var pr=require("three");var Gr=require("three");var oe=require("three"),ur=new oe.Matrix4,Al=new oe.Object3D,ra=new oe.Vector3,Zr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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 oe.Matrix3().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 n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.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 ur.makeRotationX(t),this.applyMatrix4(ur),this}rotateY(t){return ur.makeRotationY(t),this.applyMatrix4(ur),this}rotateZ(t){return ur.makeRotationZ(t),this.applyMatrix4(ur),this}translate(t,e,r){return ur.makeTranslation(t,e,r),this.applyMatrix4(ur),this}scale(t,e,r){return ur.makeScale(t,e,r),this.applyMatrix4(ur),this}lookAt(t){return Al.lookAt(t),Al.updateMatrix(),this.applyMatrix4(Al.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 n=o.position,s=o.normal,a=o.color,c=o.uv,p=o.uv2;p!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<n.count;d++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,d)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,d));function l(d,m,f,h){let g=a===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,m),new oe.Vector3().fromBufferAttribute(s,f)],v=new mn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,m),new oe.Vector2().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(p,d),new oe.Vector2().fromBufferAttribute(p,m),new oe.Vector2().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?l(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):l(g,g+1,g+2,m.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)l(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<n.count;d+=3)l(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(ra).negate(),this.translate(ra.x,ra.y,ra.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],c=this.vertices[n.c];t.subVectors(c,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.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 oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],c=this.vertices[a.a],p=this.vertices[a.b],l=this.vertices[a.c];r.subVectors(l,p),o.subVectors(c,p),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.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 n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.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 n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Zr;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 n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,c=this.faces.length;a<c;a++){let p=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(p),s.push(l)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],c=o.faceNormals[n],p=o.vertexNormals[n];c.copy(a.normal),p.a.copy(a.vertexNormals[0]),p.b.copy(a.vertexNormals[1]),p.c.copy(a.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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),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,n=this.vertices.length,s=this.vertices,a=t.vertices,c=this.faces,p=t.faces,l=this.colors,u=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let d=0,m=a.length;d<m;d++){let h=a[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)l.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new mn(f.a+n,f.b+n,f.c+n);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;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=[],n=Math.pow(10,t);for(let c=0,p=this.vertices.length;c<p;c++){let l=this.vertices[c],u=Math.round(l.x*n)+"_"+Math.round(l.y*n)+"_"+Math.round(l.z*n);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 l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let u=[l.a,l.b,l.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 l=0,u=this.faceVertexUvs.length;l<u;l++)this.faceVertexUvs[l].splice(p,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new oe.Vector3(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],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),a&&a.push(n[p])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}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 f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],n={},s=[],a={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=l(S,0,0),S=l(S,1,g),S=l(S,2,x),S=l(S,3,v),S=l(S,4,A),S=l(S,5,_),S=l(S,6,b),S=l(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){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 l(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return n[h]!==void 0||(n[h]=o.length/3,o.push(f.x,f.y,f.z)),n[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return a[h]!==void 0||(a[h]=s.length,s.push(f.getHex())),a[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.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 Zr().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,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let n=t.morphTargets;for(let d=0,m=n.length;d<m;d++){let f={};if(f.name=n[d].name,n[d].vertices!==void 0){f.vertices=[];for(let h=0,g=n[d].vertices.length;h<g;h++)f.vertices.push(n[d].vertices[h].clone())}if(n[d].normals!==void 0){f.normals=[];for(let h=0,g=n[d].normals.length;h<g;h++)f.normals.push(n[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.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(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let a=t.skinWeights;for(let d=0,m=a.length;d<m;d++)this.skinWeights.push(a[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;d++)this.lineDistances.push(p[d]);let l=t.boundingBox;l!==null&&(this.boundingBox=l.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 Cl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,c=s.length;a<c;a++){let p=s[a],l=new oe.Float32BufferAttribute(p.data.length*3,3);l.name=p.name,n.push(l.copyVector3sArray(p.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(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 oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),n=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(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}};Zr.prototype.isGeometry=!0;var Cl=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,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}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,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,c=a.length,p;if(c>0){p=[];for(let x=0;x<c;x++)p[x]={name:a[x].name,data:[]};this.morphTargets.position=p}let l=t.morphNormals,u=l.length,d;if(u>0){d=[];for(let x=0;x<u;x++)d[x]={name:l[x].name,data:[]};this.morphTargets.normal=d}let m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.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 _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!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 oe.Vector2,new oe.Vector2,new oe.Vector2))}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 oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let D=a[b].vertices;p[b].data.push(D[v.a],D[v.b],D[v.c])}for(let b=0;b<u;b++){let D=l[b].vertexNormals[x];d[b].data.push(D.a,D.b,D.c)}h&&this.skinIndices.push(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[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}},mn=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],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 tb=["a","b","c"];function rb(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Nl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Ol(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,t),c=s+"_"+a,p;if(r.has(c))p=r.get(c);else{let l=e[s],u=e[a];p={a:l,b:u,newEdge:null,faces:[]},r.set(c,p)}p.faces.push(o),n[i].edges.push(p),n[t].edges.push(p)}function ob(i,t,e,r){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)s=t[o],Ol(s.a,s.b,i,r,s,e),Ol(s.b,s.c,i,r,s,e),Ol(s.c,s.a,i,r,s,e)}function oa(i,t,e,r,o){i.push(new mn(t,e,r,void 0,void 0,o))}function fn(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function na(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ia=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Gr.BufferGeometry?t=new Zr().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 Gr.Vector3,r,o,n,s,a,c=t.vertices,p=t.faces,l=t.faceVertexUvs[0],u=l!==void 0&&l.length>0,d=[],m=new Map;ob(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new Gr.Vector3,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=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],a=0;a<3&&(h=c[rb(v,tb[a])],!(h!==g.a&&h!==g.b));a++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,I,T,L,C,N=[];for(o=0,n=c.length;o<n;o++){for(L=c[o],T=d[o].edges,r=T.length,r==3?D=3/16:r>3&&(D=3/(8*r)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=L.clone().multiplyScalar(S),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)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,ne,ue,se,K=[],U=[],F,E,B,P,G=new Gr.Vector2,Q=new Gr.Vector2,k=new Gr.Vector2;for(o=0,n=p.length;o<n;o++)v=p[o],ne=Number(Nl(v.a,v.b,m).newEdge)+W,ue=Number(Nl(v.b,v.c,m).newEdge)+W,se=Number(Nl(v.c,v.a,m).newEdge)+W,oa(K,ne,ue,se,v.materialIndex),oa(K,v.a,ne,se,v.materialIndex),oa(K,v.b,ue,ne,v.materialIndex),oa(K,v.c,se,ue,v.materialIndex),u&&(F=l[o],E=F[0],B=F[1],P=F[2],G.set(fn(E.x,B.x),fn(E.y,B.y)),Q.set(fn(B.x,P.x),fn(B.y,P.y)),k.set(fn(E.x,P.x),fn(E.y,P.y)),na(U,G,Q,k),na(U,E,G,k),na(U,B,Q,G),na(U,P,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var Je=new pr.Vector3,qd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Je),r={width:Je.x,height:Je.y,depth:Je.z,subdivisions:0}):r=t.parameters;let o={...r,...i.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(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(Je)):Je.set(s.width,s.height,s.depth),(t!==Je.x||e!==Je.y||r!==Je.z)&&n.scale(Je.x===0?1:t/Je.x,Je.y===0?1:e/Je.y,Je.z===0?1:r/Je.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new ia(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new pr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Je);let s=100/Je.x;Object.assign(n.parameters,{width:100,height:Je.y*s,depth:Je.z*s}),t(this.build(n))})}};var $d=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,c=i.shape,p=t*.5,l=e*.5,u=0,d=0,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*h,x=u+Math.sin(g)*p,v=d+Math.cos(g)*l;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 f=vt.create({shape:c,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...i,type:"PolygonGeometry"}})}};var ve=require("three"),Xd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.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(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:c}=i.parameters,p=new Il(t*.5,e,o,n,s,a,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...i,type:"PyramidGeometry"}})}};function si(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Ll(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),c=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let p=s.add(a).normalize();n.copy(i).addScaledVector(p,r/Math.sin(c/2))}else{let p=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(p)),n.addScaledVector(a,r/Math.sin(p))}}function nb(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Il=class extends ve.BufferGeometry{constructor(t=.5,e=1,r=4,o=1,n=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let c=[],p=[],l=[],u=[],d=0,m=e/2,f=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 ve.Vector3(0,-m,0),_=new ve.Vector3(0,m,0),b=new ve.Vector2(t,-m),D=new ve.Vector2(h,-m),S=new ve.Vector2(0,_.y).sub(D),y=new ve.Vector2(0,_.y).sub(b),I=new ve.Vector2(S.y,-S.x).normalize(),T=new ve.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new ve.Vector3(I.x,I.y,0),F=new ve.Vector3(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),ne=new ve.Vector3;if(!n){p.push(A.x,A.y,A.z),l.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let P=0;P<r;P++){let G=P/r*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));si(E,Q,ne),p.push(ne.x,ne.y,ne.z),l.push(0,-1,0),u.push(0,0),F.push(d++)}for(let P=0;P<F.length;P++)c.push(F[P],U,F[(P+1)%F.length])}let ue=[];{let U=new ve.Vector3,F=new ve.Vector3,E=new ve.Vector3,B=new ve.Vector3,P=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new ve.Vector2(Math.sin(k),Math.cos(k)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),J=new ve.Vector2(Math.sin(z),Math.cos(z));si(b,M,F),si(b,J,E),si(I,q,U),Ll(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Ll(F,_,E,W,j,P),p.push(P.x,P.y,P.z),Ll(E,F,_,j,W,G),p.push(G.x,G.y,G.z),l.push(U.x,U.y,U.z),l.push(U.x,U.y,U.z),l.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 ce=F.clone().add(E).multiplyScalar(.5),ie=_.clone().sub(ce).normalize(),Re=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(P);se(ce,ge,Re,S.angle())}let $,re;{let ce=new ve.Vector3;si(T,J,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=nb(ie,E,_);let fe=G.clone().sub(B);[$,re]=se(ie,fe,ce,N,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),Re=ie.clone().cross(fe);K(ce,ie,fe,Re)}ue.concat(re);{let ce=S.angle(),ie=Math.PI-ce,fe=_.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Ae=0;Ae<a;Ae++){let St=[],Vt=Math.PI/2-ie*Ae/a,Io=Math.cos(Vt),Pt=Math.sin(Vt),Po=V;for(let Ui=0;Ui<=Ae;Ui++){let ki=Math.cos(Po),Ue=Math.sin(Po);U.x=Io*Ue,U.y=Pt,U.z=Io*ki,Re.copy(fe).addScaledVector(U,s),p.push(Re.x,Re.y,Re.z),l.push(U.x,U.y,U.z),u.push(0,0),St.push(d++),Po+=Math.PI*2/Ae/r}ge.push(St)}re.reverse(),ge.push(re);let qe=ge.length-1;for(let Ae=0;Ae<qe;Ae++){let St=ge[Ae],Vt=ge[Ae+1],Io=St.length-1;c.push(Vt[1],St[0],Vt[0]);for(let Pt=1;Pt<=Io;Pt++)c.push(St[Pt],St[Pt-1],Vt[Pt]),c.push(Vt[Pt+1],St[Pt],Vt[Pt])}}}}}this.setIndex(c),this.setAttribute("position",new ve.Float32BufferAttribute(p,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(l,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(u,2));function se(U,F,E,B,P){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new ve.Vector3,z=new ve.Vector3,M=1,q=d,J=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*B;z.set(0,0,0),z.addScaledVector(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),P!=null){let re=Math.max(0,V.y-P);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.z),l.push(z.x,z.y,z.z),u.push(0,0),Z===0&&J.push(d),d++}}for(let ee=0;ee<a;ee++)for(let H=0;H<M;H++){let Z=q+H+(M+1)*ee,$=Z+(M+1),re=$+1,ce=Z+1;c.push(Z,$,ce),c.push($,re,ce)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let P=Math.PI/2,G=y.angle()-P,Q=[],k=new ve.Vector3,V=new ve.Vector3;for(let M=0;M<=a;M++){let q=[],J=M/a;for(let ee=0;ee<=M;ee++){let Z=((M?ee/M:0)-.5)*v,$=Math.cos(Z),re=Math.sin(Z),ce=Math.atan(Math.tan(G)*$),ie=(P+ce)*J,fe=Math.cos(ie),Re=Math.sin(ie);k.set(0,0,0),k.addScaledVector(F,Re*$),k.addScaledVector(E,fe),k.addScaledVector(B,Re*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),l.push(k.x,k.y,k.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 Yd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,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(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}=i.parameters,p={x:e*.5,y:r*.5},l={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=l.x,h=u.x,g=u.y,x=l.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=vt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...i,type:"RectangleGeometry"}})}};var Kd=require("three"),Qd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.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(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:c,thetaLength:p}=i.parameters,l=new Kd.SphereBufferGeometry(.5*t,o,n,s,a,c,p);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...i,type:"SphereGeometry"}})}};var Zd=require("three"),Jd=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Zd.PlaneBufferGeometry(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Jr=require("three"),em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.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(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Pl(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Pl=class extends Jr.BufferGeometry{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],c=[],p=[],l=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-l,o),o*=Math.PI/180;let u=[],d=Math.PI/2,m=(V=0,z=0,M=0)=>new Jr.Vector3(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),I=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,L=b.z-l;o<=d?(S.z=Math.min(T,L),S.z==L&&(S.y-=(T-L)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-l),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*n/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),I(o,!0)),u.push([S,f.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*ne;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),I(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ue=Math.sin(ne/2)*N*2,se=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[se-1][0].distanceTo(u[se][0]),F=K+ue*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ue)/F);u[se].push(0);let[E,B,P]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],a.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,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,P,0,k,1,P,1,P,0,k,1,k),[E,B,P]=[G,Q,k];this.setAttribute("position",new Jr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Jr.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Jr.Float32BufferAttribute(p,2))}};var tm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}=i.parameters,l=i.shape,u=t*.5,d=e*.5,m=0,f=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 _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;l.addPoint(l.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;l.addPoint(l.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,l.addPoint(l.createPoint(b,D)),g+=h}l.isClosed=!0;for(let _=0,b=l.points.length;_<b;_++)l.points[_].roundness=n;l.roundness=n,l.update();let A=vt.create({shape:l,parameters:{roundness:n,depth:a,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...i,type:"StarGeometry"}})}};var rm=require("three"),sa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.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(i){let{width:t,height:e}=i.parameters,r=new rm.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var om=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:c}=i.parameters,p=ib(t,e,r,t*.5,s,n,0,0,o,a,c);return p.scale(1,e/t,1),Object.assign(p,{userData:{...i,type:"TorusGeometry"}})}};function ib(i,t,e,r,o,n,s,a,c,p,l){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(p=0),new ni(!0,i,t,e,r,o,n,s,a,c,p,l)}var nm=require("three"),im=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.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(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let c=new nm.TorusKnotBufferGeometry(a,e,r,o,n,s);return Object.assign(c,{userData:{...i,type:"TorusKnotGeometry"}})}};var sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,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(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,c=i.shape,p=t*.5,l=e*.5;a?(c.addPoint(c.createPoint(-p,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(p,-l)),c.addPoint(c.createPoint(-p,-l))),c.isClosed=!0;for(let d=0,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=vt.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...i,type:"TriangleGeometry"}})}};var He=require("three");var sb,aa=new Promise(i=>{sb=i});var ym=require("three");var ro=require("three");var da=require("three");var Bl=require("three");var ca=require("three");var Ml=require("three");function Ye(i,t){return t.color(i)}var Dl=i=>"isEntity"in i,dr=i=>"isAbstractMesh"in i,mr=i=>i!==null&&i.isBooleanMesh,am=i=>i.objectType==="CombinedCamera";var la=i=>"objectHelper"in i;function ab(i,t){let e=!1;t.position&&(i.position.fromArray(t.position),e=!0),t.rotation&&(i.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,i.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray(t.hiddenMatrix??Wr.identity)),e&&(i.updateMatrix(),mr(i.parent)&&dr(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=t.isUpVectorFlipped),i.updateUp())}function lb(i,t){ab(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.visible=t.visible)}function lm(i,t,e){lb(i,t),t.color!==void 0&&(i.color=Ye(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Ml.HemisphereLight)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Ml.HemisphereLight)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0)}function cm(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var ua=i=>class extends i{hasEntityChild(){return this.children.some(e=>Dl(e))}isDescendantOf(e){e instanceof ca.Object3D&&(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 ca.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Dl(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 n=e.children[o];this.add(n.clone())}return this}};var ze=require("three");var hn=new ze.Box3,fr=new ze.Vector3,hr=new ze.Vector3,gn=new ze.Matrix4,pm=[new ze.Vector3(-1,1,1),new ze.Vector3(-1,-1,1),new ze.Vector3(1,-1,1),new ze.Vector3(1,1,1),new ze.Vector3(-1,1,-1),new ze.Vector3(-1,-1,-1),new ze.Vector3(1,-1,-1),new ze.Vector3(1,1,-1)],cb=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],ub=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function pb(i,t,e=0,r=t.count){let o=1/0,n=1/0,s=1/0,a=-1/0,c=-1/0,p=-1/0;for(let l=e;l<r;l++){let u=t.getX(l),d=t.getY(l),m=t.getZ(l);u<o&&(o=u),d<n&&(n=d),m<s&&(s=m),u>a&&(a=u),d>c&&(c=d),m>p&&(p=m)}return i.min.set(o,n,s),i.max.set(a,c,p),i}var um=(i,t,e)=>{if(dr(i)){let r=i.geometry.userData.parameters,o=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?fr.copy(i.originalGeometry.boundingSphere.center):o!==void 0&&(pb(hn,o,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:o.count),hn.getCenter(fr)),i.forceComputeSize?hn.getSize(hr).multiplyScalar(.5):hr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(la(i)&&i.objectHelper.visible){let r=i.geometryHelper.getAttribute("position");hn.setFromArray(r.array),hn.getCenter(fr),hn.getSize(hr).multiplyScalar(.5)}else fr.setScalar(0),hr.setScalar(0);gn.copy(t).multiply(i.matrixWorld),hr.x===0&&hr.y===0&&hr.z===0?e.push(new ze.Vector3(fr.x,fr.y,fr.z).applyMatrix4(gn)):pm.forEach(r=>{e.push(r.clone().multiply(hr).add(fr).applyMatrix4(gn))})},ai=class extends ze.Box3{constructor(){super(...arguments);this.matrix=new ze.Matrix4;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 ze.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&um(s,r,n)}):um(e,r,n),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(hr).multiplyScalar(.5),this.getCenter(fr),gn.copy(this.matrix).setPosition(fr),this.vertices=pm.map(e=>e.clone().multiply(hr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=cb.map(([e,r])=>new ze.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ze.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=ub.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var gr=i=>"isEntity"in i,dm=i=>"isAbstractMesh"in i,jt=i=>class extends ua(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Bl.Matrix4;this._singleBBox=new ai;this._recursiveBBox=new ai;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=>{gr(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)gr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)gr(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 n=this.parent;if(r&&n!==null&&n.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 n of r.children)gr(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new Bl.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)gr(n)&&n.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 Ko(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 Ko(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}};var Ke=require("three");var mm=require("three"),El=class extends mm.Object3D{},pa=class extends El{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 _o=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),n=.1;this.parameters=Ss.defaultData(o.toArray(),n),mo(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 n=new pa(this.object);n.visible=!0,this.add(n),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*Ke.MathUtils.DEG2RAD,n=r.end*Ke.MathUtils.DEG2RAD,s=o-n,a=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),c;switch(r.axis){case"z":c=new Ke.Vector3(0,0,1);break;case"y":c=new Ke.Vector3(0,1,0);break;default:case"x":c=new Ke.Vector3(1,0,0);break}for(let[p,l]of this.children.entries()){l.scale.x=r.scale[0],l.scale.y=r.scale[1],l.scale.z=r.scale[2],l.position.setScalar(0);let u=s/e.count*p-o;switch(r.axis){case"x":l.rotation.set(0,u,0);break;case"y":l.rotation.set(0,0,u);break;case"z":l.rotation.set(u,0,0);break}l.translateOnAxis(c,r.radius),l.position.x+=r.position[0],l.position.y+=r.position[1],l.position.z+=r.position[2],r.alignment===!0?(l.rotation.x+=a.x,l.rotation.y+=a.y,l.rotation.z+=a.z):l.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())s.scale.x=1+(r.scale[0]-1)*n,s.scale.y=1+(r.scale[1]-1)*n,s.scale.z=1+(r.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=r.position[0]*n,s.position.y=r.position[1]*n,s.position.z=r.position[2]*n}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let n={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 Ke.Vector3(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.z)*.5);for(let a=0;a<o.count[0];a++)for(let c=0;c<o.count[1];c++)for(let p=0;p<o.count[2];p++){let l=this.children[r++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*a-s.x,l.position.y=o.size[1]*c-s.y,l.position.z=o.size[2]*p-s.z}}else for(let n=0;n<o.count[0];n++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let c=this.children[r++];c.scale.setScalar(1),c.rotation.set(0,0,0),c.position.x=o.size[0]*n,c.position.y=-o.size[1]*s,c.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),mo(this.parameters,e),this.update(),this}};var Rt=require("three");function db(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new Rt.Vector3(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new Rt.Vector3})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new Rt.Float32BufferAttribute(o,3))}function mb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new Rt.Vector3;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;i.geometry.setAttribute("extrudeNormal",new Rt.Float32BufferAttribute(e,3))}function eo(i){if(i.objectType!=="TextFrame"){if(Array.isArray(i.material)){for(let t of i.material)if(t.getLayersOfType("outline").length===0)return}else if(i.material.getLayersOfType("outline").length===0)return;i.objectType==="Mesh2D"?mb(i):db(i)}}function to(i){if(!i.geometry.attributes.position)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[Rt.MathUtils.seededRandom(r),Rt.MathUtils.seededRandom(r+1e4),Rt.MathUtils.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new Rt.BufferAttribute(e,3))}var it=class extends jt(da.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new da.Matrix4;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=Gl[r.userData.type],n=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,n)),a=r.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),eo(this),r.getAttribute("randomColor")&&to(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=li(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new _o(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new _o(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&&(Yt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),mr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),mr(e)&&e.invalidateUpstreamBooleanData())}};var fb=new ro.Vector3(0,0,1),fm=new ro.Vector3,hm=new ro.Vector3,gm=new ro.Matrix3,yn=class extends it{constructor(e=vt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new ro.EventDispatcher;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),gm.getNormalMatrix(this.matrixWorld),fm.copy(fb).applyMatrix3(gm).normalize(),hm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(fm,hm)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=vt.create(Object.assign({},n,{shape:r})),a=new yn(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){it.prototype.raycast.call(this,e,r)}};function ma(i,t){return hb(i)}function hb(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Ce.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new ym.BufferGeometryLoader().parse(i));let e;try{e=li(t)}catch(r){console.error(r)}if(!e){let r=Ce.createFromState(on.defaultData(),100,100);t.shape=r,e=li(t)}return e}var de;aa.then(i=>{de=i});var xm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),vm=new Uint32Array([0,1,2,3]),bm=new Uint8Array([4]),Ht=class{static build(i,t,e,r,o){let n,s,a,c=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(c=-1),i.positionWASM!==void 0){e&&e!==0&&(de.free_bvh(e),de.free_subdivision_surface(e));try{n=Ht.allocate(i,o)}catch(p){console.error(p,i),n=Ht.allocate({positionWASM:xm,indexWASM:vm,verticesPerFaceWASM:bm},o)}de.set_destination_refinement_level(n,0),s=Ht.buildLevel(n,!0,c)}else n=e,i.phongAngle!==void 0&&(s=Ht.buildLevel(n,!0,c));return i.subdivisions!==void 0&&(de.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Ht.buildLevel(n,!1,c):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,t){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?t.geometry:ma(i),r,o,n,s;return{positions:r,triIndices:s}=zl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=Ul(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=xm,r=vm,o=bm);let a=e.length,c=r.length,p=o.length,l=e.length+n.length+s.length,u=r.length+o.length,d=l*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,m=l*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=de._malloc(d),g=new Float32Array(de.HEAPF32.buffer,h,l),x=new Uint32Array(de.HEAPU32.buffer,h+m,u);g.set(e,0),g.set(n,e.length),g.set(s,e.length+n.length),x.set(r,0),x.set(o,r.length);let v;i?.scaleBaked?.some(_=>_!==1)&&(v=new He.Matrix4().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?de.alloc_subdivision_surface2(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):de.alloc_subdivision_surface(h,a,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return de._free(h),A}static buildLevel(i,t,e,r,o){let n=o?de.get_mesh_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(i,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(n>>2,(n>>2)+s),c=a.subarray(4,4+4),p=0,l=de.HEAPU32[a[p]>>2],u=de.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=de.HEAPU32[a[p]>>2],m=de.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=de.HEAPU32[a[p]>>2],h=de.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=de.HEAPU32[a[p]>>2],x=de.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(x,1)),v.setAttribute("position",new He.Float32BufferAttribute(u,3)),v.setAttribute("normal",new He.Float32BufferAttribute(m,3)),t){v.setAttribute("faceMap",new He.Uint32BufferAttribute(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(A,4))}return de.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=de.get_wireframe_data_for_base_level(i),o=4,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,c=de.HEAPU32[n[a]>>2],p=de.HEAPF32.subarray(c>>2,(c>>2)+s[a]);a++;let l=de.HEAPU32[n[a]>>2],u=de.HEAPU32.subarray(l>>2,(l>>2)+s[a]);if(t===void 0){let d=new He.BufferGeometry;d.setAttribute("position",new He.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new He.BufferAttribute(m,3)),d.setIndex(new He.Uint32BufferAttribute(u,1)),de.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||de.set_destination_refinement_level(i,1);let r=e?de.get_topological_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(i,t?de.Level.CONTROL:de.Level.REFINED),o=6,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,c=de.HEAPU32[n[a]>>2],p=new Float32Array(de.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=de.HEAPU32[n[a]>>2],u=new Uint32Array(de.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=de.HEAPU32[n[a]>>2],m=new Uint8Array(de.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return de.free_topological_data(r),{positions:p,indices:u,verticesPerFace:m}}};var _m=["getX","getY","getZ"];function zl(i,t){let e={},r=t?t.count:i.count,o=0,n=[],s=[],a=1e4;for(let p=0;p<r;p++){let l=t?t.getX(p):p,u="";for(let d=0;d<3;d++)u+=`${~~(i[_m[d]](l)*a)},`;if(u in e)n.push(e[u]);else{for(let d=0;d<3;d++)s.push(i[_m[d]](l));e[u]=o,n.push(o),o++}}let c=[];for(let p=0;p<n.length;p+=3)n[p]===n[p+1]||n[p]===n[p+2]||n[p+1]===n[p+2]||c.push(n[p],n[p+1],n[p+2]);return{positions:s,triIndices:c}}var fa=new He.Vector3,Rl=new He.Vector3,Fl=new He.Vector3,Vl=new He.Vector3;function Ul(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let c=0;c<n.length;c+=2)s+=(n[c]-n[(c===0?n.length:c)-2])*(n[c+1]+n[(c===0?n.length:c)-1]);i.length=0;let a=0;if(s<0)for(let c=0;c<n.length;c+=2)i.push(n[c],n[c+1],0),r.push(a++);else for(let c=n.length-2;c>=0;c-=2)i.push(n[c],n[c+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){fa.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Rl.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),Fl.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),Vl.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Rl.sub(fa).normalize(),Fl.sub(fa).normalize(),Vl.sub(fa).normalize();let a=Rl.cross(Fl).dot(Vl);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let c=0,p=0;c<i.length;c+=3,p++)i[c+2]===0&&(n.push(p),a++),i[c+2]===e.userData.parameters.depth&&s.push(p);if(e.userData.parameters.extrudeBevelSize===0){let c=s[0];s[0]=s[1],s[1]=c}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var Yt={};yc(Yt,{calcBoolean:()=>vb,calcBooleanTopological:()=>xb,freeMeshSet:()=>Sb,getMeshSet:()=>bb,transformMeshSet:()=>_b});var gb,Sm=new Promise(i=>{gb=i});var ci=require("three");var ye,xn;Sm.then(i=>ye=i);function yb(i,t){let e,{positions:r,triIndices:o}=zl(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=Ul(r,o,i);n=a.length,e=[];for(let c=0,p=0;c<n;c++){e.push(a[c]);for(let l=0;l<a[c];l++)e.push(s[p++])}}else{let s=o.length;e=Array(s+s/3),n=0;for(let a=0,c=0;c<e.length;)e[c++]=3,n++,e[c++]=o[a++],e[c++]=o[a++],e[c++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function wm(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=ye._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(ye.HEAPU32.buffer,n,t):new Float32Array(ye.HEAPF32.buffer,n,t)).set(i,0),n}function Tm(i){switch(i){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function xb(i,t){xn===void 0&&(xn=ye.init_csg());let e=wm(i),r=ye.csg_calc_topological(xn,e,i.length,Tm(t));ye._free(e);let o=6,n=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,c=ye.HEAPU32[n[a]>>2],p=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[a]));a++;let l=ye.HEAPU32[n[a]>>2],u=new Uint32Array(ye.HEAPU32.subarray(l>>2,(l>>2)+s[a]));a++;let d=ye.HEAPU32[n[a]>>2],m=new Uint8Array(ye.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return ye.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function vb(i,t,e,r){xn===void 0&&(xn=ye.init_csg());let o=wm(i),n=ye.csg_calc(xn,o,i.length,r,Tm(t));ye._free(o);let s=5,a=ye.HEAPU32.subarray(n>>2,(n>>2)+s),c=a.subarray(2,2+3),p=0,l=ye.HEAPU32[a[p]>>2],u=ye.HEAPF32.subarray(l>>2,(l>>2)+c[p]);p++;let d=ye.HEAPU32[a[p]>>2],m=ye.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new ci.Float32BufferAttribute(u,3)),e.setAttribute("normal",new ci.Float32BufferAttribute(m,3));let h=ye.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new ci.Sphere),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},ye.free_mesh_data(n),f}function bb(i,t){if(ye===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let h=i.userData;o=h.verticesPerFace.length,e=h.positions,r=Array(h.verticesPerFace.reduce((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=yb(i,t));let n=e.length,s=r.length,a=e.length,c=r.length,p=a*Float32Array.BYTES_PER_ELEMENT+c*Uint32Array.BYTES_PER_ELEMENT,l=a*Float32Array.BYTES_PER_ELEMENT,u=c*Uint32Array.BYTES_PER_ELEMENT,d=ye._malloc(p),m=new Float32Array(ye.HEAPF32.buffer,d,a),f=new Uint32Array(ye.HEAPU32.buffer,d+l,c);return m.set(e,0),f.set(r,0),ye.get_csg_mesh(d,n,d+l,s,o)}function _b(i,t){ye.transform_csg_mesh(i,t.elements)}function Sb(i){ye.free_csg_mesh(i)}var Gl={ConeGeometry:md,CubeGeometry:fd,CylinderGeometry:pd,DodecahedronGeometry:gd,EllipseGeometry:Fd,HelixGeometry:kd,IcosahedronGeometry:Hd,LatheGeometry:Wd,NonParametricGeometry:qd,PolygonGeometry:$d,PyramidGeometry:Xd,RectangleGeometry:Yd,SphereGeometry:Qd,PlaneGeometry:Jd,BackdropGeometry:em,StarGeometry:tm,TextFrameGeometry:sa,TorusGeometry:om,TorusKnotGeometry:im,TriangleGeometry:sm,VectorGeometry:vt},li=i=>Gl[i.type].create(i);var ui=require("three");var Am=new ui.Matrix4;var ha=class extends it{constructor(e=new ui.BufferGeometry,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,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 n=this.children[o];mr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(dm(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=Yt.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;Yt.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else mr(n)&&n.needsTransformForDownstream===!0?(Yt.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Am.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),Yt.transformMeshSet(n.booleanMeshSetAddress,Am),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Yt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new ui.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Yt.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,eo(this),to(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()}};var Ge=require("three");var Cm=require("three"),yr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new Cm.BoxBufferGeometry(30,30,30),t};var ut=require("three");var ft=require("three"),ga=new ft.Ray,kl=new ft.Sphere,Nm=new ft.Matrix4,xr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),kl.copy(n.boundingSphere),kl.applyMatrix4(s),e.ray.intersectsSphere(kl)===!1||(Nm.copy(s).invert(),ga.copy(e.ray).applyMatrix4(Nm),n.boundingBox!==null&&ga.intersectsBox(n.boundingBox)===!1))return;let a,c,p,l,u=n.index,d=n.attributes.position,m=n.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),l=u.getX(f+2),a=g(i,e,ga,d,c,p,l),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=n.attributes.position,A=new ft.Vector3,_=new ft.Vector3,b=new ft.Vector3,D=new ft.Vector3,S=2,I=1/((i.scale.x+i.scale.y+i.scale.z)/3),T=I*I,L=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=L,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),ga.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(D);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function g(x,v,A,_,b,D,S){let y=new ft.Vector3,I=new ft.Vector3,T=new ft.Vector3,L=new ft.Vector3,C=new ft.Vector3;if(y.fromBufferAttribute(_,b),I.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,I,T,!1,L)===null)return null;C.copy(L),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var ya=new ut.Vector3,Wt=new ut.Camera,jl=class extends ut.LineSegments{constructor(e){let r=new ut.BufferGeometry,o=new ut.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},c=new ut.Color(15711266),p=new ut.Color(15711266),l=new ut.Color(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",l),u("u2","u3",l),u("u3","u1",l);function u(m,f,h){d(m,h),d(f,h)}function d(m,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(n.length/3-1)}r.setAttribute("position",new ut.Float32BufferAttribute(n,3)),r.setAttribute("color",new ut.Float32BufferAttribute(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=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Wt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;Kt("n1",r,e,Wt,-n,-s,a),Kt("n2",r,e,Wt,n,-s,a),Kt("n3",r,e,Wt,-n,s,a),Kt("n4",r,e,Wt,n,s,a);let c=a;Kt("f1",r,e,Wt,-n,-s,c),Kt("f2",r,e,Wt,n,-s,c),Kt("f3",r,e,Wt,-n,s,c),Kt("f4",r,e,Wt,n,s,c);let p=c,l=.5;Kt("u1",r,e,Wt,n*.7*l,s*1.1,p),Kt("u2",r,e,Wt,-n*.7*l,s*1.1,p),Kt("u3",r,e,Wt,0,s*(1.1+.9*l),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Kt(i,t,e,r,o,n,s){ya.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let c=e.getAttribute("position");for(let p=0,l=a.length;p<l;p++)c.setXYZ(a[p],ya.x,ya.y,ya.z)}}var xa=class extends yr(jl){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){xr(this.object,this.geometry,e,r,!0)}};var Om=require("three");var vn=class extends yr(Om.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,vn.geometryHelper,e,r)}};var Lm=require("three");var bn=class extends yr(Lm.AxesHelper){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){xr(this.object,bn.geometryHelper,e,r)}update(){}};var Im=require("three");var _n=class extends yr(Im.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,_n.geometryHelper,e,r)}};var ba=require("three");var va=class extends yr(ba.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,va.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=va._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 n=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(n);else this.cone.material.color.set(n)}}},pi=va;pi._vector=new ba.Vector3;var vr=(i,t)=>class extends i{constructor(){super(...arguments);this.objectHelper=new t(this)}get geometryHelper(){return t.geometryHelper}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ye(o.color,n)),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 Sn=new Ge.Vector3,Hl=new Ge.Vector3,Rr=class extends vr(jt(Ge.Camera),xa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=fo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(o,e/r,n??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 Rr().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(Sn),this.targetOffset=Sn.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(Hl),this.getWorldPosition(Sn),Hl.multiplyScalar(this.targetOffset),e.copy(Sn).add(Hl),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Sn),Sn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),r=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(r),s=new Ge.Vector3().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ge.Vector3),n=this.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().sub(n),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,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,s,a):this.orthoCamera.setViewOffset(e,r,o,n,s,a)}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 Ko(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.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}};var Pm=require("three");var So=class extends vr(jt(Pm.Group),bn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new So().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};var wo=require("three");var wn=class extends vr(jt(wo.DirectionalLight),vn){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;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new wo.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new wn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof wo.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof wo.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof wo.CameraHelper&&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&&cm(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}};var ht=require("three");var Tn=class extends vr(jt(ht.PointLight),_n){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;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new ht.Box3(n,s),c=new ht.Box3Helper(a,new ht.Color(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let n=new Tn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ht.Box3Helper&&(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 ht.Box3Helper){let o=this.shadow.camera,n=new ht.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ht.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(n,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}};var Nt=require("three");var Mm=new Nt.Vector3,Dm=new Nt.Vector3,Bm=new Nt.Quaternion,An=class extends vr(jt(Nt.SpotLight),pi){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;let o=this.shadow.camera;o.fov=Nt.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Nt.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new An().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Dm.setFromMatrixPosition(this.matrixWorld),Bm.setFromRotationMatrix(this.matrixWorld),Mm.copy(this.up).applyQuaternion(Bm).negate().multiplyScalar(this.distance),this.target.position.copy(Dm).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 Se=require("three");var Em=require("three"),st=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Em.MathUtils.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,n,s){return""}generate(t,e,r,o,n){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 st&&(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 Gm=require("three"),le=class extends st{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,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Gm.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!s);let a=e.getNodeData(o),c=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||a.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,a.output,n);let l=this.generate(e,c,o);return e.addNodeCode(p+" = "+l+";"),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,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Ie=class extends le{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,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let c=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(c.vertex.name,n,r)):(c.fragment||(c.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(c.fragment.name,n,r))}};var Ne=class extends Ie{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof ct?e:new ct(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let c=e.getNodeData(o),p=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let l=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${l};`)}return p?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(c.vertex.name,n,r)):(c.fragment||(c.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(c.fragment.name,n,r))}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var X=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}};var xe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}};var _a=require("three");var oo=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ne(5855577),this.shadingAlpha=new X(1),this.shadingBlend=new xe(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(_a.UniformsUtils.merge([_a.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
2
|
-
`));let
|
|
1
|
+
var eh=Object.create;var Zi=Object.defineProperty;var th=Object.getOwnPropertyDescriptor;var rh=Object.getOwnPropertyNames;var oh=Object.getPrototypeOf,nh=Object.prototype.hasOwnProperty;var wc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Tc=(n,t)=>{for(var e in t)Zi(n,e,{get:t[e],enumerable:!0})},Ac=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of rh(t))!nh.call(n,o)&&o!==e&&Zi(n,o,{get:()=>t[o],enumerable:!(r=th(t,o))||r.enumerable});return n};var Cc=(n,t,e)=>(e=n!=null?eh(oh(n)):{},Ac(t||!n||!n.__esModule?Zi(e,"default",{value:n,enumerable:!0}):e,n)),ih=n=>Ac(Zi({},"__esModule",{value:!0}),n);var yf=wc(Fa=>{(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 m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);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 m=u._howls[d]._getSoundIds(),f=0;f<m.length;f++){var h=u._howls[d]._soundById(m[f]);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$/,""),m=a._navigator?a._navigator.userAgent:"",f=m.match(/OPR\/([0-6].)/g),h=f&&parseInt(f[0].split("/")[1],10)<33,g=m.indexOf("Safari")!==-1&&m.indexOf("Chrome")===-1,x=m.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 m=new Audio;m._unlocked=!0,a._releaseHtml5Audio(m)}catch{a.noAudio=!0;break}for(var f=0;f<a._howls.length;f++)if(!a._howls[f]._webAudio)for(var h=a._howls[f]._getSoundIds(),g=0;g<h.length;g++){var x=a._howls[f]._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 m=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(m,m)}},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 m,f;if(a._format&&a._format[d])m=a._format[d];else{if(f=a._src[d],typeof f!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}m=/^data:audio\/([^;,]+);/i.exec(f),m||(m=/\.([^.]+)$/.exec(f.split("?",1)[0])),m&&(m=m[1].toLowerCase())}if(m||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),m&&t.codecs(m)){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,m=null;if(typeof a=="number")m=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 f=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(f++,m=d._sounds[h]._id);f===1?a=null:m=null}}var g=m?d._soundById(m):d._inactiveSound();if(!g)return null;if(m&&!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(m&&!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),_=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 S=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,S(),d._refreshBuffer(g);var N=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(N,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),_!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),_)),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 N=y.play();if(N&&typeof Promise<"u"&&(N instanceof Promise||typeof N.then=="function")?(d._playLock=!0,S(),N.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,S(),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),_):(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(j){d._emit("playerror",g._id,j)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var P=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||P)T();else{d._playLock=!0,d._state="loading";var C=function(){d._state="loaded",T(),y.removeEventListener(t._canPlayEvent,C,!1)};y.addEventListener(t._canPlayEvent,C,!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),m=0;m<d.length;m++){u._clearTimer(d[m]);var f=u._soundById(d[m]);if(f&&!f._paused&&(f._seek=u.seek(d[m]),f._rateSeek=0,f._paused=!0,u._stopFade(d[m]),f._node))if(u._webAudio){if(!f._node.bufferSource)continue;typeof f._node.bufferSource.stop>"u"?f._node.bufferSource.noteOff(0):f._node.bufferSource.stop(0),u._cleanBuffer(f._node)}else(!isNaN(f._node.duration)||f._node.duration===1/0)&&f._node.pause();arguments[1]||u._emit("pause",f?f._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 m=d._getSoundIds(a),f=0;f<m.length;f++){d._clearTimer(m[f]);var h=d._soundById(m[f]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(m[f]),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 m=d._getSoundIds(u),f=0;f<m.length;f++){var h=d._soundById(m[f]);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,m;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),m=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 m>"u"&&(a._volume=d),m=a._getSoundIds(m);for(var x=0;x<m.length;x++)g=a._soundById(m[x]),g&&(g._volume=d,u[2]||a._stopFade(m[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=m?a._soundById(m):a._sounds[0],g?g._volume:0;return a},fade:function(a,u,d,m){var f=this;if(f._state!=="loaded"||f._playLock)return f._queue.push({event:"fade",action:function(){f.fade(a,u,d,m)}}),f;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),f.volume(a,m);for(var h=f._getSoundIds(m),g=0;g<h.length;g++){var x=f._soundById(h[g]);if(x){if(m||f._stopFade(h[g]),f._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)}f._startFadeInterval(x,a,u,d,h[g],typeof m>"u")}}return f},_startFadeInterval:function(a,u,d,m,f,h){var g=this,x=u,v=d-u,A=Math.abs(v/.01),_=Math.max(4,A>0?m/A:m),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var D=(Date.now()-b)/m;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))},_)},_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,m,f;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return f=a._soundById(parseInt(u[0],10)),f?f._loop:!1;else u.length===2&&(d=u[0],m=parseInt(u[1],10));for(var h=a._getSoundIds(m),g=0;g<h.length;g++)f=a._soundById(h[g]),f&&(f._loop=d,a._webAudio&&f._node&&f._node.bufferSource&&(f._node.bufferSource.loop=d,d&&(f._node.bufferSource.loopStart=f._start||0,f._node.bufferSource.loopEnd=f._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,m;if(u.length===0)m=a._sounds[0]._id;else if(u.length===1){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),m=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 m>"u"&&(a._rate=d),m=a._getSoundIds(m);for(var x=0;x<m.length;x++)if(g=a._soundById(m[x]),g){a.playing(m[x])&&(g._rateSeek=a.seek(m[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(m[x]),A=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-v,_=A*1e3/Math.abs(g._rate);(a._endTimers[m[x]]||!g._paused)&&(a._clearTimer(m[x]),a._endTimers[m[x]]=setTimeout(a._ended.bind(a,g),_)),a._emit("rate",g._id)}}else return g=a._soundById(m),g?g._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,m;if(u.length===0)a._sounds.length&&(m=a._sounds[0]._id);else if(u.length===1){var f=a._getSoundIds(),h=f.indexOf(u[0]);h>=0?m=parseInt(u[0],10):a._sounds.length&&(m=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),m=parseInt(u[1],10));if(typeof m>"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(m);if(g)if(typeof d=="number"&&d>=0){var x=a.playing(m);x&&a.pause(m,!0),g._seek=d,g._ended=!1,a._clearTimer(m),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var v=function(){x&&a.play(m,!0),a._emit("seek",m)};if(x&&!a._webAudio){var A=function(){a._playLock?setTimeout(A,0):v()};setTimeout(A,0)}else v()}else if(a._webAudio){var _=a.playing(m)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+_*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 m=0;m<u._sounds.length;m++)if(!u._sounds[m]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,m=u._soundById(a);return m&&(d=u._sprite[m._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 m=t._howls.indexOf(a);m>=0&&t._howls.splice(m,1);var f=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){f=!1;break}return o&&f&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,m){var f=this,h=f["_on"+a];return typeof u=="function"&&h.push(m?{id:d,fn:u,once:m}:{id:d,fn:u}),f},off:function(a,u,d){var m=this,f=m["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<f.length;h++){var g=d===f[h].id;if(u===f[h].fn&&g||!u&&g){f.splice(h,1);break}}else if(a)m["_on"+a]=[];else{var x=Object.keys(m);for(h=0;h<x.length;h++)x[h].indexOf("_on")===0&&Array.isArray(m[x[h]])&&(m[x[h]]=[])}return m},once:function(a,u,d){var m=this;return m.on(a,u,d,1),m},_emit:function(a,u,d){for(var m=this,f=m["_on"+a],h=f.length-1;h>=0;h--)(!f[h].id||f[h].id===u||a==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(m,f[h].fn),0),f[h].once&&m.off(a,f[h].fn,f[h].id));return m._loadQueue(a),m},_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 m=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&m&&u.stop(a._id,!0).play(a._id),u._webAudio&&m){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var f=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),f)}return u._webAudio&&!m&&(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&&!m&&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,m=0;if(!(a._sounds.length<u)){for(m=0;m<a._sounds.length;m++)a._sounds[m]._ended&&d++;for(m=a._sounds.length-1;m>=0;m--){if(d<=u)return;a._sounds[m]._ended&&(a._webAudio&&a._sounds[m]._node&&a._sounds[m]._node.disconnect(0),a._sounds.splice(m,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],m=0;m<u._sounds.length;m++)d.push(u._sounds[m]._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]),m=new Uint8Array(d.length),f=0;f<d.length;++f)m[f]=d.charCodeAt(f);l(m.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.")},m=function(f){f&&u._sounds.length>0?(o[u._src]=f,c(u,f)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(m).catch(d):t.ctx.decodeAudioData(a,m,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 m=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!m&&(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 Fa<"u"&&(Fa.Howler=t,Fa.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 Tf=wc((Va,wf)=>{(function(n,t){typeof Va=="object"&&typeof wf<"u"?t(Va):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Va,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,m,f,h,g,x,v=t[0].length,A=t.length;if(A<v)throw new TypeError("Invalid matrix: m < n");for(var _=[],b=[],D=[],S=e==="f"?A:v,y=h=d=0;y<A;y++)b[y]=new Array(S).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(_[y]=d,f=0,c=y+1,s=y;s<A;s++)f+=Math.pow(b[s][y],2);if(f<i)d=0;else for(m=(u=b[y][y])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y]=u-d,s=c;s<v;s++){for(f=0,l=y;l<A;l++)f+=b[l][y]*b[l][s];for(u=f/m,l=y;l<A;l++)b[l][s]=b[l][s]+u*b[l][y]}for(T[y]=d,f=0,s=c;s<v;s++)f+=Math.pow(b[y][s],2);if(f<i)d=0;else{for(m=(u=b[y][y+1])*(d=u<0?Math.sqrt(f):-Math.sqrt(f))-f,b[y][y+1]=u-d,s=c;s<v;s++)_[s]=b[y][s]/m;for(s=c;s<A;s++){for(f=0,l=c;l<v;l++)f+=b[s][l]*b[y][l];for(l=c;l<v;l++)b[s][l]=b[s][l]+f*_[l]}}h<(g=Math.abs(T[y])+Math.abs(_[y]))&&(h=g)}if(r)for(y=v-1;0<=y;y--){if(d!==0){for(m=b[y][y+1]*d,s=c;s<v;s++)D[s][y]=b[y][s]/m;for(s=c;s<v;s++){for(f=0,l=c;l<v;l++)f+=b[y][l]*D[l][s];for(l=c;l<v;l++)D[l][s]=D[l][s]+f*D[l][y]}}for(s=c;s<v;s++)D[y][s]=0,D[s][y]=0;D[y][y]=1,d=_[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<S;s++)b[y][s]=0;if(d!==0){for(m=b[y][y]*d,s=c;s<S;s++){for(f=0,l=c;l<A;l++)f+=b[l][y]*b[l][s];for(u=f/m,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 P=0;P<50;P++){for(I=!1,c=l;0<=c;c--){if(Math.abs(_[c])<=o){I=!0;break}if(Math.abs(T[c-1])<=o)break}if(!I){for(a=0,p=c-(f=1),y=c;y<l+1&&(u=f*_[y],_[y]=a*_[y],!(Math.abs(u)<=o));y++)if(d=T[y],T[y]=Math.sqrt(u*u+d*d),a=d/(m=T[y]),f=-u/m,e)for(s=0;s<A;s++)g=b[s][p],x=b[s][y],b[s][p]=g*a+x*f,b[s][y]=-g*f+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=_[l-1])-(m=_[l]))*(d+m))/(2*m*g),d=Math.sqrt(u*u+1),u=((h-x)*(h+x)+m*(g/(u<0?u-d:u+d)-m))/h,y=c+(f=a=1);y<l+1;y++){if(d=_[y],g=T[y],m=f*d,d*=a,x=Math.sqrt(u*u+m*m),u=h*(a=u/(_[y-1]=x))+d*(f=m/x),d=-h*f+d*a,m=g*f,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*f,D[s][y]=-h*f+x*a;if(x=Math.sqrt(u*u+m*m),u=(a=u/(T[y-1]=x))*d+(f=m/x)*g,h=-f*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*f,b[s][y]=-g*f+x*a}_[c]=0,_[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})})});var k_={};Tc(k_,{default:()=>za});module.exports=ih(k_);var Ua=require("three");function Eo(n,t){return Object.setPrototypeOf(n,t),n}function Nc(n){return Array.isArray(n)?n:[n]}var sh=typeof global=="object"&&global&&global.Object===Object&&global,Ji=sh;var ah=typeof self=="object"&&self&&self.Object===Object&&self,lh=Ji||ah||Function("return this")(),Xe=lh;var ch=Xe.Symbol,gt=ch;var Oc=Object.prototype,uh=Oc.hasOwnProperty,ph=Oc.toString,qn=gt?gt.toStringTag:void 0;function dh(n){var t=uh.call(n,qn),e=n[qn];try{n[qn]=void 0;var r=!0}catch{}var o=ph.call(n);return r&&(t?n[qn]=e:delete n[qn]),o}var Pc=dh;var mh=Object.prototype,fh=mh.toString;function hh(n){return fh.call(n)}var Ic=hh;var gh="[object Null]",yh="[object Undefined]",Lc=gt?gt.toStringTag:void 0;function xh(n){return n==null?n===void 0?yh:gh:Lc&&Lc in Object(n)?Pc(n):Ic(n)}var Dt=xh;function vh(n){return n!=null&&typeof n=="object"}var dt=vh;var bh="[object Symbol]";function _h(n){return typeof n=="symbol"||dt(n)&&Dt(n)==bh}var Go=_h;function Sh(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 es=Sh;var wh=Array.isArray,Ve=wh;var Th=1/0,Mc=gt?gt.prototype:void 0,Dc=Mc?Mc.toString:void 0;function Bc(n){if(typeof n=="string")return n;if(Ve(n))return es(n,Bc)+"";if(Go(n))return Dc?Dc.call(n):"";var t=n+"";return t=="0"&&1/n==-Th?"-0":t}var Ec=Bc;function Ah(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Ze=Ah;function Ch(n){return n}var ts=Ch;var Nh="[object AsyncFunction]",Oh="[object Function]",Ph="[object GeneratorFunction]",Ih="[object Proxy]";function Lh(n){if(!Ze(n))return!1;var t=Dt(n);return t==Oh||t==Ph||t==Nh||t==Ih}var Ro=Lh;var Mh=Xe["__core-js_shared__"],rs=Mh;var Gc=function(){var n=/[^.]+$/.exec(rs&&rs.keys&&rs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Dh(n){return!!Gc&&Gc in n}var Rc=Dh;var Bh=Function.prototype,Eh=Bh.toString;function Gh(n){if(n!=null){try{return Eh.call(n)}catch{}try{return n+""}catch{}}return""}var Pr=Gh;var Rh=/[\\^$.*+?()[\]{}|]/g,Fh=/^\[object .+?Constructor\]$/,Vh=Function.prototype,zh=Object.prototype,Uh=Vh.toString,kh=zh.hasOwnProperty,jh=RegExp("^"+Uh.call(kh).replace(Rh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Hh(n){if(!Ze(n)||Rc(n))return!1;var t=Ro(n)?jh:Fh;return t.test(Pr(n))}var Fc=Hh;function Wh(n,t){return n?.[t]}var Vc=Wh;function qh(n,t){var e=Vc(n,t);return Fc(e)?e:void 0}var wt=qh;var $h=wt(Xe,"WeakMap"),os=$h;var zc=Object.create,Xh=function(){function n(){}return function(t){if(!Ze(t))return{};if(zc)return zc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Uc=Xh;function Yh(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 kc=Yh;function Kh(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var ns=Kh;var Qh=800,Zh=16,Jh=Date.now;function eg(n){var t=0,e=0;return function(){var r=Jh(),o=Zh-(r-e);if(e=r,o>0){if(++t>=Qh)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var jc=eg;function tg(n){return function(){return n}}var Hc=tg;var rg=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Fo=rg;var og=Fo?function(n,t){return Fo(n,"toString",{configurable:!0,enumerable:!1,value:Hc(t),writable:!0})}:ts,Wc=og;var ng=jc(Wc),is=ng;function ig(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var qc=ig;var sg=9007199254740991,ag=/^(?:0|[1-9]\d*)$/;function lg(n,t){var e=typeof n;return t=t??sg,!!t&&(e=="number"||e!="symbol"&&ag.test(n))&&n>-1&&n%1==0&&n<t}var zr=lg;function cg(n,t,e){t=="__proto__"&&Fo?Fo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Vo=cg;function ug(n,t){return n===t||n!==n&&t!==t}var Ur=ug;var pg=Object.prototype,dg=pg.hasOwnProperty;function mg(n,t,e){var r=n[t];(!(dg.call(n,t)&&Ur(r,e))||e===void 0&&!(t in n))&&Vo(n,t,e)}var zo=mg;function fg(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?Vo(e,l,c):zo(e,l,c)}return e}var Ft=fg;var $c=Math.max;function hg(n,t,e){return t=$c(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=$c(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),kc(n,this,l)}}var ss=hg;function gg(n,t){return is(ss(n,t,ts),n+"")}var Xc=gg;var yg=9007199254740991;function xg(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=yg}var Uo=xg;function vg(n){return n!=null&&Uo(n.length)&&!Ro(n)}var kr=vg;function bg(n,t,e){if(!Ze(e))return!1;var r=typeof t;return(r=="number"?kr(e)&&zr(t,e.length):r=="string"&&t in e)?Ur(e[t],n):!1}var Yc=bg;function _g(n){return Xc(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&&Yc(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 Kc=_g;var Sg=Object.prototype;function wg(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Sg;return n===e}var ko=wg;function Tg(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Qc=Tg;var Ag="[object Arguments]";function Cg(n){return dt(n)&&Dt(n)==Ag}var ja=Cg;var Zc=Object.prototype,Ng=Zc.hasOwnProperty,Og=Zc.propertyIsEnumerable,Pg=ja(function(){return arguments}())?ja:function(n){return dt(n)&&Ng.call(n,"callee")&&!Og.call(n,"callee")},Ir=Pg;function Ig(){return!1}var Jc=Ig;var ru=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eu=ru&&typeof module=="object"&&module&&!module.nodeType&&module,Lg=eu&&eu.exports===ru,tu=Lg?Xe.Buffer:void 0,Mg=tu?tu.isBuffer:void 0,Dg=Mg||Jc,jo=Dg;var Bg="[object Arguments]",Eg="[object Array]",Gg="[object Boolean]",Rg="[object Date]",Fg="[object Error]",Vg="[object Function]",zg="[object Map]",Ug="[object Number]",kg="[object Object]",jg="[object RegExp]",Hg="[object Set]",Wg="[object String]",qg="[object WeakMap]",$g="[object ArrayBuffer]",Xg="[object DataView]",Yg="[object Float32Array]",Kg="[object Float64Array]",Qg="[object Int8Array]",Zg="[object Int16Array]",Jg="[object Int32Array]",ey="[object Uint8Array]",ty="[object Uint8ClampedArray]",ry="[object Uint16Array]",oy="[object Uint32Array]",Me={};Me[Yg]=Me[Kg]=Me[Qg]=Me[Zg]=Me[Jg]=Me[ey]=Me[ty]=Me[ry]=Me[oy]=!0;Me[Bg]=Me[Eg]=Me[$g]=Me[Gg]=Me[Xg]=Me[Rg]=Me[Fg]=Me[Vg]=Me[zg]=Me[Ug]=Me[kg]=Me[jg]=Me[Hg]=Me[Wg]=Me[qg]=!1;function ny(n){return dt(n)&&Uo(n.length)&&!!Me[Dt(n)]}var ou=ny;function iy(n){return function(t){return n(t)}}var Ho=iy;var nu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$n=nu&&typeof module=="object"&&module&&!module.nodeType&&module,sy=$n&&$n.exports===nu,Ha=sy&&Ji.process,ay=function(){try{var n=$n&&$n.require&&$n.require("util").types;return n||Ha&&Ha.binding&&Ha.binding("util")}catch{}}(),Lr=ay;var iu=Lr&&Lr.isTypedArray,ly=iu?Ho(iu):ou,as=ly;var cy=Object.prototype,uy=cy.hasOwnProperty;function py(n,t){var e=Ve(n),r=!e&&Ir(n),o=!e&&!r&&jo(n),i=!e&&!r&&!o&&as(n),s=e||r||o||i,l=s?Qc(n.length,String):[],c=l.length;for(var p in n)(t||uy.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||zr(p,c)))&&l.push(p);return l}var ls=py;function dy(n,t){return function(e){return n(t(e))}}var cs=dy;var my=cs(Object.keys,Object),su=my;var fy=Object.prototype,hy=fy.hasOwnProperty;function gy(n){if(!ko(n))return su(n);var t=[];for(var e in Object(n))hy.call(n,e)&&e!="constructor"&&t.push(e);return t}var au=gy;function yy(n){return kr(n)?ls(n):au(n)}var Wo=yy;function xy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var lu=xy;var vy=Object.prototype,by=vy.hasOwnProperty;function _y(n){if(!Ze(n))return lu(n);var t=ko(n),e=[];for(var r in n)r=="constructor"&&(t||!by.call(n,r))||e.push(r);return e}var cu=_y;function Sy(n){return kr(n)?ls(n,!0):cu(n)}var nr=Sy;var wy=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ty=/^\w*$/;function Ay(n,t){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Go(n)?!0:Ty.test(n)||!wy.test(n)||t!=null&&n in Object(t)}var uu=Ay;var Cy=wt(Object,"create"),Mr=Cy;function Ny(){this.__data__=Mr?Mr(null):{},this.size=0}var pu=Ny;function Oy(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var du=Oy;var Py="__lodash_hash_undefined__",Iy=Object.prototype,Ly=Iy.hasOwnProperty;function My(n){var t=this.__data__;if(Mr){var e=t[n];return e===Py?void 0:e}return Ly.call(t,n)?t[n]:void 0}var mu=My;var Dy=Object.prototype,By=Dy.hasOwnProperty;function Ey(n){var t=this.__data__;return Mr?t[n]!==void 0:By.call(t,n)}var fu=Ey;var Gy="__lodash_hash_undefined__";function Ry(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Mr&&t===void 0?Gy:t,this}var hu=Ry;function qo(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])}}qo.prototype.clear=pu;qo.prototype.delete=du;qo.prototype.get=mu;qo.prototype.has=fu;qo.prototype.set=hu;var Wa=qo;function Fy(){this.__data__=[],this.size=0}var gu=Fy;function Vy(n,t){for(var e=n.length;e--;)if(Ur(n[e][0],t))return e;return-1}var jr=Vy;var zy=Array.prototype,Uy=zy.splice;function ky(n){var t=this.__data__,e=jr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Uy.call(t,e,1),--this.size,!0}var yu=ky;function jy(n){var t=this.__data__,e=jr(t,n);return e<0?void 0:t[e][1]}var xu=jy;function Hy(n){return jr(this.__data__,n)>-1}var vu=Hy;function Wy(n,t){var e=this.__data__,r=jr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var bu=Wy;function $o(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])}}$o.prototype.clear=gu;$o.prototype.delete=yu;$o.prototype.get=xu;$o.prototype.has=vu;$o.prototype.set=bu;var Hr=$o;var qy=wt(Xe,"Map"),Wr=qy;function $y(){this.size=0,this.__data__={hash:new Wa,map:new(Wr||Hr),string:new Wa}}var _u=$y;function Xy(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Su=Xy;function Yy(n,t){var e=n.__data__;return Su(t)?e[typeof t=="string"?"string":"hash"]:e.map}var qr=Yy;function Ky(n){var t=qr(this,n).delete(n);return this.size-=t?1:0,t}var wu=Ky;function Qy(n){return qr(this,n).get(n)}var Tu=Qy;function Zy(n){return qr(this,n).has(n)}var Au=Zy;function Jy(n,t){var e=qr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Cu=Jy;function Xo(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])}}Xo.prototype.clear=_u;Xo.prototype.delete=wu;Xo.prototype.get=Tu;Xo.prototype.has=Au;Xo.prototype.set=Cu;var Xn=Xo;var e0="Expected a function";function qa(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(e0);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(qa.Cache||Xn),e}qa.Cache=Xn;var Nu=qa;var t0=500;function r0(n){var t=Nu(n,function(r){return e.size===t0&&e.clear(),r}),e=t.cache;return t}var Ou=r0;var o0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,n0=/\\(\\)?/g,i0=Ou(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(o0,function(e,r,o,i){t.push(o?i.replace(n0,"$1"):r||e)}),t}),Pu=i0;function s0(n){return n==null?"":Ec(n)}var Iu=s0;function a0(n,t){return Ve(n)?n:uu(n,t)?[n]:Pu(Iu(n))}var Vt=a0;var l0=1/0;function c0(n){if(typeof n=="string"||Go(n))return n;var t=n+"";return t=="0"&&1/n==-l0?"-0":t}var $r=c0;function u0(n,t){t=Vt(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[$r(t[e++])];return e&&e==r?n:void 0}var us=u0;function p0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Yo=p0;var Lu=gt?gt.isConcatSpreadable:void 0;function d0(n){return Ve(n)||Ir(n)||!!(Lu&&n&&n[Lu])}var Mu=d0;function Du(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Mu),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Du(l,t-1,e,r,o):Yo(o,l):r||(o[o.length]=l)}return o}var Bu=Du;function m0(n){var t=n==null?0:n.length;return t?Bu(n,1):[]}var Eu=m0;function f0(n){return is(ss(n,void 0,Eu),n+"")}var ps=f0;var h0=cs(Object.getPrototypeOf,Object),Ko=h0;var g0="[object Object]",y0=Function.prototype,x0=Object.prototype,Gu=y0.toString,v0=x0.hasOwnProperty,b0=Gu.call(Object);function _0(n){if(!dt(n)||Dt(n)!=g0)return!1;var t=Ko(n);if(t===null)return!0;var e=v0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Gu.call(e)==b0}var ds=_0;function S0(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 Ru=S0;function w0(){this.__data__=new Hr,this.size=0}var Fu=w0;function T0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Vu=T0;function A0(n){return this.__data__.get(n)}var zu=A0;function C0(n){return this.__data__.has(n)}var Uu=C0;var N0=200;function O0(n,t){var e=this.__data__;if(e instanceof Hr){var r=e.__data__;if(!Wr||r.length<N0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new Xn(r)}return e.set(n,t),this.size=e.size,this}var ku=O0;function Qo(n){var t=this.__data__=new Hr(n);this.size=t.size}Qo.prototype.clear=Fu;Qo.prototype.delete=Vu;Qo.prototype.get=zu;Qo.prototype.has=Uu;Qo.prototype.set=ku;var ms=Qo;function P0(n,t){return n&&Ft(t,Wo(t),n)}var ju=P0;function I0(n,t){return n&&Ft(t,nr(t),n)}var Hu=I0;var Xu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wu=Xu&&typeof module=="object"&&module&&!module.nodeType&&module,L0=Wu&&Wu.exports===Xu,qu=L0?Xe.Buffer:void 0,$u=qu?qu.allocUnsafe:void 0;function M0(n,t){if(t)return n.slice();var e=n.length,r=$u?$u(e):new n.constructor(e);return n.copy(r),r}var fs=M0;function D0(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 Yu=D0;function B0(){return[]}var hs=B0;var E0=Object.prototype,G0=E0.propertyIsEnumerable,Ku=Object.getOwnPropertySymbols,R0=Ku?function(n){return n==null?[]:(n=Object(n),Yu(Ku(n),function(t){return G0.call(n,t)}))}:hs,Zo=R0;function F0(n,t){return Ft(n,Zo(n),t)}var Qu=F0;var V0=Object.getOwnPropertySymbols,z0=V0?function(n){for(var t=[];n;)Yo(t,Zo(n)),n=Ko(n);return t}:hs,gs=z0;function U0(n,t){return Ft(n,gs(n),t)}var Zu=U0;function k0(n,t,e){var r=t(n);return Ve(n)?r:Yo(r,e(n))}var ys=k0;function j0(n){return ys(n,Wo,Zo)}var Ju=j0;function H0(n){return ys(n,nr,gs)}var xs=H0;var W0=wt(Xe,"DataView"),vs=W0;var q0=wt(Xe,"Promise"),bs=q0;var $0=wt(Xe,"Set"),_s=$0;var ep="[object Map]",X0="[object Object]",tp="[object Promise]",rp="[object Set]",op="[object WeakMap]",np="[object DataView]",Y0=Pr(vs),K0=Pr(Wr),Q0=Pr(bs),Z0=Pr(_s),J0=Pr(os),fo=Dt;(vs&&fo(new vs(new ArrayBuffer(1)))!=np||Wr&&fo(new Wr)!=ep||bs&&fo(bs.resolve())!=tp||_s&&fo(new _s)!=rp||os&&fo(new os)!=op)&&(fo=function(n){var t=Dt(n),e=t==X0?n.constructor:void 0,r=e?Pr(e):"";if(r)switch(r){case Y0:return np;case K0:return ep;case Q0:return tp;case Z0:return rp;case J0:return op}return t});var Jo=fo;var ex=Object.prototype,tx=ex.hasOwnProperty;function rx(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&tx.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var ip=rx;var ox=Xe.Uint8Array,$a=ox;function nx(n){var t=new n.constructor(n.byteLength);return new $a(t).set(new $a(n)),t}var en=nx;function ix(n,t){var e=t?en(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var sp=ix;var sx=/\w*$/;function ax(n){var t=new n.constructor(n.source,sx.exec(n));return t.lastIndex=n.lastIndex,t}var ap=ax;var lp=gt?gt.prototype:void 0,cp=lp?lp.valueOf:void 0;function lx(n){return cp?Object(cp.call(n)):{}}var up=lx;function cx(n,t){var e=t?en(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ss=cx;var ux="[object Boolean]",px="[object Date]",dx="[object Map]",mx="[object Number]",fx="[object RegExp]",hx="[object Set]",gx="[object String]",yx="[object Symbol]",xx="[object ArrayBuffer]",vx="[object DataView]",bx="[object Float32Array]",_x="[object Float64Array]",Sx="[object Int8Array]",wx="[object Int16Array]",Tx="[object Int32Array]",Ax="[object Uint8Array]",Cx="[object Uint8ClampedArray]",Nx="[object Uint16Array]",Ox="[object Uint32Array]";function Px(n,t,e){var r=n.constructor;switch(t){case xx:return en(n);case ux:case px:return new r(+n);case vx:return sp(n,e);case bx:case _x:case Sx:case wx:case Tx:case Ax:case Cx:case Nx:case Ox:return Ss(n,e);case dx:return new r;case mx:case gx:return new r(n);case fx:return ap(n);case hx:return new r;case yx:return up(n)}}var pp=Px;function Ix(n){return typeof n.constructor=="function"&&!ko(n)?Uc(Ko(n)):{}}var ws=Ix;var Lx="[object Map]";function Mx(n){return dt(n)&&Jo(n)==Lx}var dp=Mx;var mp=Lr&&Lr.isMap,Dx=mp?Ho(mp):dp,fp=Dx;var Bx="[object Set]";function Ex(n){return dt(n)&&Jo(n)==Bx}var hp=Ex;var gp=Lr&&Lr.isSet,Gx=gp?Ho(gp):hp,yp=Gx;var Rx=1,Fx=2,Vx=4,xp="[object Arguments]",zx="[object Array]",Ux="[object Boolean]",kx="[object Date]",jx="[object Error]",vp="[object Function]",Hx="[object GeneratorFunction]",Wx="[object Map]",qx="[object Number]",bp="[object Object]",$x="[object RegExp]",Xx="[object Set]",Yx="[object String]",Kx="[object Symbol]",Qx="[object WeakMap]",Zx="[object ArrayBuffer]",Jx="[object DataView]",ev="[object Float32Array]",tv="[object Float64Array]",rv="[object Int8Array]",ov="[object Int16Array]",nv="[object Int32Array]",iv="[object Uint8Array]",sv="[object Uint8ClampedArray]",av="[object Uint16Array]",lv="[object Uint32Array]",Ie={};Ie[xp]=Ie[zx]=Ie[Zx]=Ie[Jx]=Ie[Ux]=Ie[kx]=Ie[ev]=Ie[tv]=Ie[rv]=Ie[ov]=Ie[nv]=Ie[Wx]=Ie[qx]=Ie[bp]=Ie[$x]=Ie[Xx]=Ie[Yx]=Ie[Kx]=Ie[iv]=Ie[sv]=Ie[av]=Ie[lv]=!0;Ie[jx]=Ie[vp]=Ie[Qx]=!1;function Ts(n,t,e,r,o,i){var s,l=t&Rx,c=t&Fx,p=t&Vx;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Ze(n))return n;var a=Ve(n);if(a){if(s=ip(n),!l)return ns(n,s)}else{var u=Jo(n),d=u==vp||u==Hx;if(jo(n))return fs(n,l);if(u==bp||u==xp||d&&!o){if(s=c||d?{}:ws(n),!l)return c?Zu(n,Hu(s,n)):Qu(n,ju(s,n))}else{if(!Ie[u])return o?n:{};s=pp(n,u,l)}}i||(i=new ms);var m=i.get(n);if(m)return m;i.set(n,s),yp(n)?n.forEach(function(g){s.add(Ts(g,t,e,g,n,i))}):fp(n)&&n.forEach(function(g,x){s.set(x,Ts(g,t,e,x,n,i))});var f=p?c?xs:Ju:c?nr:Wo,h=a?void 0:f(n);return qc(h||n,function(g,x){h&&(x=g,g=n[x]),zo(s,x,Ts(g,t,e,x,n,i))}),s}var As=Ts;var cv=1,uv=4;function pv(n){return As(n,cv|uv)}var Yn=pv;function dv(n,t){return n!=null&&t in Object(n)}var _p=dv;function mv(n,t,e){t=Vt(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=$r(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&&Uo(o)&&zr(s,o)&&(Ve(n)||Ir(n)))}var Sp=mv;function fv(n,t){return n!=null&&Sp(n,t,_p)}var wp=fv;function hv(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 Tp=hv;var gv=Tp(),Ap=gv;function yv(n,t,e){(e!==void 0&&!Ur(n[t],e)||e===void 0&&!(t in n))&&Vo(n,t,e)}var Kn=yv;function xv(n){return dt(n)&&kr(n)}var Cp=xv;function vv(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Qn=vv;function bv(n){return Ft(n,nr(n))}var Np=bv;function _v(n,t,e,r,o,i,s){var l=Qn(n,e),c=Qn(t,e),p=s.get(c);if(p){Kn(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=Ve(c),m=!d&&jo(c),f=!d&&!m&&as(c);a=c,d||m||f?Ve(l)?a=l:Cp(l)?a=ns(l):m?(u=!1,a=fs(c,!0)):f?(u=!1,a=Ss(c,!0)):a=[]:ds(c)||Ir(c)?(a=l,Ir(l)?a=Np(l):(!Ze(l)||Ro(l))&&(a=ws(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),Kn(n,e,a)}var Op=_v;function Pp(n,t,e,r,o){n!==t&&Ap(t,function(i,s){if(o||(o=new ms),Ze(i))Op(n,t,s,e,Pp,r,o);else{var l=r?r(Qn(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),Kn(n,s,l)}},nr)}var Ip=Pp;function Sv(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Lp=Sv;function wv(n,t){return t.length<2?n:us(n,Ru(t,0,-1))}var Mp=wv;var Tv=Kc(function(n,t,e){Ip(n,t,e)}),ho=Tv;function Av(n,t){return t=Vt(t,n),n=Mp(n,t),n==null||delete n[$r(Lp(t))]}var Dp=Av;function Cv(n){return ds(n)?void 0:n}var Bp=Cv;var Nv=1,Ov=2,Pv=4,Iv=ps(function(n,t){var e={};if(n==null)return e;var r=!1;t=es(t,function(i){return i=Vt(i,n),r||(r=i.length>1),i}),Ft(n,xs(n),e),r&&(e=As(e,Nv|Ov|Pv,Bp));for(var o=t.length;o--;)Dp(e,t[o]);return e}),tn=Iv;function Lv(n,t,e,r){if(!Ze(n))return n;t=Vt(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=$r(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:zr(t[o+1])?[]:{})}zo(l,c,p),l=l[c]}return n}var Ep=Lv;function Mv(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=us(n,s);e(l,s)&&Ep(i,Vt(s,n),l)}return i}var Gp=Mv;function Dv(n,t){return Gp(n,t,function(e,r){return wp(n,r)})}var Rp=Dv;var Bv=ps(function(n,t){return n==null?{}:Rp(n,t)}),Xa=Bv;var rn;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(rn||(rn={}));var go;(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})(go||(go={}));var Fp;(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})(Fp||(Fp={}));var on;(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})(on||(on={}));var Vp;(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})(Vp||(Vp={}));var Xr;(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})(Xr||(Xr={}));var Tt;(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})(Tt||(Tt={}));var Bt;(l=>{l.white={...Tt.white,a:1},l.transparent={...Tt.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{...Tt.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 Tt.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})(Bt||(Bt={}));var Cs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Cs||(Cs={}));var zp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(zp||(zp={}));var Up;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Up||(Up={}));var Ns;(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})(Ns||(Ns={}));var Ee=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,Ee.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,Ee.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,Ee.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Zn(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"&&Zn(r)}return Object.freeze(n)}function kp(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 Os=class extends Error{};function ir(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 Ps(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 jp(){return typeof process<"u"}function Hp(n,t){for(let e of n)t(e.id,e.data),Hp(e.children,t)}function Wp(n,t){t(n.id,n.data);for(let e of n.children)Wp(e,t)}var zt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,zt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zn(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&&Wp(o,r)}}traverse(e){Hp(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,zt.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,m)=>d.fi-m.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 m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===i)throw new Os("cyclic tree");m=this.parent(m)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(m=>m.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((m,f)=>m.fi-f.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)=>kp(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 ir(0,o,o);{let s=i[0].fi;return ir(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 ir(c,c+o,o)}else return ir(s.fi,l.fi,o)}}};var Is;(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})(Is||(Is={}));var Ge=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ge.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Zn(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,Ge.prototype);let r=e;return jp()||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 ir(0,r,r);{let i=o[0].fi;return ir(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 ir(l,l+r,r)}else return ir(i.fi,s.fi,r)}}};var qp=Symbol(),Ms=Symbol(),nn=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Ls);){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[Ms];r&&r(),delete this._children[t]}}}},Ka=class extends nn{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,Is.runOp(this._current,t))}},Qa=class extends nn{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,Ee.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},$p={get(n,t){if(t===Ms)return()=>{n._parent=null};if(t===qp)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]}}},Ev={...$p,set(n,t,e){let r={type:0,props:{[t]:Yr(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}},Gv={...$p,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}},sn=class extends nn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ms]=()=>{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)}},an=class extends nn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ms]=()=>{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 Ya(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Bs.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Ls=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){Ya(this.ts,e,t),Ya(this.actual,r,t),Ya(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 zt?new sn(n,t,e):e instanceof Ge?new an(n,t,e):e instanceof Ee?new Proxy(new Qa(n,t,e),Gv):e!==null&&typeof e=="object"?Ps(e)?e:new Proxy(new Ka(n,t,e),Ev):e}function Za(n){let t=new Ls(n);return[Ds(t,"",n),t]}function Ja(n,t){let[e,r]=Za(n);return t(e),r.result()}function Yr(n){return n instanceof sn||n instanceof an?n._current:n!==null&&typeof n=="object"?n[qp]:n}var Bs;(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 zt||o instanceof sn)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Ge||o instanceof an)&&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})(Bs||(Bs={}));var Es=class{},Jn=class extends Es{constructor(e){super();this.id=e}},ei=class extends Es{constructor(e){super();this.data=e}};var tl;try{tl=new TextDecoder}catch{}var te,Qr,w=0;var td=[],rl=td,ol=0,At={},Se,Kr,Ut=0,sr=0,Et,Dr,yt=[],Ne,Xp={useRecords:!1,mapsAsObjects:!0},ti=class{},il=new ti;il.name="MessagePack 0xC1";var ln=!1,ar=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 sd(()=>(Rs(),this?this.unpack(t,e):ar.prototype.unpack.call(Xp,t,e)));Qr=e>-1?e:t.length,w=0,ol=0,sr=0,Kr=null,rl=td,Et=null,te=t;try{Ne=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 ar){if(At=this,this.structures)return Se=this.structures,Gs();(!Se||Se.length>0)&&(Se=[])}else At=Xp,(!Se||Se.length>0)&&(Se=[]);return Gs()}unpackMultiple(t,e){let r,o=0;try{ln=!0;let i=t.length,s=this?this.unpack(t,i):zs.unpack(t,i);if(e){for(e(s);w<i;)if(o=w,e(Gs())===!1)return}else{for(r=[s];w<i;)o=w,r.push(Gs());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{ln=!1,Rs()}}_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 Gs(){try{if(!At.trusted&&!ln){let t=Se.sharedLength||0;t<Se.length&&(Se.length=t)}let n=ze();if(w==Qr)Se.restoreStructures&&Yp(),Se=null,te=null,Dr&&(Dr=null);else if(w>Qr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ln)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Se.restoreStructures&&Yp(),Rs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Yp(){for(let n in Se.restoreStructures)Se[n]=Se.restoreStructures[n];Se.restoreStructures=null}function ze(){let n=te[w++];if(n<160)if(n<128){if(n<64)return n;{let t=Se[n&63]||At.getStructures&&rd()[n&63];return t?(t.read||(t.read=sl(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[nd()]=ze();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(ze(),ze());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=ze();return t}else if(n<192){let t=n-160;if(sr>=w)return Kr.slice(w-Ut,(w+=t)-Ut);if(sr==0&&Qr<140){let e=t<16?al(t):od(t);if(e!=null)return e}return nl(t)}else{let t;switch(n){case 192:return null;case 193:return Et?(t=ze(),t>0?Et[1].slice(Et.position1,Et.position1+=t):Et[0].slice(Et.position0,Et.position0-=t)):il;case 194:return!1;case 195:return!0;case 196:return el(te[w++]);case 197:return t=Ne.getUint16(w),w+=2,el(t);case 198:return t=Ne.getUint32(w),w+=4,el(t);case 199:return yo(te[w++]);case 200:return t=Ne.getUint16(w),w+=2,yo(t);case 201:return t=Ne.getUint32(w),w+=4,yo(t);case 202:if(t=Ne.getFloat32(w),At.useFloat32>2){let e=Vs[(te[w]&127)<<1|te[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=Ne.getFloat64(w),w+=8,t;case 204:return te[w++];case 205:return t=Ne.getUint16(w),w+=2,t;case 206:return t=Ne.getUint32(w),w+=4,t;case 207:return At.int64AsNumber?(t=Ne.getUint32(w)*4294967296,t+=Ne.getUint32(w+4)):t=Ne.getBigUint64(w),w+=8,t;case 208:return Ne.getInt8(w++);case 209:return t=Ne.getInt16(w),w+=2,t;case 210:return t=Ne.getInt32(w),w+=4,t;case 211:return At.int64AsNumber?(t=Ne.getInt32(w)*4294967296,t+=Ne.getUint32(w+4)):t=Ne.getBigInt64(w),w+=8,t;case 212:if(t=te[w++],t==114)return ed(te[w++]&63);{let e=yt[t];if(e)return e.read?(w++,e.read(ze())):e.noBuffer?(w++,e()):e(te.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=te[w],t==114?(w++,ed(te[w++]&63,te[w++])):yo(2);case 214:return yo(4);case 215:return yo(8);case 216:return yo(16);case 217:return t=te[w++],sr>=w?Kr.slice(w-Ut,(w+=t)-Ut):Fv(t);case 218:return t=Ne.getUint16(w),w+=2,sr>=w?Kr.slice(w-Ut,(w+=t)-Ut):Vv(t);case 219:return t=Ne.getUint32(w),w+=4,sr>=w?Kr.slice(w-Ut,(w+=t)-Ut):zv(t);case 220:return t=Ne.getUint16(w),w+=2,Qp(t);case 221:return t=Ne.getUint32(w),w+=4,Qp(t);case 222:return t=Ne.getUint16(w),w+=2,Zp(t);case 223:return t=Ne.getUint32(w),w+=4,Zp(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 Rv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function sl(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Rv.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(ze);return n.highByte===0&&(n.read=Kp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=ze()}return r}return e.count=0,n.highByte===0?Kp(t,e):e}var Kp=(n,t)=>function(){let e=te[w++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Se[r]||rd()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=sl(o,n)),o.read()};function rd(){let n=sd(()=>(te=null,At.getStructures()));return Se=At._mergeStructures(n,Se)}var nl=Fs,Fv=Fs,Vv=Fs,zv=Fs;function Fs(n){let t;if(n<16&&(t=al(n)))return t;if(n>64&&tl)return tl.decode(te.subarray(w,w+=n));let e=w+n,r=[];for(t="";w<e;){let o=te[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=te[w++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=te[w++]&63,s=te[w++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=te[w++]&63,s=te[w++]&63,l=te[w++]&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+=nt.apply(String,r),r.length=0)}return r.length>0&&(t+=nt.apply(String,r)),t}function Qp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=ze();return t}function Zp(n){if(At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[nd()]=ze();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(ze(),ze());return t}}var nt=String.fromCharCode;function od(n){let t=w,e=new Array(n);for(let r=0;r<n;r++){let o=te[w++];if((o&128)>0){w=t;return}e[r]=o}return nt.apply(String,e)}function al(n){if(n<4)if(n<2){if(n===0)return"";{let t=te[w++];if((t&128)>1){w-=1;return}return nt(t)}}else{let t=te[w++],e=te[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(n<3)return nt(t,e);let r=te[w++];if((r&128)>0){w-=3;return}return nt(t,e,r)}else{let t=te[w++],e=te[w++],r=te[w++],o=te[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(n<6){if(n===4)return nt(t,e,r,o);{let i=te[w++];if((i&128)>0){w-=5;return}return nt(t,e,r,o,i)}}else if(n<8){let i=te[w++],s=te[w++];if((i&128)>0||(s&128)>0){w-=6;return}if(n<7)return nt(t,e,r,o,i,s);let l=te[w++];if((l&128)>0){w-=7;return}return nt(t,e,r,o,i,s,l)}else{let i=te[w++],s=te[w++],l=te[w++],c=te[w++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){w-=8;return}if(n<10){if(n===8)return nt(t,e,r,o,i,s,l,c);{let p=te[w++];if((p&128)>0){w-=9;return}return nt(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=te[w++],a=te[w++];if((p&128)>0||(a&128)>0){w-=10;return}if(n<11)return nt(t,e,r,o,i,s,l,c,p,a);let u=te[w++];if((u&128)>0){w-=11;return}return nt(t,e,r,o,i,s,l,c,p,a,u)}else{let p=te[w++],a=te[w++],u=te[w++],d=te[w++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){w-=12;return}if(n<14){if(n===12)return nt(t,e,r,o,i,s,l,c,p,a,u,d);{let m=te[w++];if((m&128)>0){w-=13;return}return nt(t,e,r,o,i,s,l,c,p,a,u,d,m)}}else{let m=te[w++],f=te[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(n<15)return nt(t,e,r,o,i,s,l,c,p,a,u,d,m,f);let h=te[w++];if((h&128)>0){w-=15;return}return nt(t,e,r,o,i,s,l,c,p,a,u,d,m,f,h)}}}}}function el(n){return At.copyBuffers?Uint8Array.prototype.slice.call(te,w,w+=n):te.subarray(w,w+=n)}function yo(n){let t=te[w++];if(yt[t])return yt[t](te.subarray(w,w+=n));throw new Error("Unknown extension type "+t)}var Jp=new Array(4096);function nd(){let n=te[w++];if(n>=160&&n<192){if(n=n-160,sr>=w)return Kr.slice(w-Ut,(w+=n)-Ut);if(!(sr==0&&Qr<180))return nl(n)}else return w--,ze();let t=(n<<5^(n>1?Ne.getUint16(w):n>0?te[w]:0))&4095,e=Jp[t],r=w,o=w+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ne.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 w=r,e.string;o-=3,r=w}for(e=[],Jp[t]=e,e.bytes=n;r<o;)i=Ne.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=te[r++],e.push(i);let l=n<16?al(n):od(n);return l!=null?e.string=l:e.string=nl(n)}var ed=(n,t)=>{var e=ze();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Se[n];return o&&o.isShared&&((Se.restoreStructures||(Se.restoreStructures=[]))[n]=o),Se[n]=e,e.read=sl(e,r),e.read()},id=typeof self=="object"?self:global;yt[0]=()=>{};yt[0].noBuffer=!0;yt[101]=()=>{let n=ze();return(id[n[0]]||Error)(n[1])};yt[105]=n=>{let t=Ne.getUint32(w-4);Dr||(Dr=new Map);let e=te[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Dr.set(t,o);let i=ze();return o.used?Object.assign(r,i):(o.target=i,i)};yt[112]=n=>{let t=Ne.getUint32(w-4),e=Dr.get(t);return e.used=!0,e.target};yt[115]=()=>new Set(ze());var ll=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");yt[116]=n=>{let t=n[0],e=ll[t];if(!e)throw new Error("Could not find typed array for code "+t);return new id[e](Uint8Array.prototype.slice.call(n,1).buffer)};yt[120]=()=>{let n=ze();return new RegExp(n[0],n[1])};yt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=w;w+=t-4,Et=[ze(),ze()],Et.position0=0,Et.position1=0;let r=w;w=e;try{return ze()}finally{w=r}};yt[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 sd(n){let t=Qr,e=w,r=ol,o=Ut,i=sr,s=Kr,l=rl,c=Dr,p=Et,a=new Uint8Array(te.slice(0,Qr)),u=Se,d=Se.slice(0,Se.length),m=At,f=ln,h=n();return Qr=t,w=e,ol=r,Ut=o,sr=i,Kr=s,rl=l,Dr=c,Et=p,te=a,ln=f,Se=u,Se.splice(0,Se.length,...d),At=m,Ne=new DataView(te.buffer,te.byteOffset,te.byteLength),h}function Rs(){te=null,Dr=null,Se=null}function ad(n){n.unpack?yt[n.type]=n.unpack:yt[n.type]=n}var Vs=new Array(147);for(let n=0;n<256;n++)Vs[n]=+("1e"+Math.floor(45.15-n*.30103));var zs=new ar({useRecords:!1}),Uv=zs.unpack,kv=zs.unpackMultiple,jv=zs.unpack,Us={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Hv=new Float32Array(1),$P=new Uint8Array(Hv.buffer,0,4);var ks;try{ks=new TextEncoder}catch{}var js,ul,Hs=typeof Buffer<"u",cl=Hs?Buffer.allocUnsafeSlow:Uint8Array,pd=Hs?Buffer:Uint8Array,ld=Hs?4294967296:2144337920,R,He,O=0,lr,cr=null,Wv=/[\u0080-\uFFFF]/,ri=Symbol("record-id"),xo=class extends ar{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=pd.prototype.utf8Write?function(y,I,T){return R.utf8Write(y,I,T)}:ks&&ks.encodeInto?function(y,I){return ks.encodeInto(y,R.subarray(I)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=d?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=m>32||f+m>64,g=m+64,x=m+f+64;if(x>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],A=0,_=0;this.pack=this.encode=function(y,I){if(R||(R=new cl(8192),He=new DataView(R.buffer,0,8192),O=0),lr=R.length-10,lr-O<2048?(R=new cl(R.length),He=new DataView(R.buffer,0,R.length),lr=R.length-10,O=0):O=O+7&2147483640,r=O,l=a.structuredClone?new Map:null,a.bundleStrings?(cr=["",""],R[O++]=214,R[O++]=98,cr.position=O-r,O+=4):cr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let T=o.sharedLength||0;if(T>m)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 C=o[P];if(!C)continue;let N,j=o.transitions;for(let W=0,ne=C.length;W<ne;W++){let ue=C[W];N=j[ue],N||(N=j[ue]=Object.create(null)),j=N}j[ri]=P+64}c=T}u||(o.nextId=T+64)}i&&(i=!1),s=o||[];try{if(b(y),cr){He.setUint32(cr.position+r,O-cr.position-r);let T=cr;cr=null,b(T[0]),b(T[1])}if(a.offset=O,l&&l.idsToInsert){O+=l.idsToInsert.length*6,O>lr&&S(O),a.offset=O;let T=$v(R.subarray(r,O),l.idsToInsert);return l=null,T}return I&md?(R.start=r,R.end=O,R):R.subarray(r,O)}finally{if(o){if(_<10&&_++,A>1e4)o.transitions=null,_=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][ri]=0;v=[]}if(i&&a.saveStructures){let T=o.sharedLength||m;o.length>T&&(o=o.slice(0,T));let P=R.subarray(r,O);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=T,P)}}I&eb&&(O=r)}};let b=y=>{O>lr&&(R=S(O));var I=typeof y,T;if(I==="string"){let P=y.length;if(cr&&P>=8&&P<4096){let j=Wv.test(y);cr[j?0:1]+=y,R[O++]=193,b(j?-P:P);return}let C;P<32?C=1:P<256?C=2:P<65536?C=3:C=5;let N=P*3;if(O+N>lr&&(R=S(O+N)),P<64||!p){let j,W,ne,ue=O+C;for(j=0;j<P;j++)W=y.charCodeAt(j),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=y.charCodeAt(j+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),j++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);T=ue-O-C}else T=p(y,O+C,N);T<32?R[O++]=160|T:T<256?(C<2&&R.copyWithin(O+2,O+1,O+1+T),R[O++]=217,R[O++]=T):T<65536?(C<3&&R.copyWithin(O+3,O+2,O+2+T),R[O++]=218,R[O++]=T>>8,R[O++]=T&255):(C<5&&R.copyWithin(O+5,O+3,O+3+T),R[O++]=219,He.setUint32(O,T),O+=4),O+=T}else if(I==="number")if(y>>>0===y)y<64?R[O++]=y:y<256?(R[O++]=204,R[O++]=y):y<65536?(R[O++]=205,R[O++]=y>>8,R[O++]=y&255):(R[O++]=206,He.setUint32(O,y),O+=4);else if(y>>0===y)y>=-32?R[O++]=256+y:y>=-128?(R[O++]=208,R[O++]=y+256):y>=-32768?(R[O++]=209,He.setInt16(O,y),O+=2):(R[O++]=210,He.setInt32(O,y),O+=4);else{let P;if((P=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[O++]=202,He.setFloat32(O,y);let C;if(P<4||(C=y*Vs[(R[O]&127)<<1|R[O+1]>>7])>>0===C){O+=4;return}else O--}R[O++]=203,He.setFloat64(O,y),O+=8}else if(I==="object")if(!y)R[O++]=192;else{if(l){let C=l.get(y);if(C){if(!C.id){let N=l.idsToInsert||(l.idsToInsert=[]);C.id=N.push(C)}R[O++]=214,R[O++]=112,He.setUint32(O,C.id),O+=4;return}else l.set(y,{offset:O-r})}let P=y.constructor;if(P===Object)D(y,!0);else if(P===Array){T=y.length,T<16?R[O++]=144|T:T<65536?(R[O++]=220,R[O++]=T>>8,R[O++]=T&255):(R[O++]=221,He.setUint32(O,T),O+=4);for(let C=0;C<T;C++)b(y[C])}else if(P===Map){T=y.size,T<16?R[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,He.setUint32(O,T),O+=4);for(let[C,N]of y)b(C),b(N)}else{for(let C=0,N=js.length;C<N;C++){let j=ul[C];if(y instanceof j){let W=js[C];if(W.write){W.type&&(R[O++]=212,R[O++]=W.type,R[O++]=0),b(W.write.call(this,y));return}let ne=R,ue=He,se=O;R=null;let K;try{K=W.pack.call(this,y,U=>(R=ne,ne=null,O+=U,O>lr&&S(O),{target:R,targetView:He,position:O-U}),b)}finally{ne&&(R=ne,He=ue,O=se,lr=R.length-10)}K&&(K.length+O>lr&&S(K.length+O),O=qv(K,R,O,W.type));return}}D(y,!y.hasOwnProperty)}}else if(I==="boolean")R[O++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[O++]=211,He.setBigInt64(O,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[O++]=207,He.setBigUint64(O,y);else if(this.largeBigIntToFloat)R[O++]=203,He.setFloat64(O,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");O+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[O++]=192:(R[O++]=212,R[O++]=0,R[O++]=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[O++]=128|T:T<65536?(R[O++]=222,R[O++]=T>>8,R[O++]=T&255):(R[O++]=223,He.setUint32(O,T),O+=4);let P;for(let C=0;C<T;C++)b(P=I[C]),b(y[P])}:(y,I)=>{R[O++]=222;let T=O-r;O+=2;let P=0;for(let C in y)(I||y.hasOwnProperty(C))&&(b(C),b(y[C]),P++);R[T+++r]=P>>8,R[T+r]=P&255}:y=>{let I=Object.keys(y),T,P=s.transitions||(s.transitions=Object.create(null)),C=0;for(let j=0,W=I.length;j<W;j++){let ne=I[j];T=P[ne],T||(T=P[ne]=Object.create(null),C++),P=T}let N=P[ri];if(N)N>=96&&h?(R[O++]=((N-=96)&31)+96,R[O++]=N>>5):R[O++]=N;else{N=s.nextId,N||(N=64),N<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(N=s.nextOwnId,N<x||(N=g),s.nextOwnId=N+1):(N>=x&&(N=g),s.nextId=N+1);let j=I.highByte=N>=96&&h?N-96>>5:-1;P[ri]=N,s[N-64]=I,N<g?(I.isShared=!0,s.sharedLength=N-63,i=!0,j>=0?(R[O++]=(N&31)+96,R[O++]=j):R[O++]=N):(j>=0?(R[O++]=213,R[O++]=114,R[O++]=(N&31)+96,R[O++]=j):(R[O++]=212,R[O++]=114,R[O++]=N),C&&(A+=_*C),v.length>=f&&(v.shift()[ri]=0),v.push(P),b(I))}for(let j=0,W=I.length;j<W;j++)b(y[I[j]])},S=y=>{let I;if(y>16777216){if(y-r>ld)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(ld,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 cl(I);return He=new DataView(T.buffer,0,I),R.copy?R.copy(T,0,r,y):T.set(R.slice(r,y)),O-=r,r=0,lr=T.length-10,R=T}}useBuffer(t){R=t,He=new DataView(R.buffer,R.byteOffset,R.byteLength),O=0}};ul=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ti];js=[{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?cd(n,16,t):ud(Hs?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==pd&&this.structuredClone?cd(n,ll.indexOf(e.name),t):ud(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function cd(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 ud(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 qv(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 $v(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 vo(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)");ul.unshift(n.Class),js.unshift(n)}ad(n)}var dd=new xo({useRecords:!1}),Xv=dd.pack,Yv=dd.pack;var{NEVER:Kv,ALWAYS:Qv,DECIMAL_ROUND:Zv,DECIMAL_FIT:Jv}=Us,md=512,eb=1024;var fd=new xo({structuredClone:!0});vo({Class:Ee.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ee.prototype),n}});vo({Class:Ge.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ge.prototype),n}});vo({Class:zt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,zt.prototype),n}});vo({Class:Jn.prototype.constructor,type:4,write(n){return n.id},read(n){return new Jn(n)}});vo({Class:ei.prototype.constructor,type:5,write(n){return n.data},read(n){return new ei(n)}});function tb(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 pl(n){if(Ps(n))return n;if(Array.isArray(n))return n.map(pl);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=pl(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ws;(r=>{function n(o){return fd.pack(o)}r.serialize=n;function t(o){return fd.unpack(o)}r.deserialize=t;function e(o){return tb(n(pl(o))).toString()}r.checksum=e})(Ws||(Ws={}));var qs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(qs||(qs={}));var $s;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Bt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Bt.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:Bt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})($s||($s={}));var dl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(dl||(dl={}));var ml;(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})(ml||(ml={}));var Xs;(t=>t.defaultData={...ml.defaultData,...dl.defaultData,cloner:null,booleanExclude:null})(Xs||(Xs={}));var fl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(fl||{}),hl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(hl||{}),gl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(gl||{}),Ys;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Bt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Ys||(Ys={}));var hd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],gd=["wrapping","image"],Zr;(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:Tt.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:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.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:Bt.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:Bt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Bt.fromHexAndA(0,1),contourColor:Bt.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}}}})(Zr||(Zr={}));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(m=>p+=`${m}`):typeof d=="object"?Object.values(d).forEach(m=>{typeof m=="number"?p+=`${m.toFixed(4)}`:p+=`${m}`}):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 Ge}}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 Ge;return u.push({fi:0,data:Zr.defaultData("light",c),id:p}),u.push({fi:1,data:Zr.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="basic",a="layer1",u="layer2"){let d=Zr.defaultData("texture");Object.assign(d.texture,{image:c});let m=new Ge;return m.push({fi:0,data:d,id:a}),m.push({fi:1,data:Zr.defaultData("light",p),id:u}),{layers:m}}l.defaultTwoLayerTextureData=s})(Br||(Br={}));var cn;(t=>{function n(){return{points:new Ge,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(cn||(cn={}));var Ks;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Ks||(Ks={}));var oi;(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:cn.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})(oi||(oi={}));var ni;(o=>{o.identity={...Cs.identity,hiddenMatrix:Xr.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:on.isEqual(i.position,s.position)?null:s.position,rotation:on.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:on.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Xr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(ni||(ni={}));var Er;(t=>t.defaultData={states:new Ge,events:new Ge,visible:!0,raycastLock:!1,...ni.identity})(Er||(Er={}));var yd;(t=>t.defaultData={type:"Empty",...Er.defaultData})(yd||(yd={}));var Qs;(t=>t.defaultData={type:"Mesh",...Er.defaultData,...Xs.defaultData})(Qs||(Qs={}));var xd;(t=>t.defaultData={type:"TextFrame",...Er.defaultData,...Ys.defaultData})(xd||(xd={}));var Zs;(t=>t.defaultData={...Er.defaultData,...ni.identity,...go.defaultData})(Zs||(Zs={}));var vd;(t=>{function n(e){return{...Er.defaultData,...$s.defaultData(e)}}t.defaultData=n})(vd||(vd={}));var bd;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Xr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ge,events:new Ge,...go.defaultData},r.defaultMeshObject={name:"Rectangle",...Er.defaultData,...Qs.defaultData,geometry:oi.defaultData("RectangleGeometry"),material:Br.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Er.defaultData,...Qs.defaultData,geometry:oi.defaultData("BooleanGeometry"),material:Br.defaultTwoLayerData("phong","layer1","layer2")}))(bd||(bd={}));var _d;(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=Ja(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&ho(p,c)}}).data),i.materials&&o.materials&&(i.materials=Ja(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&&ho(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,ni.merge(i,o)),rn.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(qs.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=Tt.clone(s.color))}return i}e.patch=t})(_d||(_d={}));var Js;(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,preventScroll:!1,isTouchZoom:!0,orbitTouches:2,panTouches:3})(Js||(Js={}));var rb={Bell:"/_assets/_audios/CC0/bell_1.mp3","Bell 2":"/_assets/_audios/CC0/bell_2.wav",Bubble:"/_assets/_audios/CC0/bubble.wav",Click:"/_assets/_audios/CC0/click.mp3",Jump:"/_assets/_audios/CC0/jump.wav",Pop:"/_assets/_audios/CC0/pop.mp3","Pop 2":"/_assets/_audios/CC0/pop_2.mp3","Pop Double":"/_assets/_audios/CC0/pop_double_1.mp3","Pop Double 2":"/_assets/_audios/CC0/pop_double_2.mp3",Success:"/_assets/_audios/CC0/success.mp3",Suction:"/_assets/_audios/CC0/suction.wav",Tip:"/_assets/_audios/CC0/tip.mp3",Water:"/_assets/_audios/CC0/water.wav"},ob={"Bells 01":"/_assets/_audios/Originals/spe_bells_01.mp3","Bells 02":"/_assets/_audios/Originals/spe_bells_02.mp3","Bells 03":"/_assets/_audios/Originals/spe_bells_03.mp3","Book Closing 01":"/_assets/_audios/Originals/spe_book_closing_01.mp3","Book Closing 02":"/_assets/_audios/Originals/spe_book_closing_02.mp3","Book Opening 01":"/_assets/_audios/Originals/spe_book_opening_01.mp3","Book Opening 02":"/_assets/_audios/Originals/spe_book_opening_02.mp3","Breathing Strange":"/_assets/_audios/Originals/spe_breathing_strange.mp3",Bubble:"/_assets/_audios/Originals/spe_bubble.mp3","Bubble Double":"/_assets/_audios/Originals/spe_bubble_double.mp3","Cards 01":"/_assets/_audios/Originals/spe_cards_01.mp3","Cards 02":"/_assets/_audios/Originals/spe_cards_02.mp3","Ceramic 01":"/_assets/_audios/Originals/spe_ceramic_01.mp3","Ceramic 02":"/_assets/_audios/Originals/spe_ceramic_02.mp3","Ceramic 03":"/_assets/_audios/Originals/spe_ceramic_03.mp3","Ceramic 04":"/_assets/_audios/Originals/spe_ceramic_04.mp3","Ceramic 05":"/_assets/_audios/Originals/spe_ceramic_05.mp3","Ceramic 06":"/_assets/_audios/Originals/spe_ceramic_06.mp3","Ceramic 07":"/_assets/_audios/Originals/spe_ceramic_07.mp3","Click 01":"/_assets/_audios/Originals/spe_click_01.mp3","Click 02":"/_assets/_audios/Originals/spe_click_02.mp3","Click 03":"/_assets/_audios/Originals/spe_click_03.mp3","Click 04":"/_assets/_audios/Originals/spe_click_04.mp3","Click 05":"/_assets/_audios/Originals/spe_click_05.mp3","Click Double":"/_assets/_audios/Originals/spe_click_double_1.mp3","Device Close 01":"/_assets/_audios/Originals/spe_device_close_01.mp3","Device Open 01":"/_assets/_audios/Originals/spe_device_open_01.mp3","Door Closing":"/_assets/_audios/Originals/spe_door_closing.mp3","Door Garage":"/_assets/_audios/Originals/spe_door_garage.mp3","Door Opening":"/_assets/_audios/Originals/spe_door_opening.mp3","Drop 01":"/_assets/_audios/Originals/spe_drop_01.mp3","Drop 02":"/_assets/_audios/Originals/spe_drop_02.mp3","Drop 03":"/_assets/_audios/Originals/spe_drop_03.mp3","Drop 04":"/_assets/_audios/Originals/spe_drop_04.mp3","Drop 05":"/_assets/_audios/Originals/spe_drop_05.mp3","Face Slap 01":"/_assets/_audios/Originals/spe_face_slap_01.mp3","Face Slap 02":"/_assets/_audios/Originals/spe_face_slap_02.mp3","Falling Bounce":"/_assets/_audios/Originals/spe_falling_bounce.mp3","Falling Box":"/_assets/_audios/Originals/spe_falling_box.mp3","Finger Snap 01":"/_assets/_audios/Originals/spe_finger_snap_01.mp3","Finger Snap 02":"/_assets/_audios/Originals/spe_finger_snap_02.mp3","Finger Snap 03":"/_assets/_audios/Originals/spe_finger_snap_03.mp3","Finger Snap 04":"/_assets/_audios/Originals/spe_finger_snap_04.mp3","Jump 01":"/_assets/_audios/Originals/spe_jump_01.mp3","Jump 02":"/_assets/_audios/Originals/spe_jump_02.mp3","Key Press":"/_assets/_audios/Originals/spe_key_press.mp3","Key Press 02":"/_assets/_audios/Originals/spe_key_press_02.mp3","Key Press 03":"/_assets/_audios/Originals/spe_key_press_03.mp3","Key Press 04":"/_assets/_audios/Originals/spe_key_press_04.mp3","Key Press 05":"/_assets/_audios/Originals/spe_key_press_05.mp3","Key Press 06":"/_assets/_audios/Originals/spe_key_press_06.mp3","Key Typing 01":"/_assets/_audios/Originals/spe_key_typing_01.mp3","Knock Knock":"/_assets/_audios/Originals/spe_knock_knock.mp3","Marker 01":"/_assets/_audios/Originals/spe_marker_01.mp3","Marker 02":"/_assets/_audios/Originals/spe_marker_02.mp3","Marker 03":"/_assets/_audios/Originals/spe_marker_03.mp3","Marker 04":"/_assets/_audios/Originals/spe_marker_04.mp3","Match 01":"/_assets/_audios/Originals/spe_match_01.mp3","Measure Close 01":"/_assets/_audios/Originals/spe_measure_close_01.mp3","Measure Close 02":"/_assets/_audios/Originals/spe_measure_close_02.mp3","Measure Open 01":"/_assets/_audios/Originals/spe_measure_open_01.mp3","Measure Open 02":"/_assets/_audios/Originals/spe_measure_open_02.mp3","Metal Rolling":"/_assets/_audios/Originals/spe_metal_rolling.mp3","Motor 01":"/_assets/_audios/Originals/spe_motor_01.mp3","Motor 02":"/_assets/_audios/Originals/spe_motor_02.mp3","Noise 01":"/_assets/_audios/Originals/spe_noise_01.mp3","Notch 01":"/_assets/_audios/Originals/spe_notch_01.mp3","Notch 02":"/_assets/_audios/Originals/spe_notch_02.mp3","Paper Cut 01":"/_assets/_audios/Originals/spe_paper_cut_01.mp3","Paper Cut 02":"/_assets/_audios/Originals/spe_paper_cut_02.mp3","Paper Folding":"/_assets/_audios/Originals/spe_paper_folding.mp3","Paper Scratch 01":"/_assets/_audios/Originals/spe_paper_scratch_01.mp3","Paper Scratch 02":"/_assets/_audios/Originals/spe_paper_scratch_02.mp3","Paper Scratch 03":"/_assets/_audios/Originals/spe_paper_scratch_03.mp3","Pen 01":"/_assets/_audios/Originals/spe_pen_01.mp3","Pen 02":"/_assets/_audios/Originals/spe_pen_02.mp3","Punch 01":"/_assets/_audios/Originals/spe_punch_01.mp3","Punch 02":"/_assets/_audios/Originals/spe_punch_02.mp3","Punch Deep":"/_assets/_audios/Originals/spe_punch_deep.mp3","Radio Noise 01":"/_assets/_audios/Originals/spe_radio_noise_01.mp3","Radio Noise 02":"/_assets/_audios/Originals/spe_radio_noise_02.mp3","Radio Noise 03":"/_assets/_audios/Originals/spe_radio_noise_03.mp3","Rain 01":"/_assets/_audios/Originals/spe_rain_01.mp3","Rain 02":"/_assets/_audios/Originals/spe_rain_02.mp3","Scratch 01":"/_assets/_audios/Originals/spe_scratch_01.mp3","Scratch 02":"/_assets/_audios/Originals/spe_scratch_02.mp3","Scratch 03":"/_assets/_audios/Originals/spe_scratch_03.mp3","Seeds Shaking 01":"/_assets/_audios/Originals/spe_seeds_shaking_01.mp3","Seeds Shaking 02":"/_assets/_audios/Originals/spe_seeds_shaking_02.mp3","Song Scifi 01":"/_assets/_audios/Originals/spe_song_scifi_01.mp3",Spinner:"/_assets/_audios/Originals/spe_spinner.mp3","Spray Body":"/_assets/_audios/Originals/spe_spray_body.mp3","Suction 01":"/_assets/_audios/Originals/spe_suction_01.mp3","Suction 02":"/_assets/_audios/Originals/spe_suction_02.mp3","Suction 03":"/_assets/_audios/Originals/spe_suction_03.mp3","Suction 04":"/_assets/_audios/Originals/spe_suction_04.mp3","Switch 01":"/_assets/_audios/Originals/spe_switch_01.mp3","Switch 02":"/_assets/_audios/Originals/spe_switch_02.mp3","Switch 03":"/_assets/_audios/Originals/spe_switch_03.mp3","Switch 04":"/_assets/_audios/Originals/spe_switch_04.mp3","Switch 05":"/_assets/_audios/Originals/spe_switch_05.mp3","Switch 06":"/_assets/_audios/Originals/spe_switch_06.mp3","Switch 07":"/_assets/_audios/Originals/spe_switch_07.mp3","Switch 08":"/_assets/_audios/Originals/spe_switch_08.mp3","Switch 09":"/_assets/_audios/Originals/spe_switch_09.mp3","Switch 10":"/_assets/_audios/Originals/spe_switch_10.mp3","Swoosh 01":"/_assets/_audios/Originals/spe_swoosh_01.mp3","Swoosh 02":"/_assets/_audios/Originals/spe_swoosh_02.mp3","Swoosh 03":"/_assets/_audios/Originals/spe_swoosh_03.mp3","Swoosh 04":"/_assets/_audios/Originals/spe_swoosh_04.mp3","Tap Ceramic 01":"/_assets/_audios/Originals/spe_tap_ceramic_01.mp3","Tap Ceramic 02":"/_assets/_audios/Originals/spe_tap_ceramic_02.mp3","Tap Metal":"/_assets/_audios/Originals/spe_tap_metal_1.mp3","Tap Metal 2":"/_assets/_audios/Originals/spe_tap_metal_2.mp3","Tap Metal 3":"/_assets/_audios/Originals/spe_tap_metal_3.mp3","Tap Metal 4":"/_assets/_audios/Originals/spe_tap_metal_4.mp3","Tap Plastic":"/_assets/_audios/Originals/spe_tap_plastic.mp3","Tap Wood 01":"/_assets/_audios/Originals/spe_tap_wood_01.mp3","Tap Wood 02":"/_assets/_audios/Originals/spe_tap_wood_02.mp3","Trumbling 01":"/_assets/_audios/Originals/spe_trumbling_01.mp3","Trumbling 02":"/_assets/_audios/Originals/spe_trumbling_02.mp3","Voice Ouch":"/_assets/_audios/Originals/spe_voice_ouch.mp3","Voice Surprise 01":"/_assets/_audios/Originals/spe_voice_surprise_01.mp3","Voice Surprise 02":"/_assets/_audios/Originals/spe_voice_surprise_02.mp3","Walk Steps 01":"/_assets/_audios/Originals/spe_walk_steps_01.mp3","Walk Steps 02":"/_assets/_audios/Originals/spe_walk_steps_02.mp3","Walk Steps 03":"/_assets/_audios/Originals/spe_walk_steps_03.mp3","Water 01":"/_assets/_audios/Originals/spe_water_01.mp3","Water 02":"/_assets/_audios/Originals/spe_water_02.mp3","Water 03":"/_assets/_audios/Originals/spe_water_03.mp3","Water Bath":"/_assets/_audios/Originals/spe_water_bath.mp3","Water Drops":"/_assets/_audios/Originals/spe_water_drops.mp3",Wc:"/_assets/_audios/Originals/spe_wc.mp3","Xylophone Note A":"/_assets/_audios/Originals/spe_xylophone_note_a.mp3","Xylophone Note B":"/_assets/_audios/Originals/spe_xylophone_note_b.mp3","Xylophone Note C":"/_assets/_audios/Originals/spe_xylophone_note_c.mp3","Xylophone Note C Minor":"/_assets/_audios/Originals/spe_xylophone_note_c_minor.mp3","Xylophone Note D":"/_assets/_audios/Originals/spe_xylophone_note_d.mp3","Xylophone Note E":"/_assets/_audios/Originals/spe_xylophone_note_e.mp3","Xylophone Note F":"/_assets/_audios/Originals/spe_xylophone_note_f.mp3","Xylophone Note G":"/_assets/_audios/Originals/spe_xylophone_note_g.mp3","Xylophone Notes All 01":"/_assets/_audios/Originals/spe_xylophone_notes_all_01.mp3","Xylophone Notes All 02":"/_assets/_audios/Originals/spe_xylophone_notes_all_02.mp3"},ea={CC0:rb,Originals:ob};var un;(c=>{let n=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],t=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let p={},a=0;for(let u of n)p[`image_${a}`]={data:u,name:`Image ${a}`,asset:!1},a++;a=0;for(let u of t)p[`matcap_${a}`]={data:u,name:`Matcap ${a}`,asset:!1},a++;return p}c.defaultImages=e;function r(){let p={};return p["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},p}c.defaultColors=r;function o(){let p={},a={...ea.CC0,...ea.Originals},u=0;for(let[d,m]of Object.entries(a)){let f=m.split("/").pop()??"unknown",h=m.split(".").pop(),g="";if(h==="mp3")g="audio/mpeg";else if(h==="wav")g="audio/wav";else continue;p[`audio_${u}`]={name:d,filename:f,data:m,mimeType:g,asset:!1,free:d in ea.CC0},u++}return p}c.defaultAudios=o,c.defaultAudio={name:"Untitled Audio",data:"/_assets/_audios/CC0/success.mp3",filename:"success.mp3",mimeType:"audio/mpeg",asset:!0};function s(){return{materials:new Ee,images:new Ee,colors:new Ee,audios:new Ee,penumbraSize:[.5,.5,.5]}}c.emptyData=s;function l(){return{materials:new Ee,images:Eo(e(),Ee.prototype),colors:Eo(r(),Ee.prototype),audios:Eo(o(),Ee.prototype),penumbraSize:new Array(5).fill(.5)}}c.defaultData=l})(un||(un={}));function vl(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={...Xa(Yr(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={...Yr(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function nb(n){Object.values(n.shared.materials).forEach(t=>vl(t))}function ib(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&vl(r)}):"material"in e&&typeof e.material!="string"&&vl(e.material)})}function sb(n){Object.assign(n.scene.publish,{orbitControls:{...Js.defaultData,...Yr(n.scene.publish.orbitControls)}})}function ab(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((hd.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(gd.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 lb(n){n.scene.publish.withBackground=!0}function cb(n){n.scene.publish.settings.web={compress:!0,preset:1}}function ub(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 pb(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 db(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 xl(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={...Yr(t),colors:e,steps:r};Object.assign(t,o)}})}function mb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&xl(r)}):"material"in e&&typeof e.material!="string"&&xl(e.material)}),Object.values(n.shared.materials).forEach(t=>xl(t))}function fb(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 hb(n){n.shared.audios=Eo(un.defaultAudios(),Ee.prototype)}var wd=13;function Td(n){let t=n.schema??0;t!==wd&&(console.warn("updating from ",t,"to ",wd),t<1&&(ib(n),nb(n),n.schema=1),t<2&&(sb(n),n.schema=2),t<3&&(ab(n),n.schema=3),t<4&&(lb(n),n.schema=4),t<5&&(cb(n),n.schema=5),t<6&&(ub(n),n.schema=6),t<7&&(pb(n),n.schema=7),t<8&&(db(n),n.schema=8),t<9&&(Sd(n),n.schema=9),t<10&&(mb(n),n.schema=10),t<11&&(fb(n),n.schema=11),t<12&&(Sd(n),n.schema=12),t<13&&(hb(n),n.schema=13))}var ta;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})(ta||(ta={}));var Ad=require("three"),Je=class extends Ad.Color{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}};var Od=require("three");var De=require("three"),Nd=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:m}=n.parameters,f;return u||m?f=new ii(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,m):f=new De.CylinderBufferGeometry(p,a,r,o,i,s,l,c*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:{...n,type:"CylinderGeometry"}})}};function Jr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Cd(n){return new De.Vector2(n.y,-n.x)}var ii=class extends De.BufferGeometry{constructor(t,e,r,o,i,s,l,c,p,a,u,d,m=!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 f=[],h=[],g=[],x=[],v=0,A=r/2,_=new De.Vector3,b=new De.Vector3;m&&t==0&&(t=p),m&&e==0&&(e=a);let D=new De.Vector2(t,A),S=new De.Vector2(e,-A),y=null,I=null,T=null,P=null,C=D.clone().sub(S),N=0,j=0,W=0;d>0&&(N=Math.min(t,e)*(1-d),j=t-N,W=e-N);let ne=D.clone();ne.x-=N;let ue=Math.PI-C.angle(),se=C.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),F=K+U,E=d?F:U,B=d?F:K;if(p=Math.min(p,(t-j)/E,C.length()/F),a=Math.min(a,(e-W)/B,C.length()/F),p>0){let z=p/K;y=D.clone().sub(new De.Vector2(z,p)),d&&(T=y.clone(),T.x-=N-F*p),D.sub(C.clone().setLength(z))}if(a>0){let z=a/U;I=S.clone().sub(new De.Vector2(z,-a)),S.add(C.clone().setLength(z)),d&&(P=I.clone(),P.x-=N-F*a,ne.sub(C.clone().setLength(z)))}C=D.clone().sub(S);let L=C.length()<.5,G=[];for(let z=0;z<=o;z++){let M=[],q=z/o,J=q*c+l,ee=new De.Vector2(Math.sin(J),Math.cos(J));P&&I?(Q(M,q,ee,ue,a,P,-1,!0),Q(M,q,ee,se,a,I,-1,!1)):I?(k(M,ee,I.x,0,-1),Q(M,q,ee,se,a,I,-1,!1)):s||k(M,ee,e,W,-1);let H=Cd(C).normalize();if(Jr(H,ee,_),!L)for(let Z=0;Z<=i;Z++){let $=Z/i,re=C.clone().multiplyScalar($).add(S);Jr(re,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.z),x.push(q,.5+b.y/r),M.push(v++)}if(T&&y?(Q(M,q,ee,ue,p,y,1,!1),Q(M,q,ee,se,p,T,1,!0)):y?(Q(M,q,ee,ue,p,y,1,!1),k(M,ee,y.x,0,1)):s||k(M,ee,t,j,1),d&&!L){let Z=Cd(C).multiplyScalar(-1).normalize();Jr(Z,ee,_);for(let $=0;$<=i;$++){let re=$/i,ce=C.clone().multiplyScalar(-re).add(ne);Jr(ce,ee,b),h.push(b.x,b.y,b.z),g.push(_.x,_.y,_.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];f.push(q,J,H),(Z!=0||$!=0)&&f.push(J,ee,H)}c<Math.PI*2&&(V(-1,G[0],l),V(1,G[G.length-1],l+c)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(h,3)),this.setAttribute("normal",new De.Float32BufferAttribute(g,3)),this.setAttribute("uv",new De.Float32BufferAttribute(x,2));function Q(z,M,q,J,ee,H,Z,$){for(let re=0;re<u+1;re++){let ce=re/u,ie=Z<0?ce:1-ce;$&&(ie-=1),ie*=J;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*Z),Fe=fe.clone().multiplyScalar(ee).add(H);Jr(Fe,q,b),h.push(b.x,b.y,b.z),Jr(fe,q,_),g.push(_.x,_.y,_.z),x.push(M,.5+b.y/r),z.push(v++)}}function k(z,M,q,J,ee){let H=new De.Vector3,Z=new De.Vector2,$=[q,J];ee<0&&$.reverse();for(let re of $)Z.set(re,A*ee),Jr(Z,M,H),h.push(H.x,H.y,H.z),g.push(0,ee,0),x.push(.5,.5),z.push(v++)}function V(z,M,q){let J=new De.Vector2(Math.sin(q),Math.cos(q)),ee=new De.Vector2(-Math.cos(q),Math.sin(q)),H=new De.Vector3,Z=z<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),$=new De.Vector2((t+e+j+W)/4,0);Jr($,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 ce of M){let ie=h.slice(ce*3,ce*3+3);h.push(...ie),g.push(ee.x,0,ee.y);let fe=x.slice(ce*2,ce*2+2);x.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)Z(re,ce,ce+1);Z(re,v-1,re+1)}}};var Pd=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 ii(0,t/2,r,o,i,s,l,c*Math.PI/180,p,a,u,0,!0):d=new Od.ConeBufferGeometry(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};var Ct=require("three"),Id=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 Ct.BoxBufferGeometry(t,e,r,o,i,s):p=new _l(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},bl=Math.PI/2,_l=class extends Ct.BufferGeometry{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=[],m=[],f=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 Ct.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ct.Float32BufferAttribute(d,3)),this.setAttribute("uv",new Ct.Float32BufferAttribute(m,2));function g(A,_,b,D,S,y,I,T,P,C,N){let j=(y-2*l)/P,W=(I-2*l)/C,ne=y/2-l,ue=I/2-l,se=T/2,K=P+1,U=C+1,F=0,E=0,B=new Ct.Vector3;for(let L=0;L<U;L++){let G=L*W-ue;for(let Q=0;Q<K;Q++){let k=Q*j-ne;B[A]=k*D,B[_]=G*S,B[b]=se,u.push(B.x,B.y,B.z),B[A]=0,B[_]=0,B[b]=T>0?1:-1,d.push(B.x,B.y,B.z),m.push(Q/P),m.push(1-L/C),F+=1}}for(let L=0;L<C;L++)for(let G=0;G<P;G++){let Q=f+G+K*L,k=f+G+K*(L+1),V=f+(G+1)+K*(L+1),z=f+(G+1)+K*L;a.push(Q,k,z),a.push(k,V,z),E+=6}p.addGroup(h,E,N),h+=E,f+=F}function x(A,_,b,D,S,y,I,T,P,C,N){let j=(I-2*l)/C,W=I/2-l,ne=T/2-l,ue=P/2,se=C+1,K=0,U=0,F=new Ct.Vector3,E=new Ct.Vector3;for(let B=0;B<c+1;B++){let L=B/c*bl,G=Math.sin(L)*l,Q=(1-Math.cos(L))*l,k=Math.sin(L),V=Math.cos(L);F[_]=(ne+G)*S,F[b]=(ue-Q)*y,E[A]=0,E[_]=k*Math.sign(F[_]),E[b]=V*Math.sign(F[b]);for(let z=0;z<se;z++){let M=z*j-W;F[A]=M*D,u.push(F.x,F.y,F.z),d.push(E.x,E.y,E.z),m.push(z/C),m.push(0),K+=1}}for(let B=0;B<c;B++)for(let L=0;L<C;L++){let G=f+L+se*B,Q=f+L+se*(B+1),k=f+(L+1)+se*(B+1),V=f+(L+1)+se*B;a.push(G,Q,V),a.push(Q,k,V),U+=6}p.addGroup(h,U,N),h+=U,f+=K}function v(A,_,b){let D=new Ct.Vector3,S=new Ct.Vector3(t/2,e/2,r/2);S.subScalar(l);let y=[],I=A*_*b>0?(P,C,N)=>a.push(P,C,N):(P,C,N)=>a.push(P,N,C);for(let P=0;P<=c;P++){let C=[],N=bl*(1-P/c),j=Math.cos(N),W=Math.sin(N),ne=0;for(let ue=0;ue<=P;ue++){let se=Math.cos(ne),K=Math.sin(ne);D.x=j*se,D.y=W,D.z=j*K;let U=S.clone().addScaledVector(D,l);u.push(A*U.x,_*U.y,b*U.z),d.push(A*D.x,_*D.y,b*D.z),m.push(0,0),C.push(f++),ne+=bl/P}y.push(C)}let T=y.length-1;for(let P=0;P<T;P++){let C=y[P],N=y[P+1],j=C.length-1;I(C[0],N[1],N[0]);for(let W=1;W<=j;W++)I(C[W-1],C[W],N[W]),I(C[W],N[W+1],N[W])}}}};var Ue=require("three"),eo=class extends Ue.BufferGeometry{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new Ue.Float32BufferAttribute(l,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Ue.Vector3,h=f.clone(),g=new Ue.Triangle,x=i*o,v=o-x,A=s+1,_=new Ue.Vector3,b=(K,U)=>_.subVectors(K,U).normalize(),D=(K,U)=>Array(K).fill(void 0).map(U),S=D(t.length/3,(K,U)=>new Ue.Vector3().fromArray(t,U*3).setLength(o)),y=[],I=1e6;for(let K=0;K<S.length;K++){let U=S[K],F=[],E,B,L,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],L=U.distanceToSquared(S[E]),G=Math.min(G,L),F.push([E,B,L])}G+=1e-6;let k=[],V=0,z=F.length;for(let M=0;M<z;M++){[E,B,L]=F[V];let q=y[E]?.includes(K)==!0;L<=G&&k.push(E+ +q*I),V=F.findIndex(J=>J[0]==B)}y.push(k)}let T=[];{let K=0,U=0,F,E,B=m==3;for(let L=0;L<=s;L++){F=L*(L+1)/2,E=(L+1)*(L+2)/2;for(let G=0;G<s-L;G++)[K,U]=[F+G+L+2,E+G+L+3],T.push(F,E,...B?[U,F]:[K,E],U,K),[F,E]=[K,U];T.push(F,E,F+s+2)}}let P=f.clone(),C=f.clone(),N=f.clone(),j=f.clone(),W=f.clone(),ne=[],ue=D(S.length,()=>D(m,()=>f.clone()));for(let K=0;K<S.length;K++){f.copy(S[K]).normalize(),P.copy(f).multiplyScalar(v);let U=y[K];for(let k=0;k<U.length;k++){let V=U[k],z=U[(k+1)%m];g.setFromPointsAndIndices(S,K,V%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(P,ue[K][k])}let F=[],E=[],B=[],L=new Ue.Vector3;s==0&&[...ue[K]].reduce((k,V)=>k.add(V),L).multiplyScalar(1/m);for(let k=0;k<m;k++){let V=[],z=(k-1+m)%m,M=ue[K][z],q=ue[K][k];f.copy(M).sub(P),h.copy(q).sub(P);let J=P.angleTo(f),ee=f.angleTo(h),H=Math.cos(J)*x;s==0?C.copy(L):C.copy(P).setLength(v+H),E.push(H);let Z=[C,M,q];for(let $=0;$<2;$++){let re=Z[$],ce=Z[$+1];j.subVectors(re,P),W.subVectors(ce,P),N.crossVectors(j,W).normalize();for(let ie=0;ie<A;ie++){let fe=[J,ee][$]*ie/A;f.copy(j).applyAxisAngle(N,fe).add(P),F.push(f.clone()),$&&(b(f,P),V.push([ie==0?re:f.clone(),_.clone()]))}$&&(b(ce,P),V.push([ce,_.clone()]))}B.push(V)}ne.push(B);let G=2*A,Q=2;for(let k=0;k<m;k++){let V=G*k,z=G*((k+1)%m),M=[F[V]];for(let J=1;J<A;J++){j=F[V+J],W=F[z+J],M.push(j);for(let ee=1,H=J-Q+1;ee<=H;ee++)f.lerpVectors(j,W,ee/(H+1)),f.sub(P).setLength(E[k]).add(P),M.push(f.clone());M.push(W)}for(let J=0;J<A;J++)M.push(F[J+A+V]);M.push(F[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),[_.x,_.y,_.z])).flat())}}let se=[];for(let K=0;K<y.length;K++)for(let U=0;U<m;U++){let F=y[K][U];if(F<I){let E=y[F].findIndex(G=>G%I==K),B=ne[K][U],L=ne[F][E];for(let G=0;G<A;G++){let Q=B[G],k=L[A-G],V=B[G+1],z=L[A-(G+1)];[Q,k,V,V,k,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)})}se.push(B[0][0],L[A][0],B[A][0],L[0][0])}}for(;se.length;){let K,U,F,E;[K,U]=se.splice(0,2);let B=[K];for(;K!=U;)B.push(U),F=se.indexOf(U),E=F%2,U=se.splice(F-E,2)[1-E];_.subVectors(B[0],B[1]).cross(f.subVectors(B[0],B[2])).normalize();let L=_.dot(B[0])<0;L&&_.negate();for(let G=1;G<=B.length-2;G++)[B[G+ +L],B[G+1-+L],B[0]].forEach(Q=>{l.push(Q.x,Q.y,Q.z),p.push(_.x,_.y,_.z)})}}function u(){let d=new Ue.Vector3;for(let S=0;S<l.length;S+=3){d.x=l[S+0],d.y=l[S+1],d.z=l[S+2];let y=b(d)/2/Math.PI+.5,I=D(d)/Math.PI+.5;c.push(y,1-I)}let m=new Ue.Vector3,f=new Ue.Vector3,h=new Ue.Vector3,g=new Ue.Vector3,x=new Ue.Vector2,v=new Ue.Vector2,A=new Ue.Vector2,_=(S,y,I,T)=>{T<0&&S.x===1&&(c[y]=S.x-1),I.x===0&&I.z===0&&(c[y]=T/2/Math.PI+.5)};for(let S=0,y=0;S<l.length;S+=9,y+=6){m.set(l[S+0],l[S+1],l[S+2]),f.set(l[S+3],l[S+4],l[S+5]),h.set(l[S+6],l[S+7],l[S+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(m).add(f).add(h).divideScalar(3);let I=b(g);_(x,y+0,m,I),_(v,y+2,f,I),_(A,y+4,h,I)}for(let S=0;S<c.length;S+=6){let y=c[S+0],I=c[S+2],T=c[S+4],P=Math.max(y,I,T),C=Math.min(y,I,T);P>.9&&C<.1&&(y<.2&&(c[S+0]+=1),I<.2&&(c[S+2]+=1),T<.2&&(c[S+4]+=1))}function b(S){return Math.atan2(S.z,-S.x)}function D(S){return Math.atan2(-S.y,Math.sqrt(S.x*S.x+S.z*S.z))}}}static fromJSON(t){return new eo(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var Ld=require("three"),Md=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 si(t*.5,i,s):new Ld.DodecahedronBufferGeometry(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},si=class extends eo{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 si(t.radius,t.corner,t.cornerSides)}};var be=require("three");var he=require("three"),ai=1e-12,dn=class{constructor(t){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.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 dn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},mn=class extends dn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new mn(this.parent).copy(this)}},$t=class extends dn{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new mn(this),new mn(this))}static create(e,r){let o=new $t(e,new he.Vector2(...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 $t(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 he.Vector2,r=new he.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Dd(o,e),Dd(i,r)),[e,r]}computeTangent(e=new he.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Dd(n,t=new he.Vector2){let e=n.length();return t.set(-n.y/e,n.x/e)}var wl=n=>n,fn=new he.Vector2,ra=new he.Vector2,gb=new he.Vector2,yb=new he.Vector2,xb=new he.Vector2,vb=new he.Vector2,Ed=new he.Vector3,Gd=new he.Vector3;function Rd(n){let t=new he.Vector2;t.addVectors(n.v0,fn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(n.v2,ra.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(n.v0,t,e,n.v2)}function li(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function bb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function _b(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Tl(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 Fd(n,t,e){return Bd(n,t)&&Bd(t,e)&&Sl(n.position,t.position,e.position)}function Sl(n,t,e){return fn.copy(t).sub(n).cross(ra.copy(e).sub(n))===0}function Vd(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 zd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function Ud(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 Tl(t,n,e)>Math.PI&&(a*=-1),li(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 Al(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Bd(n,t){return Sl(n.position,n.controls[1].position,t.position)&&Sl(n.position,t.controls[0].position,t.position)}function kd(n,t,e,r,o=.5){let i=fn.subVectors(t,n).multiplyScalar(o).add(n),s=ra.subVectors(e,t).multiplyScalar(o).add(t),l=gb.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=yb.subVectors(s,i).multiplyScalar(o).add(i),a=xb.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=vb.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 jd(n,t,e=12,r=!0){let o=Gd.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=wl(t[c]),a=fn,u=to(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof he.CubicBezierCurve||p instanceof he.QuadraticBezierCurve||p instanceof he.LineCurve){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&_b(i,o))continue;i===void 0&&(i=Ed),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 Hd(n,t,e,r=12,o=!0){let i=Gd.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=wl(t[c]),u=fn,d=to(a,r);l.push(d);for(let m=0;m<=d;m++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(m/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Ed:(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 Cl(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=to(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=to(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=to(n[0].roundedCurveCorner,t)*.5),r}function to(n,t=12){return n&&n instanceof he.EllipseCurve?t*2:n&&(n instanceof he.LineCurve||n instanceof he.LineCurve3)?1:n&&n instanceof he.SplineCurve?t*n.points.length:t}function Wd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=wl(t[s]),c=to(l,e),p=fn;for(let a=0;a<=c;a++)if(l instanceof he.CubicBezierCurve||l instanceof he.QuadraticBezierCurve||l instanceof he.LineCurve){if(l.getPoint(a/c,p),o!==void 0&&bb(o,p,ai))continue;o===void 0&&(o=ra),o.copy(p),n.push(p.x,p.y),i++}}return li(n[0],n[n.length-2],ai)&&li(n[1],n[n.length-1],ai)&&(n.pop(),n.pop()),r&&i>1&&!(li(n[i-1],n[1],ai)&&li(n[i-2],n[0],ai))&&(n.push(n[0],n[1]),i++),n}var Nl=new be.Vector2,Sb=new be.Vector2,wb=new be.Vector2,Tb=new be.Vector2,Ab=new be.Vector2,Cb=new be.Vector2,Ae=class extends be.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Ae;return i.isClosed=e.isClosed,i.points=e.points.map(s=>$t.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Ae.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=Nl.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=be.MathUtils.generateUUID()){let i;e instanceof be.Vector2?i=e:i=new be.Vector2(e,r);let s=new $t(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 jd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Cl(this.points,e,!1),this.roundedCurveDivisions=Cl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Hd(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),Wd(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=to(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(Al(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Nl.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){Al(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&&Fd(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,m=l.curveAfter;if(d===void 0||m===void 0)continue;let f=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),x=m.getLength(),v=Math.min(a,g*.499),A=Math.min(a,x*.499),_=Math.min(v,A),b=1-_/g,D=_/x,S=d.getPointAt(b,Nl),y=m.getPointAt(D,Sb);this._subSplitCurve(d,f,b,S,void 0),this._subSplitCurve(m,h,D,void 0,y);let I;if(this.useCubicForRoundedCorners){let T=Tl(S,l.position,y)/2,P=Math.tan(T)*S.distanceTo(l.position),[C,N]=Vd(S,y,P,wb,Tb),j=zd(C,N,l.position),[W,ne]=Ud(j,S,y,P,Ab,Cb);I=new be.CubicBezierCurve(S.clone(),W.clone(),ne.clone(),y.clone())}else I=new be.QuadraticBezierCurve(S.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 be.LineCurve)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=kd(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 Ae(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],m=new $t(be.MathUtils.generateUUID(),new be.Vector2(s,l));m.controls[0].position.set(c,p),m.controls[1].position.set(a,u),m.roundness=d,this.points.push(m)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ae;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof be.CubicBezierCurve&&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 be.QuadraticBezierCurve&&(i[l]=Rd(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,m;u instanceof be.CubicBezierCurve?(m=this.createPoint(u.v0),m.controls[1].position.copy(u.v1)):u instanceof be.LineCurve&&(m=this.createPoint(u.v1)),m!==void 0&&(d!==null&&r(m,d),s.push(m))}let p=i[i.length-1],a=!1;return p instanceof be.CubicBezierCurve?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof be.LineCurve&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(i=>{let s=new Ae;return s.fromShape(i),s})),this.update(),this}};var Pl=Math.PI*2;function Ol({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Nb(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 qd(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 Ob(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),m=Math.pow(l,2),f=a*u-a*m-u*d;f<0&&(f=0),f/=a*m+u*d,f=Math.sqrt(f)*(c===p?-1:1);let h=f*o/i*l,g=f*-i/o*s,x=h+(n+e)/2,v=g+(t+r)/2,A=(s-h)/o,_=(l-g)/i,b=(-s-h)/o,D=(-l-g)/i,S=qd(1,0,A,_),y=qd(A,_,b,D);return!p&&y>0&&(y-=Pl),p&&y<0&&(y+=Pl),{centerx:x,centery:v,ang1:S,ang2:y}}function $d({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=Ob(n,t,e,r,o,i,p,a,s,l),{ang1:m,ang2:f}=d,{centerx:h,centery:g}=d,x=Math.abs(f)/(Pl/4);Math.abs(1-x)<1e-7&&(x=1);let v=Math.max(Math.ceil(x),1);f/=v;for(let A=0;A<v;A++)c.push(Nb(m,f)),m+=f;return c.map(A=>{let{x:_,y:b}=Ol(A[0],o,i,h,g),{x:D,y:S}=Ol(A[1],o,i,h,g),{x:y,y:I}=Ol(A[2],o,i,h,g);return{x1:_,y1:b,x2:D,y2:S,x:y,y:I}})}var _o=require("three");var Be;(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"})(Be||(Be={}));var et;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(et||(et={}));function pe(n,t){if(!n)throw t||"Assertion Failed!"}var ae=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){pe(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){pe(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){pe(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){pe(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}(),ci=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}(),oa=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}(),hn=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}(),Xd=function(){function n(){var t=new hn,e=new ci,r=new oa(0),o=new oa(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 oa(0),r=new oa(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;pe(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;pe(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 hn,e=new hn,r=new ci,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 hn;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ci;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 ci;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 hn;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 ci;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&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.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){pe(o.prev===i),c=o.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(pe(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){pe(s.prev===l),c=s.anEdge;do pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c),pe(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(pe(s.prev===l&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)pe(c.Sym.next===p.Sym),pe(c.Sym!==c),pe(c.Sym.Sym===c),pe(c.Org!==null),pe(c.Dst!==null),pe(c.Lnext.Onext.Sym===c),pe(c.Onext.Sym.Lnext===c);pe(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}(),Yd=function(){function n(){this.handle=null}return n}(),Kd=function(){function n(){this.key=null,this.node=0}return n}(),Pb=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 Yd,this.handles[r]=new Kd;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,pe(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 Yd;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Kd}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;pe(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}(),Il=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}(),Ib=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}(),Lb=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?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(t,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){pe(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 Il;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 Be.ODD:return(e&1)!==0;case Be.NONZERO:return e!==0;case Be.POSITIVE:return e>0;case Be.NEGATIVE:return e<0;case Be.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 pe(ae.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,pe(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=ae.vertL1dist(e,t),i=ae.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(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.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(ae.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(pe(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.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(ae.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 hn,m,f;if(pe(!ae.vertEq(p,c)),pe(ae.edgeSign(c,t.event,s)<=0),pe(ae.edgeSign(p,t.event,l)>=0),pe(s!==t.event&&l!==t.event),pe(!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(ae.vertLeq(s,l)){if(ae.edgeSign(p,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),ae.intersect(c,s,p,l,d),pe(Math.min(s.t,c.t)<=d.t),pe(d.t<=Math.max(l.t,p.t)),pe(Math.min(p.s,c.s)<=d.s),pe(d.s<=Math.max(l.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),m=ae.vertLeq(s,l)?s:l,ae.vertLeq(m,d)&&(d.s=m.s,d.t=m.t),ae.vertEq(d,s)||ae.vertEq(d,l)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)>=0||!ae.vertEq(p,t.event)&&ae.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),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(ae.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),ae.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),ae.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),ae.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}ae.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,ae.vertEq(o.Org,r)){pe(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.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}pe(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(pe(i!==s),n.deleteRegion(t,c),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.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 Il;if(p.eUp=e.anEdge.Sym,r=t.dict.search(p).key,o=n.regionBelow(r),!!o){if(s=r.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.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);pe(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 Il,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 Ib(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||(pe(e.fixUpperEdge),pe(++r===1)),pe(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,ae.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 Pb(i,ae.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,pe(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||!ae.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}(),Mb=function(){function n(){this.mesh=new Xd,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=Be.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],m=[null,null,null],f=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,f[g]=e,c[g]=i,m[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,f[x]=e),i>c[x]&&(c[x]=i,m[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=f[v],o=m[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(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.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&&(ae.edgeGoesRight(r.Lprev)||ae.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===et.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 m=c;m<r;++m)this.elements[d++]=-1;if(e===et.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var f=c;f<r;++f)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 Xd),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=Be.ODD),e===void 0&&(e=et.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_(),Lb.computeInterior(this,s);var l=this.mesh;return e===et.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===et.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function bo(n){var t=n.windingRule,e=t===void 0?Be.ODD:t,r=n.elementType,o=r===void 0?et.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,m=n.strict,f=m===void 0?!0:m,h=n.debug,g=h===void 0?!1:h;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var x=new Mb;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,f),{vertices:x.vertices,vertexIndices:x.vertexIndices,vertexCount:x.vertexCount,elements:x.elements,elementCount:x.elementCount,mesh:g?x.mesh:void 0}}}var $L=Be.ODD,XL=Be.NONZERO,YL=Be.POSITIVE,KL=Be.NEGATIVE,QL=Be.ABS_GEQ_TWO,ZL=et.POLYGONS,JL=et.CONNECTED_POLYGONS,e3=et.BOUNDARY_CONTOURS;var gn=class extends _o.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Be.ODD;this.elementType=et.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Be.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let f=0,h=i.length/2;f<h;f++){let g=f*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=bo({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,m=l?.elementCount??1;if(this._positionAttribute=new _o.BufferAttribute(new Float32Array(d*3),3),this._normalAttribute=new _o.BufferAttribute(new Float32Array(d*3),3),this._uvAttribute=new _o.BufferAttribute(new Float32Array(d*2),2),this._indexAttribute=new _o.BufferAttribute(new Uint32Array(m*3),1),l){let f=1/0,h=-1/0,g=1/0,x=-1/0;for(let _=0,b=d;_<b;_++){let D=_*2,S=l.vertices[D+0],y=l.vertices[D+1];S<f&&(f=S),S>h&&(h=S),y<g&&(g=y),y>x&&(x=y)}let v=h-f,A=x-g;for(let _=0,b=d;_<b;_++){let D=_*2,S=l.vertices[D+0],y=l.vertices[D+1],I=(S-f)/v,T=(y-g)/A;this._positionAttribute.setXYZ(_,S,y,0),this._normalAttribute.setXYZ(_,0,0,1),this._uvAttribute.setXY(_,I,T)}for(let _=0,b=m;_<b;_++){let D=_*3,S=l.elements[D+0],y=l.elements[D+1],I=l.elements[D+2];this._indexAttribute.setX(D+0,S),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 gn(this._shape,this._curveSegments);return e.userData=Yn(this.userData),e}};var So=require("three");var na=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*na.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*na.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)}},ui=na;ui.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ll=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),yn=class extends So.BufferGeometry{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(S=>{let y=S.extractShapePointsToFlatArray([],i),I=[];for(let T=y.length-1;T>=1;T-=2){let P=y[T-1],C=y[T-0];I.push(P,C)}return I}),p=bo({windingRule:Be.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[l]}),a=bo({windingRule:Be.ODD,elementType:et.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 S=0;S<a.elements.length;S++){let y=a.elements[S],I=S%2===0?p.vertexCount:0;p.elements.push(y+I)}for(let S=0;S<a.vertexIndices.length;S++){let y=a.vertexIndices[S],I=p.vertexCount;p.vertexIndices.push(y+I)}for(let S=0;S<a.vertices.length;S++){let y=a.vertices[S];p.vertices.push(y)}}let d=1/0,m=-1/0,f=1/0,h=-1/0;for(let S=0,y=p.vertexCount;S<y;S++){let I=S*2,T=p.vertices[I+0],P=p.vertices[I+1];T<d&&(d=T),T>m&&(m=T),P<f&&(f=P),P>h&&(h=P)}this._minX=d,this._minY=f,this._width=m-d,this._height=h-f;let g=p.vertexCount*2*(2+this._bevelSegments);this._buffer=new ui(g);let x=[],v=[];for(let S=p.elementCount-1;S>=0;S--){let y=S>=u,I=S*2,T=p.elements[I+0],P=p.elements[I+1],C=T+P,N={start:T,count:P,normals:[],continuous:[],concave:[]},j=T,W=C-1,ne=T+1,ue=this._shape.roundedCurves.length;do{let F=j-T,E=p.vertices[W*2+0],B=p.vertices[W*2+1],L=p.vertices[j*2+0],G=p.vertices[j*2+1],Q=p.vertices[ne*2+0],k=p.vertices[ne*2+1],V=L-E,z=G-B,M=Math.sqrt(V*V+z*z);V/=M,z/=M;let q=L-Q,J=G-k,ee=Math.sqrt(q*q+J*J);q/=ee,J/=ee,N.normals[F*2+0]=-J,N.normals[F*2+1]=q,N.concave[F]=V*J-z*q>0;let H=p.vertexIndices[j];if(Array.isArray(H))N.continuous[F]=!1;else{let[Z,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)N.continuous[F]=!0;else{let re=$===1?Z+1:Z-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[Z].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);N.continuous[F]=ie.dot(fe)>.95}}y&&(N.normals[F*2+0]*=-1,N.normals[F*2+1]*=-1),[W,j,ne]=[j,ne,ne+1],ne>=C&&(ne-=P)}while(ne!==T+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:p.vertices.slice(T*2,C*2),vertexCount:P,vertexIndices:new Array(P).fill(!0).map((F,E)=>[E,E]),elements:[0,P],elementCount:1,mesh:null},reverseMap:[],insetPoints:p.vertices.slice(T*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,B=(1-Math.cos(E))*this._bevelSize,L=[],G=[],Q=[],k=[],V=0;for(let M=0;M<P;M++){let q=M*2,J=(M-1+P)%P*2,ee=p.vertices[N.start*2+q+0],H=p.vertices[N.start*2+q+1],Z=-N.normals[J+0]*B,$=-N.normals[J+1]*B,re=-N.normals[q+0]*B,ce=-N.normals[q+1]*B;if(N.concave[M]||!N.concave[M]&&y){let ie=Math.atan2($,Z),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Fe=fe-ie;if(N.continuous[M]||y){let ge=ie+Fe/2,$e=Math.cos(ge)*B,Te=Math.sin(ge)*B;L[2*V+0]=ee+$e*(y?-1:1),L[2*V+1]=H+Te*(y?-1:1),k[V]=M,V++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Fe)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=ie+Fe*($e/ge),_t=Math.cos(Te)*B,Rt=Math.sin(Te)*B;L[2*V+0]=ee+_t,L[2*V+1]=H+Rt,k[V]=M,V++}}}else L[2*V+0]=ee+Z,L[2*V+1]=H+$,k[V]=M,G[M]=V,V++,L[2*V+0]=ee,L[2*V+1]=H,k[V]=M,V++,L[2*V+0]=ee+re,L[2*V+1]=H+ce,k[V]=M,Q[M]=V,V++}let z=bo({windingRule:Be.POSITIVE,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let J=M.Org.idx,ee=k[J],H=k[(J+1)%k.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 ${F}'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(!N.continuous[Z]||!N.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}}}se.push({bevelI:F,angle:E,size:B,boundary:z,reverseMap:k,insetPoints:L})}let K=(F,E,B)=>{let L=0,G=F.boundary.vertexIndices.length;for(;L<G&&B(F.boundary.vertexIndices[E]);)E=(E+1)%G,L++;return L},U=x.length;for(let F=1;F<se.length;F++){let E=se[F-1],B=se[F],L=E.boundary.vertexIndices.length,G=B.boundary.vertexIndices.length;if(!L||!G)break;let Q=N.concave.length,k=0,V=Ll(k,P);for(;!E.boundary.vertexIndices.filter(V).length||!B.boundary.vertexIndices.filter(V).length;)k++,V=Ll(k,P);let z=E.boundary.vertexIndices.findIndex(V),M=B.boundary.vertexIndices.findIndex(V);do z=(z+1)%L;while(V(E.boundary.vertexIndices[z]));do M=(M+1)%G;while(V(B.boundary.vertexIndices[M]));k=(k+1)%P;let q=k,J=this.buildBevelVert(N,E,(z-1+L)%L),ee=this.buildBevelVert(N,B,(M-1+G)%G),H=J,Z=ee,$,re,ce=!1;do{V=Ll(k,P);let ie=K(E,z,V),fe=K(B,M,V),Fe=ce;if(ce=!1,ie&&!fe){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%L,ge/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let ge=0;ge<fe;ge++)re=this.buildBevelVert(N,B,(M+ge)%G,ge/(fe-1)),x.push(Z.topN,H.topP,re.topP),x.push(H.bottomP,Z.bottomN,re.bottomP),Z=re;else if(ie&&fe)if($=this.buildBevelVert(N,E,z,0),re=this.buildBevelVert(N,B,M,0),Fe?(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,ie===fe)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(N,E,(z+ge)%L,ge/(ie-1)),re=this.buildBevelVert(N,B,(M+ge)%G,ge/(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(ie>fe){let ge=ie/fe,$e=0;for(let Te=1;Te<ie;Te++)$=this.buildBevelVert(N,E,(z+Te)%L,Te/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$,Te>($e+1)*ge&&($e++,re=this.buildBevelVert(N,B,(M+$e)%G,$e/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re)}else{let ge=fe/ie,$e=0;for(let Te=1;Te<fe;Te++)re=this.buildBevelVert(N,B,(M+Te)%G,Te/(fe-1)),x.push(Z.topN,$.topP,re.topP),x.push($.bottomP,Z.bottomN,re.bottomP),Z=re,Te>($e+1)*ge&&($e++,$=this.buildBevelVert(N,E,(z+$e)%L,$e/(ie-1)),x.push(H.topN,$.topP,Z.topN),x.push($.bottomP,H.bottomN,Z.bottomN),H=$)}z=(z+ie)%L,M=(M+fe)%G,k=(k+1)%Q}while(k!==q)}{let F=se[0];for(let E=0,B=F.boundary.vertexCount;E<B;E++){let L=this.buildBevelVert(N,F,E),G=this.buildBevelVert(N,F,(E+1)%B);x.push(G.topP,L.topN,L.bottomN),x.push(G.topP,L.bottomN,G.bottomP)}}if(y){let F=[];for(let E=x.length-1;E>=U+2;E-=3){let B=x[E-2],L=x[E-1],G=x[E-0];F.push(G,L,B)}x.splice(U,x.length-U,...F)}if(y){let F=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let B=se[se.length-1].boundary.vertices[E-1],L=se[se.length-1].boundary.vertices[E-0];F.push(B,L)}v.push(F)}if(!y){let F=se[se.length-1],E=bo({windingRule:se.length>1?Be.POSITIVE:Be.ODD,elementType:et.POLYGONS,vertexSize:2,strict:!0,contours:[F.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 L=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(L.top,G.top,Q.top),x.push(Q.bottom,G.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new So.BufferAttribute(Uint32Array.from(x),1),_=new So.BufferAttribute(this._buffer.positions,3),b=new So.BufferAttribute(this._buffer.normals,3),D=new So.BufferAttribute(this._buffer.uvs,2);_.needsUpdate=!0,b.needsUpdate=!0,D.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",_),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 m=Math.cos(r.angle),f=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],_=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,D=(A-this._minY)/this._height,S=e.normals[g+0],y=e.normals[g+1],I=e.normals[x+0],T=e.normals[x+1];if(d){let W=I-S,ne=T-y;S=S+W*(1-i),y=y+ne*(1-i);let ue=Math.sqrt(S*S+y*y);S/=ue,y/=ue}let P=this._buffer.get(u?2:4),C=P*3,N=P*2,j={i:o,fi:p,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=S*m,this._buffer.normals[C+1]=y*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=S*m,this._buffer.normals[C+4]=y*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b,u||(P+=2,C+=6,N+=4,j.topP=P+0,j.bottomP=P+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-_,this._buffer.normals[C+0]=I*m,this._buffer.normals[C+1]=T*m,this._buffer.normals[C+2]=f,this._buffer.uvs[N+0]=b,this._buffer.uvs[N+1]=D,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=_,this._buffer.normals[C+3]=I*m,this._buffer.normals[C+4]=T*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[N+2]=D,this._buffer.uvs[N+3]=b),this.vertexCache[s]=j,j}clone(){let e=new yn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Yn(this.userData),e}};var xt=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 Ae?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ae(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new Ae(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 gn(n.shape,o):s=new yn(n.shape,t,e,o,r),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var vn=require("three"),Jd=Math.PI*2,em=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 Ae?n.shape:new Ae,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=Db(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let m=xt.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(m,{userData:{...n,type:"EllipseGeometry"}})}};function Db(n,t,e,r,o,i){if(r>=Jd)return o>30||o%4===0?(Eb(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=$d({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?Bb(n,s.x,s.y,p,o,t,e,i):Zd(n,r,o,t,e,i)}function Bb(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(xn(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],m=xn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),m.controls[0].position.set(u.x2,u.y2),n.addPoint(m)}return l>0?tm(n,i,s,l):n.addPoint(xn(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(xn(p,a))}return t<Jd?i>0?tm(n,r,o,i):n.addPoint(xn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&rm(n,r,o,i)),1}function Eb(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(ia(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(ia(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(ia(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(ia(o,i-e,o+l,i-e,o-l,i-e)),r>0&&rm(n,t,e,r)}function xn(n,t){return new $t(vn.MathUtils.generateUUID(),new vn.Vector2(n,t))}function ia(n,t,e,r,o,i){let s=xn(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function tm(n,t,e,r){om(n,t,e,r).forEach(i=>n.addPoint(i))}function rm(n,t,e,r){let o=om(n,t,e,r),i=new Ae;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function om(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new vn.Vector2(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=vn.MathUtils.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}var Gr=require("three"),nm=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 pi(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},pi=class extends Gr.BufferGeometry{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 m=t&&s===1;m&&(d=0),u>100&&(u=100);let f=()=>new Gr.Vector3,h=new Gr.Vector3,g=f(),x=f(),v=f(),A,_,b,D,S,y,I,T,P=f(),C=f(),N=f(),j=f(),W=f(),ne=f(),ue=f(),se=f(),K=r-2*c+.001,U=K/s,F=Math.ceil(l*s),E=F+1,B=K/F,L=-K/2,G=a+1,Q=2*Math.PI/a,k=Math.PI/2/d,V=.01,z=Math.min((1-u/100)*c,c-V),M=c-z,q=0,J=2,ee=d*J+J,H=G*ee/J,Z=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(je=>Array($*je).fill(0)),fe=[],Fe=i-c;function ge(je,Mt){let or=Math.PI/2;y=Mt*B,T=2*Math.PI*(y%U)/U+or,y+=L,I=Math.sin(T)*Fe,S=Math.cos(T)*Fe,t?je.set(S,I,y):je.set(S,y,I)}ge(h,-1e-10),ge(g,0),P.copy(h),ge(h,1);let $e=h.distanceTo(g),Te=M+z,_t=$e*F+2*Te,Rt=z,Do=_t-Te;for(let je=0;je<=F;je++){ge(x,je),se.subVectors(x,P).normalize(),P.copy(x),ne.copy(x).setComponent(+t+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Mt=je===0,or=je===F,$f=Mt?3*Math.PI/2:k,Xf=Mt?Rt:Do,Yf=Mt?G:Z,Kf=Mt?0:$-G,Qf=se.clone().multiplyScalar(Mt?-M:M).add(x),Zf=se.clone().multiplyScalar(Mt?-1:1).normalize();for(let Or=0;Or<G;Or++){let Sc=Or*Q;if(C.addVectors(h.copy(ne).multiplyScalar(c*Math.cos(Sc)),g.copy(ue).multiplyScalar(c*Math.sin(Sc))),N.copy(C).normalize(),Mt||or){m||(q=Kf+Or,[0,1,2].forEach(St=>{re[q*3+St]=Qf.getComponent(St),ce[q*3+St]=Zf.getComponent(St)}),ie[q*2]=+or,ie[q*2+1]=Or/a),g.copy(N).multiplyScalar(z),v.addVectors(x,g);for(let St=0;St<d;St++){let ka=St*k+$f;j.addVectors(h.copy(se).multiplyScalar(M*Math.sin(ka)),g.copy(N).multiplyScalar(M*Math.cos(ka))),W.copy(j).normalize(),g.addVectors(v,j),j.normalize(),q=Yf+St*G+Or,[0,1,2].forEach(Qi=>{re[q*3+Qi]=g.getComponent(Qi),ce[q*3+Qi]=W.getComponent(Qi)});let Jf=+Mt+Math.sin(ka);ie[q*2]=(Xf+M*Jf)/_t,ie[q*2+1]=Or/a}}g.addVectors(x,C),q=H+je*G+Or,[0,1,2].forEach(St=>{re[q*3+St]=g.getComponent(St),ce[q*3+St]=N.getComponent(St)}),ie[q*2]=(Te+je*$e)/_t,ie[q*2+1]=Or/a}}let Lt=E+2*d+J,Bo=1,[Yi,Ki]=m?[Bo,Bo+E-1]:[0,Lt-1];for(let je=Yi;je<=Ki-1;je++){let Mt=m&&je===Ki-1;for(let or=0;or<G-1;or++)A=je*G+or,_=A+1,b=(Mt?or:A)+G,D=(Mt?or+1:_)+G,je===0?fe.push(_,D,b):je===Lt-2?fe.push(A,_,b):fe.push(A,_,b,_,D,b)}this.setIndex(fe),this.setAttribute("position",new Gr.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Gr.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Gr.Float32BufferAttribute(ie,2))}};var im=require("three");var sm=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 di(t*.5,i,s):new im.IcosahedronBufferGeometry(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},di=class extends eo{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 di(t.radius,t.corner,t.cornerSides)}};var sa=require("three"),am=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 sa.Shape;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 sa.LatheBufferGeometry(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var pr=require("three");var Rr=require("three");var oe=require("three"),ur=new oe.Matrix4,Ml=new oe.Object3D,aa=new oe.Vector3,ro=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.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 oe.Matrix3().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 ur.makeRotationX(t),this.applyMatrix4(ur),this}rotateY(t){return ur.makeRotationY(t),this.applyMatrix4(ur),this}rotateZ(t){return ur.makeRotationZ(t),this.applyMatrix4(ur),this}translate(t,e,r){return ur.makeTranslation(t,e,r),this.applyMatrix4(ur),this}scale(t,e,r){return ur.makeScale(t,e,r),this.applyMatrix4(ur),this}lookAt(t){return Ml.lookAt(t),Ml.updateMatrix(),this.applyMatrix4(Ml.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 oe.Vector3().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(l,d));function a(d,m,f,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[m].clone(),e.colors[f].clone()],x=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,m),new oe.Vector3().fromBufferAttribute(s,f)],v=new bn(d,m,f,x,g,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,m),new oe.Vector2().fromBufferAttribute(c,f)]),p!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(p,d),new oe.Vector2().fromBufferAttribute(p,m),new oe.Vector2().fromBufferAttribute(p,f)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let m=u[d],f=m.start,h=m.count;for(let g=f,x=f+h;g<x;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),m.materialIndex):a(g,g+1,g+2,m.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(aa).negate(),this.translate(aa.x,aa.y,aa.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;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 oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;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 ro;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 oe.Vector3,a={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),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 oe.Matrix3().getNormalMatrix(e));for(let d=0,m=l.length;d<m;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,m=u.length;d<m;d++)a.push(u[d].clone());for(let d=0,m=p.length;d<m;d++){let f=p[d],h,g,x=f.vertexNormals,v=f.vertexColors,A=new bn(f.a+i,f.b+i,f.c+i);A.normal.copy(f.normal),o!==void 0&&A.normal.applyMatrix3(o).normalize();for(let _=0,b=x.length;_<b;_++)h=x[_].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),A.vertexNormals.push(h);A.color.copy(f.color);for(let _=0,b=v.length;_<b;_++)g=v[_],A.vertexColors.push(g.clone());A.materialIndex=f.materialIndex+r,c.push(A)}for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;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 oe.Vector3(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 f=this.parameters;for(let h in f)f[h]!==void 0&&(t[h]=f[h]);return t}let e=[];for(let f=0;f<this.vertices.length;f++){let h=this.vertices[f];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],p={};for(let f=0;f<this.faces.length;f++){let h=this.faces[f],g=!0,x=!1,v=this.faceVertexUvs[0][f]!==void 0,A=h.normal.length()>0,_=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,D=h.vertexColors.length>0,S=0;if(S=a(S,0,0),S=a(S,1,g),S=a(S,2,x),S=a(S,3,v),S=a(S,4,A),S=a(S,5,_),S=a(S,6,b),S=a(S,7,D),r.push(S),r.push(h.a,h.b,h.c),r.push(h.materialIndex),v){let y=this.faceVertexUvs[0][f];r.push(m(y[0]),m(y[1]),m(y[2]))}if(A&&r.push(u(h.normal)),_){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(f,h,g){return g?f|1<<h:f&~(1<<h)}function u(f){let h=f.x.toString()+f.y.toString()+f.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(f.x,f.y,f.z)),i[h]}function d(f){let h=f.r.toString()+f.g.toString()+f.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(f.getHex())),l[h]}function m(f){let h=f.x.toString()+f.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(f.x,f.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 ro().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,m=e.length;d<m;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,m=r.length;d<m;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,m=o.length;d<m;d++)this.faces.push(o[d].clone());for(let d=0,m=t.faceVertexUvs.length;d<m;d++){let f=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=f.length;h<g;h++){let x=f[h],v=[];for(let A=0,_=x.length;A<_;A++){let b=x[A];v.push(b.clone())}this.faceVertexUvs[d].push(v)}}let i=t.morphTargets;for(let d=0,m=i.length;d<m;d++){let f={};if(f.name=i[d].name,i[d].vertices!==void 0){f.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)f.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){f.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)f.normals.push(i[d].normals[h].clone())}this.morphTargets.push(f)}let s=t.morphNormals;for(let d=0,m=s.length;d<m;d++){let f={};if(s[d].vertexNormals!==void 0){f.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(),f.vertexNormals.push(v)}}if(s[d].faceNormals!==void 0){f.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)f.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(f)}let l=t.skinWeights;for(let d=0,m=l.length;d<m;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,m=c.length;d<m;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,m=p.length;d<m;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 Dl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(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 oe.Float32BufferAttribute(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 oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(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 oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),i=new oe.Float32BufferAttribute(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 oe.Float32BufferAttribute(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}};ro.prototype.isGeometry=!0;var Dl=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 m=t.skinIndices,f=t.skinWeights,h=m.length===r.length,g=f.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 _=v.vertexColors;if(_.length===3)this.colors.push(_[0],_[1],_[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 oe.Vector2,new oe.Vector2,new oe.Vector2))}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 oe.Vector2,new oe.Vector2,new oe.Vector2))}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(m[v.a],m[v.b],m[v.c]),g&&this.skinWeights.push(f[v.a],f[v.b],f[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}},bn=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 oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,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 Gb=["a","b","c"];function Rb(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Bl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function El(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 Fb(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],El(s.a,s.b,n,r,s,e),El(s.b,s.c,n,r,s,e),El(s.c,s.a,n,r,s,e)}function la(n,t,e,r,o){n.push(new bn(t,e,r,void 0,void 0,o))}function _n(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function ca(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var ua=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Rr.BufferGeometry?t=new ro().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 Rr.Vector3,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],m=new Map;Fb(c,p,d,m);let f=[],h,g,x,v,A,_,b;for(let V of Array.from(m.keys())){for(g=m.get(V),x=new Rr.Vector3,A=3/8,_=1/8,b=g.faces.length,b!=2&&(A=.5,_=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[Rb(v,Gb[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(_),x.add(e),g.newEdge=f.length,f.push(x)}let D,S,y,I,T,P,C,N=[];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)),S=1-r*Number(D),y=D,r<=2&&(r==2?(S=3/4,y=1/8):r==1||r==0),C=P.clone().multiplyScalar(S),e.set(0,0,0),s=0;s<r;s++)I=T[s],h=I.a!==P?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),C.add(e),N.push(C)}let j=N.concat(f),W=N.length,ne,ue,se,K=[],U=[],F,E,B,L,G=new Rr.Vector2,Q=new Rr.Vector2,k=new Rr.Vector2;for(o=0,i=p.length;o<i;o++)v=p[o],ne=Number(Bl(v.a,v.b,m).newEdge)+W,ue=Number(Bl(v.b,v.c,m).newEdge)+W,se=Number(Bl(v.c,v.a,m).newEdge)+W,la(K,ne,ue,se,v.materialIndex),la(K,v.a,ne,se,v.materialIndex),la(K,v.b,ue,ne,v.materialIndex),la(K,v.c,se,ue,v.materialIndex),u&&(F=a[o],E=F[0],B=F[1],L=F[2],G.set(_n(E.x,B.x),_n(E.y,B.y)),Q.set(_n(B.x,L.x),_n(B.y,L.y)),k.set(_n(E.x,L.x),_n(E.y,L.y)),ca(U,G,Q,k),ca(U,E,G,k),ca(U,B,Q,G),ca(U,L,k,Q));t.vertices=j,t.faces=K,u&&(t.faceVertexUvs[0]=U)}};var tt=new pr.Vector3,lm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(tt),r={width:tt.x,height:tt.y,depth:tt.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 pr.BufferGeometry().copy(new pr.BoxBufferGeometry(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(tt)):tt.set(s.width,s.height,s.depth),(t!==tt.x||e!==tt.y||r!==tt.z)&&i.scale(tt.x===0?1:t/tt.x,tt.y===0?1:e/tt.y,tt.z===0?1:r/tt.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new ua(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 pr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(tt);let s=100/tt.x;Object.assign(i.parameters,{width:100,height:tt.y*s,depth:tt.z*s}),t(this.build(i))})}};var cm=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 Ae?n.shape:new Ae,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,m=2*Math.PI/r;for(let h=0;h<r;h++){let g=m*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 f=xt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(f,{userData:{...n,type:"PolygonGeometry"}})}};var ve=require("three"),um=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 Rl(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function mi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Gl(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 Vb(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Rl=class extends ve.BufferGeometry{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,m=e/2,f=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 ve.Vector3(0,-m,0),_=new ve.Vector3(0,m,0),b=new ve.Vector2(t,-m),D=new ve.Vector2(h,-m),S=new ve.Vector2(0,_.y).sub(D),y=new ve.Vector2(0,_.y).sub(b),I=new ve.Vector2(S.y,-S.x).normalize(),T=new ve.Vector2(y.y,-y.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-S.angle())/2)-1e-8;s=Math.min(s,C);let N;{let U=new ve.Vector3(I.x,I.y,0),F=new ve.Vector3(Math.cos(g)*U.x,U.y,Math.sin(g)*U.x);N=U.angleTo(F)}let j=s/Math.tan((Math.PI-S.angle())/2),W=s/Math.tan((Math.PI-N)/2),ne=new ve.Vector3;if(!i){p.push(A.x,A.y,A.z),a.push(0,-1,0),u.push(0,0);let U=d++,F=[],E=b.clone(),B=j/Math.cos(Math.PI/r);E.x-=B;for(let L=0;L<r;L++){let G=L/r*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));mi(E,Q,ne),p.push(ne.x,ne.y,ne.z),a.push(0,-1,0),u.push(0,0),F.push(d++)}for(let L=0;L<F.length;L++)c.push(F[L],U,F[(L+1)%F.length])}let ue=[];{let U=new ve.Vector3,F=new ve.Vector3,E=new ve.Vector3,B=new ve.Vector3,L=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<r;Q++){let k=Q/r*Math.PI*2+f,V=(Q+.5)/r*Math.PI*2+f,z=(Q+1)/r*Math.PI*2+f,M=new ve.Vector2(Math.sin(k),Math.cos(k)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),J=new ve.Vector2(Math.sin(z),Math.cos(z));mi(b,M,F),mi(b,J,E),mi(I,q,U),Gl(_,F,E,W,W,B),p.push(B.x,B.y,B.z),Gl(F,_,E,W,j,L),p.push(L.x,L.y,L.z),Gl(E,F,_,j,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 ce=F.clone().add(E).multiplyScalar(.5),ie=_.clone().sub(ce).normalize(),Fe=A.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(L);se(ce,ge,Fe,S.angle())}let $,re;{let ce=new ve.Vector3;mi(T,J,ce);let ie=G.clone().add(B).multiplyScalar(.5);ie=Vb(ie,E,_);let fe=G.clone().sub(B);[$,re]=se(ie,fe,ce,N,B.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),Fe=ie.clone().cross(fe);K(ce,ie,fe,Fe)}ue.concat(re);{let ce=S.angle(),ie=Math.PI-ce,fe=_.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Fe=new ve.Vector3,ge=[];for(let Te=0;Te<l;Te++){let _t=[],Rt=Math.PI/2-ie*Te/l,Do=Math.cos(Rt),Lt=Math.sin(Rt),Bo=V;for(let Yi=0;Yi<=Te;Yi++){let Ki=Math.cos(Bo),je=Math.sin(Bo);U.x=Do*je,U.y=Lt,U.z=Do*Ki,Fe.copy(fe).addScaledVector(U,s),p.push(Fe.x,Fe.y,Fe.z),a.push(U.x,U.y,U.z),u.push(0,0),_t.push(d++),Bo+=Math.PI*2/Te/r}ge.push(_t)}re.reverse(),ge.push(re);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let _t=ge[Te],Rt=ge[Te+1],Do=_t.length-1;c.push(Rt[1],_t[0],Rt[0]);for(let Lt=1;Lt<=Do;Lt++)c.push(_t[Lt],_t[Lt-1],Rt[Lt]),c.push(Rt[Lt+1],_t[Lt],Rt[Lt])}}}}}this.setIndex(c),this.setAttribute("position",new ve.Float32BufferAttribute(p,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(a,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(u,2));function se(U,F,E,B,L){let G=-B/2,Q=(Math.PI-B)/2,k=F.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(Q));let V=new ve.Vector3,z=new ve.Vector3,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(k,Math.sin(H)),z.addScaledVector(E,Math.cos(H));for(let Z=0;Z<=M;Z++){let $=Z/M-.5;if(V.copy(U),V.addScaledVector(F,$),V.addScaledVector(z,s),L!=null){let re=Math.max(0,V.y-L);V.addScaledVector(F,-re/F.y)}p.push(V.x,V.y,V.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,ce=Z+1;c.push(Z,$,ce),c.push($,re,ce)}return[U.clone().addScaledVector(F,.5),J]}function K(U,F,E,B){let L=Math.PI/2,G=y.angle()-L,Q=[],k=new ve.Vector3,V=new ve.Vector3;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),ce=Math.atan(Math.tan(G)*$),ie=(L+ce)*J,fe=Math.cos(ie),Fe=Math.sin(ie);k.set(0,0,0),k.addScaledVector(F,Fe*$),k.addScaledVector(E,fe),k.addScaledVector(B,Fe*re),V.copy(U).addScaledVector(k,s),p.push(V.x,V.y,V.z),a.push(k.x,k.y,k.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 pm=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 Ae?n.shape:new Ae,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(_,b,D){return b>e&&D>r?Math.min(_*e/b,_*r/D):b>e?_*e/b:D>r?_*r/D:_}let m=[];m[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=a.x,h=u.x,g=u.y,x=a.y;t.addPoint(t.createPoint(f,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,x)),t.addPoint(t.createPoint(f,x)),t.isClosed=!0;let v=!0;for(let _=0,b=t.points.length;_<b;_++)t.points[_].roundness=m[_],_>0&&m[_]!==m[_-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=xt.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:{...n,type:"RectangleGeometry"}})}};var dm=require("three"),mm=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 dm.SphereBufferGeometry(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};var fm=require("three"),hm=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 fm.PlaneBufferGeometry(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var oo=require("three"),gm=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 Fl(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Fl=class extends oo.BufferGeometry{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,m=(V=0,z=0,M=0)=>new oo.Vector3(V,z,M),f=m(),h=m(),[g,x,v]=[e/2,t/2,r/2],A=-x,_=+x,[b,D,S]=[m(A,-g,+v),m(A,-g,-v),m(A,+g,-v)],y=(V,z=!1)=>Math.sin(V-Math.PI/(1+ +z)),I=(V,z=!1)=>Math.cos(V-Math.PI/(1+ +z));S.y=Math.sin(o)*e-g;let T=Math.cos(o)*e-v,P=b.z-a;o<=d?(S.z=Math.min(T,P),S.z==P&&(S.y-=(T-P)/Math.tan(d-o))):D.z=Math.min(D.z-T-v,b.z-a),f.subVectors(b,D),h.subVectors(S,D);let C=Math.min(f.length(),h.length())*i/100,N=C*Math.tan(o/2),j=C/Math.cos(o/2),W=f.clone().normalize().add(h.normalize()).setLength(j).add(D);f.set(0,y(o,!0),I(o,!0)),u.push([S,f.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let z=d+o+V*ne;f.set(0,Math.sin(z)*N,Math.cos(z)*N),f.add(W),h.set(0,y(z),I(z)),u.push([f.clone(),h.clone()])}u.push([b,m(0,1,0)]);let ue=Math.sin(ne/2)*N*2,se=u.length-1,K=u[0][0].distanceTo(u[1][0]),U=u[se-1][0].distanceTo(u[se][0]),F=K+ue*s+U;u[0].push(1);for(let V=0;V<=s;V++)u[V+1].push(1-(K+V*ue)/F);u[se].push(0);let[E,B,L]=u[0],G,Q,k;for(let V=1;V<u.length;V++)[G,Q,k]=u[V],l.push(A,E.y,E.z,A,G.y,G.z,_,E.y,E.z,_,E.y,E.z,A,G.y,G.z,_,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,L,0,k,1,L,1,L,0,k,1,k),[E,B,L]=[G,Q,k];this.setAttribute("position",new oo.Float32BufferAttribute(l,3)),this.setAttribute("normal",new oo.Float32BufferAttribute(c,3)),this.setAttribute("uv",new oo.Float32BufferAttribute(p,2))}};var ym=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 Ae?n.shape:new Ae,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,m=0,f=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 _=0;_<o;_++){let b=h*_,D=m+Math.sin(b)*u,S=f+Math.cos(b)*d;a.addPoint(a.createPoint(D,S))}}else for(let _=0;_<o;_++){let b=m+Math.cos(g)*u,D=f+Math.sin(g)*d;a.addPoint(a.createPoint(b,D)),g+=h,b=m+Math.cos(g)*x,D=f+Math.sin(g)*v,_<=o,a.addPoint(a.createPoint(b,D)),g+=h}a.isClosed=!0;for(let _=0,b=a.points.length;_<b;_++)a.points[_].roundness=i;a.roundness=i,a.update();let A=xt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(A,{userData:{...n,type:"StarGeometry"}})}};var xm=require("three"),pa=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 xm.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var vm=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=zb(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 zb(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 pi(!0,n,t,e,r,o,i,s,l,c,p,a)}var bm=require("three"),_m=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 bm.TorusKnotBufferGeometry(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Sm=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 Ae?n.shape:new Ae,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,m=c.points.length;d<m;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=xt.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var We=require("three");var Ub,da=new Promise(n=>{Ub=n});var Dm=require("three");var so=require("three");var ya=require("three");var Ul=require("three");var fa=require("three");var Vl=require("three");function Ye(n,t){return t.color(n)}var zl=n=>"isEntity"in n,dr=n=>"isAbstractMesh"in n,mr=n=>n!==null&&n.objectType==="BooleanObject",wm=n=>n.objectType==="CombinedCamera";var ma=n=>"objectHelper"in n;function kb(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??Xr.identity)),e&&(n.updateMatrix(),mr(n.parent)&&dr(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 jb(n,t){kb(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function Tm(n,t,e){jb(n,t),t.color!==void 0&&(n.color=Ye(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Vl.HemisphereLight)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Vl.HemisphereLight)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Am(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 ha=n=>class extends n{hasEntityChild(){return this.children.some(e=>zl(e))}isDescendantOf(e){e instanceof fa.Object3D&&(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 fa.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),zl(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}};var ke=require("three");var Sn=new ke.Box3,fr=new ke.Vector3,hr=new ke.Vector3,wn=new ke.Matrix4,Nm=[new ke.Vector3(-1,1,1),new ke.Vector3(-1,-1,1),new ke.Vector3(1,-1,1),new ke.Vector3(1,1,1),new ke.Vector3(-1,1,-1),new ke.Vector3(-1,-1,-1),new ke.Vector3(1,-1,-1),new ke.Vector3(1,1,-1)],Hb=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Wb=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function qb(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),m=t.getZ(a);u<o&&(o=u),d<i&&(i=d),m<s&&(s=m),u>l&&(l=u),d>c&&(c=d),m>p&&(p=m)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var Cm=(n,t,e)=>{if(dr(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?fr.copy(n.originalGeometry.boundingSphere.center):o!==void 0&&(qb(Sn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),Sn.getCenter(fr)),n.forceComputeSize?Sn.getSize(hr).multiplyScalar(.5):hr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(ma(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");Sn.setFromArray(r.array),Sn.getCenter(fr),Sn.getSize(hr).multiplyScalar(.5)}else fr.setScalar(0),hr.setScalar(0);wn.copy(t).multiply(n.matrixWorld),hr.x===0&&hr.y===0&&hr.z===0?e.push(new ke.Vector3(fr.x,fr.y,fr.z).applyMatrix4(wn)):Nm.forEach(r=>{e.push(r.clone().multiply(hr).add(fr).applyMatrix4(wn))})},fi=class extends ke.Box3{constructor(){super(...arguments);this.matrix=new ke.Matrix4;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 ke.Matrix4().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&&Cm(s,r,i)}):Cm(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(wn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(hr).multiplyScalar(.5),this.getCenter(fr),wn.copy(this.matrix).setPosition(fr),this.vertices=Nm.map(e=>e.clone().multiply(hr).applyMatrix4(wn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Hb.map(([e,r])=>new ke.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new ke.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Wb.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var gr=n=>"isEntity"in n,Om=n=>"isAbstractMesh"in n,kt=n=>class extends ha(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Ul.Matrix4;this._singleBBox=new fi;this._recursiveBBox=new fi;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=>{gr(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)gr(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)gr(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)gr(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Ul.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)gr(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 tn(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 tn(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}};var Ke=require("three");var Pm=require("three"),kl=class extends Pm.Object3D{},ga=class extends kl{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 wo=class extends Ke.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),i=.1;this.parameters=Ns.defaultData(o.toArray(),i),ho(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 ga(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*Ke.MathUtils.DEG2RAD,i=r.end*Ke.MathUtils.DEG2RAD,s=o-i,l=new Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.DEG2RAD),c;switch(r.axis){case"z":c=new Ke.Vector3(0,0,1);break;case"y":c=new Ke.Vector3(0,1,0);break;default:case"x":c=new Ke.Vector3(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 Ke.Euler(r.rotation[0]*Ke.MathUtils.DEG2RAD,r.rotation[1]*Ke.MathUtils.DEG2RAD,r.rotation[2]*Ke.MathUtils.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 Ke.Vector3(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),ho(this.parameters,e),this.update(),this}};var Gt=require("three");function $b(n){if(n.geometry.attributes.extrudeNormals||!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 Gt.Vector3(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Gt.Vector3})}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 Gt.Float32BufferAttribute(o,3))}function Xb(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 Gt.Vector3;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 Gt.Float32BufferAttribute(e,3))}function no(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.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"?Xb(n):$b(n)}}function io(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=[Gt.MathUtils.seededRandom(r),Gt.MathUtils.seededRandom(r+1e4),Gt.MathUtils.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new Gt.BufferAttribute(e,3))}var it=class extends kt(ya.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ya.Matrix4;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=jl[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(),no(this),r.getAttribute("randomColor")&&io(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=hi(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 wo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new wo(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&&(Xt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),mr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),mr(e)&&e.invalidateUpstreamBooleanData())}};var Yb=new so.Vector3(0,0,1),Im=new so.Vector3,Lm=new so.Vector3,Mm=new so.Matrix3,Tn=class extends it{constructor(e=xt.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new so.EventDispatcher;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),Mm.getNormalMatrix(this.matrixWorld),Im.copy(Yb).applyMatrix3(Mm).normalize(),Lm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Im,Lm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=xt.create(Object.assign({},i,{shape:r})),l=new Tn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){it.prototype.raycast.call(this,e,r)}};function xa(n,t){return Kb(n)}function Kb(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Ae.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 Dm.BufferGeometryLoader().parse(n));let e;try{e=hi(t)}catch(r){console.error(r)}if(!e){let r=Ae.createFromState(cn.defaultData(),100,100);t.shape=r,e=hi(t)}return e}var de;da.then(n=>{de=n});var Bm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Em=new Uint32Array([0,1,2,3]),Gm=new Uint8Array([4]),jt=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&&(de.free_bvh(e),de.free_subdivision_surface(e));try{i=jt.allocate(n,o)}catch(p){console.error(p,n),i=jt.allocate({positionWASM:Bm,indexWASM:Em,verticesPerFaceWASM:Gm},o)}de.set_destination_refinement_level(i,0),s=jt.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=jt.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(de.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=jt.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:xa(n),r,o,i,s;({positions:r,triIndices:s}=$l(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}=Xl(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=Bm,r=Em,o=Gm);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,m=a*Float32Array.BYTES_PER_ELEMENT,f=u*Uint32Array.BYTES_PER_ELEMENT,h=de._malloc(d),g=new Float32Array(de.HEAPF32.buffer,h,a),x=new Uint32Array(de.HEAPU32.buffer,h+m,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(_=>_!==1)&&(v=new We.Matrix4().makeScale(...n.scaleBaked)),t&&(v?v.premultiply(t):v=t);let A=v?de.alloc_subdivision_surface2(h,l,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p,v.elements):de.alloc_subdivision_surface(h,l,h+m,c,h+m+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return de._free(h),A}static buildLevel(n,t,e,r,o){let i=o?de.get_mesh_data2(n,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(n,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=de.HEAPU32[l[p]>>2],u=de.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=de.HEAPU32[l[p]>>2],m=de.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=de.HEAPU32[l[p]>>2],h=de.HEAPU32.subarray(f>>2,(f>>2)+c[p]);p++;let g=de.HEAPU32[l[p]>>2],x=de.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let v=new We.BufferGeometry;if(v.setIndex(new We.Uint32BufferAttribute(x,1)),v.setAttribute("position",new We.Float32BufferAttribute(u,3)),v.setAttribute("normal",new We.Float32BufferAttribute(m,3)),t){v.setAttribute("faceMap",new We.Uint32BufferAttribute(h,1));let A=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new We.BufferAttribute(A,4))}return de.free_mesh_data(i),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=de.get_wireframe_data_for_base_level(n),o=4,i=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=de.HEAPU32[i[l]>>2],p=de.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=de.HEAPU32[i[l]>>2],u=de.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new We.BufferGeometry;d.setAttribute("position",new We.Float32BufferAttribute(p,3));let m=new Float32Array(p.length);for(let f=0,h=p.length;f<h;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return d.setAttribute("color",new We.BufferAttribute(m,3)),d.setIndex(new We.Uint32BufferAttribute(u,1)),de.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||de.set_destination_refinement_level(n,t);let o=e?de.get_topological_data2(n,r?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(n,r?de.Level.CONTROL:de.Level.REFINED),i=6,s=de.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=de.HEAPU32[s[c]>>2],a=new Float32Array(de.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=de.HEAPU32[s[c]>>2],d=new Uint32Array(de.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let m=de.HEAPU32[s[c]>>2],f=new Uint8Array(de.HEAPU32.subarray(m>>2,(m>>2)+l[c]));return de.free_topological_data(o),{positions:a,indices:d,verticesPerFace:f}}};var Rm=["getX","getY","getZ"];function $l(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[Rm[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[Rm[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 va=new We.Vector3,Hl=new We.Vector3,Wl=new We.Vector3,ql=new We.Vector3;function Xl(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]){va.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Hl.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Wl.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),ql.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Hl.sub(va).normalize(),Wl.sub(va).normalize(),ql.sub(va).normalize();let c=Hl.cross(Wl).dot(ql);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 Xt={};Tc(Xt,{calcBoolean:()=>e_,calcBooleanTopological:()=>Jb,freeMeshSet:()=>o_,getMeshSet:()=>t_,transformMeshSet:()=>r_});var Qb,Fm=new Promise(n=>{Qb=n});var gi=require("three");var ye,An;Fm.then(n=>ye=n);function Zb(n,t){let e,{positions:r,triIndices:o}=$l(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:l}=Xl(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 Vm(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=ye._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ye.HEAPU32.buffer,i,t):new Float32Array(ye.HEAPF32.buffer,i,t)).set(n,0),i}function zm(n){switch(n){case 0:return ye.OP.UNION;case 1:return ye.OP.INTERSECTION;case 2:return ye.OP.A_MINUS_B;case 3:return ye.OP.B_MINUS_A;case 4:return ye.OP.SYMMETRIC_DIFFERENCE;case 5:return ye.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function Jb(n,t){An===void 0&&(An=ye.init_csg());let e=Vm(n),r=ye.csg_calc_topological(An,e,n.length,zm(t));ye._free(e);let o=6,i=ye.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=ye.HEAPU32[i[l]>>2],p=new Float32Array(ye.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ye.HEAPU32[i[l]>>2],u=new Uint32Array(ye.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=ye.HEAPU32[i[l]>>2],m=new Uint8Array(ye.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ye.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:m}}function e_(n,t,e,r){An===void 0&&(An=ye.init_csg());let o=Vm(n),i=ye.csg_calc(An,o,n.length,r,zm(t));ye._free(o);let s=5,l=ye.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=ye.HEAPU32[l[p]>>2],u=ye.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=ye.HEAPU32[l[p]>>2],m=ye.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let f=c[p];e.setAttribute("position",new gi.Float32BufferAttribute(u,3)),e.setAttribute("normal",new gi.Float32BufferAttribute(m,3));let h=ye.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new gi.Sphere),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},ye.free_mesh_data(i),f}function t_(n,t){if(ye===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((g,x)=>g+x,0)+o);for(let g=0,x=0,v=0;g<h.verticesPerFace.length;g++){r[v++]=h.verticesPerFace[g];for(let A=0;A<h.verticesPerFace[g];A++)r[v++]=h.indices[x++]}}else({positions:e,faceIndices:r,nFaces:o}=Zb(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=ye._malloc(p),m=new Float32Array(ye.HEAPF32.buffer,d,l),f=new Uint32Array(ye.HEAPU32.buffer,d+a,c);return m.set(e,0),f.set(r,0),ye.get_csg_mesh(d,i,d+a,s,o)}function r_(n,t){ye.transform_csg_mesh(n,t.elements)}function o_(n){ye.free_csg_mesh(n)}var jl={ConeGeometry:Pd,CubeGeometry:Id,CylinderGeometry:Nd,DodecahedronGeometry:Md,EllipseGeometry:em,HelixGeometry:nm,IcosahedronGeometry:sm,LatheGeometry:am,NonParametricGeometry:lm,PolygonGeometry:cm,PyramidGeometry:um,RectangleGeometry:pm,SphereGeometry:mm,PlaneGeometry:hm,BackdropGeometry:gm,StarGeometry:ym,TextFrameGeometry:pa,TorusGeometry:vm,TorusKnotGeometry:_m,TriangleGeometry:Sm,VectorGeometry:xt},hi=n=>jl[n.type].create(n);var yi=require("three");var Um=new yi.Matrix4;var ba=class extends it{constructor(e=new yi.BufferGeometry,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];mr(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Om(i)&&i.booleanExclude===!1&&i.geometry.attributes.position?.count>0&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Xt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Xt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else mr(i)&&i.needsTransformForDownstream===!0?(Xt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Um.multiplyMatrices(i.matrix,i.booleanMatrixInvOld),Xt.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 Xt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new yi.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Xt.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,no(this),io(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()}};var Re=require("three");var km=require("three"),yr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new km.BoxBufferGeometry(30,30,30),t};var ct=require("three");var mt=require("three"),_a=new mt.Ray,Yl=new mt.Sphere,jm=new mt.Matrix4,xr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Yl.copy(i.boundingSphere),Yl.applyMatrix4(s),e.ray.intersectsSphere(Yl)===!1||(jm.copy(s).invert(),_a.copy(e.ray).applyMatrix4(jm),i.boundingBox!==null&&_a.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,m=i.drawRange,f,h;if(o===!1){let x=Math.max(0,m.start),v=Math.min(u.count,m.start+m.count);for(f=x,h=v;f<h;f+=3)if(c=u.getX(f),p=u.getX(f+1),a=u.getX(f+2),l=g(n,e,_a,d,c,p,a),l){l.faceIndex=Math.floor(f/3),r.push(l);return}}else{let v=i.attributes.position,A=new mt.Vector3,_=new mt.Vector3,b=new mt.Vector3,D=new mt.Vector3,S=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),T=I*I,P=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let N=P,j=C-1;N<j;N+=S){if(A.fromBufferAttribute(v,N),_.fromBufferAttribute(v,N+1),_a.distanceSqToSegment(A,_,D,b)>T)continue;D.applyMatrix4(n.matrixWorld);let ne=e.ray.origin.distanceTo(D);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(x,v,A,_,b,D,S){let y=new mt.Vector3,I=new mt.Vector3,T=new mt.Vector3,P=new mt.Vector3,C=new mt.Vector3;if(y.fromBufferAttribute(_,b),I.fromBufferAttribute(_,D),T.fromBufferAttribute(_,S),A.intersectTriangle(y,I,T,!1,P)===null)return null;C.copy(P),C.applyMatrix4(x.matrixWorld);let j=v.ray.origin.distanceTo(C);return j<v.near||j>v.far?null:{faceIndex:1,distance:j,point:C.clone(),object:x}}};var Sa=new ct.Vector3,Ht=new ct.Camera,Kl=class extends ct.LineSegments{constructor(e){let r=new ct.BufferGeometry,o=new ct.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new ct.Color(15711266),p=new ct.Color(15711266),a=new ct.Color(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(m,f,h){d(m,h),d(f,h)}function d(m,f){i.push(0,0,0),s.push(f.r,f.g,f.b),l[m]===void 0&&(l[m]=[]),l[m].push(i.length/3-1)}r.setAttribute("position",new ct.Float32BufferAttribute(i,3)),r.setAttribute("color",new ct.Float32BufferAttribute(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;Ht.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;Yt("n1",r,e,Ht,-i,-s,l),Yt("n2",r,e,Ht,i,-s,l),Yt("n3",r,e,Ht,-i,s,l),Yt("n4",r,e,Ht,i,s,l);let c=l;Yt("f1",r,e,Ht,-i,-s,c),Yt("f2",r,e,Ht,i,-s,c),Yt("f3",r,e,Ht,-i,s,c),Yt("f4",r,e,Ht,i,s,c);let p=c,a=.5;Yt("u1",r,e,Ht,i*.7*a,s*1.1,p),Yt("u2",r,e,Ht,-i*.7*a,s*1.1,p),Yt("u3",r,e,Ht,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Yt(n,t,e,r,o,i,s){Sa.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],Sa.x,Sa.y,Sa.z)}}var wa=class extends yr(Kl){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){xr(this.object,this.geometry,e,r,!0)}};var Hm=require("three");var Cn=class extends yr(Hm.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,Cn.geometryHelper,e,r)}};var Wm=require("three");var Nn=class extends yr(Wm.AxesHelper){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){xr(this.object,Nn.geometryHelper,e,r)}update(){}};var qm=require("three");var On=class extends yr(qm.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,On.geometryHelper,e,r)}};var Aa=require("three");var Ta=class extends yr(Aa.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){xr(this.object,Ta.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Ta._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)}}},xi=Ta;xi._vector=new Aa.Vector3;var vr=(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=Ye(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 Pn=new Re.Vector3,Ql=new Re.Vector3,Fr=class extends vr(kt(Re.Camera),wa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=go.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Re.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new Re.PerspectiveCamera(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 Fr().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(Pn),this.targetOffset=Pn.distanceTo(e)}getTarget(e=new Re.Vector3){return this.getWorldDirection(Ql),this.getWorldPosition(Pn),Ql.multiplyScalar(this.targetOffset),e.copy(Pn).add(Ql),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pn),Pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Re.Quaternion),r=new Re.Vector3(0,0,1).applyQuaternion(e),o=new Re.Vector3().copy(Re.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Re.Vector3().copy(Re.Object3D.DefaultUp).projectOnPlane(r),s=new Re.Vector3().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Re.Vector3),i=e.getWorldDirection(new Re.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Re.Vector3),i=this.getWorldDirection(new Re.Vector3).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 tn(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.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}};var $m=require("three");var To=class extends vr(kt($m.Group),Nn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new To().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};var Ao=require("three");var In=class extends vr(kt(Ao.DirectionalLight),Cn){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 Ao.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new In().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 Ao.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ao.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ao.CameraHelper&&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&&Am(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}};var ft=require("three");var Ln=class extends vr(kt(ft.PointLight),On){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 ft.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ft.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new ft.Box3(i,s),c=new ft.Box3Helper(l,new ft.Color(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new Ln().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 ft.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof ft.Box3Helper&&(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 ft.Box3Helper){let o=this.shadow.camera,i=new ft.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new ft.Vector3(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}};var Nt=require("three");var Xm=new Nt.Vector3,Ym=new Nt.Vector3,Km=new Nt.Quaternion,Mn=class extends vr(kt(Nt.SpotLight),xi){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=Nt.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Nt.CameraHelper(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Mn().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 Nt.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Nt.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Ym.setFromMatrixPosition(this.matrixWorld),Km.setFromRotationMatrix(this.matrixWorld),Xm.copy(this.up).applyQuaternion(Km).negate().multiplyScalar(this.distance),this.target.position.copy(Ym).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 Le=require("three");var Qm=require("three"),st=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Qm.MathUtils.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 st&&(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 Zm=require("three"),le=class extends st{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=Zm.MathUtils.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 Pe=class extends le{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 Ce=class extends Pe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Je?e:new Je(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 Y=class extends Pe{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 xe=class extends Pe{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)}};var Ca=require("three");var Co=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ce(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(0)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Ca.UniformsUtils.merge([Ca.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
2
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
3
3
|
#if !defined( USE_LAYER_DISPLACE )
|
|
4
4
|
#include <defaultnormal_vertex>
|
|
5
5
|
#endif
|
|
@@ -15,249 +15,20 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
15
15
|
#if !defined( USE_LAYER_DISPLACE )
|
|
16
16
|
#include <begin_vertex>
|
|
17
17
|
#endif /* !USE_LAYER_DISPLACE */
|
|
18
|
-
`];o&&
|
|
19
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
20
|
-
`));let
|
|
21
|
-
`)}return r}};var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
vec3 displaced_position = position;
|
|
28
|
-
vec3 displaced_normal = normal;
|
|
29
|
-
|
|
30
|
-
#ifdef USE_LAYER_DISPLACE
|
|
31
|
-
vec3 transformed;
|
|
32
|
-
vec3 transformedNormal;
|
|
33
|
-
#endif
|
|
34
|
-
`,"#include <normal_vertex>",`
|
|
35
|
-
#ifndef USE_LAYER_DISPLACE
|
|
36
|
-
#include <begin_vertex>
|
|
37
|
-
#endif
|
|
38
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
|
|
39
|
-
vec3 diffuse = vec3( 1.0 );
|
|
40
|
-
GeometricContext geometry;
|
|
41
|
-
geometry.position = mvPosition.xyz;
|
|
42
|
-
geometry.normal = normalize( transformedNormal );
|
|
43
|
-
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
44
|
-
GeometricContext backGeometry;
|
|
45
|
-
backGeometry.position = geometry.position;
|
|
46
|
-
backGeometry.normal = -geometry.normal;
|
|
47
|
-
backGeometry.viewDir = geometry.viewDir;
|
|
48
|
-
vLightFront = vec3( 0.0 );
|
|
49
|
-
vIndirectFront = vec3( 0.0 );
|
|
50
|
-
#ifdef DOUBLE_SIDED
|
|
51
|
-
vLightBack = vec3( 0.0 );
|
|
52
|
-
vIndirectBack = vec3( 0.0 );
|
|
53
|
-
#endif
|
|
54
|
-
IncidentLight directLight;
|
|
55
|
-
float dotNL;
|
|
56
|
-
vec3 directLightColor_Diffuse;
|
|
57
|
-
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
58
|
-
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
59
|
-
#ifdef DOUBLE_SIDED
|
|
60
|
-
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
61
|
-
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
62
|
-
#endif
|
|
63
|
-
#if NUM_POINT_LIGHTS > 0
|
|
64
|
-
#pragma unroll_loop_start
|
|
65
|
-
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
66
|
-
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
67
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
68
|
-
directLightColor_Diffuse = directLight.color;
|
|
69
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
70
|
-
#ifdef DOUBLE_SIDED
|
|
71
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
72
|
-
#endif
|
|
73
|
-
}
|
|
74
|
-
#pragma unroll_loop_end
|
|
75
|
-
#endif
|
|
76
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
77
|
-
#pragma unroll_loop_start
|
|
78
|
-
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
79
|
-
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
80
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
81
|
-
directLightColor_Diffuse = directLight.color;
|
|
82
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
83
|
-
#ifdef DOUBLE_SIDED
|
|
84
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
85
|
-
#endif
|
|
86
|
-
}
|
|
87
|
-
#pragma unroll_loop_end
|
|
88
|
-
#endif
|
|
89
|
-
#if NUM_DIR_LIGHTS > 0
|
|
90
|
-
#pragma unroll_loop_start
|
|
91
|
-
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
92
|
-
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
93
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
94
|
-
directLightColor_Diffuse = directLight.color;
|
|
95
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
96
|
-
#ifdef DOUBLE_SIDED
|
|
97
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
98
|
-
#endif
|
|
99
|
-
}
|
|
100
|
-
#pragma unroll_loop_end
|
|
101
|
-
#endif
|
|
102
|
-
#if NUM_HEMI_LIGHTS > 0
|
|
103
|
-
#pragma unroll_loop_start
|
|
104
|
-
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
105
|
-
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
106
|
-
#ifdef DOUBLE_SIDED
|
|
107
|
-
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
108
|
-
#endif
|
|
109
|
-
}
|
|
110
|
-
#pragma unroll_loop_end
|
|
111
|
-
#endif
|
|
112
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
113
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
114
|
-
`));let u=["#include <normal_fragment_begin>",`
|
|
115
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
116
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
117
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
118
|
-
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
119
|
-
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
120
|
-
`,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&u.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
|
|
121
|
-
if (outgoingLight != diffuseColor) {
|
|
122
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
123
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
124
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
|
|
125
|
-
}
|
|
126
|
-
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
127
|
-
`)}return r}};var fi=require("three");var Sa=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(fi.UniformsUtils.merge([fi.UniformsLib.fog,fi.UniformsLib.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(`
|
|
128
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
129
|
-
#ifndef USE_LAYER_DISPLACE
|
|
130
|
-
#include <defaultnormal_vertex>
|
|
131
|
-
#endif
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
vec3 displaced_position = position;
|
|
135
|
-
vec3 displaced_normal = normal;
|
|
136
|
-
|
|
137
|
-
#ifdef USE_LAYER_DISPLACE
|
|
138
|
-
vec3 transformed;
|
|
139
|
-
vec3 transformedNormal;
|
|
140
|
-
#endif
|
|
141
|
-
`,"#include <normal_vertex>",`
|
|
142
|
-
#ifndef USE_LAYER_DISPLACE
|
|
143
|
-
#include <begin_vertex>
|
|
144
|
-
#endif
|
|
145
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
146
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
147
|
-
`));let u=["#include <normal_fragment_begin>",`
|
|
148
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
149
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
150
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
151
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
152
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
153
|
-
normal *= -1.0;
|
|
154
|
-
}
|
|
155
|
-
`," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
|
|
156
|
-
if (outgoingLight != diffuseColor) {
|
|
157
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
158
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
159
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
|
|
160
|
-
}
|
|
161
|
-
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
162
|
-
`)}return r}};var Cn=require("three");var hi=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ne(5855577),this.roughness=new X(.3),this.metalness=new X(0),this.reflectivity=new X(.5),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(Cn.UniformsUtils.merge([Cn.UniformsLib.fog,Cn.UniformsLib.lights])),Cn.UniformsLib.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(`
|
|
163
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
164
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
165
|
-
#include <defaultnormal_vertex>
|
|
166
|
-
#endif
|
|
167
|
-
|
|
168
|
-
vec3 displaced_position = position;
|
|
169
|
-
vec3 displaced_normal = normal;
|
|
170
|
-
|
|
171
|
-
#if defined( USE_LAYER_DISPLACE )
|
|
172
|
-
vec3 transformed;
|
|
173
|
-
vec3 transformedNormal;
|
|
174
|
-
#endif
|
|
175
|
-
`,"#include <normal_vertex>",`
|
|
176
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
177
|
-
#include <begin_vertex>
|
|
178
|
-
#endif /* !USE_LAYER_DISPLACE */
|
|
179
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
180
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let n=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),l=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
181
|
-
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
182
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
183
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
184
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
185
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
186
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
187
|
-
normal *= -1.0;
|
|
188
|
-
}
|
|
189
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];m.push(n.code," vec3 diffuseColor = "+n.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),u&&m.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?m.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),m.push(`
|
|
190
|
-
if (outgoingLight != diffuseColor) {
|
|
191
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
192
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
|
|
193
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
|
|
194
|
-
}
|
|
195
|
-
`),l&&m.push(l.code,`outgoingLight = spe_blend(outgoingLight, ${l.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
196
|
-
`)}return r}};var gi=require("three");var yi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ne(5855577),this.specular=new Ne(1118481),this.shininess=new X(30),this.penumbraSize=new et(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new xe(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(gi.UniformsUtils.merge([gi.UniformsLib.fog,gi.UniformsLib.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(`
|
|
197
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
198
|
-
#ifndef USE_LAYER_DISPLACE
|
|
199
|
-
#include <defaultnormal_vertex>
|
|
200
|
-
#endif
|
|
201
|
-
|
|
202
|
-
vec3 displaced_position = position;
|
|
203
|
-
vec3 displaced_normal = normal;
|
|
204
|
-
|
|
205
|
-
#ifdef USE_LAYER_DISPLACE
|
|
206
|
-
vec3 transformed;
|
|
207
|
-
vec3 transformedNormal;
|
|
208
|
-
#endif
|
|
209
|
-
`,"#include <normal_vertex>",`
|
|
210
|
-
#ifndef USE_LAYER_DISPLACE
|
|
211
|
-
#include <begin_vertex>
|
|
212
|
-
#endif
|
|
213
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
214
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ne(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,l=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=l!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
215
|
-
varying vec3 vViewPosition;
|
|
216
|
-
struct ToonMaterial {
|
|
217
|
-
vec3 diffuseColor;
|
|
218
|
-
vec3 specularColor;
|
|
219
|
-
float specularShininess;
|
|
220
|
-
float specularStrength;
|
|
221
|
-
};
|
|
222
|
-
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
223
|
-
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
224
|
-
|
|
225
|
-
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
226
|
-
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
227
|
-
}
|
|
228
|
-
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
229
|
-
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
230
|
-
}
|
|
231
|
-
#define RE_Direct RE_Direct_Toon
|
|
232
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
233
|
-
#define Material_LightProbeLOD( material ) (0)
|
|
234
|
-
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
235
|
-
`));let u=["#include <normal_fragment_begin>",`
|
|
236
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
237
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
238
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
239
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
240
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
241
|
-
normal *= -1.0;
|
|
242
|
-
}
|
|
243
|
-
`," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),l&&u.push(l.code,"#ifdef ALPHATEST","if ( "+l.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
|
|
244
|
-
if (outgoingLight != diffuseColor) {
|
|
245
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
246
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
247
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${c.result} );
|
|
248
|
-
}
|
|
249
|
-
`),p&&u.push(p.code,`outgoingLight = spe_blend(outgoingLight, ${p.result}, 1.0, SPE_BLENDING_NORMAL);`),l?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${l.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
250
|
-
`)}return r}};var Tb=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Wl=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Wl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,c,p="",l=Tb.exec(e);this.useDefine=s??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],a=l[2],p=l[3]):(a=this.src,c="f"),this.name=a,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,n,s){return e.format(this.name,this.getType(e),r)}},_e=Wl;_e.PI="PI",_e.PI2="PI2",_e.RECIPROCAL_PI="RECIPROCAL_PI",_e.RECIPROCAL_PI2="RECIPROCAL_PI2",_e.LOG2="LOG2",_e.EPSILON="EPSILON";var Ab=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
251
|
-
)*?)}`,"gim"),Cb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Nn=class extends le{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,n,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=Ab.exec(e);if(r){let o=r[2],n;for(;n=Cb.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ql=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}},tt=new ql;var Nb=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Rm=/[a-z_0-9]+/gi,Y=class extends le{constructor(e,r,o,n,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,n)}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,n,s){let a,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 l=[];for(;a=Rm.exec(this.src);)l.push(a);for(let u=0;u<l.length;u++){let d=l[u],m=d[0],f=this.isMethod?!this.getInputByName(m):!0,h=m;if(this.keywords[m]||this.useKeywords&&f&&tt.containsKeyword(m)){let g=this.keywords[m];if(!g){let x=tt.getKeywordData(m);x.cache&&(g=e.keywords[m]),g=g||tt.getKeyword(m,e),x.cache&&(e.keywords[m]=g)}h=g.build(e)}m!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+m.length+c),c+=h.length-m.length),this.getIncludeByName(h)===void 0&&tt.contains(h)&&e.include(tt.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,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=Nb.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(Rm);if(a){let c=0;for(;c<a.length;){let p=a[c++],l;p==="in"||p==="out"||p==="inout"?l=a[c++]:(l=p,p="");let u=a[c++];this.inputs.push({name:u,type:l,qualifier:p})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var Te=class extends Y{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};var xi=class extends le{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,n,s){n=this.getType(e);let a=this.value,c=a.build(e,r)+"( ",p=[];if(a.inputs){for(let l=0;l<a.inputs.length;l++){let u=a.inputs[l],d=this.inputs[l]||this.inputs[u.name];p.push(d.build(e,e.getTypeByFormat(u.type)))}c+=p.join(", ")+" )"}return e.format(c,n,r)}};var vi=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}};var Zt=require("three");var $l=require("three");var rt=class extends Ie{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof $l.Vector2?e:new $l.Vector2(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,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}};var Xl=require("three");var pt=class extends Ie{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Xl.Vector3?e:new Xl.Vector3(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,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}};var qt=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ct?e:new ct(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}};var On=class extends le{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:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}};tt.addKeyword("uv",function(){return new On});tt.addKeyword("uv2",function(){return new On(1)});var wa=require("three");var To=class extends le{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??To.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case wa.LinearEncoding:return["Linear"];case wa.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=To.Nodes[this.method],a=e.include(s);if(a===To.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=To.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=To.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},bt=To;bt.Nodes={LinearToLinear:new Y(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
252
|
-
`)),sRGBToLinear:new Y(["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(`
|
|
253
|
-
`)),LinearTosRGB:new Y(["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(`
|
|
254
|
-
`))},bt.LINEAR_TO_LINEAR="LinearToLinear",bt.SRGB_TO_LINEAR="sRGBToLinear",bt.LINEAR_TO_SRGB="LinearTosRGB";var Fm=require("three"),Ot=class extends Ie{constructor(e=new Fm.Texture,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new On,this.bias=o,this.project=n!==void 0?n:!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),n=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 a,c;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?c=a+"( "+o+", "+n+", "+s+" )":c=a+"( "+o+", "+n+" )";let p={include:e.isShader("vertex"),ignoreCache:!0},l=this.getType(e);return e.addContext(p),this.colorSpace=this.colorSpace??new bt(new Te("",l)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(c),c=this.colorSpace.build(e,l),e.removeContext(),e.format(c,l,r)}};var Yl=class extends le{constructor(e,r,o=Yl.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 n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,r)}},Lt=Yl;Lt.ADD="+",Lt.SUB="-",Lt.MUL="*",Lt.DIV="/";var Le=class extends le{constructor(e,r=Le.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Le.MIX:case Le.CLAMP:case Le.REFRACT:case Le.SMOOTHSTEP:case Le.FACEFORWARD:return 3;case Le.MIN:case Le.MAX:case Le.MOD:case Le.STEP:case Le.REFLECT:case Le.DISTANCE:case Le.DOT:case Le.CROSS:case Le.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,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Le.LENGTH:case Le.DISTANCE:case Le.DOT:return"f";case Le.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,n,s,a=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,l=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Le.NEGATE:return e.format("( -"+this.a.build(e,l)+" )",l,r);case Le.INVERT:return e.format("( 1.0 - "+this.a.build(e,l)+" )",l,r);case Le.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Le.STEP:o=this.a.build(e,a===1?"f":l),n=this.b.build(e,l);break;case Le.MIN:case Le.MAX:case Le.MOD:o=this.a.build(e,l),n=this.b.build(e,c===1?"f":l);break;case Le.REFRACT:o=this.a.build(e,l),n=this.b.build(e,l),s=this.c.build(e,"f");break;case Le.MIX:o=this.a.build(e,l),n=this.b.build(e,l),s=this.c.build(e,p===1?"f":l);break;default:o=this.a.build(e,l),this.b&&(n=this.b.build(e,l)),this.c&&(s=this.c.build(e,l));break}let d=[];d.push(o),n&&d.push(n),s&&d.push(s);let m=this.getNumInputs(e);if(d.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},me=Le;me.RAD="radians",me.DEG="degrees",me.EXP="exp",me.EXP2="exp2",me.LOG="log",me.LOG2="log2",me.SQRT="sqrt",me.INV_SQRT="inversesqrt",me.FLOOR="floor",me.CEIL="ceil",me.NORMALIZE="normalize",me.FRACT="fract",me.SATURATE="saturate",me.SIN="sin",me.COS="cos",me.TAN="tan",me.ASIN="asin",me.ACOS="acos",me.ARCTAN="atan",me.ABS="abs",me.SIGN="sign",me.LENGTH="length",me.NEGATE="negate",me.INVERT="invert",me.MIN="min",me.MAX="max",me.MOD="mod",me.STEP="step",me.REFLECT="reflect",me.DISTANCE="distance",me.DOT="dot",me.CROSS="cross",me.POW="pow",me.MIX="mix",me.CLAMP="clamp",me.REFRACT="refract",me.SMOOTHSTEP="smoothstep",me.FACEFORWARD="faceforward";var Ln=class extends le{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new xi(Ln.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new bt(new Te("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new bt(new Te("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new bt(new Te("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new bt(new Te("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Te(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Te(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Te(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Te(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new Te("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,n=this.bias||e.context.roughness,s=new xi(Ln.Nodes.roughnessToMip,[n]),a=new me(s,Ln.Nodes.m0,Ln.Nodes.cubeUV_maxMipLevel,me.CLAMP),c=new me(a,me.FLOOR),p=new me(a,me.FRACT),l=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new Lt(c,new X(1).setReadonly(!0),Lt.ADD)),d=new me(l,u,p,me.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)}},In=Ln;In.Nodes=function(){let e=new Nn(`struct TextureCubeUVData {
|
|
18
|
+
`];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(`
|
|
19
|
+
`)}else{this.color===void 0&&(this.color=new Ce(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(`
|
|
20
|
+
`));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(`
|
|
21
|
+
`)}return r}};var Gi=require("three");var i_=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Zl=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Zl.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=i_.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)}},_e=Zl;_e.PI="PI",_e.PI2="PI2",_e.RECIPROCAL_PI="RECIPROCAL_PI",_e.RECIPROCAL_PI2="RECIPROCAL_PI2",_e.LOG2="LOG2",_e.EPSILON="EPSILON";var s_=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
22
|
+
)*?)}`,"gim"),a_=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Dn=class extends le{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=s_.exec(e);if(r){let o=r[2],i;for(;i=a_.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Jl=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}},rt=new Jl;var l_=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Jm=/[a-z_0-9]+/gi,X=class extends le{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=Jm.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],m=d[0],f=this.isMethod?!this.getInputByName(m):!0,h=m;if(this.keywords[m]||this.useKeywords&&f&&rt.containsKeyword(m)){let g=this.keywords[m];if(!g){let x=rt.getKeywordData(m);x.cache&&(g=e.keywords[m]),g=g||rt.getKeyword(m,e),x.cache&&(e.keywords[m]=g)}h=g.build(e)}m!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+m.length+c),c+=h.length-m.length),this.getIncludeByName(h)===void 0&&rt.contains(h)&&e.include(rt.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=l_.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Jm);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 we=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};var bi=class extends le{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 _i=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}};var Qt=require("three");var ec=require("three");var at=class extends Pe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ec.Vector2?e:new ec.Vector2(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)}};var tc=require("three");var ut=class extends Pe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof tc.Vector3?e:new tc.Vector3(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 Wt=class extends Pe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Je?e:new Je(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 Bn=class extends le{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)}};rt.addKeyword("uv",function(){return new Bn});rt.addKeyword("uv2",function(){return new Bn(1)});var Na=require("three");var No=class extends le{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??No.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Na.LinearEncoding:return["Linear"];case Na.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),s=No.Nodes[this.method],l=e.include(s);if(l===No.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=No.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=No.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},vt=No;vt.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
23
|
+
`)),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(`
|
|
24
|
+
`)),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(`
|
|
25
|
+
`))},vt.LINEAR_TO_LINEAR="LinearToLinear",vt.SRGB_TO_LINEAR="sRGBToLinear",vt.LINEAR_TO_SRGB="LinearTosRGB";var ef=require("three"),Ot=class extends Pe{constructor(e=new ef.Texture,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Bn,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 vt(new we("",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 rc=class extends le{constructor(e,r,o=rc.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)}},Pt=rc;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Oe=class extends le{constructor(e,r=Oe.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 Oe.MIX:case Oe.CLAMP:case Oe.REFRACT:case Oe.SMOOTHSTEP:case Oe.FACEFORWARD:return 3;case Oe.MIN:case Oe.MAX:case Oe.MOD:case Oe.STEP:case Oe.REFLECT:case Oe.DISTANCE:case Oe.DOT:case Oe.CROSS:case Oe.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 Oe.LENGTH:case Oe.DISTANCE:case Oe.DOT:return"f";case Oe.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 Oe.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,r);case Oe.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,r);case Oe.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Oe.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Oe.MIN:case Oe.MAX:case Oe.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Oe.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Oe.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 m=this.getNumInputs(e);if(d.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",u,r)}},me=Oe;me.RAD="radians",me.DEG="degrees",me.EXP="exp",me.EXP2="exp2",me.LOG="log",me.LOG2="log2",me.SQRT="sqrt",me.INV_SQRT="inversesqrt",me.FLOOR="floor",me.CEIL="ceil",me.NORMALIZE="normalize",me.FRACT="fract",me.SATURATE="saturate",me.SIN="sin",me.COS="cos",me.TAN="tan",me.ASIN="asin",me.ACOS="acos",me.ARCTAN="atan",me.ABS="abs",me.SIGN="sign",me.LENGTH="length",me.NEGATE="negate",me.INVERT="invert",me.MIN="min",me.MAX="max",me.MOD="mod",me.STEP="step",me.REFLECT="reflect",me.DISTANCE="distance",me.DOT="dot",me.CROSS="cross",me.POW="pow",me.MIX="mix",me.CLAMP="clamp",me.REFRACT="refract",me.SMOOTHSTEP="smoothstep",me.FACEFORWARD="faceforward";var En=class extends le{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 bi(En.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new vt(new we("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new vt(new we("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new vt(new we("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new vt(new we("","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 we(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new we(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new we(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new we(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new we("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 bi(En.Nodes.roughnessToMip,[i]),l=new me(s,En.Nodes.m0,En.Nodes.cubeUV_maxMipLevel,me.CLAMP),c=new me(l,me.FLOOR),p=new me(l,me.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new Pt(c,new Y(1).setReadonly(!0),Pt.ADD)),d=new me(a,u,p,me.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)}},Gn=En;Gn.Nodes=function(){let e=new Dn(`struct TextureCubeUVData {
|
|
255
26
|
vec4 tl;
|
|
256
27
|
vec4 tr;
|
|
257
28
|
vec4 br;
|
|
258
29
|
vec4 bl;
|
|
259
30
|
vec2 f;
|
|
260
|
-
}`),r=new _e("float cubeUV_maxMipLevel 8.0",!0),o=new _e("float cubeUV_minMipLevel 4.0",!0),
|
|
31
|
+
}`),r=new _e("float cubeUV_maxMipLevel 8.0",!0),o=new _e("float cubeUV_minMipLevel 4.0",!0),i=new _e("float cubeUV_maxTileSize 256.0",!0),s=new _e("float cubeUV_minTileSize 16.0",!0),l=new X(`float getFace(vec3 direction) {
|
|
261
32
|
vec3 absDirection = abs(direction);
|
|
262
33
|
float face = -1.0;
|
|
263
34
|
if (absDirection.x > absDirection.z) {
|
|
@@ -272,7 +43,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
272
43
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
273
44
|
}
|
|
274
45
|
return face;
|
|
275
|
-
}`);
|
|
46
|
+
}`);l.useKeywords=!1;let c=new X(`vec2 getUV(vec3 direction, float face) {
|
|
276
47
|
vec2 uv;
|
|
277
48
|
if (face == 0.0) {
|
|
278
49
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -288,7 +59,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
288
59
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
289
60
|
}
|
|
290
61
|
return 0.5 * (uv + 1.0);
|
|
291
|
-
}`);c.useKeywords=!1;let p=new
|
|
62
|
+
}`);c.useKeywords=!1;let p=new X(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
292
63
|
float face = getFace(direction);
|
|
293
64
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
294
65
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -316,7 +87,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
316
87
|
uv.x -= texelSize;
|
|
317
88
|
vec4 bl = texture2D(envMap, uv);
|
|
318
89
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
319
|
-
}`,[e,
|
|
90
|
+
}`,[e,l,c,r,o,i,s]);p.useKeywords=!1;let a=new _e("float r0 1.0",!0),u=new _e("float v0 0.339",!0),d=new _e("float m0 -2.0",!0),m=new _e("float r1 0.8",!0),f=new _e("float v1 0.276",!0),h=new _e("float m1 -1.0",!0),g=new _e("float r4 0.4",!0),x=new _e("float v4 0.046",!0),v=new _e("float m4 2.0",!0),A=new _e("float r5 0.305",!0),_=new _e("float v5 0.016",!0),b=new _e("float m5 3.0",!0),D=new _e("float r6 0.21",!0),S=new _e("float v6 0.0038",!0),y=new _e("float m6 4.0",!0),I=[a,u,d,m,f,h,g,x,v,A,_,b,D,S,y],T=new X(`float roughnessToMip(float roughness) {
|
|
320
91
|
float mip = 0.0;
|
|
321
92
|
if (roughness >= r1) {
|
|
322
93
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -330,7 +101,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
330
101
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
331
102
|
}
|
|
332
103
|
return mip;
|
|
333
|
-
}`,I);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var
|
|
104
|
+
}`,I);return{bilinearCubeUV:p,roughnessToMip:T,m0:d,cubeUV_maxMipLevel:r}}();var Oo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Oo.VIEW}getShared(){return this.scope===Oo.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 Oo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Oo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Oo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),r)}},lt=Oo;lt.LOCAL="local",lt.WORLD="world",lt.VIEW="view",lt.NORMAL="normal";rt.addKeyword("viewNormal",function(){return new lt(lt.VIEW)});rt.addKeyword("localNormal",function(){return new lt(lt.NORMAL)});rt.addKeyword("worldNormal",function(){return new lt(lt.WORLD)});var _r=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??_r.LOCAL}getType(){switch(this.scope){case _r.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case _r.LOCAL:case _r.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case _r.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case _r.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case _r.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case _r.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},It=_r;It.LOCAL="local",It.WORLD="world",It.VIEW="view",It.PROJECTION="projection";rt.addKeyword("position",function(){return new It});rt.addKeyword("worldPosition",function(){return new It(It.WORLD)});rt.addKeyword("viewPosition",function(){return new It(It.VIEW)});var Kt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Kt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Kt.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Kt.VECTOR:{let s=new lt(lt.VIEW),l=e.context.roughness,c=s.build(e,"v3"),p=new It(It.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 Kt.CUBE:{let s=new Kt(Kt.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case Kt.SPHERE:{let s=new Kt(Kt.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)}},Sr=Kt;Sr.CUBE="cube",Sr.SPHERE="sphere",Sr.VECTOR="vector";var Oa=class extends le{constructor(e=new Ot,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Gn(this.value,r??new Sr(Sr.VECTOR),o),this.irradianceNode=new Gn(this.value,new lt(lt.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))}};var tf=require("three");var Pa=class extends Pe{constructor(e=new tf.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Sr,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 vt(new we("",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 rf=["x","y","z","w"],c_=["float","vec2","vec3","vec4"],u_={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},p_={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[]"},Ia=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+`
|
|
334
105
|
`);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",`
|
|
335
106
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
336
107
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -372,10 +143,10 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
372
143
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
373
144
|
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
374
145
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
375
|
-
`}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",
|
|
376
|
-
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,
|
|
377
|
-
`:r+=e+" "+
|
|
378
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof st?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,
|
|
146
|
+
`}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(`
|
|
147
|
+
`)}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}];
|
|
148
|
+
`:r+=e+" "+a+" "+c+`;
|
|
149
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof st?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 _i({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 _i({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"?rt.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof _e?o=this.includes.consts:t instanceof Dn&&(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 c_[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 Qt.CubeReflectionMapping:case Qt.CubeRefractionMapping:return new Pa(r);case Qt.CubeUVReflectionMapping:return new Oa(new Ot(r));default:return new Ot(r)}else{if(r.isVector2)return new at(r);if(r.isVector3)return new ut(r);if(r.isVector4)return new Wt(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 u_[t]||t}getFormatByType(t){return p_[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return rf[t]}getIndexByElement(t){return rf.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=Qt.LinearEncoding,e===Qt.LinearEncoding&&this.context.gamma&&(e=Qt.sRGBEncoding),e}};var ao=class extends Pe{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)}};var of=require("three");var Rn=class extends Pe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new of.Matrix3}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 Zt=class extends Pe{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)}};var oc=require("three");var Jt=class extends Pe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof oc.Vector4?new Array(e).fill(r):new Array(e).fill(new oc.Vector4(0))}};var Si=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Si||{}),ht=function(){let t=new X(`vec3 random3(vec3 c) {
|
|
379
150
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
380
151
|
vec3 r;
|
|
381
152
|
r.z = fract(512.0*j);
|
|
@@ -384,7 +155,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
384
155
|
j *= .125;
|
|
385
156
|
r.y = fract(512.0*j);
|
|
386
157
|
return r-0.5;
|
|
387
|
-
}`),e=new
|
|
158
|
+
}`),e=new X(`float simplex3d(vec3 p) {
|
|
388
159
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
389
160
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
390
161
|
|
|
@@ -415,7 +186,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
415
186
|
d *= w;
|
|
416
187
|
|
|
417
188
|
return dot(d, vec4(52.0));
|
|
418
|
-
}`,[t]);e.keywords.F3=new _e("float F3 0.3333333"),e.keywords.G3=new _e("float G3 0.1666667");let r=new
|
|
189
|
+
}`,[t]);e.keywords.F3=new _e("float F3 0.3333333"),e.keywords.G3=new _e("float G3 0.1666667");let r=new X(`float simplex3dFractal(vec3 m) {
|
|
419
190
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
420
191
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
421
192
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -423,7 +194,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
423
194
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
424
195
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
425
196
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
426
|
-
}`,[e]),o=new
|
|
197
|
+
}`,[e]),o=new X("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new X("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new X(`float simplexAshima(vec3 v) {
|
|
427
198
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
428
199
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
429
200
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -468,7 +239,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
468
239
|
m = m * m;
|
|
469
240
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
470
241
|
dot(p2,x2), dot(p3,x3) ) );
|
|
471
|
-
}`,[o,
|
|
242
|
+
}`,[o,i]),l=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),p=new X(`float noise(vec3 p){
|
|
472
243
|
vec3 a = floor(p);
|
|
473
244
|
vec3 d = p - a;
|
|
474
245
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -483,7 +254,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
483
254
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
484
255
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
485
256
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
486
|
-
}`,[c]),
|
|
257
|
+
}`,[c]),a=new X(`float fbm(vec3 x) {
|
|
487
258
|
float v = 0.0;
|
|
488
259
|
float a = 0.5;
|
|
489
260
|
vec3 shift = vec3(100);
|
|
@@ -493,7 +264,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
493
264
|
a *= 0.5;
|
|
494
265
|
}
|
|
495
266
|
return v;
|
|
496
|
-
}`,[p]);
|
|
267
|
+
}`,[p]);a.keywords.NUM_OCTAVES=new _e(`int NUM_OCTAVES ${5}`);let u=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new X(`float perlin(vec3 P){
|
|
497
268
|
vec3 Pi0 = floor(P);
|
|
498
269
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
499
270
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -552,16 +323,16 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
552
323
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
553
324
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
554
325
|
return 2.2 * n_xyz;
|
|
555
|
-
}`,[o,
|
|
326
|
+
}`,[o,i,u]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:a,perlin:d}}();var wi=class extends le{constructor(e,r,o,i,s,l,c,p,a,u,d,m){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=p,this.colorC=a,this.colorD=u,this.alpha=d,this.noiseType=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(Si)[this.noiseType.value],c=new X(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
556
327
|
vec3 st = position / size;
|
|
557
328
|
st /= scale;
|
|
558
|
-
vec3 q = vec3(${
|
|
559
|
-
${
|
|
560
|
-
${
|
|
561
|
-
vec3 r = vec3(${
|
|
562
|
-
${
|
|
563
|
-
${
|
|
564
|
-
float f = ${
|
|
329
|
+
vec3 q = vec3(${l}(st),
|
|
330
|
+
${l}(st + vec3(1.0)),
|
|
331
|
+
${l}(st + vec3(1.0)));
|
|
332
|
+
vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
|
|
333
|
+
${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
|
|
334
|
+
${l}(st * q));
|
|
335
|
+
float f = ${l}(st + r);
|
|
565
336
|
vec4 color;
|
|
566
337
|
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
567
338
|
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
@@ -572,14 +343,49 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
572
343
|
|
|
573
344
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
574
345
|
return clamp(color, 0.0, 1.0).rgb;
|
|
575
|
-
}`,[
|
|
346
|
+
}`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.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)}};wi.numOctaves=5;var Ti=require("three");var La=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(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(Ti.UniformsUtils.merge([Ti.UniformsLib.fog,Ti.UniformsLib.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
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
348
|
+
#ifndef USE_LAYER_DISPLACE
|
|
349
|
+
#include <defaultnormal_vertex>
|
|
350
|
+
#endif
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
vec3 displaced_position = position;
|
|
354
|
+
vec3 displaced_normal = normal;
|
|
355
|
+
|
|
356
|
+
#ifdef USE_LAYER_DISPLACE
|
|
357
|
+
vec3 transformed;
|
|
358
|
+
vec3 transformedNormal;
|
|
359
|
+
#endif
|
|
360
|
+
`,"#include <normal_vertex>",`
|
|
361
|
+
#ifndef USE_LAYER_DISPLACE
|
|
362
|
+
#include <begin_vertex>
|
|
363
|
+
#endif
|
|
364
|
+
`];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 <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
365
|
+
`)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
366
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
367
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
368
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
369
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
370
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
371
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
372
|
+
normal *= -1.0;
|
|
373
|
+
}
|
|
374
|
+
`," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),u.push(`
|
|
375
|
+
if (outgoingLight != diffuseColor) {
|
|
376
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
377
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
378
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
379
|
+
}
|
|
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 nc=class extends le{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(nc.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)}},Ai=nc;Ai.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) {
|
|
576
382
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
577
383
|
|
|
578
384
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
579
385
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
580
386
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
581
387
|
return color;
|
|
582
|
-
}`)}}();var
|
|
388
|
+
}`)}}();var ic=class extends le{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(ic.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)}},Ci=ic;Ci.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
583
389
|
vec3 st = position / noiseScale;
|
|
584
390
|
vec3 q = vec3(simplex3d(st),
|
|
585
391
|
simplex3d(st + vec3(1.0)),
|
|
@@ -592,7 +398,7 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
592
398
|
float noise = simplex3d(st + r);
|
|
593
399
|
|
|
594
400
|
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
595
|
-
}`,[
|
|
401
|
+
}`,[ht.simplex]);return{rainbow:new X(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
596
402
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
597
403
|
|
|
598
404
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -601,18 +407,18 @@ var Ff=Object.create;var Hi=Object.defineProperty;var Vf=Object.getOwnPropertyDe
|
|
|
601
407
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
602
408
|
|
|
603
409
|
return res;
|
|
604
|
-
}`,[e])}}();var
|
|
410
|
+
}`,[e])}}();var sc=class extends le{constructor(e,r,o,i,s,l,c,p,a,u,d,m,f,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=m,this.normalMap=f,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(`
|
|
605
411
|
vID = randomColor.r;
|
|
606
412
|
if (${s}) {
|
|
607
413
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
608
414
|
vec3 ${c}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal);
|
|
609
|
-
vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${
|
|
415
|
+
vec2 ${c}_offset = normalize(${c}_clipNormal.xy) / ${i} * (${o} / 2.0) * ${c}_clipPosition.w * 2.0 * ${l};
|
|
610
416
|
${c}_clipPosition.xy += ${c}_offset;
|
|
611
417
|
// TODO(MAX): To handle multiple outline layers, we only want to extrude
|
|
612
418
|
// if this offset is the biggest of all the potential offsets
|
|
613
419
|
gl_Position = ${c}_clipPosition;
|
|
614
420
|
}
|
|
615
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
421
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(sc.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."),""}},Ni=sc;Ni.Nodes=function(){let e=new X(`
|
|
616
422
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
617
423
|
{
|
|
618
424
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -713,7 +519,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
713
519
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
714
520
|
return edgeNormal;
|
|
715
521
|
}
|
|
716
|
-
`);return{outline:new
|
|
522
|
+
`);return{outline:new X(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
|
|
717
523
|
vec3 result = outlineColor;
|
|
718
524
|
float resultAlpha = 0.0;
|
|
719
525
|
|
|
@@ -752,38 +558,41 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
752
558
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
753
559
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
754
560
|
return result;
|
|
755
|
-
}`,[e])}}();var
|
|
561
|
+
}`,[e])}}();var ac=class extends le{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(ac.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)}},Oi=ac;Oi.Nodes=function(){let e=new X(`
|
|
756
562
|
float gaussian(vec2 i) {
|
|
757
563
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
758
564
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
759
|
-
}`),r=new
|
|
760
|
-
|
|
565
|
+
}`),r=new X(`
|
|
566
|
+
vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
761
567
|
// Slightly modified version of this:
|
|
762
568
|
// https://www.shadertoy.com/view/ltScRG
|
|
763
569
|
|
|
764
570
|
const int LOD = 2;
|
|
765
571
|
const int sLOD = 4; // tile size = 2^LOD
|
|
766
572
|
|
|
767
|
-
|
|
573
|
+
vec3 O = vec3(0);
|
|
574
|
+
float a = 0.0;
|
|
768
575
|
const int s = NUM_SAMPLES/sLOD;
|
|
769
576
|
for ( int i = 0; i < s*s; i++ ) {
|
|
770
577
|
int modulo = (i)-((i)/(s))*(s);
|
|
771
578
|
vec2 d = vec2(float(modulo), float(i/s))*float(sLOD) - float(NUM_SAMPLES)/2.;
|
|
772
579
|
vec2 uv = U + (scale * aspectRatio) * d;
|
|
773
580
|
// What is the depth of the opaque object we're trying to sample
|
|
774
|
-
float opaqueDepth = texture2D(dm, uv)
|
|
581
|
+
float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
|
|
775
582
|
if (opaqueDepth < gl_FragCoord.z) {
|
|
776
583
|
uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
|
|
777
584
|
lod = lod > 4.0 ? lod : lod / 2.0;
|
|
778
585
|
}
|
|
586
|
+
float gaussian = gaussian(d);
|
|
779
587
|
#ifdef TEXTURE_LOD_EXT
|
|
780
|
-
O += gaussian
|
|
588
|
+
O += gaussian * texture2DLodEXT( sp, uv, lod).rgb;
|
|
781
589
|
#else
|
|
782
|
-
O += gaussian
|
|
590
|
+
O += gaussian * textureLod( sp, uv, lod).rgb;
|
|
783
591
|
#endif
|
|
592
|
+
a += gaussian;
|
|
784
593
|
}
|
|
785
|
-
return O /
|
|
786
|
-
}`,[e]),o=new
|
|
594
|
+
return O / a;
|
|
595
|
+
}`,[e]),o=new X(`
|
|
787
596
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
788
597
|
// Direction of refracted light.
|
|
789
598
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -794,19 +603,19 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
794
603
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
795
604
|
// The thickness is specified in local space.
|
|
796
605
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
797
|
-
}`),
|
|
606
|
+
}`),i=new X(`
|
|
798
607
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
799
608
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
800
609
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
801
610
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
802
|
-
} `),s=new
|
|
803
|
-
|
|
611
|
+
} `),s=new X(`
|
|
612
|
+
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
804
613
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
805
614
|
float lod = applyIorToRoughness(roughness, ior);
|
|
806
615
|
|
|
807
616
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
808
|
-
}`,[
|
|
809
|
-
|
|
617
|
+
}`,[i,r]),l=new X(`
|
|
618
|
+
vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
810
619
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
811
620
|
vec3 refractedRayExit = position + transmissionRay;
|
|
812
621
|
|
|
@@ -822,10 +631,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
822
631
|
unrefractedCoords /= 2.0;
|
|
823
632
|
|
|
824
633
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
|
|
828
|
-
}`,[s,o]);return{transmission:new Y(`
|
|
634
|
+
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
635
|
+
}`,[s,o]);return{transmission:new X(`
|
|
829
636
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
830
637
|
vec3 v = vec3(0.);
|
|
831
638
|
if (isOrthographic) {
|
|
@@ -833,13 +640,13 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
833
640
|
} else {
|
|
834
641
|
v = normalize(vWPosition - cameraPosition);
|
|
835
642
|
}
|
|
836
|
-
|
|
643
|
+
vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness, vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
|
|
837
644
|
float lalpha = alpha;
|
|
838
645
|
|
|
839
646
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
840
647
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
841
|
-
return transmission
|
|
842
|
-
}`,[
|
|
648
|
+
return transmission;
|
|
649
|
+
}`,[l])}}();var Fn=class extends le{constructor(e,r,o,i,s,l,c,p,a,u,d,m){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.num=d,this.alpha=m,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) {
|
|
843
650
|
vec4 color = colors[0];
|
|
844
651
|
#ifdef ${o}_IS_VECTOR
|
|
845
652
|
#ifdef ${o}_LINEAR
|
|
@@ -879,25 +686,25 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
879
686
|
|
|
880
687
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
881
688
|
return color.rgb;
|
|
882
|
-
}`,[
|
|
689
|
+
}`,[Fn.Nodes.vectorLinearWorldSpaceDepth,Fn.Nodes.vectorLinearObjectSpaceDepth,Fn.Nodes.vectorSphericalObjectSpaceDepth,Fn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),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)}},Pi=Fn;Pi.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
883
690
|
vec3 n = normalize(direction);
|
|
884
691
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
885
692
|
return ( dist - near ) / ( far - near );
|
|
886
|
-
}`),r=new
|
|
693
|
+
}`),r=new X(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
887
694
|
vec3 n = normalize(direction);
|
|
888
695
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
889
696
|
return ( dist - near ) / ( far - near );
|
|
890
|
-
}`),o=new
|
|
697
|
+
}`),o=new X(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
891
698
|
float dist = length(vWPosition - origin);
|
|
892
699
|
return ( dist - near ) / ( far - near );
|
|
893
|
-
}`),
|
|
700
|
+
}`),i=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
894
701
|
float dist = length(position - origin);
|
|
895
702
|
return ( dist - near ) / ( far - near );
|
|
896
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:
|
|
703
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ii=class extends le{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 lc=(e=>(e.NOISE="noise",e.MAP="map",e))(lc||{}),cc=class extends le{constructor(e,r,o,i,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(lc)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Rn(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(lc)[this.displacementTypeIndex.value]){case"map":{o=e.include(cc.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(Si)[this.noiseFunctionIndex.value],c=new X(`vec3 orthogonal(vec3 v) {
|
|
897
704
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
898
|
-
}`),p=new
|
|
899
|
-
return p + n * ${
|
|
900
|
-
}`,[
|
|
705
|
+
}`),p=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
706
|
+
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
707
|
+
}`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),a=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
901
708
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
902
709
|
vec3 tangent1 = orthogonal(normal);
|
|
903
710
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -913,9 +720,9 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
913
720
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
914
721
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
915
722
|
return displaced_position;
|
|
916
|
-
}`,[p,c]);o=e.include(
|
|
723
|
+
}`,[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)}},Li=cc;Li.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
|
|
917
724
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
918
|
-
}`),r=new
|
|
725
|
+
}`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
919
726
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
920
727
|
vec4 tmp = texture2D(tex, uvs);
|
|
921
728
|
vec3 col = tmp.rgb;
|
|
@@ -925,7 +732,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
925
732
|
}
|
|
926
733
|
}
|
|
927
734
|
return col.r;
|
|
928
|
-
}`);return{map:new
|
|
735
|
+
}`);return{map:new X(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
929
736
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
930
737
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
931
738
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -935,7 +742,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
935
742
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
936
743
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
937
744
|
return displaced_position;
|
|
938
|
-
}`,[e,r])}}();var
|
|
745
|
+
}`,[e,r])}}();var uc=class extends le{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(uc.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)}},Mi=uc;Mi.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) {
|
|
939
746
|
vec4 color = colors[0];
|
|
940
747
|
vec2 m = morph / vUv.xy;
|
|
941
748
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -977,7 +784,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
977
784
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
978
785
|
|
|
979
786
|
return color.xyz;
|
|
980
|
-
}`)}}();var
|
|
787
|
+
}`)}}();var Bi=class extends le{constructor(e,r,o,i,s,l,c,p,a,u){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.mat=p,this.alpha=a,this.mode=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Bi.Nodes.cylindrical);break;case 2:i=e.include(Bi.Nodes.spherical);break;case 1:let l=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],c=new X(`
|
|
981
788
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
982
789
|
|
|
983
790
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -986,7 +793,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
986
793
|
|
|
987
794
|
vec3 col = tmp.rgb;
|
|
988
795
|
float lalpha = alpha * tmp.a;
|
|
989
|
-
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${
|
|
796
|
+
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
|
|
990
797
|
|
|
991
798
|
if ( crop > 0.5 ) {
|
|
992
799
|
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
@@ -996,7 +803,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
996
803
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
997
804
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
998
805
|
return col;
|
|
999
|
-
}`);
|
|
806
|
+
}`);i=e.include(c);break;default:i=e.include(Bi.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),r)}},Di=Bi;Di.Nodes=function(){let e=new X(`
|
|
1000
807
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1001
808
|
vec3 posN = normalize(position);
|
|
1002
809
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -1026,7 +833,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
|
|
|
1026
833
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1027
834
|
return col;
|
|
1028
835
|
}
|
|
1029
|
-
`),r=new
|
|
836
|
+
`),r=new X(`
|
|
1030
837
|
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1031
838
|
vec3 posN = normalize(vPosition);
|
|
1032
839
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -1054,7 +861,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1054
861
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1055
862
|
return col;
|
|
1056
863
|
}
|
|
1057
|
-
`),o=new
|
|
864
|
+
`),o=new X(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1058
865
|
|
|
1059
866
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1060
867
|
vec4 tmp = texture2D( tex, uvs );
|
|
@@ -1070,14 +877,208 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1070
877
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1071
878
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1072
879
|
return col;
|
|
1073
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
880
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var pc=class extends le{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(pc.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)}},Ei=pc;Ei.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
1074
881
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
1075
882
|
normal *= step( vec3(0.5), cnormal );
|
|
1076
883
|
|
|
1077
884
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1078
885
|
|
|
1079
886
|
return normal;
|
|
1080
|
-
}`)}}();var
|
|
887
|
+
}`)}}();var pt={normalRenderTarget:new Ot,normalRenderTargetDepth:new Ot,transmissionRenderTarget:new Ot,transmissionSize:new at(2048,2048),transmissionRenderTargetDepth:new Ot,pixelRatioNode:new Y(1),resolution:new at,penumbraSize:new Zt(5,.5)};for(let n of Object.values(pt))n.isRenderGlobal=!0;var Ri=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ce(5855577),this.emissive=new Ce(0),this.emissiveIntensity=new Y(1),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(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(Gi.UniformsUtils.merge([Gi.UniformsLib.fog,Gi.UniformsLib.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(`
|
|
888
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
889
|
+
#ifndef USE_LAYER_DISPLACE
|
|
890
|
+
#include <defaultnormal_vertex>
|
|
891
|
+
#endif
|
|
892
|
+
|
|
893
|
+
vec3 displaced_position = position;
|
|
894
|
+
vec3 displaced_normal = normal;
|
|
895
|
+
|
|
896
|
+
#ifdef USE_LAYER_DISPLACE
|
|
897
|
+
vec3 transformed;
|
|
898
|
+
vec3 transformedNormal;
|
|
899
|
+
#endif
|
|
900
|
+
`,"#include <normal_vertex>",`
|
|
901
|
+
#ifndef USE_LAYER_DISPLACE
|
|
902
|
+
#include <begin_vertex>
|
|
903
|
+
#endif
|
|
904
|
+
`];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 <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
|
|
905
|
+
vec3 diffuse = vec3( 1.0 );
|
|
906
|
+
GeometricContext geometry;
|
|
907
|
+
geometry.position = mvPosition.xyz;
|
|
908
|
+
geometry.normal = normalize( transformedNormal );
|
|
909
|
+
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
910
|
+
GeometricContext backGeometry;
|
|
911
|
+
backGeometry.position = geometry.position;
|
|
912
|
+
backGeometry.normal = -geometry.normal;
|
|
913
|
+
backGeometry.viewDir = geometry.viewDir;
|
|
914
|
+
vLightFront = vec3( 0.0 );
|
|
915
|
+
vIndirectFront = vec3( 0.0 );
|
|
916
|
+
#ifdef DOUBLE_SIDED
|
|
917
|
+
vLightBack = vec3( 0.0 );
|
|
918
|
+
vIndirectBack = vec3( 0.0 );
|
|
919
|
+
#endif
|
|
920
|
+
IncidentLight directLight;
|
|
921
|
+
float dotNL;
|
|
922
|
+
vec3 directLightColor_Diffuse;
|
|
923
|
+
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
924
|
+
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
925
|
+
#ifdef DOUBLE_SIDED
|
|
926
|
+
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
927
|
+
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
928
|
+
#endif
|
|
929
|
+
#if NUM_POINT_LIGHTS > 0
|
|
930
|
+
#pragma unroll_loop_start
|
|
931
|
+
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
932
|
+
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
933
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
934
|
+
directLightColor_Diffuse = directLight.color;
|
|
935
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
936
|
+
#ifdef DOUBLE_SIDED
|
|
937
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
938
|
+
#endif
|
|
939
|
+
}
|
|
940
|
+
#pragma unroll_loop_end
|
|
941
|
+
#endif
|
|
942
|
+
#if NUM_SPOT_LIGHTS > 0
|
|
943
|
+
#pragma unroll_loop_start
|
|
944
|
+
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
945
|
+
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
946
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
947
|
+
directLightColor_Diffuse = directLight.color;
|
|
948
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
949
|
+
#ifdef DOUBLE_SIDED
|
|
950
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
951
|
+
#endif
|
|
952
|
+
}
|
|
953
|
+
#pragma unroll_loop_end
|
|
954
|
+
#endif
|
|
955
|
+
#if NUM_DIR_LIGHTS > 0
|
|
956
|
+
#pragma unroll_loop_start
|
|
957
|
+
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
958
|
+
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
959
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
960
|
+
directLightColor_Diffuse = directLight.color;
|
|
961
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
962
|
+
#ifdef DOUBLE_SIDED
|
|
963
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
964
|
+
#endif
|
|
965
|
+
}
|
|
966
|
+
#pragma unroll_loop_end
|
|
967
|
+
#endif
|
|
968
|
+
#if NUM_HEMI_LIGHTS > 0
|
|
969
|
+
#pragma unroll_loop_start
|
|
970
|
+
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
971
|
+
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
972
|
+
#ifdef DOUBLE_SIDED
|
|
973
|
+
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
974
|
+
#endif
|
|
975
|
+
}
|
|
976
|
+
#pragma unroll_loop_end
|
|
977
|
+
#endif
|
|
978
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
979
|
+
`)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
980
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
981
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
982
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
983
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
984
|
+
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
985
|
+
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
986
|
+
`,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),u.push(`
|
|
987
|
+
if (outgoingLight != diffuseColor) {
|
|
988
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
989
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
990
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
991
|
+
}
|
|
992
|
+
`),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(`
|
|
993
|
+
`)}return r}};var Vn=require("three");var Fi=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ce(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(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(Vn.UniformsUtils.merge([Vn.UniformsLib.fog,Vn.UniformsLib.lights])),Vn.UniformsLib.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(`
|
|
994
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
995
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
996
|
+
#include <defaultnormal_vertex>
|
|
997
|
+
#endif
|
|
998
|
+
|
|
999
|
+
vec3 displaced_position = position;
|
|
1000
|
+
vec3 displaced_normal = normal;
|
|
1001
|
+
|
|
1002
|
+
#if defined( USE_LAYER_DISPLACE )
|
|
1003
|
+
vec3 transformed;
|
|
1004
|
+
vec3 transformedNormal;
|
|
1005
|
+
#endif
|
|
1006
|
+
`,"#include <normal_vertex>",`
|
|
1007
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
1008
|
+
#include <begin_vertex>
|
|
1009
|
+
#endif /* !USE_LAYER_DISPLACE */
|
|
1010
|
+
`];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>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1011
|
+
`)}else{e.mergeUniform({penumbraSize:pt.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ce(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),c=this.shadingAlpha.flow(e,"f"),p=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
1012
|
+
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1013
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1014
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1015
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1016
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1017
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
1018
|
+
normal *= -1.0;
|
|
1019
|
+
}
|
|
1020
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];m.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",l.code," float metalnessFactor = "+l.result+";"),u&&m.push(u.code,"#ifdef ALPHATEST"," if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?m.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),m.push(`
|
|
1021
|
+
if (outgoingLight != diffuseColor) {
|
|
1022
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1023
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
|
|
1024
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${p.result} );
|
|
1025
|
+
}
|
|
1026
|
+
`),a&&m.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
1027
|
+
`)}return r}};var Vi=require("three");var zi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ce(5855577),this.specular=new Ce(1118481),this.shininess=new Y(30),this.shadingAlpha=new Y(1),this.shadingBlend=new xe(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(Vi.UniformsUtils.merge([Vi.UniformsLib.fog,Vi.UniformsLib.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(`
|
|
1028
|
+
`));let i=["#include <beginnormal_vertex>",`
|
|
1029
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1030
|
+
#include <defaultnormal_vertex>
|
|
1031
|
+
#endif
|
|
1032
|
+
|
|
1033
|
+
vec3 displaced_position = position;
|
|
1034
|
+
vec3 displaced_normal = normal;
|
|
1035
|
+
|
|
1036
|
+
#ifdef USE_LAYER_DISPLACE
|
|
1037
|
+
vec3 transformed;
|
|
1038
|
+
vec3 transformedNormal;
|
|
1039
|
+
#endif
|
|
1040
|
+
`,"#include <normal_vertex>",`
|
|
1041
|
+
#ifndef USE_LAYER_DISPLACE
|
|
1042
|
+
#include <begin_vertex>
|
|
1043
|
+
#endif
|
|
1044
|
+
`];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>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1045
|
+
`)}else{e.mergeUniform({penumbraSize:pt.penumbraSize}),this.color===void 0&&(this.color=new Ce(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),i=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),p=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,a=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=a!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
1046
|
+
varying vec3 vViewPosition;
|
|
1047
|
+
struct ToonMaterial {
|
|
1048
|
+
vec3 diffuseColor;
|
|
1049
|
+
vec3 specularColor;
|
|
1050
|
+
float specularShininess;
|
|
1051
|
+
float specularStrength;
|
|
1052
|
+
};
|
|
1053
|
+
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1054
|
+
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
1055
|
+
|
|
1056
|
+
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1057
|
+
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
1058
|
+
}
|
|
1059
|
+
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1060
|
+
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1061
|
+
}
|
|
1062
|
+
#define RE_Direct RE_Direct_Toon
|
|
1063
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
1064
|
+
#define Material_LightProbeLOD( material ) (0)
|
|
1065
|
+
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
1066
|
+
`));let u=["#include <normal_fragment_begin>",`
|
|
1067
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1068
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
1069
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
1070
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1071
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
1072
|
+
normal *= -1.0;
|
|
1073
|
+
}
|
|
1074
|
+
`," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),u.push(`
|
|
1075
|
+
if (outgoingLight != diffuseColor) {
|
|
1076
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1077
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
1078
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
1079
|
+
}
|
|
1080
|
+
`),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(`
|
|
1081
|
+
`)}return r}};var Qe=require("three");function nf(n,t){switch(n.type){case"fresnel":return f_(n,t);case"gradient":return h_(n);case"depth":return g_(n);case"normal":return y_(n);case"noise":return x_(n,t);case"rainbow":return v_(n);case"toon":return b_(n,t);case"outline":return __(n,t);case"transmission":return S_(n,t);case"color":return m_(n,t)}}function d_(n){return{type:n.type}}function wr(n){let{alpha:t,mode:e}=n;return{...d_(n),alpha:t,mode:e}}function m_(n,t){return{...wr(n),color:Ye(n.color,t)}}function f_(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...wr(n),color:Ye(s,t),bias:e,scale:r,intensity:o,factor:i}}function h_(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...wr(n),gradientType:t,smooth:e,colors:r.map(c=>new Qe.Vector4(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new Qe.Vector2(...s),morph:new Qe.Vector2(...l),angle:i}}function g_(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:p,smooth:a,num:u}=n;return{...wr(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Qe.Vector3(...s),direction:l?new Qe.Vector3(...l):new Qe.Vector3(1,0,0),num:u,colors:c.map(d=>new Qe.Vector4(d[0],d[1],d[2],d[3])),steps:p,smooth:a}}function y_(n){let{cnormal:t}=n;return{...wr(n),cnormal:new Qe.Vector3(t[0],t[1],t[2])}}function x_(n,t){return{...wr(n),scale:n.scale,move:n.move,fA:new Qe.Vector2(...n.fA),fB:new Qe.Vector2(...n.fB),size:new Qe.Vector3(...n.size),distortion:new Qe.Vector2(...n.distortion),colorA:Ye(n.colorA,t),colorB:Ye(n.colorB,t),colorC:Ye(n.colorC,t),colorD:Ye(n.colorD,t),noiseType:n.noiseType}}function v_(n){return{...wr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Qe.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Qe.Vector3(...n.offset)}}function b_(n,t){return{...wr(n),positioning:n.positioning,colors:n.colors.map(e=>new Qe.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Qe.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Ye(n.shadowColor,t),offset:new Qe.Vector3(...n.offset)}}function __(n,t){return{...wr(n),outlineColor:Ye(n.outlineColor,t),contourColor:Ye(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 S_(n,t){return{...wr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var lo=class extends Je{};var cf=require("three");var lf=require("three");var dc=new Map,Ui={url:"head",time:0,data:null,next:null,prev:null},zn={url:"tail",time:1/0,data:null,next:null,prev:null};Ui.next=zn;zn.prev=Ui;var sf=0;function af(n){if(typeof n=="string")return n;let t=Date.now(),e=dc.get(n);return e===void 0?(e={url:URL.createObjectURL(new Blob([n])),data:n,time:t,next:null,prev:null},dc.set(n,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=zn.prev,e.next=zn,zn.prev.next=e,zn.prev=e,t-sf>1e3*10&&(sf=t+1e3,setTimeout(()=>{let r=Date.now(),o=Ui.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),dc.delete(o.data),o=o.next,o.prev=Ui,Ui.next=o},900)),e.url}var Un=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=af(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 lf.Texture(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 Po=class extends Un{};var co=class extends Pe{};function w_(n,t){switch(n.type){case"noise":return t==="noiseType";case"texture":return t==="projection"||t==="axis"||t==="side";case"displace":return t==="noiseType";case"depth":return t==="num"||t==="smooth"||t==="isWorldSpace"||t==="gradientType"||t==="isVector";default:return!1}}function mc(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 Po||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 uf(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0||fc(i,e,r))continue;e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof co))switch(o=o||w_(e,i),l.constructor){case Ce:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof lo?l.value=new Je(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Wt:if(typeof s=="string"){let c=t.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof lo?l.value=new Je(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case at:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case ut:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Ot:{mc(s,t,e);break}case Jt:{l.value=s.map(c=>new cf.Vector4(...c));break}default:{l.value=s;break}}}return o}var hc=class extends le{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(hc.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)}},ki=hc;ki.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1081
1082
|
vec3 viewDir = normalize( vViewPosition );
|
|
1082
1083
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1083
1084
|
vec3 y = cross( viewDir, x );
|
|
@@ -1089,14 +1090,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1089
1090
|
|
|
1090
1091
|
return matcapColor.rgb;
|
|
1091
1092
|
}
|
|
1092
|
-
`)}}();var
|
|
1093
|
+
`)}}();var ji=class extends co{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};var pf=require("three");var Ma=class extends co{constructor(e){super("v3");this.image=e;this._value=new pf.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var gc=class extends le{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(gc.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)}},Hi=gc;Hi.Nodes=function(){let e=new X(`float rand(float n) {
|
|
1093
1094
|
return fract(sin(n) * 43758.5453123);
|
|
1094
|
-
}`),r=new
|
|
1095
|
+
}`),r=new X(`float hash1(float p) {
|
|
1095
1096
|
p = fract(p * 0.011);
|
|
1096
1097
|
p *= p + 7.5;
|
|
1097
1098
|
p *= p + p;
|
|
1098
1099
|
return fract(p);
|
|
1099
|
-
}`),o=new
|
|
1100
|
+
}`),o=new X(`float valueNoise(vec3 x) {
|
|
1100
1101
|
const vec3 step = vec3(110, 241, 171);
|
|
1101
1102
|
|
|
1102
1103
|
vec3 i = floor(x);
|
|
@@ -1111,13 +1112,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1111
1112
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1112
1113
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1113
1114
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1114
|
-
}`,[r]),
|
|
1115
|
+
}`,[r]),i=new X(`vec3 hash3(vec3 x) {
|
|
1115
1116
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1116
1117
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1117
1118
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1118
1119
|
|
|
1119
1120
|
return fract(sin(x)*43758.5453123);
|
|
1120
|
-
}`),s=new
|
|
1121
|
+
}`),s=new X(`vec3 voronoiNoise(in vec3 x)
|
|
1121
1122
|
{
|
|
1122
1123
|
vec3 p = floor(x);
|
|
1123
1124
|
vec3 f = fract(x);
|
|
@@ -1148,7 +1149,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1148
1149
|
|
|
1149
1150
|
return vec3(sqrt(res), abs(id));
|
|
1150
1151
|
}
|
|
1151
|
-
`,[
|
|
1152
|
+
`,[i]);return{toon:new X(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
1152
1153
|
float t = 0.0;
|
|
1153
1154
|
float shadow = 1.0;
|
|
1154
1155
|
|
|
@@ -1325,5 +1326,5 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1325
1326
|
|
|
1326
1327
|
return color.xyz;
|
|
1327
1328
|
|
|
1328
|
-
}`,[gt.simplex,e,o,s])}}();var Km=require("three");function Ym(i,t,e){i.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Oa=class extends Pn{constructor(e,r){super(new Km.Matrix3);this.repeat=e;this.offset=r;Ym(this.value,e,r)}updateMatrix(){Ym(this.value,this.repeat,this.offset)}};var Tr=class{constructor(t,e,r,o){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let n in o)this.uniforms[`f${this.id}_${n}`]=o[n];for(let n in r)ac(n,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Ar.createLigherLayer(t,e,r,o);if(r.type==="texture"){let n=o.image(r.texture.image),s=new Ei(n,r.texture.wrapping),a=new Na(n),c=new Oa(r.texture.repeat,r.texture.offset),p=new X(r.crop?1:0),l=new xe(r.projection??0),u=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),m=new rt(r.size?new Se.Vector2(r.size[0],r.size[1]):new Se.Vector2(100,100)),f=new X(r.alpha??1),h=new xe(r.mode??0),g=new Ii(s,a,p,l,u,d,m,c,f,h),x=new Te(g.calpha,"f");return new ot(t,e,r,{texture:s,textureSize:a,crop:p,projection:l,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let n=o.image(r.texture.image),s=new Ei(n,r.texture.wrapping),a=new X(r.alpha??1),c=new xe(r.mode??0),p=new Bi(s,a,c),l=new Te(p.calpha,"f");return new ot(t,e,r,{texture:s,alpha:a,mode:c},p,c,l)}else if(r.type==="displace")if(r.displacementType==="noise"){let n=new pt(new Se.Vector3(...r.offset)),s=new X(r.scale??10),a=new X(r.intensity??8),c=new X(r.movement??1),p=new xe(r.noiseType??0),l=new Oi(a,c,n,s,p);return new Ri(t,e,r,{offset:n,scale:s,intensity:a,movement:c,noiseType:p},l)}else throw new Error;else return Hb(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:$m(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?sc(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}},ot=class extends Tr{constructor(e,r,o,n,s,a,c){super(e,r,o,n);this.color=s;this.mode=a;this.alpha=c}},Ri=class extends Tr{constructor(e,r,o,n,s){super(e,r,o,n);this.position=s}},Ar=class extends Tr{constructor(e,r,o,n,s){super(e,r,o,s);this.data=o;this.node=n}static createLigherLayer(e,r,o,n){let s,a=new X(o.alpha),c=new xe(o.mode),p;if(o.category==="lambert"){s=new mi;let l=new Ne(n.color(o.emissive)??0);p={emissive:l},s.emissive=l}else if(o.category==="phong"){s=new Sa;let l=new X(o.shininess??30),u=new Ne(n.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="toon"){s=new yi;let l=new X(o.shininess??30),u=new Ne(n.color(o.specular)??1118481);p={shininess:l,specular:u},s.shininess=l,s.specular=u}else if(o.category==="physical"){s=new hi;let l=new X(o.roughness??.3),u=new X(o.metalness??0),d=new X(o.reflectivity??.5);p={roughness:l,metalness:u,reflectivity:d},s.roughness=l,s.metalness=u,s.reflectivity=d}else s=new oo,p={};return s.alpha=new X(1),s.shadingAlpha=a,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new Ar(e,r,o,s,p)}};function Qm(i){let t=i instanceof Tr?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}function jb(i,t,e,r){switch(i.type){case"color":{let o=new Ne(r.color??5855577),n=new X(r.alpha??1),s=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new xe(r.mode??0);return o.alpha=n,new ot(t,e,i,{color:o,alpha:n,mode:a},o,a,s)}case"fresnel":{let o=new Ne(r.color??16777215),n=new X(r.bias??.1),s=new X(r.scale??1),a=new X(r.intensity??2),c=new X(r.factor??1),p=new X(r.alpha??1),l=new xe(r.mode??0),u=new Si(o,n,s,a,c,p,l),d=new Te(u.calpha,"f");return new ot(t,e,i,{color:o,bias:n,scale:s,intensity:a,factor:c,alpha:p,mode:l},u,l,d)}case"rainbow":{let o=new X(r.filmThickness??30),n=new X(r.movement??0),s=new pt(r.wavelengths??new Se.Vector3(0,0,0)),a=new X(r.noiseStrength??0),c=new X(r.noiseScale??1),p=new pt(r.offset??new Se.Vector3(0,0,0)),l=new X(r.alpha??1),u=new wi(o,n,s,a,c,p,l),d=new Te(u.calpha,"f"),m=new xe(r.mode??0);return new ot(t,e,i,{filmThickness:o,movement:n,wavelengths:s,noiseStrength:a,noiseScale:c,offset:p,alpha:l,mode:m},u,m,d)}case"transmission":{let o=new X(r.thickness??10),n=new X(r.ior??1.5),s=new X(r.roughness??.5),a=new rt(r.transmissionSamplerSize??new Se.Vector2(2048,2048)),c=r.transmissionSamplerMap??new Se.Texture,p=r.transmissionDepthMap??new Se.Texture,l=new Ot(c),u=new Ot(p),d=window.innerWidth,m=window.innerHeight,f=d>=m?new rt(m/d,1):new rt(1,d/m),h=new X(r.alpha??1),g=new Ai(o,n,s,a,l,u,f,h),x=new Te(g.calpha,"f"),v=new xe(r.mode??0);return new ot(t,e,i,{thickness:o,ior:n,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:l,transmissionDepthMap:u,aspectRatio:f,alpha:h,mode:v},g,v,x)}case"toon":{let o=new xe(r.positioning??0),n;r.colors?n=new Jt(r.colors.length,r.colors):(n=new Jt(10,new Se.Vector4(0,0,0,1)),n.value[1]=new Se.Vector4(1,1,1,1));let s;r.steps?s=new et(r.steps.length,r.steps):(s=new et(10,1),s.value[0]=0);let a=new pt(r.source??new Se.Vector3(0,0,0)),c=new no(r.isWorldSpace??!0),p=new X(r.noiseStrength??0),l=new X(r.noiseScale??1),u=new qt(r.shadowColor),d=new pt(r.offset??new Se.Vector3(0,0,0)),m=new X(r.alpha??1),f=new Gi(o,n,s,a,c,p,l,u,d,m),h=new Te(f.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,i,{positioning:o,colors:n,steps:s,source:a,isWorldSpace:c,noiseStrength:p,noiseScale:l,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Ne(r.outlineColor??16777215),n=new Ne(r.contourColor??16777215),s=new X(r.outlineWidth??.1),a=new X(r.contourWidth??.1),c=new X(r.outlineThreshold??.1),p=new X(r.contourThreshold??.1),l=new X(r.outlineSmoothing??.1),u=new X(r.contourFrequency??.1),d=new pt(r.contourDirections??new Se.Vector3(0,1,0)),m=new no(r.positionalLines??!1),f=new no(r.compensation??!0),h=r.normalMap??new Se.Texture,g=new Ot(h),x=r.depthMap??new Se.Texture,v=new Ot(x),A=r.pixelRatio??new X(window.devicePixelRatio),_=r.resolution??new rt(new Se.Vector2(1,1)),b=new X(r.alpha??1),D=new Ti(o,n,s,a,c,p,l,u,d,m,f,_,g,v,A,b),S=new Te(D.calpha,"f"),y=new xe(r.mode??0);return new ot(t,e,i,{outlineColor:o,contourColor:n,outlineWidth:s,contourWidth:a,outlineThreshold:c,contourThreshold:p,outlineSmoothing:l,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,resolution:_,normalMap:g,depthMap:v,pixelRatio:A,alpha:b,mode:y},D,y,S)}case"depth":{let o=new xe(r.gradientType??0),n=new no(r.smooth??!1),s=new X(r.near??50),a=new X(r.far??200),c=new X(r.isVector??1),p=new X(r.isWorldSpace??0),l=new pt(r.origin??new Se.Vector3),u=new pt(r.direction??new Se.Vector3),d=new xe(r.num??0),m;r.colors?m=new Jt(d.value+1,r.colors):(m=new Jt(d.value+1,new Se.Vector4(0,0,0,1)),m.value[1]=new Se.Vector4(1,1,1,1));let f;r.steps?f=new et(d.value+1,r.steps):(f=new et(d.value+1,1),f.value[0]=0);let h=new X(r.alpha??1),g=new xe(r.mode??0),x=new Ci(o,n,s,a,c,p,l,u,m,f,d,h),v=new Te(x.calpha,"f");return new ot(t,e,i,{gradientType:o,smooth:n,near:s,far:a,isVector:c,isWorldSpace:p,origin:l,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new X(r.scale??1),n=new pt(r.size??new Se.Vector3(100,100,100)),s=new X(r.move??1),a=new rt(r.fA??new Se.Vector2(1.7,9.2)),c=new rt(r.fB??new Se.Vector2(8.3,2.8)),p=new rt(r.distortion??new Se.Vector2(1,1)),l=new qt(r.colorA),u=new qt(r.colorB),d=new qt(r.colorC),m=new qt(r.colorD),f=new X(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),x=new _i(o,n,s,a,c,p,l,u,d,m,f,g),v=new Te(x.calpha,"f");return new ot(t,e,i,{scale:o,size:n,move:s,fA:a,fB:c,distortion:p,colorA:l,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new pt(r.cnormal??new Se.Vector3(1,1,1)),n=new X(r.alpha??1),s=new xe(r.mode??0),a=new Mi(o,n),c=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=n,new ot(t,e,i,{cnormal:o,alpha:n,mode:s},a,s,c)}case"gradient":{let o=new xe(r.gradientType??0),n=new no(r.smooth??!1),s;r.colors?s=new Jt(r.colors.length,r.colors):(s=new Jt(10,new Se.Vector4(0,0,0,1)),s.value[1]=new Se.Vector4(1,1,1,1));let a;r.steps?a=new et(r.steps.length,r.steps):(a=new et(10,1),a.value[0]=0);let c=new rt(r.offset??new Se.Vector2(0,0)),p=new rt(r.morph??new Se.Vector2(0,0)),l=new X(r.angle??0),u=new X(r.alpha??1),d=new xe(r.mode??0),m=new Li(o,n,s,a,c,p,l,u),f=new Te(m.calpha,"f");return new ot(t,e,i,{gradientType:o,smooth:n,colors:s,steps:a,offset:c,morph:p,angle:l,alpha:u,mode:d},m,d,f)}default:{let o=new Ne(1,0,0,1),n=new X(1),s=new Te("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new xe(0);return o.alpha=n,new ot(t,e,i,{color:o,alpha:n,mode:a},o,a,s)}}}function Hb(i,t,e,r){let o=km(e,r);return jb(e,i,t,o)}function ac(i,t,e){if(e.type==="displace"&&(i==="intensity"||i==="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"&&(i==="alpha"||i==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Zm=i=>i.tagName==="VIDEO",En=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;Zm(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*n/o):r.repeat.set(1,1*n/o)),o<n&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/n*-1,1):r.repeat.set(1*o/n,1)),o==n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,n=r.image!==void 0?r.image.width/r.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,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 n=0;n<o.length;n++){let s=o[n];Qm(s)&&En.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;Zm(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/n):r.repeat.set(1/t,1/e*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*n/s*-1,1/e):r.repeat.set(1/t*n/s,1/e)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var La=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&En.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Gn=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ia=class extends Gn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var $t=require("three"),Jm=require("three/examples/jsm/loaders/FontLoader.js"),We=class extends $t.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},c=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let p=We.loadChar(e,o,a);super(p.geometry,c);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=p.resolution,this.glyphsHa=p.glyphsHa,this.localPosition=new $t.Vector2,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 We._fontPath}static set FONTS_PATH(e){We._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new $t.Vector3(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=We.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=We.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=We.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 We(e).copy(this)}static loadFont(e){return new Promise(function(r,o){We.fontCache[e]?r(We.fontCache[e]):new Jm.FontLoader().load(We.FONTS_PATH+e+".json",s=>{We.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(We.charCache[e]){if(We.charCache[e][o]&&We.charCache[e][o].fontFamily===r)return We.charCache[e][o]}else We.charCache[e]={};let n=We.fontCache[r],s=n.generateShapes(e,1);return We.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},We.charCache[e][o]}},er=We;er.charCache={},er.fontCache={},er._fontPath="/_assets/_fonts/";var Cr=require("three");var uc=require("three"),Pa=new uc.Vector2,No=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new uc.Vector2(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,n){switch(r){case 1:this.leftAlign(t,n);break;case 3:this.centerAlign(this.spaceLeft(e),t,n);break;case 2:this.rightAlign(this.spaceLeft(e),t,n);break;case 4:this.justifyAlign(this.spaceLeft(e),t,n);break}}offsetCharacters(t,e,r){Pa.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Pa),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 n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Pa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Pa),e)}clone(){let t=new No(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 pc=class extends it{constructor(e){super(e,new Cr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Cr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Cr.Object3D,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 Cr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=sa.create({parameters:{width:r.width,height:r.height}}),s=new pc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await er.loadFont(o),r.text=e;let n=r.textOrigin,s=new Cr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Cr.DoubleSide}),a=e.split(`
|
|
1329
|
-
`),c=0;this.userData.textFrame.textLines=a.map((p,l)=>{let u=new No(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new er(m,f);return u.addChar3D(h,n),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 n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof er&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,c=e.parameters?.height??s,p=r.textFrame;super.updateGeometry(e),p.maxLineSize=a,p.textOrigin.set(-.5*a,.5*c,0),c!==s?(this.checkOverFlow(),this.checkCapacity()):a!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(r.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[s+1].isEndLine(!0));let c=0;for(let p=0;p<a.length;p+=1)for(let l=0;l<a[p].length;l+=1)n[s+1].addChar3D(a[p][l],o,c),c+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let c,p=s[a-1].spaceLeft(n);if(s[a].wordSize(0,1)<=p){s[a].containSpace()?c=s[a].getWord(0,1):c=s[a].popChar(0);for(let l=0;l<c.length;l+=1)c[l]&&s[a-1].addChar3D(c[l],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new No(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[a].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,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.color?.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let c=s[a].material;c.visible=e}}}async updateFontFamily(e){await er.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)a[c].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await er.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let c=0;c<a.length;c++)n[s].message[c].updateChar(a[c].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++)s[a].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 n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].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=Ye(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}},Oo=pc;Oo.VerticalAlign=ul,Oo.HorizontalAlign=cl,Oo.TextTransform=pl;var Ma=require("three");var tr=class extends Ma.ShaderMaterial{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.reset(e,r)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}reset(e,r){let o=e.layers??Mr.defaultTwoLayerData("phong").layers;this.layers=o.map(n=>Tr.create(this.layerIdGen++,n.id,n.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 Ar),this.lightLayer===void 0&&(this.lightLayer=new Ar(0,"",Xr.defaultData("light","basic"),new oo,{})),this.lightLayer.node instanceof oo||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,r,o){if(this.data=r,e.path[0]==="layers"){let n=e.path[1];if(n===void 0){if(this.layers.reverse(),e.type===4){let s=Tr.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),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===n);if(s){let a=r.layers.data(n);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let p=Tr.create(this.layerIdGen++,n,a,o);this.layers.splice(this.layers.findIndex(l=>l.uuid===n),1,p),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Ar);if(e!==-1&&e<r){let o=this.layers[e].color;for(let n=e+1;n<r;++n){let s=this.layers[n];s instanceof ot&&(o=new Ni(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Te("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Ar);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let n=this.layers[o];n instanceof ot&&(e=new Ni(e,n.color,n.alpha,n.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof Ri);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Lt(r,e[o].position,Lt.ADD),r=new Lt(r,new X(.5).setReadonly(!0),Lt.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=(n,s,a)=>Math.min(Math.max(n,s),a);for(let n of this.layers)if(n.type==="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.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(){return this.getHash()}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 Ca;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>Ma.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var lt=require("three");var Lo=class extends tr{};var of=vc(ef());var tf=new Map;function rf(i){if(typeof i=="string")return i;let t=tf.get(i);return t||(t={url:URL.createObjectURL(new Blob([i]))},tf.set(i,t)),t.url}var Rn=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 n;typeof t=="string"?n={src:t}:n={src:rf(t),format:"wav"},this.sound=new of.Howl(n),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 Fi=class{constructor(t){this.deletedMaterial=new Lo(Mr.defaultTwoLayerData("basic"),this);this.deletedImage=new Co(Ks.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new lt.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:lt.LinearMipmapLinearFilter,magFilter:lt.LinearFilter,wrapS:lt.ClampToEdgeWrapping,wrapT:lt.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new lt.DepthTexture(2048,2048),this.normalRenderTarget=new lt.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:lt.NearestFilter,magFilter:lt.NearestFilter,type:lt.FloatType}),this.normalRenderTarget.depthTexture=new lt.DepthTexture(1024,1024),this.penumbraSizeNode=new et(5,t.penumbraSize),this.resolutionNode=new rt(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),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 Lo(r,this));for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.data)}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}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 tr(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Co(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 Bn(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 io(e.r,e.g,e.b,e.a):this.colors[t]=new io(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 ct(0,0,0,0))}else return"a"in t?new ct(t.r,t.g,t.b,t.a):new ct(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 Rn)return e;{let r=new Rn({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.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Rn&&e.dispose()}),this.audios={}}},KV=new Fi(Ys.emptyData());var nf=require("three/examples/jsm/loaders/DRACOLoader.js");var ao;function Wb(){return ao||(ao=new nf.DRACOLoader,ao.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ao.decoderPending}async function qb(i){if(ao){let t={attributeIDs:ao.defaultAttributeIDs,attributeTypes:ao.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ao.decodeGeometry(new Int8Array(i).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 sf(i,t){let[e,r]=qa(zs.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await Wb();for(let n of o){let s=await qb(Xa(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:c,array:p,itemSize:l})=>{a[c]={array:p,itemSize:l,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var Ft=require("three");var _t=require("three");var uf=vc(lf());var dc;aa.then(i=>{dc=i});var pf=new _t.Matrix4,$b=new _t.Matrix4,Xb=new _t.Matrix4,rr=new _t.Box3,lo=new _t.Vector3,Yb=new _t.Matrix4,Kb=new _t.Matrix4,Fn=class extends it{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new _t.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new _t.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Ht.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Fn(n,s,a||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:n,subdivPointer:s}=Ht.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),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,eo(this),to(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ht.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ht.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,it.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:n,q:s}=(0,uf.SVD)(r),a=pf.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=$b.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),p=Xb.copy(c).transpose();this.shearScale=Yb.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=Kb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,p),s.every(l=>Math.abs(s[0]-l)<.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 _t.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;rr.setFromBufferAttribute(r),rr.getCenter(o),e.boundingSphere.radius=o.distanceTo(rr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(lo);let n={width:lo.x,height:lo.y,depth:lo.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;rr.min.set(e[0],e[2],e[4]),rr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(rr.min.applyMatrix4(this.shearScaleInv),rr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new _t.Sphere);let o=r.boundingSphere.center;rr.getCenter(o),r.boundingSphere.radius=o.distanceTo(rr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(lo);let n={width:lo.x,height:lo.y,depth:lo.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(dc.free_bvh(this.subdivPointer),dc.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,cf(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(cf(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 cf(i,t,e,r){let o=i.position.array,n=i.normal.array,s=pf.makeScale(t,e,r).invert().elements,a,c,p;for(var l=0,u=o.length;l<u;l+=3)o[l]*=t,o[l+1]*=e,o[l+2]*=r,a=n[l],c=n[l+1],p=n[l+2],n[l]=s[0]*a+s[4]*c+s[8]*p,n[l+1]=s[1]*a+s[5]*c+s[9]*p,n[l+2]=s[2]*a+s[6]*c+s[10]*p}var co=require("three");function df(i,t){t.flatShading!==void 0&&(i.flatShading=t.flatShading,i.needsUpdate=!0),t.wireframe!==void 0&&(i.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?i.side=co.FrontSide:t.side===1?i.side=co.BackSide:i.side=co.DoubleSide)}function Qb(i,t){if(Array.isArray(i.material))for(let e of i.material)df(e,t);else{let e=i.material;df(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function mf(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Fn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new co.BufferGeometry:ma(t.geometry,e),n="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ws.is2DParametricMesh(o.userData.type)?r=new La(o,n):o?.userData.type==="VectorGeometry"?r=new yn(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ia(o,n):t.geometry.type==="BooleanGeometry"?(r=new ha(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Gn(o,n),r.uuid=i,r.fromState(t,e)}return Qb(r,t),r}function ff(i,t,e){return t.type==="Mesh"?mf(i,t,e):t.type==="TextFrame"?Oo.createFromState(i,t,e):t.type==="Empty"?So.createFromState(i,t):t.type==="PointLight"?Tn.createFromState(i,t,e):t.type==="SpotLight"?An.createFromState(i,t,e):t.type==="DirectionalLight"?wn.createFromState(i,t,e):Qo.is(t.type)?Rr.createFromState(i,t):(console.error(t),new So)}var Fr=require("three");function e_(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function t_(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function hf(i,t,e){let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),r=!0,i!==void 0&&n.forEach(s=>t_(i,s)),to(t),eo(t)),o.length===0&&n.length===0&&t.layers.set(0),r}function gf(i,t,e){if(!e.layers)return!1;let r=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),r=!0,i!==void 0&&o.forEach(s=>e_(i,s))),o.length===0&&n.length===0&&t.layers.set(0),r}function yf(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Fr.Mesh&&r.objectType!=="TextFrame")if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)hf(i,r,r.material[o])&&(e=!0);else hf(i,r,r.material)&&(e=!0)}),e}function xf(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof Fr.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)gf(i,r,r.material[o])&&(e=!0);else gf(i,r,r.material)&&(e=!0)}),e}function vf(i){"material"in i&&r_(i.material),"geometry"in i&&i.geometry.dispose()}function r_(i){bc(i).forEach(t=>{t instanceof Lo||t.dispose()})}var o_=new Fr.Raycaster,n_=new Fr.Matrix4,i_=new Fr.Ray;function bf(i,t,e){let r=i.cloner;if(r)for(let o of r.children){let n=n_.copy(o.matrixWorld).invert(),s=i_.copy(t.ray).applyMatrix4(n),a=i.matrixWorld;s.applyMatrix4(a);let c=o_;c.set(s.origin,s.direction),c.near=t.near,c.far=t.far,c.intersectObject(i,!1).length>0&&e.push({object:i})}}var _f=new Ft.Vector3,mc=class extends ua(Ft.Scene){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Ft.Fog(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._color=new Ft.Color(1,0,0);this.bgColor=new Ft.Color(1,1,1);this.entityByUuid={};this.ambientLight=new Ft.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=xf(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=yf(e,this),e!==void 0&&(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 color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}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(Ye(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 Rr&&this.switchActiveCamera(o)}this.traverse(o=>{mr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{vf(e)});for(let e of this.children)gr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(mc.PERSONAL_CAMERA_ID,{...$s.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children)gr(s)&&!s.raycastLock&&s.visible&&((dr(s)||la(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),bf(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)gr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)gr(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=Ye(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){lm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(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.alpha=e.a}createChildrenObjects(e,r,o){for(let n of e)this.createChildObject(n.id,n.data,n.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,n,s){let a=ff(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),mr(n)&&dr(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:c}=e[n],p=this.find(a),l=c?p.recursiveBBox:p.singleBBox;r.push(...l.vertices)}let o=new Ft.Box3;return o.setFromPoints(r),o.getCenter(_f),_f}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 it)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof tr&&e(r.material[o]);else r.material instanceof tr&&e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,n;e>=r?(o=r/e,n=1):(o=1,n=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=n})})}},Vi=mc;Vi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var s_=require("three"),a_=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Sf(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}var zi=require("three");function wf(i){let t=new Set;return i.traverse(e=>{if(dr(e))if(Xe(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);l_(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new zi.Color,specularColor:new zi.Color}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(zi.ShaderLib.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)})}):c_(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function l_(i){return i.getLayersOfType("transmission").length>0}function c_(i){let t=0;return i.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 Tf(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Af(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}t.push(r.name)}),i}var Cf=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Nf(i){let t=[];return i.traverse(e=>{e instanceof _o&&t.push(e)}),t.forEach(e=>{let r=e.object,n=e.children.map(a=>{a.updateMatrix();let c=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Sf(c),c}),s=(0,Cf.mergeBufferGeometries)(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.remove(e),r.cloner=void 0}),i}function Of(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function Lf(i){Object.values(i.shared.materials).forEach(t=>{fc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?fc(e.material):"materials"in e&&e.materials.forEach(r=>{fc(r)})})}function fc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var If="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ea=class extends Ga.Loader{load(t,e,r,o=console.error){let n=new Ga.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(If+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(If),n.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await sf(t,Lf),r=new Fi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Vi(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&am(s)&&Object.assign(s,{makeDefault:!0})}return o=Nf(o),o=wf(o),o=Tf(o),o=Af(o),o=Of(o),o}};
|
|
1329
|
+
}`,[ht.simplex,e,o,s])}}();var mf=require("three");function df(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Da=class extends Rn{constructor(e,r){super(new mf.Matrix3);this.repeat=e;this.offset=r;df(this.value,e,r)}updateMatrix(){df(this.value,this.repeat,this.offset)}};var Tr=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)fc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Ar.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new ji(i,r.texture.wrapping),l=new Ma(i),c=new Da(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new xe(r.projection??0),u=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),m=new at(r.size?new Le.Vector2(r.size[0],r.size[1]):new Le.Vector2(100,100)),f=new Y(r.alpha??1),h=new xe(r.mode??0),g=new Di(s,l,p,a,u,d,m,c,f,h),x=new we(g.calpha,"f");return new ot(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:m,mat:c,alpha:f,mode:h},g,h,x)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new ji(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new xe(r.mode??0),p=new ki(s,l,c),a=new we(p.calpha,"f");return new ot(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new ut(new Le.Vector3(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new xe(r.noiseType??0),a=new Li(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 A_(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:uf(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?mc(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}},ot=class extends Tr{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 Tr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},Ar=class extends Tr{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 xe(o.mode),p;if(o.category==="lambert"){s=new Ri;let a=new Ce(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="phong"){s=new La;let a=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="toon"){s=new zi;let a=new Y(o.shininess??30),u=new Ce(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new Fi;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 Co,p={};return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new Ar(e,r,o,s,p)}};function ff(n){let t=n instanceof Tr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function T_(n,t,e,r){switch(n.type){case"color":{let o=new Ce(r.color??5855577),i=new Y(r.alpha??1),s=new we("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(r.mode??0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Ce(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 xe(r.mode??0),u=new Ai(o,i,s,l,c,p,a),d=new we(u.calpha,"f");return new ot(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 ut(r.wavelengths??new Le.Vector3(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new ut(r.offset??new Le.Vector3(0,0,0)),a=new Y(r.alpha??1),u=new Ci(o,i,s,l,c,p,a),d=new we(u.calpha,"f"),m=new xe(r.mode??0);return new ot(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:m},u,m,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=pt.transmissionSize,c=pt.transmissionRenderTarget,p=pt.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new at(u/a,1):new at(1,a/u),m=new Y(r.alpha??1),f=new Oi(o,i,s,l,c,p,d,m),h=new we(f.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:m,mode:g},f,g,h)}case"toon":{let o=new xe(r.positioning??0),i;r.colors?i=new Jt(r.colors.length,r.colors):(i=new Jt(10,new Le.Vector4(0,0,0,1)),i.value[1]=new Le.Vector4(1,1,1,1));let s;r.steps?s=new Zt(r.steps.length,r.steps):(s=new Zt(10,1),s.value[0]=0);let l=new ut(r.source??new Le.Vector3(0,0,0)),c=new ao(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Wt(r.shadowColor),d=new ut(r.offset??new Le.Vector3(0,0,0)),m=new Y(r.alpha??1),f=new Hi(o,i,s,l,c,p,a,u,d,m),h=new we(f.calpha,"f"),g=new xe(r.mode??0);return new ot(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:m,mode:g},f,g,h)}case"outline":{let o=new Ce(r.outlineColor??16777215),i=new Ce(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 ut(r.contourDirections??new Le.Vector3(0,1,0)),m=new ao(r.positionalLines??!1),f=new ao(r.compensation??!0),h=pt.normalRenderTarget,g=pt.normalRenderTargetDepth,x=pt.pixelRatioNode,v=pt.resolution,A=new Y(r.alpha??1),_=new Ni(o,i,s,l,c,p,a,u,d,m,f,v,h,g,x,A),b=new we(_.calpha,"f"),D=new xe(r.mode??0);return new ot(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:m,compensation:f,alpha:A,mode:D},_,D,b)}case"depth":{let o=new xe(r.gradientType??0),i=new ao(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 ut(r.origin??new Le.Vector3),u=new ut(r.direction??new Le.Vector3),d=new xe(r.num??0),m;r.colors?m=new Jt(d.value+1,r.colors):(m=new Jt(d.value+1,new Le.Vector4(0,0,0,1)),m.value[1]=new Le.Vector4(1,1,1,1));let f;r.steps?f=new Zt(d.value+1,r.steps):(f=new Zt(d.value+1,1),f.value[0]=0);let h=new Y(r.alpha??1),g=new xe(r.mode??0),x=new Pi(o,i,s,l,c,p,a,u,m,f,d,h),v=new we(x.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:m,steps:f,num:d,alpha:h,mode:g},x,g,v)}case"noise":{let o=new Y(r.scale??1),i=new ut(r.size??new Le.Vector3(100,100,100)),s=new Y(r.move??1),l=new at(r.fA??new Le.Vector2(1.7,9.2)),c=new at(r.fB??new Le.Vector2(8.3,2.8)),p=new at(r.distortion??new Le.Vector2(1,1)),a=new Wt(r.colorA),u=new Wt(r.colorB),d=new Wt(r.colorC),m=new Wt(r.colorD),f=new Y(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),x=new wi(o,i,s,l,c,p,a,u,d,m,f,g),v=new we(x.calpha,"f");return new ot(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:m,alpha:f,mode:h,noiseType:g},x,h,v)}case"normal":{let o=new ut(r.cnormal??new Le.Vector3(1,1,1)),i=new Y(r.alpha??1),s=new xe(r.mode??0),l=new Ei(o,i),c=new we("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new ot(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(r.gradientType??0),i=new ao(r.smooth??!1),s;r.colors?s=new Jt(r.colors.length,r.colors):(s=new Jt(10,new Le.Vector4(0,0,0,1)),s.value[1]=new Le.Vector4(1,1,1,1));let l;r.steps?l=new Zt(r.steps.length,r.steps):(l=new Zt(10,1),l.value[0]=0);let c=new at(r.offset??new Le.Vector2(0,0)),p=new at(r.morph??new Le.Vector2(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new xe(r.mode??0),m=new Mi(o,i,s,l,c,p,a,u),f=new we(m.calpha,"f");return new ot(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},m,d,f)}default:{let o=new Ce(1,0,0,1),i=new Y(1),s=new we("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new ot(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function A_(n,t,e,r){let o=nf(e,r);return T_(e,n,t,o)}function fc(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 hf=n=>n.tagName==="VIDEO",kn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;hf(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];ff(s)&&kn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;hf(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 Ba=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&kn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var jn=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ea=class extends jn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var qt=require("three"),gf=require("three/examples/jsm/loaders/FontLoader.js"),qe=class extends qt.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:l=16},c=new qt.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:qt.DoubleSide})){let p=qe.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 qt.Vector2,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 qe._fontPath}static set FONTS_PATH(e){qe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new qt.Vector3(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=qe.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=qe.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=qe.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 qe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){qe.fontCache[e]?r(qe.fontCache[e]):new gf.FontLoader().load(qe.FONTS_PATH+e+".json",s=>{qe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(qe.charCache[e]){if(qe.charCache[e][o]&&qe.charCache[e][o].fontFamily===r)return qe.charCache[e][o]}else qe.charCache[e]={};let i=qe.fontCache[r],s=i.generateShapes(e,1);return qe.charCache[e][o]={geometry:new qt.ShapeBufferGeometry(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},qe.charCache[e][o]}},er=qe;er.charCache={},er.fontCache={},er._fontPath="/_assets/_fonts/";var Cr=require("three");var yc=require("three"),Ga=new yc.Vector2,Io=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new yc.Vector2(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){Ga.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(Ga),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),Ga.set(s,r),this.message[l].updatePosition(this.message[l].localPosition.add(Ga),e)}clone(){let t=new Io(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 xc=class extends it{constructor(e){super(e,new Cr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Cr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Cr.Object3D,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 Cr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=pa.create({parameters:{width:r.width,height:r.height}}),s=new xc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await er.loadFont(o),r.text=e;let i=r.textOrigin,s=new Cr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Cr.DoubleSide}),l=e.split(`
|
|
1330
|
+
`),c=0;this.userData.textFrame.textLines=l.map((p,a)=>{let u=new Io(c,r.lineHeight,r.fontSize);return u.message=p.split("").map(d=>{let m={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let h=new er(m,f);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 er&&(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 Io(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 er.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 er.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=Ye(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}},Lo=xc;Lo.VerticalAlign=hl,Lo.HorizontalAlign=fl,Lo.TextTransform=gl;var Ra=require("three");var tr=class extends Ra.ShaderMaterial{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=>Tr.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 Ar),this.lightLayer===void 0&&(this.lightLayer=new Ar(0,"",Zr.defaultData("light","basic"),new Co,{})),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=Tr.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=Tr.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 ot),r=this.layers.findIndex(o=>o instanceof Ar);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 ot&&(o=new Ii(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new we("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Ar);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof ot&&(e=new Ii(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 Pt(r,e[o].position,Pt.ADD),r=new Pt(r,new Y(.5).setReadonly(!0),Pt.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(){return this.getHash()}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 Ia;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>Ra.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});var Mo=class extends tr{};var bf=Cc(yf());var xf=new Map;function vf(n){if(typeof n=="string")return n;let t=xf.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},xf.set(n,t)),t.url}var Hn=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:vf(t),format:"wav"},this.sound=new bf.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 qi=class{constructor(t){this.deletedMaterial=new Mo(Br.defaultTwoLayerData("basic"),this);this.deletedImage=new Po(ta.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};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 tr(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Po(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 Un(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 lo(e.r,e.g,e.b,e.a):this.colors[t]=new lo(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 Je(0,0,0,0))}else return"a"in t?new Je(t.r,t.g,t.b,t.a):new Je(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 Hn)return e;{let r=new Hn({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 Hn&&e.dispose()}),this.audios={}}},pU=new qi(un.emptyData());var _f=require("three/examples/jsm/loaders/DRACOLoader.js");var uo;function C_(){return uo||(uo=new _f.DRACOLoader,uo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),uo.decoderPending}async function N_(n){if(uo){let t={attributeIDs:uo.defaultAttributeIDs,attributeTypes:uo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await uo.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 Sf(n,t){let[e,r]=Za(Ws.deserialize(new Uint8Array(n)));Td(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 C_();for(let i of o){let s=await N_(Yr(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}var Nr=require("three");var bt=require("three");var Cf=Cc(Tf());var vc;da.then(n=>{vc=n});var Nf=new bt.Matrix4,O_=new bt.Matrix4,P_=new bt.Matrix4,rr=new bt.Box3,po=new bt.Vector3,I_=new bt.Matrix4,L_=new bt.Matrix4,Wn=class extends it{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new bt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new bt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=jt.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Wn(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}=jt.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,no(this),io(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){jt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&jt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=jt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=jt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,it.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,Cf.SVD)(r),l=Nf.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=O_.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=P_.copy(c).transpose();this.shearScale=I_.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=L_.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 bt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;rr.setFromBufferAttribute(r),rr.getCenter(o),e.boundingSphere.radius=o.distanceTo(rr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(po);let i={width:po.x,height:po.y,depth:po.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;rr.min.set(e[0],e[2],e[4]),rr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(rr.min.applyMatrix4(this.shearScaleInv),rr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new bt.Sphere);let o=r.boundingSphere.center;rr.getCenter(o),r.boundingSphere.radius=o.distanceTo(rr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),rr.getSize(po);let i={width:po.x,height:po.y,depth:po.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(vc.free_bvh(this.subdivPointer),vc.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,Af(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Af(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 Af(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Nf.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}var mo=require("three");function Of(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=mo.FrontSide:t.side===1?n.side=mo.BackSide:n.side=mo.DoubleSide)}function M_(n,t){if(Array.isArray(n.material))for(let e of n.material)Of(e,t);else{let e=n.material;Of(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Pf(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Wn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new mo.BufferGeometry:xa(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Ks.is2DParametricMesh(o.userData.type)?r=new Ba(o,i):o?.userData.type==="VectorGeometry"?r=new Tn(o,i):t.geometry.type==="NonParametricGeometry"?r=new Ea(o,i):t.geometry.type==="BooleanGeometry"?(r=new ba(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new jn(o,i),r.uuid=n,r.fromState(t,e)}return M_(r,t),r}function If(n,t,e){return t.type==="Mesh"?Pf(n,t,e):t.type==="TextFrame"?Lo.createFromState(n,t,e):t.type==="Empty"?To.createFromState(n,t):t.type==="PointLight"?Ln.createFromState(n,t,e):t.type==="SpotLight"?Mn.createFromState(n,t,e):t.type==="DirectionalLight"?In.createFromState(n,t,e):rn.is(t.type)?Fr.createFromState(n,t):(console.error(t),new To)}var Vr=require("three");function Lf(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,io(n),no(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function Mf(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 Df(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vr.Mesh&&e.objectType!=="TextFrame")if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Lf(e,e.material[r])&&(t=!0);else Lf(e,e.material)&&(t=!0)}),t}function Bf(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof Vr.Mesh)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Mf(e,e.material[r])&&(t=!0);else Mf(e,e.material)&&(t=!0)}),t}function Ef(n){"material"in n&&B_(n.material),"geometry"in n&&n.geometry.dispose()}function B_(n){Nc(n).forEach(t=>{t instanceof Mo||t.dispose()})}var E_=new Vr.Raycaster,G_=new Vr.Matrix4,R_=new Vr.Ray;function Gf(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=G_.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 Rf=new Nr.Vector3,bc=class extends ha(Nr.Scene){constructor(e,r){super();this.objectType="Scene";this.backupFog=new Nr.Fog(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 Je(1,1,1,1);this.entityByUuid={};this.ambientLight=new Nr.HemisphereLight(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=Bf(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Df(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(Ye(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 Fr&&this.switchActiveCamera(o)}this.traverse(o=>{mr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Ef(e)});for(let e of this.children)gr(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Fr.createFromState(bc.PERSONAL_CAMERA_ID,{...Zs.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)gr(s)&&!s.raycastLock&&s.visible&&((dr(s)||ma(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),Gf(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)gr(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)gr(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=Ye(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){Tm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(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=If(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),mr(i)&&dr(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 Nr.Box3;return o.setFromPoints(r),o.getCenter(Rf),Rf}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 it)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof tr&&e(r.material[o]);else r.material instanceof tr&&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})})}},$i=bc;$i.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var F_=require("three"),V_=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Ff(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}var Xi=require("three");function Vf(n){let t=new Set;return n.traverse(e=>{if(dr(e))if(Ve(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);z_(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Xi.Color,specularColor:new Xi.Color}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(Xi.ShaderLib.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 z_(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 zf(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Uf(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}var kf=require("three/examples/jsm/utils/BufferGeometryUtils.js");function jf(n){let t=[];return n.traverse(e=>{e instanceof wo&&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&&Ff(c),c}),s=(0,kf.mergeBufferGeometries)(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.remove(e),r.cloner=void 0}),n}function Hf(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function Wf(n){Object.values(n.shared.materials).forEach(t=>{_c(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?_c(e.material):"materials"in e&&e.materials.forEach(r=>{_c(r)})})}function _c(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 qf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",za=class extends Ua.Loader{load(t,e,r,o=console.error){let i=new Ua.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(qf+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(qf),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 Sf(t,Wf),r=new qi(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new $i(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&&wm(s)&&Object.assign(s,{makeDefault:!0})}return o=jf(o),o=Vf(o),o=zf(o),o=Uf(o),o=Hf(o),o}};
|